ToilScript is a fork of AssemblyScript that tracks the latest upstream and adds language features not yet available in the official release.
npm install toilscriptThis fork is a drop-in replacement for ToilScript. Simply replace your import:
{
"dependencies": {
"toilscript": "^0.1.0"
}
}Or if migrating from official ToilScript:
npm uninstall toilscript
npm install toilscriptThe CLI is toilscript (with toilinit to scaffold a project):
npx toilscript your-file.ts --outFile output.wasmThe compiler adds codec methods to @data and @user classes. TypeScript 7
cannot load the JavaScript language-service plugin that exposes these methods
to TypeScript 6 editors. Generate ordinary declarations instead:
npx toilscript server/main.ts --outFile build/server.wasm \
--editorTypes server/toilscript.generated.d.tsOr set "editorTypes": "server/toilscript.generated.d.ts" in the options
object of toilconfig.json so every compile refreshes it. Include the generated
file in your server's tsconfig.json; an existing "include": ["./**/*.ts"]
already includes .d.ts files. Use named exports for module-scoped models:
@data
export class DashboardRecord {
revision: u64 = 0;
}
const record = new DashboardRecord();
const bytes: Uint8Array = record.encode();
const restored: DashboardRecord = DashboardRecord.decode(bytes);The declarations cover encode, encodeInto, encodedSize, decodeInto,
decodeIntoVersioned, toJSON, and static decode, decodeFrom, fromJSON,
and dataId. They preserve return and argument types; ordinary classes do not
acquire these methods. They contain no executable code and do not change the
binary format. Regenerate after adding, renaming, or removing decorated classes.
Module augmentations cover top-level named exports; export module-private models
to make them augmentable. Script-global models also receive global declarations.
With toiljs 0.0.128 or later and toilscript 0.1.66 or later, toiljs build and
toiljs dev generate and refresh these files automatically next to the server
entry. Keep them included in the server TypeScript project. If WebStorm keeps
cached errors after upgrading, restart its TypeScript language service.
A development environment can be set up by cloning the repository:
git clone https://github.com/dacely-cloud/toilscript.git
cd toilscript
npm install
npm linkThe link step is optional and makes the development instance available globally. The full process is documented as part of the repository: