{"version":3,"file":"commands.cjs","sourceRoot":"","sources":["../../src/common/commands.ts"],"names":[],"mappings":"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","sourcesContent":["import { rpcErrors } from '@metamask/rpc-errors';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport type { Struct } from '@metamask/superstruct';\nimport { validate } from '@metamask/superstruct';\nimport type { Json } from '@metamask/utils';\nimport { assertExhaustive } from '@metamask/utils';\n\nimport type { InvokeSnapArgs } from './BaseSnapExecutor';\nimport type {\n  JsonRpcRequestWithoutId,\n  PossibleLookupRequestArgs,\n} from './validation';\nimport {\n  assertIsOnTransactionRequestArguments,\n  assertIsOnSignatureRequestArguments,\n  assertIsOnNameLookupRequestArguments,\n  assertIsOnUserInputRequestArguments,\n  assertIsOnAssetsLookupRequestArguments,\n  assertIsOnAssetsConversionRequestArguments,\n  assertIsOnProtocolRequestArguments,\n  assertIsOnAssetHistoricalPriceRequestArguments,\n  assertIsOnWebSocketEventArguments,\n  assertIsOnAssetsMarketDataRequestArguments,\n} from './validation';\n/**\n * Assert that the params match the provided struct.\n *\n * @param method - The RPC method being validated.\n * @param params - The RPC parameters being validated.\n * @param struct - The struct to validate the parameters against.\n */\nexport function assertCommandParams<Type extends Json | undefined, Schema>(\n  method: string,\n  params: Json | undefined,\n  struct: Struct<Type, Schema>,\n): asserts params is Type {\n  const [error] = validate(params, struct);\n  if (error) {\n    throw rpcErrors.invalidParams({\n      message: `Invalid parameters for method \"${method}\": ${error.message}.`,\n      data: {\n        method,\n        params,\n      },\n    });\n  }\n}\n\n/**\n * Formats the arguments for the given handler.\n *\n * @param origin - The origin of the request.\n * @param handler - The handler to pass the request to.\n * @param request - The request object.\n * @returns The formatted arguments.\n */\nexport function getHandlerArguments(\n  origin: string,\n  handler: HandlerType,\n  request: JsonRpcRequestWithoutId,\n): InvokeSnapArgs {\n  // `request` is already validated by the time this function is called.\n\n  switch (handler) {\n    case HandlerType.OnTransaction: {\n      assertIsOnTransactionRequestArguments(request.params);\n\n      const { transaction, chainId, transactionOrigin } = request.params;\n      return {\n        transaction,\n        chainId,\n        transactionOrigin,\n      };\n    }\n    case HandlerType.OnSignature: {\n      assertIsOnSignatureRequestArguments(request.params);\n\n      const { signature, signatureOrigin } = request.params;\n      return { signature, signatureOrigin };\n    }\n\n    case HandlerType.OnAssetHistoricalPrice: {\n      assertIsOnAssetHistoricalPriceRequestArguments(request.params);\n      const { from, to } = request.params;\n      return { from, to };\n    }\n\n    case HandlerType.OnAssetsLookup: {\n      assertIsOnAssetsLookupRequestArguments(request.params);\n      const { assets } = request.params;\n      return { assets };\n    }\n    case HandlerType.OnAssetsConversion: {\n      assertIsOnAssetsConversionRequestArguments(request.params);\n      const { conversions } = request.params;\n      return { conversions };\n    }\n\n    case HandlerType.OnAssetsMarketData: {\n      assertIsOnAssetsMarketDataRequestArguments(request.params);\n      const { assets } = request.params;\n      return { assets };\n    }\n\n    case HandlerType.OnNameLookup: {\n      assertIsOnNameLookupRequestArguments(request.params);\n\n      // TS complains that domain/address are not part of the type\n      // casting here as we've already validated the request args in the above step.\n      const { chainId, domain, address } =\n        request.params as unknown as PossibleLookupRequestArgs;\n\n      return domain\n        ? {\n            chainId,\n            domain,\n          }\n        : {\n            chainId,\n            address,\n          };\n    }\n\n    case HandlerType.OnProtocolRequest: {\n      assertIsOnProtocolRequestArguments(request.params);\n\n      const { request: nestedRequest, scope } = request.params;\n      return { origin, request: nestedRequest, scope };\n    }\n\n    case HandlerType.OnWebSocketEvent: {\n      assertIsOnWebSocketEventArguments(request.params);\n      const { event } = request.params;\n      return { event };\n    }\n\n    case HandlerType.OnRpcRequest:\n    case HandlerType.OnKeyringRequest:\n      return { origin, request };\n\n    case HandlerType.OnClientRequest:\n    case HandlerType.OnCronjob:\n      return { request };\n\n    case HandlerType.OnInstall:\n    case HandlerType.OnUpdate:\n    case HandlerType.OnStart:\n    case HandlerType.OnActive:\n    case HandlerType.OnInactive:\n      return { origin };\n\n    case HandlerType.OnHomePage:\n    case HandlerType.OnSettingsPage:\n      return {};\n    case HandlerType.OnUserInput: {\n      assertIsOnUserInputRequestArguments(request.params);\n\n      const { id, event, context } = request.params;\n      return { id, event, context };\n    }\n\n    default:\n      return assertExhaustive(handler);\n  }\n}\n"]}