{"version":3,"file":"validation.cjs","sourceRoot":"","sources":["../../src/common/validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { rpcErrors } from '@metamask/rpc-errors';\nimport {\n  InterfaceContextStruct,\n  literal as customLiteral,\n  typedUnion,\n  UserInputEventStruct,\n} from '@metamask/snaps-sdk';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport type { Infer, Struct } from '@metamask/superstruct';\nimport {\n  any,\n  array,\n  assign,\n  boolean,\n  enums,\n  is,\n  nullable,\n  number,\n  object,\n  optional,\n  record,\n  size,\n  string,\n  union,\n  literal,\n} from '@metamask/superstruct';\nimport type { CaipChainId, JsonRpcRequest } from '@metamask/utils';\nimport {\n  assertStruct,\n  CaipAssetTypeOrIdStruct,\n  CaipAssetTypeStruct,\n  CaipChainIdStruct,\n  JsonRpcIdStruct,\n  JsonRpcParamsStruct,\n  JsonRpcRequestStruct,\n  JsonRpcVersionStruct,\n  JsonStruct,\n} from '@metamask/utils';\n\nexport const JsonRpcRequestWithoutIdStruct = object({\n  jsonrpc: optional(JsonRpcVersionStruct),\n  id: optional(JsonRpcIdStruct),\n  method: string(),\n  params: optional(JsonRpcParamsStruct),\n});\n\nexport type JsonRpcRequestWithoutId = Infer<\n  typeof JsonRpcRequestWithoutIdStruct\n>;\n\nexport const EndowmentStruct = string();\nexport type Endowment = Infer<typeof EndowmentStruct>;\n\n/**\n * Check if the given value is an endowment.\n *\n * @param value - The value to check.\n * @returns Whether the value is an endowment.\n */\nexport function isEndowment(value: unknown): value is Endowment {\n  return is(value, EndowmentStruct);\n}\n\n/**\n * Check if the given value is an array of endowments.\n *\n * @param value - The value to check.\n * @returns Whether the value is an array of endowments.\n */\nexport function isEndowmentsArray(value: unknown): value is Endowment[] {\n  return Array.isArray(value) && value.every(isEndowment);\n}\n\nexport const PingRequestArgumentsStruct = optional(literal(undefined));\n\nexport const TerminateRequestArgumentsStruct = PingRequestArgumentsStruct;\n\nexport const ExecuteSnapRequestArgumentsStruct = object({\n  snapId: string(),\n  sourceCode: string(),\n  endowments: array(EndowmentStruct),\n});\n\nexport const SnapRpcRequestArgumentsStruct = object({\n  snapId: string(),\n  handler: enums(Object.values(HandlerType)),\n  origin: string(),\n  request: assign(\n    JsonRpcRequestWithoutIdStruct,\n    object({\n      // Previously this would validate that the parameters were valid JSON.\n      // This is already validated for all messages received by the executor.\n      // If that assumption changes, this should once again validate JSON.\n      params: optional(record(string(), any())),\n    }),\n  ),\n});\n\nexport type PingRequestArguments = Infer<typeof PingRequestArgumentsStruct>;\nexport type TerminateRequestArguments = Infer<\n  typeof TerminateRequestArgumentsStruct\n>;\n\nexport type ExecuteSnapRequestArguments = Infer<\n  typeof ExecuteSnapRequestArgumentsStruct\n>;\n\nexport type SnapRpcRequestArguments = Infer<\n  typeof SnapRpcRequestArgumentsStruct\n>;\n\nexport type RequestArguments =\n  | PingRequestArguments\n  | TerminateRequestArguments\n  | ExecuteSnapRequestArguments\n  | SnapRpcRequestArguments;\n\n/**\n * Asserts that the given value is a valid request arguments object.\n *\n * @param value - The value to validate.\n * @param struct - The struct to validate the value against.\n * @throws If the value is not a valid request arguments object.\n */\nfunction assertRequestArguments<Type, Schema>(\n  value: unknown,\n  struct: Struct<Type, Schema>,\n): asserts value is Struct<Type, Schema> {\n  assertStruct(\n    value,\n    struct,\n    'Invalid request params',\n    rpcErrors.invalidParams,\n  );\n}\n\nexport const OnTransactionRequestArgumentsStruct = object({\n  // TODO: Improve `transaction` type.\n  transaction: record(string(), JsonStruct),\n  chainId: CaipChainIdStruct,\n  transactionOrigin: nullable(string()),\n});\n\nexport type OnTransactionRequestArguments = Infer<\n  typeof OnTransactionRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnTransactionRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnTransactionRequestArguments}\n * object.\n */\nexport function assertIsOnTransactionRequestArguments(\n  value: unknown,\n): asserts value is OnTransactionRequestArguments {\n  assertRequestArguments(value, OnTransactionRequestArgumentsStruct);\n}\n\nexport const OnSignatureRequestArgumentsStruct = object({\n  signature: record(string(), JsonStruct),\n  signatureOrigin: nullable(string()),\n});\n\nexport type OnSignatureRequestArguments = Infer<\n  typeof OnSignatureRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnSignatureRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnSignatureRequestArguments}\n * object.\n */\nexport function assertIsOnSignatureRequestArguments(\n  value: unknown,\n): asserts value is OnSignatureRequestArguments {\n  assertRequestArguments(value, OnSignatureRequestArgumentsStruct);\n}\n\nconst baseNameLookupArgs = { chainId: CaipChainIdStruct };\nconst domainRequestStruct = object({\n  ...baseNameLookupArgs,\n  address: string(),\n});\nconst addressRequestStruct = object({\n  ...baseNameLookupArgs,\n  domain: string(),\n});\n\nexport const OnNameLookupRequestArgumentsStruct = union([\n  domainRequestStruct,\n  addressRequestStruct,\n]);\n\nexport type OnNameLookupRequestArguments = Infer<\n  typeof OnNameLookupRequestArgumentsStruct\n>;\n\nexport type PossibleLookupRequestArgs = typeof baseNameLookupArgs & {\n  address?: string;\n  domain?: string;\n};\n\n/**\n * Asserts that the given value is a valid {@link OnNameLookupRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnNameLookupRequestArguments}\n * object.\n */\nexport function assertIsOnNameLookupRequestArguments(\n  value: unknown,\n): asserts value is OnNameLookupRequestArguments {\n  assertRequestArguments(value, OnNameLookupRequestArgumentsStruct);\n}\n\nexport const OnAssetHistoricalPriceRequestArgumentsStruct = object({\n  from: CaipAssetTypeStruct,\n  to: CaipAssetTypeStruct,\n});\n\nexport type OnAssetHistoricalPriceRequestArguments = Infer<\n  typeof OnAssetHistoricalPriceRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnAssetHistoricalPriceRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnAssetHistoricalPriceRequestArguments}\n * object.\n */\nexport function assertIsOnAssetHistoricalPriceRequestArguments(\n  value: unknown,\n): asserts value is OnAssetHistoricalPriceRequestArguments {\n  assertRequestArguments(value, OnAssetHistoricalPriceRequestArgumentsStruct);\n}\n\nexport const OnAssetsMarketDataRequestArgumentsStruct = object({\n  assets: size(\n    array(\n      object({\n        asset: CaipAssetTypeOrIdStruct,\n        unit: CaipAssetTypeStruct,\n      }),\n    ),\n    1,\n    Infinity,\n  ),\n});\n\nexport type OnAssetsMarketDataRequestArguments = Infer<\n  typeof OnAssetsMarketDataRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnAssetsMarketDataRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnAssetsMarketDataRequestArguments}\n * object.\n */\nexport function assertIsOnAssetsMarketDataRequestArguments(\n  value: unknown,\n): asserts value is OnAssetsMarketDataRequestArguments {\n  assertRequestArguments(value, OnAssetsMarketDataRequestArgumentsStruct);\n}\n\nexport const OnAssetsLookupRequestArgumentsStruct = object({\n  assets: size(array(CaipAssetTypeOrIdStruct), 1, Infinity),\n});\n\nexport type OnAssetsLookupRequestArguments = Infer<\n  typeof OnAssetsLookupRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnAssetsLookupRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnAssetsLookupRequestArguments}\n * object.\n */\nexport function assertIsOnAssetsLookupRequestArguments(\n  value: unknown,\n): asserts value is OnAssetsLookupRequestArguments {\n  assertRequestArguments(value, OnAssetsLookupRequestArgumentsStruct);\n}\n\nexport const OnAssetsConversionRequestArgumentsStruct = object({\n  conversions: size(\n    array(\n      object({\n        from: CaipAssetTypeStruct,\n        to: CaipAssetTypeStruct,\n      }),\n    ),\n    1,\n    Infinity,\n  ),\n});\n\nexport type OnAssetsConversionRequestArguments = Infer<\n  typeof OnAssetsConversionRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnAssetsConversionRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnNameLookupRequestArguments}\n * object.\n */\nexport function assertIsOnAssetsConversionRequestArguments(\n  value: unknown,\n): asserts value is OnAssetsConversionRequestArguments {\n  assertRequestArguments(value, OnAssetsConversionRequestArgumentsStruct);\n}\n\nexport const OnUserInputArgumentsStruct = object({\n  id: string(),\n  event: UserInputEventStruct,\n  context: optional(nullable(InterfaceContextStruct)),\n});\n\nexport type OnUserInputArguments = Infer<typeof OnUserInputArgumentsStruct>;\n\n/**\n * Asserts that the given value is a valid {@link OnUserInputArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnUserInputArguments}\n * object.\n */\nexport function assertIsOnUserInputRequestArguments(\n  value: unknown,\n): asserts value is OnUserInputArguments {\n  assertRequestArguments(value, OnUserInputArgumentsStruct);\n}\n\nexport const OnProtocolRequestArgumentsStruct = object({\n  scope: CaipChainIdStruct,\n  request: JsonRpcRequestStruct,\n}) as unknown as Struct<{ scope: CaipChainId; request: JsonRpcRequest }, null>;\n\nexport type OnProtocolRequestArguments = Infer<\n  typeof OnProtocolRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnProtocolRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnProtocolRequestArguments}\n * object.\n */\nexport function assertIsOnProtocolRequestArguments(\n  value: unknown,\n): asserts value is OnProtocolRequestArguments {\n  assertRequestArguments(value, OnProtocolRequestArgumentsStruct);\n}\n\nconst WebSocketOpenEventStruct = object({\n  type: customLiteral('open'),\n  id: string(),\n  origin: string(),\n});\n\nconst WebSocketCloseEventStruct = object({\n  type: customLiteral('close'),\n  id: string(),\n  origin: string(),\n  code: number(),\n  reason: nullable(string()),\n  wasClean: nullable(boolean()),\n});\n\nconst WebSocketMessageEventStruct = object({\n  type: customLiteral('message'),\n  id: string(),\n  origin: string(),\n  data: typedUnion([\n    object({\n      type: customLiteral('text'),\n      message: string(),\n    }),\n    object({\n      type: customLiteral('binary'),\n      message: array(number()),\n    }),\n  ]),\n});\n\nexport const WebSocketEventStruct = typedUnion([\n  WebSocketOpenEventStruct,\n  WebSocketCloseEventStruct,\n  WebSocketMessageEventStruct,\n]);\n\nexport const OnWebSocketEventArgumentsStruct = object({\n  event: WebSocketEventStruct,\n});\n\nexport type OnWebSocketEventArguments = Infer<\n  typeof OnWebSocketEventArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnWebSocketEventArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnWebSocketEventArguments}\n * object.\n */\nexport function assertIsOnWebSocketEventArguments(\n  value: unknown,\n): asserts value is OnWebSocketEventArguments {\n  assertRequestArguments(value, OnWebSocketEventArgumentsStruct);\n}\n"]}