0.5.1 • Published 4 years ago
vitra-confine-runtime v0.5.1
Vitra Confine Runtime
Confine runtime for Vitra. Runs javascript in an isolate with the following properties:
- ES Modules only.
- Special handling of
apply()and other exports. - Builtin standard modules:
assertcontractutil
- Removed APIs:
evalAtomicsWebAssemblyFunctionAsyncFunction
Install:
npm i vitra-confine-runtimeOptions:
{
restricted: boolean, // running in restricted mode?
env: {
indexPubkey: string, // 64 char hex string
oplogPubkey?: string // 64 char hex string
},
globals: {
__internals__: {
sys: {
readSourceFile (specifier: string): Promise<string>
},
contract: {
indexList: Function
indexGet: Function
oplogGetLength: Function
oplogGet: Function
}
}
}
}The __internals__ values above must be provided by the host environment.
Restricted mode
In restricted mode, mutations are disabled and all async functions are resolved prior to allowing the next to execute.
Standard Modules
assert
import ok, * as assert from 'assert'
ok(value, message)
assert.ok(value, message)
assert.deepEqual(v1, v2, message)
assert.equal(v1, v2, message)
assert.fail(message)
assert.notDeepEqual(v1, v2, message)
assert.notEqual(v1, v2, message)contract
import { index, oplog, isWriter, listOplogs } from 'contract'
listOplogs() // => ContractOplog[]
isWriter // boolean
await index.list(prefix, opts)
await index.get(key)
await oplog.getLength()
await oplog.get(seq)util
import { genUUID } from 'util'
genUUID() // => string