All Downloads are FREE. Search and download functionalities are using the official Maven repository.

package.build.cjs.trpc.js.map Maven / Gradle / Ivy

There is a newer version: 8.39.0
Show newest version
{"version":3,"file":"trpc.js","sources":["../../src/trpc.ts"],"sourcesContent":["import { normalize } from '@sentry/utils';\n\nimport { getClient } from './currentScopes';\nimport { captureException, setContext } from './exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from './semanticAttributes';\nimport { startSpanManual } from './tracing';\n\ninterface SentryTrpcMiddlewareOptions {\n  /** Whether to include procedure inputs in reported events. Defaults to `false`. */\n  attachRpcInput?: boolean;\n}\n\nexport interface SentryTrpcMiddlewareArguments {\n  path?: unknown;\n  type?: unknown;\n  next: () => T;\n  rawInput?: unknown;\n  getRawInput?: () => Promise;\n}\n\nconst trpcCaptureContext = { mechanism: { handled: false, data: { function: 'trpcMiddleware' } } };\n\nfunction captureIfError(nextResult: unknown): void {\n  // TODO: Set span status based on what TRPCError was encountered\n  if (\n    typeof nextResult === 'object' &&\n    nextResult !== null &&\n    'ok' in nextResult &&\n    !nextResult.ok &&\n    'error' in nextResult\n  ) {\n    captureException(nextResult.error, trpcCaptureContext);\n  }\n}\n\ntype SentryTrpcMiddleware = T extends Promise ? T : Promise;\n\n/**\n * Sentry tRPC middleware that captures errors and creates spans for tRPC procedures.\n */\nexport function trpcMiddleware(options: SentryTrpcMiddlewareOptions = {}) {\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  return async function (opts: SentryTrpcMiddlewareArguments): SentryTrpcMiddleware {\n    const { path, type, next, rawInput, getRawInput } = opts;\n\n    const client = getClient();\n    const clientOptions = client && client.getOptions();\n\n    const trpcContext: Record = {\n      procedure_type: type,\n    };\n\n    if (options.attachRpcInput !== undefined ? options.attachRpcInput : clientOptions && clientOptions.sendDefaultPii) {\n      if (rawInput !== undefined) {\n        trpcContext.input = normalize(rawInput);\n      }\n\n      if (getRawInput !== undefined && typeof getRawInput === 'function') {\n        try {\n          const rawRes = await getRawInput();\n\n          trpcContext.input = normalize(rawRes);\n        } catch (err) {\n          // noop\n        }\n      }\n    }\n    setContext('trpc', trpcContext);\n\n    return startSpanManual(\n      {\n        name: `trpc/${path}`,\n        op: 'rpc.server',\n        attributes: {\n          [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route',\n          [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.rpc.trpc',\n        },\n      },\n      async span => {\n        try {\n          const nextResult = await next();\n          captureIfError(nextResult);\n          span.end();\n          return nextResult;\n        } catch (e) {\n          captureException(e, trpcCaptureContext);\n          span.end();\n          throw e;\n        }\n      },\n    ) as SentryTrpcMiddleware;\n  };\n}\n"],"names":["captureException","getClient","normalize","setContext","startSpanManual","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN"],"mappings":";;;;;;;;;;AAoBA,MAAM,qBAAqB,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,gBAAiB,EAAA,IAAK,CAAA;AAClG;AACA,SAAS,cAAc,CAAC,UAAU,EAAiB;AACnD;AACA,EAAE;AACF,IAAI,OAAO,UAAW,KAAI,QAAS;AACnC,IAAI,UAAA,KAAe,IAAK;AACxB,IAAI,IAAA,IAAQ,UAAW;AACvB,IAAI,CAAC,UAAU,CAAC,EAAG;AACnB,IAAI,WAAW,UAAA;AACf,IAAI;AACJ,IAAIA,0BAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA;AAC1D,GAAE;AACF,CAAA;;AAIA;AACA;AACA;AACO,SAAS,cAAc,CAAC,OAAO,GAAgC,EAAE,EAAE;AAC1E;AACA;AACA,EAAE,OAAO,gBAAmB,IAAI,EAA6D;AAC7F,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAY,EAAA,GAAI,IAAI,CAAA;AAC5D;AACA,IAAI,MAAM,MAAA,GAASC,uBAAS,EAAE,CAAA;AAC9B,IAAI,MAAM,gBAAgB,MAAA,IAAU,MAAM,CAAC,UAAU,EAAE,CAAA;AACvD;AACA,IAAI,MAAM,WAAW,GAA4B;AACjD,MAAM,cAAc,EAAE,IAAI;AAC1B,KAAK,CAAA;AACL;AACA,IAAI,IAAI,OAAO,CAAC,cAAA,KAAmB,SAAU,GAAE,OAAO,CAAC,iBAAiB,aAAA,IAAiB,aAAa,CAAC,cAAc,EAAE;AACvH,MAAM,IAAI,QAAS,KAAI,SAAS,EAAE;AAClC,QAAQ,WAAW,CAAC,KAAA,GAAQC,eAAS,CAAC,QAAQ,CAAC,CAAA;AAC/C,OAAM;AACN;AACA,MAAM,IAAI,WAAA,KAAgB,SAAA,IAAa,OAAO,WAAA,KAAgB,UAAU,EAAE;AAC1E,QAAQ,IAAI;AACZ,UAAU,MAAM,MAAO,GAAE,MAAM,WAAW,EAAE,CAAA;AAC5C;AACA,UAAU,WAAW,CAAC,KAAA,GAAQA,eAAS,CAAC,MAAM,CAAC,CAAA;AAC/C,SAAU,CAAA,OAAO,GAAG,EAAE;AACtB;AACA,SAAQ;AACR,OAAM;AACN,KAAI;AACJ,IAAIC,oBAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AACnC;AACA,IAAI,OAAOC,qBAAe;AAC1B,MAAM;AACN,QAAQ,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AACA,QAAA,EAAA,EAAA,YAAA;AACA,QAAA,UAAA,EAAA;AACA,UAAA,CAAAC,mDAAA,GAAA,OAAA;AACA,UAAA,CAAAC,mDAAA,GAAA,eAAA;AACA,SAAA;AACA,OAAA;AACA,MAAA,MAAA,IAAA,IAAA;AACA,QAAA,IAAA;AACA,UAAA,MAAA,UAAA,GAAA,MAAA,IAAA,EAAA,CAAA;AACA,UAAA,cAAA,CAAA,UAAA,CAAA,CAAA;AACA,UAAA,IAAA,CAAA,GAAA,EAAA,CAAA;AACA,UAAA,OAAA,UAAA,CAAA;AACA,SAAA,CAAA,OAAA,CAAA,EAAA;AACA,UAAAN,0BAAA,CAAA,CAAA,EAAA,kBAAA,CAAA,CAAA;AACA,UAAA,IAAA,CAAA,GAAA,EAAA,CAAA;AACA,UAAA,MAAA,CAAA,CAAA;AACA,SAAA;AACA,OAAA;AACA,KAAA,EAAA;AACA,GAAA,CAAA;AACA;;;;"}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy