UNPKG

@metamask/ocap-kernel

Version:
1 lines 4.24 kB
{"version":3,"file":"deliver.mjs","sourceRoot":"","sources":["../../../src/rpc/vat/deliver.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,OAAO,EACP,KAAK,EACL,MAAM,EACN,MAAM,EACN,KAAK,EACN,8BAA8B;AAE/B,OAAO,EAAE,gBAAgB,EAAE,wBAAwB;AAEnD,OAAO,EAAE,uBAAuB,EAAE,qBAAoB;AACtD,OAAO,EACL,aAAa,EACb,aAAa,EACb,sBAAsB,EACvB,wBAAuB;AAGxB,MAAM,qBAAqB,GAAG,KAAK,CAAC;IAClC,OAAO,CAAC,SAAS,CAAC;IAClB,MAAM,EAAE;IACR,aAAa;CACd,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,KAAK,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC;IACjB,KAAK,CAAC,sBAAsB,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,yBAAyB,GAAG,KAAK,CAAC;IACtC,OAAO,CAAC,aAAa,CAAC;IACtB,KAAK,CAAC,MAAM,EAAE,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,2BAA2B,GAAG,KAAK,CAAC;IACxC,OAAO,CAAC,eAAe,CAAC;IACxB,KAAK,CAAC,MAAM,EAAE,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,2BAA2B,GAAG,KAAK,CAAC;IACxC,OAAO,CAAC,eAAe,CAAC;IACxB,KAAK,CAAC,MAAM,EAAE,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,8BAA8B,GAAG,KAAK,CAAC;IAC3C,OAAO,CAAC,kBAAkB,CAAC;IAC3B,MAAM,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC;CACnC,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;AAE3E,MAAM,qBAAqB,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;AAEzE,MAAM,8BAA8B,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAE5E,MAAM,uBAAuB,GAAG,KAAK,CAAC;IACpC,qBAAqB;IACrB,oBAAoB;IACpB,yBAAyB;IACzB,2BAA2B;IAC3B,2BAA2B;IAC3B,8BAA8B;IAC9B,sBAAsB;IACtB,qBAAqB;IACrB,8BAA8B;CAC/B,CAAC,CAAC;AAUH,MAAM,CAAC,MAAM,WAAW,GAAgB;IACtC,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,uBAAuB;IAC/B,MAAM,EAAE,uBAAuB;CACvB,CAAC;AAiBX,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,GAAG,WAAW;IACd,KAAK,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE;IAC/B,cAAc,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,EAAE;QACnD,OAAO,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;CACO,CAAC","sourcesContent":["import type { Handler, MethodSpec } from '@metamask/kernel-rpc-methods';\nimport {\n tuple,\n literal,\n array,\n string,\n record,\n union,\n} from '@metamask/superstruct';\nimport type { Infer } from '@metamask/superstruct';\nimport { UnsafeJsonStruct } from '@metamask/utils';\n\nimport { VatDeliveryResultStruct } from './shared.ts';\nimport {\n CapDataStruct,\n MessageStruct,\n VatOneResolutionStruct,\n} from '../../types.ts';\nimport type { VatDeliveryResult } from '../../types.ts';\n\nconst MessageDeliveryStruct = tuple([\n literal('message'),\n string(),\n MessageStruct,\n]);\n\nconst NotifyDeliveryStruct = tuple([\n literal('notify'),\n array(VatOneResolutionStruct),\n]);\n\nconst DropExportsDeliveryStruct = tuple([\n literal('dropExports'),\n array(string()),\n]);\n\nconst RetireExportsDeliveryStruct = tuple([\n literal('retireExports'),\n array(string()),\n]);\n\nconst RetireImportsDeliveryStruct = tuple([\n literal('retireImports'),\n array(string()),\n]);\n\nconst ChangeVatOptionsDeliveryStruct = tuple([\n literal('changeVatOptions'),\n record(string(), UnsafeJsonStruct),\n]);\n\nconst StartVatDeliveryStruct = tuple([literal('startVat'), CapDataStruct]);\n\nconst StopVatDeliveryStruct = tuple([literal('stopVat'), CapDataStruct]);\n\nconst BringOutYourDeadDeliveryStruct = tuple([literal('bringOutYourDead')]);\n\nconst VatDeliveryParamsStruct = union([\n MessageDeliveryStruct,\n NotifyDeliveryStruct,\n DropExportsDeliveryStruct,\n RetireExportsDeliveryStruct,\n RetireImportsDeliveryStruct,\n ChangeVatOptionsDeliveryStruct,\n StartVatDeliveryStruct,\n StopVatDeliveryStruct,\n BringOutYourDeadDeliveryStruct,\n]);\n\ntype VatDeliveryParams = Infer<typeof VatDeliveryParamsStruct>;\n\nexport type DeliverSpec = MethodSpec<\n 'deliver',\n VatDeliveryParams,\n Promise<VatDeliveryResult>\n>;\n\nexport const deliverSpec: DeliverSpec = {\n method: 'deliver',\n params: VatDeliveryParamsStruct,\n result: VatDeliveryResultStruct,\n} as const;\n\nexport type HandleDelivery = (\n params: VatDeliveryParams,\n) => Promise<VatDeliveryResult>;\n\ntype DeliverHooks = {\n handleDelivery: HandleDelivery;\n};\n\nexport type DeliverHandler = Handler<\n 'deliver',\n VatDeliveryParams,\n Promise<VatDeliveryResult>,\n DeliverHooks\n>;\n\nexport const deliverHandler: DeliverHandler = {\n ...deliverSpec,\n hooks: { handleDelivery: true },\n implementation: async ({ handleDelivery }, params) => {\n return await handleDelivery(params);\n },\n} as const;\n"]}