{"version":3,"file":"rpcMeta.js","sources":["../../../src/utils/rpcMeta.ts"],"sourcesContent":["import { getTraceData, type SerializedTraceData } from '@sentry/core';\n\n/**\n * Key used to identify Sentry RPC metadata in a trailing argument.\n * This enables transparent trace propagation across Cloudflare Workers RPC\n * calls (Cap'n Proto), which have no native header/metadata support.\n */\nconst SENTRY_RPC_META_KEY = '__sentry_rpc_meta__';\n\ninterface SentryRpcMeta {\n  __sentry_rpc_meta__: SerializedTraceData;\n}\n\nfunction isSentryRpcMeta(value: unknown): value is SentryRpcMeta {\n  if (typeof value !== 'object' || value === null || !(SENTRY_RPC_META_KEY in value)) {\n    return false;\n  }\n  const sentry = (value as SentryRpcMeta).__sentry_rpc_meta__;\n  return typeof sentry === 'object' && sentry !== null;\n}\n\n/**\n * Appends Sentry RPC metadata to an args array for trace propagation.\n * If no active trace exists, returns the original args unchanged.\n */\nexport function appendRpcMeta(args: unknown[]): unknown[] {\n  const traceData = getTraceData();\n\n  if (!traceData['sentry-trace']) {\n    return args;\n  }\n\n  return [...args, { [SENTRY_RPC_META_KEY]: traceData }];\n}\n\n/**\n * Extracts Sentry RPC metadata from the trailing argument of an args array.\n * Returns cleaned args (without meta) and the extracted trace data if found.\n */\nexport function extractRpcMeta<T extends unknown[]>(\n  args: T,\n): {\n  args: T;\n  rpcMeta?: SerializedTraceData;\n} {\n  if (args.length === 0) {\n    return { args };\n  }\n\n  const last = args[args.length - 1];\n  if (isSentryRpcMeta(last)) {\n    return {\n      args: args.slice(0, -1) as T,\n      rpcMeta: last.__sentry_rpc_meta__,\n    };\n  }\n\n  return { args };\n}\n"],"names":[],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM,mBAAA,GAAsB,qBAAqB;;AAMjD,SAAS,eAAe,CAAC,KAAK,EAAmC;AACjE,EAAE,IAAI,OAAO,KAAA,KAAU,YAAY,KAAA,KAAU,IAAA,IAAQ,EAAE,uBAAuB,KAAK,CAAC,EAAE;AACtF,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,MAAM,MAAA,GAAS,CAAC,KAAA,GAAwB,mBAAmB;AAC7D,EAAE,OAAO,OAAO,MAAA,KAAW,YAAY,MAAA,KAAW,IAAI;AACtD;;AAEA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAC,IAAI,EAAwB;AAC1D,EAAE,MAAM,SAAA,GAAY,YAAY,EAAE;;AAElC,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE;AAClC,IAAI,OAAO,IAAI;AACf,EAAE;;AAEF,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,mBAAmB,GAAG,SAAA,EAAW,CAAC;AACxD;;AAEA;AACA;AACA;AACA;AACO,SAAS,cAAc;AAC9B,EAAE,IAAI;AACN;;AAGA,CAAE;AACF,EAAE,IAAI,IAAI,CAAC,MAAA,KAAW,CAAC,EAAE;AACzB,IAAI,OAAO,EAAE,IAAA,EAAM;AACnB,EAAE;;AAEF,EAAE,MAAM,IAAA,GAAO,IAAI,CAAC,IAAI,CAAC,MAAA,GAAS,CAAC,CAAC;AACpC,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;AAC7B,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAA;AAC5B,MAAM,OAAO,EAAE,IAAI,CAAC,mBAAmB;AACvC,KAAK;AACL,EAAE;;AAEF,EAAE,OAAO,EAAE,IAAA,EAAM;AACjB;;;;"}