{"version":3,"file":"validation.mjs","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"]}