motoko
Compile and run Motoko smart contracts in Node.js or the browser.
Installation:
npm i --save motoko
Examples:
Basic usage
import mo from 'motoko';
const mo = require('motoko');
mo.write('Main.mo', `
actor {
public query func hello() : async Text {
"Hello, JavaScript!"
};
}
`);
console.log(mo.candid('Main.mo'));
Evaluate a program
mo.write('Main.mo', `
actor Main {
public query func hello() : async Text {
"Hello, world!"
};
};
await Main.hello();
`)
mo.run('Main.mo');
Evaluate a program (shorthand)
mo.file('Main.mo')
.write('actor Main { public query func getNumber() : async Nat { 5 } }')
.run();
Load dependencies from GitHub
mo.clearPackages();
await mo.installPackages({
base: 'dfinity/motoko-base/master/src',
});
Generate parse trees
console.log(mo.parseMotoko('actor Main { public query func test() : async Nat { 123 } }'));
console.log(mo.parseCandid('service : { test : () -> (nat) }'));
Optimize for browsers
import mo from 'motoko/interpreter';
API:
Top-level API
mo.read(path)
mo.write(path, string)
mo.rename(path, newPath)
mo.delete(path)
mo.list(path)
await mo.fetchPackage(name, source);
await mo.fetchPackage('base', 'dfinity/motoko-base/master/src');
await mo.installPackages({ [packageName]: repositoryPath, ... })
mo.loadPackage(package)
mo.usePackage(packageName, directory)
mo.clearPackages()
mo.validatePackage(package)
mo.setAliases(directory, { alias: id, ... })
mo.setPublicMetadata(strings)
mo.setRunStepLimit(limit)
mo.check(path)
mo.run(path)
mo.run(path, [libraryPath, ...])
mo.candid(path)
mo.wasm(path, 'ic')
mo.wasm(path, 'wasi')
mo.parseCandid(candidString)
mo.parseMotoko(motokoString)
mo.parseMotokoTyped(path)
mo.parseMotokoTyped(paths = [...])
mo.resolveMain(directory = '')
mo.resolveLib(directory = '')
mo.version
mo.compiler
File API
const file = mo.file('Main.mo')
file.path
file.clone()
file.read()
file.write(string)
file.rename(newPath)
file.delete()
file.list()
file.check()
file.run()
file.candid()
file.wasm('ic')
file.wasm('wasi')
file.parseMotoko()
file.parseCandid()
file.parseMotokoTyped()