@metamask/ocap-kernel
Version:
OCap kernel core components
56 lines • 1.81 kB
JavaScript
import { tuple, literal, array, string, record, union } from "@metamask/superstruct";
import { UnsafeJsonStruct } from "@metamask/utils";
import { VatDeliveryResultStruct } from "./shared.mjs";
import { CapDataStruct, MessageStruct, VatOneResolutionStruct } from "../../types.mjs";
const MessageDeliveryStruct = tuple([
literal('message'),
string(),
MessageStruct,
]);
const NotifyDeliveryStruct = tuple([
literal('notify'),
array(VatOneResolutionStruct),
]);
const DropExportsDeliveryStruct = tuple([
literal('dropExports'),
array(string()),
]);
const RetireExportsDeliveryStruct = tuple([
literal('retireExports'),
array(string()),
]);
const RetireImportsDeliveryStruct = tuple([
literal('retireImports'),
array(string()),
]);
const ChangeVatOptionsDeliveryStruct = tuple([
literal('changeVatOptions'),
record(string(), UnsafeJsonStruct),
]);
const StartVatDeliveryStruct = tuple([literal('startVat'), CapDataStruct]);
const StopVatDeliveryStruct = tuple([literal('stopVat'), CapDataStruct]);
const BringOutYourDeadDeliveryStruct = tuple([literal('bringOutYourDead')]);
const VatDeliveryParamsStruct = union([
MessageDeliveryStruct,
NotifyDeliveryStruct,
DropExportsDeliveryStruct,
RetireExportsDeliveryStruct,
RetireImportsDeliveryStruct,
ChangeVatOptionsDeliveryStruct,
StartVatDeliveryStruct,
StopVatDeliveryStruct,
BringOutYourDeadDeliveryStruct,
]);
export const deliverSpec = {
method: 'deliver',
params: VatDeliveryParamsStruct,
result: VatDeliveryResultStruct,
};
export const deliverHandler = {
...deliverSpec,
hooks: { handleDelivery: true },
implementation: async ({ handleDelivery }, params) => {
return await handleDelivery(params);
},
};
//# sourceMappingURL=deliver.mjs.map