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 { isThenable, 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}\n\nconst trpcCaptureContext = { mechanism: { handled: false, data: { function: 'trpcMiddleware' } } };\n\n/**\n * Sentry tRPC middleware that captures errors and creates spans for tRPC procedures.\n */\nexport function trpcMiddleware(options: SentryTrpcMiddlewareOptions = {}) {\n  return function (opts: SentryTrpcMiddlewareArguments): T {\n    const { path, type, next, rawInput } = opts;\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      trpcContext.input = normalize(rawInput);\n    }\n\n    setContext('trpc', trpcContext);\n\n    function 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\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      span => {\n        let maybePromiseResult;\n        try {\n          maybePromiseResult = next();\n        } catch (e) {\n          captureException(e, trpcCaptureContext);\n          span.end();\n          throw e;\n        }\n\n        if (isThenable(maybePromiseResult)) {\n          return maybePromiseResult.then(\n            nextResult => {\n              captureIfError(nextResult);\n              span.end();\n              return nextResult;\n            },\n            e => {\n              captureException(e, trpcCaptureContext);\n              span.end();\n              throw e;\n            },\n          ) as T;\n        } else {\n          captureIfError(maybePromiseResult);\n          span.end();\n          return maybePromiseResult;\n        }\n      },\n    );\n  };\n}\n"],"names":["getClient","normalize","setContext","captureException","startSpanManual","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","isThenable"],"mappings":";;;;;;;;;;AAmBA,MAAM,qBAAqB,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,gBAAiB,EAAA,IAAK,CAAA;AAClG;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAC,OAAO,GAAgC,EAAE,EAAE;AAC1E,EAAE,OAAO,UAAa,IAAI,EAAuC;AACjE,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAA,EAAW,GAAE,IAAI,CAAA;AAC/C,IAAI,MAAM,MAAA,GAASA,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,WAAW,CAAC,KAAA,GAAQC,eAAS,CAAC,QAAQ,CAAC,CAAA;AAC7C,KAAI;AACJ;AACA,IAAIC,oBAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AACnC;AACA,IAAI,SAAS,cAAc,CAAC,UAAU,EAAiB;AACvD;AACA,MAAM;AACN,QAAQ,OAAO,UAAW,KAAI,QAAS;AACvC,QAAQ,UAAA,KAAe,IAAK;AAC5B,QAAQ,IAAA,IAAQ,UAAW;AAC3B,QAAQ,CAAC,UAAU,CAAC,EAAG;AACvB,QAAQ,WAAW,UAAA;AACnB,QAAQ;AACR,QAAQC,0BAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA;AAC9D,OAAM;AACN,KAAI;AACJ;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,IAAA,IAAA;AACA,QAAA,IAAA,kBAAA,CAAA;AACA,QAAA,IAAA;AACA,UAAA,kBAAA,GAAA,IAAA,EAAA,CAAA;AACA,SAAA,CAAA,OAAA,CAAA,EAAA;AACA,UAAAH,0BAAA,CAAA,CAAA,EAAA,kBAAA,CAAA,CAAA;AACA,UAAA,IAAA,CAAA,GAAA,EAAA,CAAA;AACA,UAAA,MAAA,CAAA,CAAA;AACA,SAAA;AACA;AACA,QAAA,IAAAI,gBAAA,CAAA,kBAAA,CAAA,EAAA;AACA,UAAA,OAAA,kBAAA,CAAA,IAAA;AACA,YAAA,UAAA,IAAA;AACA,cAAA,cAAA,CAAA,UAAA,CAAA,CAAA;AACA,cAAA,IAAA,CAAA,GAAA,EAAA,CAAA;AACA,cAAA,OAAA,UAAA,CAAA;AACA,aAAA;AACA,YAAA,CAAA,IAAA;AACA,cAAAJ,0BAAA,CAAA,CAAA,EAAA,kBAAA,CAAA,CAAA;AACA,cAAA,IAAA,CAAA,GAAA,EAAA,CAAA;AACA,cAAA,MAAA,CAAA,CAAA;AACA,aAAA;AACA,WAAA,EAAA;AACA,SAAA,MAAA;AACA,UAAA,cAAA,CAAA,kBAAA,CAAA,CAAA;AACA,UAAA,IAAA,CAAA,GAAA,EAAA,CAAA;AACA,UAAA,OAAA,kBAAA,CAAA;AACA,SAAA;AACA,OAAA;AACA,KAAA,CAAA;AACA,GAAA,CAAA;AACA;;;;"}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy