UNPKG

@metamask/ocap-kernel

Version:
1 lines 4.54 kB
{"version":3,"file":"vat-syscall.mjs","sourceRoot":"","sources":["../../../src/rpc/vat-syscall/vat-syscall.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,OAAO,EACP,KAAK,EACL,MAAM,EACN,KAAK,EACL,OAAO,EACR,8BAA8B;AAG/B,OAAO,EACL,aAAa,EACb,aAAa,EACb,sBAAsB,EACvB,wBAAuB;AAExB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;AACrE,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAChE,MAAM,aAAa,GAAG,KAAK,CAAC;IAC1B,OAAO,CAAC,SAAS,CAAC;IAClB,KAAK,CAAC,sBAAsB,CAAC;CAC9B,CAAC,CAAC;AACH,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;AACtE,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3E,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/E,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/E,MAAM,oBAAoB,GAAG,KAAK,CAAC;IACjC,OAAO,CAAC,gBAAgB,CAAC;IACzB,KAAK,CAAC,MAAM,EAAE,CAAC;CAChB,CAAC,CAAC;AACH,2DAA2D;AAC3D,MAAM,aAAa,GAAG,KAAK,CAAC;IAC1B,OAAO,CAAC,SAAS,CAAC;IAClB,MAAM,EAAE;IACR,MAAM,EAAE;IACR,aAAa;CACd,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AACpE,MAAM,wBAAwB,GAAG,KAAK,CAAC;IACrC,OAAO,CAAC,oBAAoB,CAAC;IAC7B,MAAM,EAAE;CACT,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAC9E,MAAM,oBAAoB,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAE1E,MAAM,sBAAsB,GAAG,KAAK,CAAC;IACnC,UAAU;IACV,eAAe;IACf,aAAa;IACb,UAAU;IACV,iBAAiB;IACjB,mBAAmB;IACnB,mBAAmB;IACnB,oBAAoB;IACpB,2DAA2D;IAC3D,aAAa;IACb,iBAAiB;IACjB,wBAAwB;IACxB,iBAAiB;IACjB,oBAAoB;CACrB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,cAAc,GAAkD;IAC3E,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,sBAAsB;CACtB,CAAC;AAQX,MAAM,CAAC,MAAM,iBAAiB,GAK1B;IACF,GAAG,cAAc;IACjB,KAAK,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;IAC9B,cAAc,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,EAAE;QAC5C,aAAa,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;CACO,CAAC","sourcesContent":["import type { Handler, MethodSpec } from '@metamask/kernel-rpc-methods';\nimport {\n tuple,\n literal,\n array,\n string,\n union,\n boolean,\n} from '@metamask/superstruct';\nimport type { Infer } from '@metamask/superstruct';\n\nimport {\n CapDataStruct,\n MessageStruct,\n VatOneResolutionStruct,\n} from '../../types.ts';\n\nconst SendStruct = tuple([literal('send'), string(), MessageStruct]);\nconst SubscribeStruct = tuple([literal('subscribe'), string()]);\nconst ResolveStruct = tuple([\n literal('resolve'),\n array(VatOneResolutionStruct),\n]);\nconst ExitStruct = tuple([literal('exit'), boolean(), CapDataStruct]);\nconst DropImportsStruct = tuple([literal('dropImports'), array(string())]);\nconst RetireImportsStruct = tuple([literal('retireImports'), array(string())]);\nconst RetireExportsStruct = tuple([literal('retireExports'), array(string())]);\nconst AbandonExportsStruct = tuple([\n literal('abandonExports'),\n array(string()),\n]);\n// These are bogus, but are needed to keep TypeScript happy\nconst CallNowStruct = tuple([\n literal('callNow'),\n string(),\n string(),\n CapDataStruct,\n]);\nconst VatstoreGetStruct = tuple([literal('vatstoreGet'), string()]);\nconst VatstoreGetNextKeyStruct = tuple([\n literal('vatstoreGetNextKey'),\n string(),\n]);\nconst VatstoreSetStruct = tuple([literal('vatstoreSet'), string(), string()]);\nconst VatstoreDeleteStruct = tuple([literal('vatstoreDelete'), string()]);\n\nconst VatSyscallParamsStruct = union([\n SendStruct,\n SubscribeStruct,\n ResolveStruct,\n ExitStruct,\n DropImportsStruct,\n RetireImportsStruct,\n RetireExportsStruct,\n AbandonExportsStruct,\n // These are bogus, but are needed to keep TypeScript happy\n CallNowStruct,\n VatstoreGetStruct,\n VatstoreGetNextKeyStruct,\n VatstoreSetStruct,\n VatstoreDeleteStruct,\n]);\n\ntype VatSyscallParams = Infer<typeof VatSyscallParamsStruct>;\n\nexport const vatSyscallSpec: MethodSpec<'syscall', VatSyscallParams, void> = {\n method: 'syscall',\n params: VatSyscallParamsStruct,\n} as const;\n\nexport type HandleSyscall = (params: VatSyscallParams) => void;\n\ntype SyscallHooks = {\n handleSyscall: HandleSyscall;\n};\n\nexport const vatSyscallHandler: Handler<\n 'syscall',\n VatSyscallParams,\n void,\n SyscallHooks\n> = {\n ...vatSyscallSpec,\n hooks: { handleSyscall: true },\n implementation: ({ handleSyscall }, params) => {\n handleSyscall(params);\n },\n} as const;\n"]}