@sentry/tanstackstart-react 10.53.1 → 10.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/README.md +3 -2
  2. package/build/cjs/client/index.js +5 -26
  3. package/build/cjs/client/index.js.map +1 -1
  4. package/build/cjs/client/sdk.js +12 -9
  5. package/build/cjs/client/sdk.js.map +1 -1
  6. package/build/cjs/client/tunnelRoute.js +2 -13
  7. package/build/cjs/client/tunnelRoute.js.map +1 -1
  8. package/build/cjs/index.server.js +1 -0
  9. package/build/cjs/index.server.js.map +1 -1
  10. package/build/cjs/server/globalMiddleware.js +38 -22
  11. package/build/cjs/server/globalMiddleware.js.map +1 -1
  12. package/build/cjs/server/index.js +16 -29
  13. package/build/cjs/server/index.js.map +1 -1
  14. package/build/cjs/server/middleware.js +10 -66
  15. package/build/cjs/server/middleware.js.map +1 -1
  16. package/build/cjs/server/routeParametrization.js +47 -0
  17. package/build/cjs/server/routeParametrization.js.map +1 -0
  18. package/build/cjs/server/sdk.js +9 -7
  19. package/build/cjs/server/sdk.js.map +1 -1
  20. package/build/cjs/server/tunnelRoute.js +11 -31
  21. package/build/cjs/server/tunnelRoute.js.map +1 -1
  22. package/build/cjs/server/utils.js +4 -21
  23. package/build/cjs/server/utils.js.map +1 -1
  24. package/build/cjs/server/wrapFetchWithSentry.js +88 -44
  25. package/build/cjs/server/wrapFetchWithSentry.js.map +1 -1
  26. package/build/cjs/vite/autoInstrumentMiddleware.js +15 -97
  27. package/build/cjs/vite/autoInstrumentMiddleware.js.map +1 -1
  28. package/build/cjs/vite/routePatterns.js +60 -0
  29. package/build/cjs/vite/routePatterns.js.map +1 -0
  30. package/build/cjs/vite/sentryTanstackStart.js +8 -44
  31. package/build/cjs/vite/sentryTanstackStart.js.map +1 -1
  32. package/build/cjs/vite/sourceMaps.js +34 -75
  33. package/build/cjs/vite/sourceMaps.js.map +1 -1
  34. package/build/cjs/vite/tunnelRoute.js +30 -63
  35. package/build/cjs/vite/tunnelRoute.js.map +1 -1
  36. package/build/esm/client/index.js +5 -26
  37. package/build/esm/client/index.js.map +1 -1
  38. package/build/esm/client/sdk.js +12 -9
  39. package/build/esm/client/sdk.js.map +1 -1
  40. package/build/esm/client/tunnelRoute.js +2 -13
  41. package/build/esm/client/tunnelRoute.js.map +1 -1
  42. package/build/esm/index.server.js +1 -1
  43. package/build/esm/package.json +1 -1
  44. package/build/esm/server/globalMiddleware.js +39 -23
  45. package/build/esm/server/globalMiddleware.js.map +1 -1
  46. package/build/esm/server/index.js +16 -30
  47. package/build/esm/server/index.js.map +1 -1
  48. package/build/esm/server/middleware.js +10 -66
  49. package/build/esm/server/middleware.js.map +1 -1
  50. package/build/esm/server/routeParametrization.js +44 -0
  51. package/build/esm/server/routeParametrization.js.map +1 -0
  52. package/build/esm/server/sdk.js +9 -7
  53. package/build/esm/server/sdk.js.map +1 -1
  54. package/build/esm/server/tunnelRoute.js +11 -31
  55. package/build/esm/server/tunnelRoute.js.map +1 -1
  56. package/build/esm/server/utils.js +5 -21
  57. package/build/esm/server/utils.js.map +1 -1
  58. package/build/esm/server/wrapFetchWithSentry.js +90 -46
  59. package/build/esm/server/wrapFetchWithSentry.js.map +1 -1
  60. package/build/esm/vite/autoInstrumentMiddleware.js +15 -97
  61. package/build/esm/vite/autoInstrumentMiddleware.js.map +1 -1
  62. package/build/esm/vite/routePatterns.js +57 -0
  63. package/build/esm/vite/routePatterns.js.map +1 -0
  64. package/build/esm/vite/sentryTanstackStart.js +8 -44
  65. package/build/esm/vite/sentryTanstackStart.js.map +1 -1
  66. package/build/esm/vite/sourceMaps.js +34 -75
  67. package/build/esm/vite/sourceMaps.js.map +1 -1
  68. package/build/esm/vite/tunnelRoute.js +30 -63
  69. package/build/esm/vite/tunnelRoute.js.map +1 -1
  70. package/build/types/client/sdk.d.ts.map +1 -1
  71. package/build/types/index.types.d.ts +1 -0
  72. package/build/types/index.types.d.ts.map +1 -1
  73. package/build/types/server/globalMiddleware.d.ts.map +1 -1
  74. package/build/types/server/index.d.ts +5 -0
  75. package/build/types/server/index.d.ts.map +1 -1
  76. package/build/types/server/routeParametrization.d.ts +12 -0
  77. package/build/types/server/routeParametrization.d.ts.map +1 -0
  78. package/build/types/server/sdk.d.ts.map +1 -1
  79. package/build/types/server/utils.d.ts +0 -9
  80. package/build/types/server/utils.d.ts.map +1 -1
  81. package/build/types/server/wrapFetchWithSentry.d.ts.map +1 -1
  82. package/build/types/vite/routePatterns.d.ts +18 -0
  83. package/build/types/vite/routePatterns.d.ts.map +1 -0
  84. package/build/types/vite/sentryTanstackStart.d.ts +17 -0
  85. package/build/types/vite/sentryTanstackStart.d.ts.map +1 -1
  86. package/build/types/vite/sourceMaps.d.ts +4 -4
  87. package/build/types/vite/sourceMaps.d.ts.map +1 -1
  88. package/build/types-ts3.8/index.types.d.ts +1 -0
  89. package/build/types-ts3.8/server/index.d.ts +5 -0
  90. package/build/types-ts3.8/server/routeParametrization.d.ts +12 -0
  91. package/build/types-ts3.8/server/utils.d.ts +0 -9
  92. package/build/types-ts3.8/vite/routePatterns.d.ts +18 -0
  93. package/build/types-ts3.8/vite/sentryTanstackStart.d.ts +17 -0
  94. package/build/types-ts3.8/vite/sourceMaps.d.ts +4 -4
  95. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"tunnelRoute.js","sources":["../../../src/vite/tunnelRoute.ts"],"sourcesContent":["import type { Plugin } from 'vite';\n\nexport type TunnelRouteOptions =\n | true\n | string\n | {\n /**\n * A list of DSNs that are allowed to use the managed tunnel route.\n *\n * If omitted or empty, the tunnel route will derive the allowed DSN from the active server Sentry SDK at runtime.\n */\n allowedDsns?: string[];\n\n /**\n * Controls the public route path used by the managed tunnel route.\n *\n * If omitted, an opaque path is generated once per dev session or production build.\n */\n path?: string;\n };\n\nconst MANAGED_TUNNEL_ROUTE_IMPORT = 'SentryManagedTunnelRouteImport';\nconst MANAGED_TUNNEL_ROUTE_NAME = 'SentryManagedTunnelRoute';\nconst MANAGED_TUNNEL_ROUTE_PATH_ENV_KEY = '__SENTRY_INTERNAL_TANSTACKSTART_TUNNEL_ROUTE__';\n\nconst VIRTUAL_TUNNEL_ROUTE_ID = 'virtual:sentry-tanstackstart-react/tunnel-route';\nconst RESOLVED_VIRTUAL_TUNNEL_ROUTE_ID = `\\0${VIRTUAL_TUNNEL_ROUTE_ID}`;\n\nfunction generateRandomTunnelRoute(): string {\n const randomPath = Array.from({ length: 8 }, () => Math.floor(Math.random() * 36).toString(36)).join('');\n\n return `/${randomPath}`;\n}\n\nexport function resolveTunnelRoute(tunnel: true | string): string {\n if (typeof tunnel === 'string') {\n return tunnel;\n }\n\n if (process.env[MANAGED_TUNNEL_ROUTE_PATH_ENV_KEY]) {\n return process.env[MANAGED_TUNNEL_ROUTE_PATH_ENV_KEY];\n }\n\n const resolvedTunnelRoute = generateRandomTunnelRoute();\n process.env[MANAGED_TUNNEL_ROUTE_PATH_ENV_KEY] = resolvedTunnelRoute;\n return resolvedTunnelRoute;\n}\n\ntype NormalizedTunnelRouteOptions = {\n resolvedPath: string;\n allowedDsns: string[] | undefined;\n};\n\nfunction validateStaticPath(path: string): void {\n if (!path.startsWith('/') || path.includes('?') || path.includes('#')) {\n throw new Error(\n '[@sentry/tanstackstart-react] `tunnelRoute` static paths must start with `/` and must not contain query or hash segments.',\n );\n }\n}\n\nfunction normalizeTunnelRouteOptions(options: TunnelRouteOptions): NormalizedTunnelRouteOptions {\n if (options === true) {\n return { resolvedPath: resolveTunnelRoute(true), allowedDsns: undefined };\n }\n\n if (typeof options === 'string') {\n validateStaticPath(options);\n return {\n resolvedPath: resolveTunnelRoute(options),\n allowedDsns: undefined,\n };\n }\n\n const allowedDsns = options.allowedDsns && options.allowedDsns.length > 0 ? options.allowedDsns : undefined;\n const path = options.path;\n\n if (path) {\n validateStaticPath(path);\n }\n\n return { resolvedPath: resolveTunnelRoute(path || true), allowedDsns };\n}\n\n// `routeTree.gen.ts` quote style follows `tsr.config.json#quoteStyle` (`single` | `double`),\n// so we check both forms for each route-identifying key.\nconst ROUTE_CONFLICT_KEYS = ['fullPath', 'path', 'id'] as const;\n\nfunction hasRouteConflict(source: string, resolvedTunnelRoute: string): boolean {\n const literals = [`'${resolvedTunnelRoute}'`, `\"${resolvedTunnelRoute}\"`];\n return ROUTE_CONFLICT_KEYS.some(key => literals.some(literal => source.includes(`${key}: ${literal}`)));\n}\n\nfunction injectAfterLastImport(source: string, statement: string): string {\n const importMatches = [...source.matchAll(/^import .+$/gm)];\n const lastImport = importMatches.at(-1);\n\n if (lastImport?.index === undefined) {\n throw new Error(\n '[@sentry/tanstackstart-react] Failed to inject the managed tunnel route because `routeTree.gen.ts` imports could not be located.',\n );\n }\n\n const insertIndex = lastImport.index + lastImport[0].length;\n return `${source.slice(0, insertIndex)}\\n${statement}${source.slice(insertIndex)}`;\n}\n\nexport function injectManagedTunnelRoute(source: string, resolvedTunnelRoute: string): string {\n if (source.includes(VIRTUAL_TUNNEL_ROUTE_ID)) {\n return source;\n }\n\n if (hasRouteConflict(source, resolvedTunnelRoute)) {\n throw new Error(\n `[@sentry/tanstackstart-react] Cannot register managed tunnel route \"${resolvedTunnelRoute}\" because an existing TanStack Start route already uses that path.`,\n );\n }\n\n const serializedTunnelRoute = JSON.stringify(resolvedTunnelRoute);\n\n let transformedSource = injectAfterLastImport(\n source,\n `import { Route as ${MANAGED_TUNNEL_ROUTE_IMPORT} } from '${VIRTUAL_TUNNEL_ROUTE_ID}'`,\n );\n\n const rootRouteChildrenMatch = transformedSource.match(\n /const rootRouteChildren(?:\\s*:\\s*RootRouteChildren)?\\s*=\\s*\\{/,\n );\n\n if (rootRouteChildrenMatch?.index === undefined) {\n throw new Error(\n '[@sentry/tanstackstart-react] Failed to inject the managed tunnel route because the generated TanStack route tree did not contain `rootRouteChildren`.',\n );\n }\n\n const injectedRootRouteChildrenDeclaration = `const ${MANAGED_TUNNEL_ROUTE_NAME} = ${MANAGED_TUNNEL_ROUTE_IMPORT}.update({\n id: ${serializedTunnelRoute},\n path: ${serializedTunnelRoute},\n getParentRoute: () => rootRouteImport,\n} as any)\n\n${rootRouteChildrenMatch[0]}\n ${MANAGED_TUNNEL_ROUTE_NAME}: ${MANAGED_TUNNEL_ROUTE_NAME},\n`;\n\n transformedSource = `${transformedSource.slice(0, rootRouteChildrenMatch.index)}${injectedRootRouteChildrenDeclaration}${transformedSource.slice(rootRouteChildrenMatch.index + rootRouteChildrenMatch[0].length)}`;\n\n return transformedSource;\n}\n\nexport function makeTunnelRoutePlugin(options: TunnelRouteOptions, debug?: boolean): Plugin {\n const normalized = normalizeTunnelRouteOptions(options);\n const resolvedTunnelRoute = normalized.resolvedPath;\n const serializedTunnelRoute = JSON.stringify(resolvedTunnelRoute);\n const serializedAllowedDsns = normalized.allowedDsns ? JSON.stringify(normalized.allowedDsns) : undefined;\n\n if (debug) {\n // eslint-disable-next-line no-console\n console.log(`[@sentry/tanstackstart-react] Registered tunnel route: ${resolvedTunnelRoute}`);\n }\n\n return {\n name: 'sentry-tanstackstart-tunnel-route',\n enforce: 'pre',\n config() {\n return {\n define: {\n __SENTRY_TANSTACKSTART_TUNNEL_ROUTE__: serializedTunnelRoute,\n },\n };\n },\n resolveId(source) {\n return source === VIRTUAL_TUNNEL_ROUTE_ID ? RESOLVED_VIRTUAL_TUNNEL_ROUTE_ID : null;\n },\n load(id) {\n if (id !== RESOLVED_VIRTUAL_TUNNEL_ROUTE_ID) {\n return null;\n }\n\n return `import { createFileRoute } from '@tanstack/react-router';\n\nexport const Route = createFileRoute(${serializedTunnelRoute})({\n server: {\n handlers: {\n async POST({ request }) {\n const Sentry = await import('@sentry/tanstackstart-react');\n return Sentry.createSentryTunnelRoute(${serializedAllowedDsns ? `{ allowedDsns: ${serializedAllowedDsns} }` : `{}`}).handlers.POST({ request });\n },\n },\n },\n});\n`;\n },\n transform(source, id) {\n if (!id.endsWith('/routeTree.gen.ts') && !id.endsWith('\\\\routeTree.gen.ts')) {\n return null;\n }\n\n return injectManagedTunnelRoute(source, resolvedTunnelRoute);\n },\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tunnelRoute.js","sources":["../../../src/vite/tunnelRoute.ts"],"sourcesContent":["import type { Plugin } from 'vite';\n\nexport type TunnelRouteOptions =\n | true\n | string\n | {\n /**\n * A list of DSNs that are allowed to use the managed tunnel route.\n *\n * If omitted or empty, the tunnel route will derive the allowed DSN from the active server Sentry SDK at runtime.\n */\n allowedDsns?: string[];\n\n /**\n * Controls the public route path used by the managed tunnel route.\n *\n * If omitted, an opaque path is generated once per dev session or production build.\n */\n path?: string;\n };\n\nconst MANAGED_TUNNEL_ROUTE_IMPORT = 'SentryManagedTunnelRouteImport';\nconst MANAGED_TUNNEL_ROUTE_NAME = 'SentryManagedTunnelRoute';\nconst MANAGED_TUNNEL_ROUTE_PATH_ENV_KEY = '__SENTRY_INTERNAL_TANSTACKSTART_TUNNEL_ROUTE__';\n\nconst VIRTUAL_TUNNEL_ROUTE_ID = 'virtual:sentry-tanstackstart-react/tunnel-route';\nconst RESOLVED_VIRTUAL_TUNNEL_ROUTE_ID = `\\0${VIRTUAL_TUNNEL_ROUTE_ID}`;\n\nfunction generateRandomTunnelRoute(): string {\n const randomPath = Array.from({ length: 8 }, () => Math.floor(Math.random() * 36).toString(36)).join('');\n\n return `/${randomPath}`;\n}\n\nexport function resolveTunnelRoute(tunnel: true | string): string {\n if (typeof tunnel === 'string') {\n return tunnel;\n }\n\n if (process.env[MANAGED_TUNNEL_ROUTE_PATH_ENV_KEY]) {\n return process.env[MANAGED_TUNNEL_ROUTE_PATH_ENV_KEY];\n }\n\n const resolvedTunnelRoute = generateRandomTunnelRoute();\n process.env[MANAGED_TUNNEL_ROUTE_PATH_ENV_KEY] = resolvedTunnelRoute;\n return resolvedTunnelRoute;\n}\n\ntype NormalizedTunnelRouteOptions = {\n resolvedPath: string;\n allowedDsns: string[] | undefined;\n};\n\nfunction validateStaticPath(path: string): void {\n if (!path.startsWith('/') || path.includes('?') || path.includes('#')) {\n throw new Error(\n '[@sentry/tanstackstart-react] `tunnelRoute` static paths must start with `/` and must not contain query or hash segments.',\n );\n }\n}\n\nfunction normalizeTunnelRouteOptions(options: TunnelRouteOptions): NormalizedTunnelRouteOptions {\n if (options === true) {\n return { resolvedPath: resolveTunnelRoute(true), allowedDsns: undefined };\n }\n\n if (typeof options === 'string') {\n validateStaticPath(options);\n return {\n resolvedPath: resolveTunnelRoute(options),\n allowedDsns: undefined,\n };\n }\n\n const allowedDsns = options.allowedDsns && options.allowedDsns.length > 0 ? options.allowedDsns : undefined;\n const path = options.path;\n\n if (path) {\n validateStaticPath(path);\n }\n\n return { resolvedPath: resolveTunnelRoute(path || true), allowedDsns };\n}\n\n// `routeTree.gen.ts` quote style follows `tsr.config.json#quoteStyle` (`single` | `double`),\n// so we check both forms for each route-identifying key.\nconst ROUTE_CONFLICT_KEYS = ['fullPath', 'path', 'id'] as const;\n\nfunction hasRouteConflict(source: string, resolvedTunnelRoute: string): boolean {\n const literals = [`'${resolvedTunnelRoute}'`, `\"${resolvedTunnelRoute}\"`];\n return ROUTE_CONFLICT_KEYS.some(key => literals.some(literal => source.includes(`${key}: ${literal}`)));\n}\n\nfunction injectAfterLastImport(source: string, statement: string): string {\n const importMatches = [...source.matchAll(/^import .+$/gm)];\n const lastImport = importMatches.at(-1);\n\n if (lastImport?.index === undefined) {\n throw new Error(\n '[@sentry/tanstackstart-react] Failed to inject the managed tunnel route because `routeTree.gen.ts` imports could not be located.',\n );\n }\n\n const insertIndex = lastImport.index + lastImport[0].length;\n return `${source.slice(0, insertIndex)}\\n${statement}${source.slice(insertIndex)}`;\n}\n\nexport function injectManagedTunnelRoute(source: string, resolvedTunnelRoute: string): string {\n if (source.includes(VIRTUAL_TUNNEL_ROUTE_ID)) {\n return source;\n }\n\n if (hasRouteConflict(source, resolvedTunnelRoute)) {\n throw new Error(\n `[@sentry/tanstackstart-react] Cannot register managed tunnel route \"${resolvedTunnelRoute}\" because an existing TanStack Start route already uses that path.`,\n );\n }\n\n const serializedTunnelRoute = JSON.stringify(resolvedTunnelRoute);\n\n let transformedSource = injectAfterLastImport(\n source,\n `import { Route as ${MANAGED_TUNNEL_ROUTE_IMPORT} } from '${VIRTUAL_TUNNEL_ROUTE_ID}'`,\n );\n\n const rootRouteChildrenMatch = transformedSource.match(\n /const rootRouteChildren(?:\\s*:\\s*RootRouteChildren)?\\s*=\\s*\\{/,\n );\n\n if (rootRouteChildrenMatch?.index === undefined) {\n throw new Error(\n '[@sentry/tanstackstart-react] Failed to inject the managed tunnel route because the generated TanStack route tree did not contain `rootRouteChildren`.',\n );\n }\n\n const injectedRootRouteChildrenDeclaration = `const ${MANAGED_TUNNEL_ROUTE_NAME} = ${MANAGED_TUNNEL_ROUTE_IMPORT}.update({\n id: ${serializedTunnelRoute},\n path: ${serializedTunnelRoute},\n getParentRoute: () => rootRouteImport,\n} as any)\n\n${rootRouteChildrenMatch[0]}\n ${MANAGED_TUNNEL_ROUTE_NAME}: ${MANAGED_TUNNEL_ROUTE_NAME},\n`;\n\n transformedSource = `${transformedSource.slice(0, rootRouteChildrenMatch.index)}${injectedRootRouteChildrenDeclaration}${transformedSource.slice(rootRouteChildrenMatch.index + rootRouteChildrenMatch[0].length)}`;\n\n return transformedSource;\n}\n\nexport function makeTunnelRoutePlugin(options: TunnelRouteOptions, debug?: boolean): Plugin {\n const normalized = normalizeTunnelRouteOptions(options);\n const resolvedTunnelRoute = normalized.resolvedPath;\n const serializedTunnelRoute = JSON.stringify(resolvedTunnelRoute);\n const serializedAllowedDsns = normalized.allowedDsns ? JSON.stringify(normalized.allowedDsns) : undefined;\n\n if (debug) {\n // eslint-disable-next-line no-console\n console.log(`[@sentry/tanstackstart-react] Registered tunnel route: ${resolvedTunnelRoute}`);\n }\n\n return {\n name: 'sentry-tanstackstart-tunnel-route',\n enforce: 'pre',\n config() {\n return {\n define: {\n __SENTRY_TANSTACKSTART_TUNNEL_ROUTE__: serializedTunnelRoute,\n },\n };\n },\n resolveId(source) {\n return source === VIRTUAL_TUNNEL_ROUTE_ID ? RESOLVED_VIRTUAL_TUNNEL_ROUTE_ID : null;\n },\n load(id) {\n if (id !== RESOLVED_VIRTUAL_TUNNEL_ROUTE_ID) {\n return null;\n }\n\n return `import { createFileRoute } from '@tanstack/react-router';\n\nexport const Route = createFileRoute(${serializedTunnelRoute})({\n server: {\n handlers: {\n async POST({ request }) {\n const Sentry = await import('@sentry/tanstackstart-react');\n return Sentry.createSentryTunnelRoute(${serializedAllowedDsns ? `{ allowedDsns: ${serializedAllowedDsns} }` : `{}`}).handlers.POST({ request });\n },\n },\n },\n});\n`;\n },\n transform(source, id) {\n if (!id.endsWith('/routeTree.gen.ts') && !id.endsWith('\\\\routeTree.gen.ts')) {\n return null;\n }\n\n return injectManagedTunnelRoute(source, resolvedTunnelRoute);\n },\n };\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/client/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,cAAc,IAAI,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAI3E;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,GAAG,SAAS,CAUrE"}
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/client/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,cAAc,IAAI,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAI3E;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,GAAG,SAAS,CAqBrE"}
@@ -24,6 +24,7 @@ export declare const OpenFeatureIntegrationHook: typeof clientSdk.OpenFeatureInt
24
24
  export declare const statsigIntegration: typeof clientSdk.statsigIntegration;
25
25
  export declare const unleashIntegration: typeof clientSdk.unleashIntegration;
26
26
  export declare const wrapMiddlewaresWithSentry: typeof serverSdk.wrapMiddlewaresWithSentry;
27
+ export declare const replayIntegration: typeof clientSdk.replayIntegration;
27
28
  export declare const tanstackRouterBrowserTracingIntegration: typeof clientSdk.tanstackRouterBrowserTracingIntegration;
28
29
  export declare const sentryGlobalRequestMiddleware: typeof serverSdk.sentryGlobalRequestMiddleware;
29
30
  export declare const sentryGlobalFunctionMiddleware: typeof serverSdk.sentryGlobalFunctionMiddleware;
@@ -1 +1 @@
1
- {"version":3,"file":"index.types.d.ts","sourceRoot":"","sources":["../../src/index.types.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,KAAK,SAAS,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,KAAK,SAAS,MAAM,UAAU,CAAC;AAE3C,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AAEzB,4CAA4C;AAC5C,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAEtH,MAAM,CAAC,OAAO,CAAC,MAAM,uBAAuB,EAAE,OAAO,SAAS,CAAC,uBAAuB,CAAC;AACvF,MAAM,CAAC,OAAO,CAAC,MAAM,uBAAuB,EAAE,OAAO,SAAS,CAAC,uBAAuB,CAAC;AACvF,MAAM,CAAC,OAAO,CAAC,MAAM,wBAAwB,EAAE,OAAO,SAAS,CAAC,wBAAwB,CAAC;AACzF,MAAM,CAAC,OAAO,CAAC,MAAM,gBAAgB,EAAE,OAAO,SAAS,CAAC,gBAAgB,CAAC;AAEzE,MAAM,CAAC,OAAO,CAAC,MAAM,sBAAsB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,WAAW,EAAE,CAAC;AACjF,MAAM,CAAC,OAAO,CAAC,MAAM,kBAAkB,EAAE,WAAW,CAAC;AAErD,MAAM,CAAC,OAAO,CAAC,MAAM,aAAa,EAAE,OAAO,SAAS,CAAC,aAAa,CAAC;AACnE,MAAM,CAAC,OAAO,CAAC,MAAM,iBAAiB,EAAE,OAAO,SAAS,CAAC,iBAAiB,CAAC;AAE3E,MAAM,CAAC,OAAO,CAAC,MAAM,MAAM,EAAE,OAAO,SAAS,CAAC,MAAM,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AAE/E,MAAM,CAAC,OAAO,CAAC,MAAM,qBAAqB,EAAE,OAAO,SAAS,CAAC,qBAAqB,CAAC;AACnF,MAAM,CAAC,OAAO,CAAC,MAAM,uBAAuB,EAAE,OAAO,SAAS,CAAC,uBAAuB,CAAC;AACvF,MAAM,CAAC,OAAO,CAAC,MAAM,gCAAgC,EAAE,OAAO,SAAS,CAAC,gCAAgC,CAAC;AACzG,MAAM,CAAC,OAAO,CAAC,MAAM,sBAAsB,EAAE,OAAO,SAAS,CAAC,sBAAsB,CAAC;AACrF,MAAM,CAAC,OAAO,CAAC,MAAM,0BAA0B,EAAE,OAAO,SAAS,CAAC,0BAA0B,CAAC;AAC7F,MAAM,CAAC,OAAO,CAAC,MAAM,kBAAkB,EAAE,OAAO,SAAS,CAAC,kBAAkB,CAAC;AAC7E,MAAM,CAAC,OAAO,CAAC,MAAM,kBAAkB,EAAE,OAAO,SAAS,CAAC,kBAAkB,CAAC;AAE7E,MAAM,CAAC,OAAO,CAAC,MAAM,yBAAyB,EAAE,OAAO,SAAS,CAAC,yBAAyB,CAAC;AAE3F,MAAM,CAAC,OAAO,CAAC,MAAM,uCAAuC,EAAE,OAAO,SAAS,CAAC,uCAAuC,CAAC;AACvH,MAAM,CAAC,OAAO,CAAC,MAAM,6BAA6B,EAAE,OAAO,SAAS,CAAC,6BAA6B,CAAC;AACnG,MAAM,CAAC,OAAO,CAAC,MAAM,8BAA8B,EAAE,OAAO,SAAS,CAAC,8BAA8B,CAAC;AACrG,MAAM,CAAC,OAAO,CAAC,MAAM,uBAAuB,EAAE,OAAO,SAAS,CAAC,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.types.d.ts","sourceRoot":"","sources":["../../src/index.types.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,KAAK,SAAS,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,KAAK,SAAS,MAAM,UAAU,CAAC;AAE3C,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AAEzB,4CAA4C;AAC5C,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAEtH,MAAM,CAAC,OAAO,CAAC,MAAM,uBAAuB,EAAE,OAAO,SAAS,CAAC,uBAAuB,CAAC;AACvF,MAAM,CAAC,OAAO,CAAC,MAAM,uBAAuB,EAAE,OAAO,SAAS,CAAC,uBAAuB,CAAC;AACvF,MAAM,CAAC,OAAO,CAAC,MAAM,wBAAwB,EAAE,OAAO,SAAS,CAAC,wBAAwB,CAAC;AACzF,MAAM,CAAC,OAAO,CAAC,MAAM,gBAAgB,EAAE,OAAO,SAAS,CAAC,gBAAgB,CAAC;AAEzE,MAAM,CAAC,OAAO,CAAC,MAAM,sBAAsB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,WAAW,EAAE,CAAC;AACjF,MAAM,CAAC,OAAO,CAAC,MAAM,kBAAkB,EAAE,WAAW,CAAC;AAErD,MAAM,CAAC,OAAO,CAAC,MAAM,aAAa,EAAE,OAAO,SAAS,CAAC,aAAa,CAAC;AACnE,MAAM,CAAC,OAAO,CAAC,MAAM,iBAAiB,EAAE,OAAO,SAAS,CAAC,iBAAiB,CAAC;AAE3E,MAAM,CAAC,OAAO,CAAC,MAAM,MAAM,EAAE,OAAO,SAAS,CAAC,MAAM,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AAE/E,MAAM,CAAC,OAAO,CAAC,MAAM,qBAAqB,EAAE,OAAO,SAAS,CAAC,qBAAqB,CAAC;AACnF,MAAM,CAAC,OAAO,CAAC,MAAM,uBAAuB,EAAE,OAAO,SAAS,CAAC,uBAAuB,CAAC;AACvF,MAAM,CAAC,OAAO,CAAC,MAAM,gCAAgC,EAAE,OAAO,SAAS,CAAC,gCAAgC,CAAC;AACzG,MAAM,CAAC,OAAO,CAAC,MAAM,sBAAsB,EAAE,OAAO,SAAS,CAAC,sBAAsB,CAAC;AACrF,MAAM,CAAC,OAAO,CAAC,MAAM,0BAA0B,EAAE,OAAO,SAAS,CAAC,0BAA0B,CAAC;AAC7F,MAAM,CAAC,OAAO,CAAC,MAAM,kBAAkB,EAAE,OAAO,SAAS,CAAC,kBAAkB,CAAC;AAC7E,MAAM,CAAC,OAAO,CAAC,MAAM,kBAAkB,EAAE,OAAO,SAAS,CAAC,kBAAkB,CAAC;AAE7E,MAAM,CAAC,OAAO,CAAC,MAAM,yBAAyB,EAAE,OAAO,SAAS,CAAC,yBAAyB,CAAC;AAE3F,MAAM,CAAC,OAAO,CAAC,MAAM,iBAAiB,EAAE,OAAO,SAAS,CAAC,iBAAiB,CAAC;AAC3E,MAAM,CAAC,OAAO,CAAC,MAAM,uCAAuC,EAAE,OAAO,SAAS,CAAC,uCAAuC,CAAC;AACvH,MAAM,CAAC,OAAO,CAAC,MAAM,6BAA6B,EAAE,OAAO,SAAS,CAAC,6BAA6B,CAAC;AACnG,MAAM,CAAC,OAAO,CAAC,MAAM,8BAA8B,EAAE,OAAO,SAAS,CAAC,8BAA8B,CAAC;AACrG,MAAM,CAAC,OAAO,CAAC,MAAM,uBAAuB,EAAE,OAAO,SAAS,CAAC,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"globalMiddleware.d.ts","sourceRoot":"","sources":["../../../src/server/globalMiddleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAgB9D;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,sBAO3C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,8BAA8B,EAAE,sBAO5C,CAAC"}
1
+ {"version":3,"file":"globalMiddleware.d.ts","sourceRoot":"","sources":["../../../src/server/globalMiddleware.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAyD9D;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,sBAO3C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,8BAA8B,EAAE,sBAQ5C,CAAC"}
@@ -5,6 +5,11 @@ export { wrapFetchWithSentry } from './wrapFetchWithSentry';
5
5
  export { wrapMiddlewaresWithSentry } from './middleware';
6
6
  export { sentryGlobalRequestMiddleware, sentryGlobalFunctionMiddleware } from './globalMiddleware';
7
7
  export { createSentryTunnelRoute } from './tunnelRoute';
8
+ /**
9
+ * A no-op stub of the replay integration for the server. Router setup code is shared between client and server,
10
+ * so this stub is needed to prevent build errors during SSR bundling.
11
+ */
12
+ export declare function replayIntegration(_options?: Record<string, unknown>): Integration;
8
13
  /**
9
14
  * A no-op stub of the browser tracing integration for the server. Router setup code is shared between client and server,
10
15
  * so this stub is needed to prevent build errors during SSR bundling.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,cAAc,cAAc,CAAC;AAE7B,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,6BAA6B,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD;;;GAGG;AACH,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,WAAW,CAKb;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAG,KAAK,CAAC,SAU7E,CAAC;AAEF;;;GAGG;AAEH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7D,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,GACvC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAEb"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,cAAc,cAAc,CAAC;AAE7B,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,6BAA6B,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,CAKjF;AAED;;;GAGG;AACH,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,WAAW,CAKb;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAG,KAAK,CAAC,SAU7E,CAAC;AAEF;;;GAGG;AAEH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7D,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,GACvC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAEb"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Matches a URL pathname against a list of TanStack Start route patterns.
3
+ * Patterns use `$param` syntax for dynamic segments (e.g., `/users/$id`).
4
+ *
5
+ * Patterns are expected to be pre-sorted by specificity (more segments first, static before dynamic).
6
+ */
7
+ export declare function matchUrlToRoutePattern(pathname: string, patterns: string[]): string | undefined;
8
+ /**
9
+ * Updates the active root span with a parametrized route name.
10
+ */
11
+ export declare function updateSpanWithRouteParametrization(method: string, pathname: string, patterns: string[]): void;
12
+ //# sourceMappingURL=routeParametrization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routeParametrization.d.ts","sourceRoot":"","sources":["../../../src/server/routeParametrization.ts"],"names":[],"mappings":"AAwBA;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAQ/F;AAED;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAsB7G"}
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/server/sdk.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG5D;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,CASjE"}
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/server/sdk.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG5D;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,CAiBjE"}
@@ -1,13 +1,4 @@
1
1
  import type { StartSpanOptions } from '@sentry/core';
2
- /**
3
- * Extracts the SHA-256 hash from a server function pathname.
4
- * Server function pathnames are structured as `/_serverFn/<hash>`.
5
- * This function matches the pattern and returns the hash if found.
6
- *
7
- * @param pathname - the pathname of the server function
8
- * @returns the sha256 of the server function
9
- */
10
- export declare function extractServerFunctionSha256(pathname: string): string;
11
2
  /**
12
3
  * Returns span options for TanStack Start middleware spans.
13
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/server/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrD;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGpE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CASvE"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/server/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CASvE"}
@@ -1 +1 @@
1
- {"version":3,"file":"wrapFetchWithSentry.d.ts","sourceRoot":"","sources":["../../../src/server/wrapFetchWithSentry.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;CAC3E,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,WAAW,CAwCzE"}
1
+ {"version":3,"file":"wrapFetchWithSentry.d.ts","sourceRoot":"","sources":["../../../src/server/wrapFetchWithSentry.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;CAC3E,CAAC;AAgGF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,WAAW,CAwCzE"}
@@ -0,0 +1,18 @@
1
+ import type { Plugin } from 'vite';
2
+ /**
3
+ * Extracts route patterns from TanStack Start's generated routeTree.gen.ts
4
+ * and replaces `__SENTRY_ROUTE_PATTERNS__` references with the extracted patterns.
5
+ *
6
+ * The route tree file is read during `transform` rather than `config` because
7
+ * TanStack Start generates it during the build.
8
+ */
9
+ export declare function makeRoutePatternPlugin(): Plugin;
10
+ /**
11
+ * Extracts full route path patterns from the content of routeTree.gen.ts.
12
+ *
13
+ * Parses the `fullPaths` type union which contains the resolved full paths
14
+ * (e.g., `fullPaths: '/' | '/page-a' | '/users/$userId'`).
15
+ * This is more reliable than `path:` properties which can be relative for nested routes.
16
+ */
17
+ export declare function extractRoutePatterns(content: string): string[];
18
+ //# sourceMappingURL=routePatterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routePatterns.d.ts","sourceRoot":"","sources":["../../../src/vite/routePatterns.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC;;;;;;GAMG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAmC/C;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAyB9D"}
@@ -17,6 +17,23 @@ export interface SentryTanstackStartOptions extends BuildTimeOptionsBase {
17
17
  * @default true
18
18
  */
19
19
  autoInstrumentMiddleware?: boolean;
20
+ /**
21
+ * Options related to react component name annotations.
22
+ * Disabled by default, unless a value is set for this option.
23
+ * When enabled, your app's DOM will automatically be annotated during build-time with their respective component names.
24
+ * This will unlock the capability to search for Replays in Sentry by component name, as well as see component names in breadcrumbs and performance monitoring.
25
+ * Please note that this feature is not currently supported by the esbuild bundler plugins, and will only annotate React components
26
+ */
27
+ reactComponentAnnotation?: {
28
+ /**
29
+ * Whether the component name annotate plugin should be enabled or not.
30
+ */
31
+ enabled?: boolean;
32
+ /**
33
+ * A list of strings representing the names of components to ignore. The plugin will not apply `data-sentry` annotations on the DOM element for these components.
34
+ */
35
+ ignoredComponents?: string[];
36
+ };
20
37
  /**
21
38
  * Configures a framework-managed same-origin tunnel route for Sentry envelopes.
22
39
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sentryTanstackStart.d.ts","sourceRoot":"","sources":["../../../src/vite/sentryTanstackStart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAGnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGxD;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE;;;;;;;;;;OAUG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,0BAA+B,GAAG,MAAM,EAAE,CA0BtF"}
1
+ {"version":3,"file":"sentryTanstackStart.d.ts","sourceRoot":"","sources":["../../../src/vite/sentryTanstackStart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAInC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGxD;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE;;;;;;;;;;OAUG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;;;;;OAMG;IACH,wBAAwB,CAAC,EAAE;QACzB;;WAEG;QACH,OAAO,CAAC,EAAE,OAAO,CAAC;QAElB;;WAEG;QACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;KAC9B,CAAC;IAEF;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,0BAA+B,GAAG,MAAM,EAAE,CA0BtF"}
@@ -1,13 +1,13 @@
1
- import type { BuildTimeOptionsBase } from '@sentry/core';
2
1
  import type { Plugin, UserConfig } from 'vite';
2
+ import type { SentryTanstackStartOptions } from './sentryTanstackStart';
3
3
  /**
4
4
  * A Sentry plugin for adding the @sentry/vite-plugin to automatically upload source maps to Sentry.
5
5
  */
6
- export declare function makeAddSentryVitePlugin(options: BuildTimeOptionsBase): Plugin[];
6
+ export declare function makeAddSentryVitePlugin(options: SentryTanstackStartOptions): Plugin[];
7
7
  /**
8
8
  * A Sentry plugin for TanStack Start React to enable "hidden" source maps if they are unset.
9
9
  */
10
- export declare function makeEnableSourceMapsVitePlugin(options: BuildTimeOptionsBase): Plugin[];
10
+ export declare function makeEnableSourceMapsVitePlugin(options: SentryTanstackStartOptions): Plugin[];
11
11
  /** There are 3 ways to set up source map generation (https://github.com/getsentry/sentry-javascript/issues/13993)
12
12
  *
13
13
  * 1. User explicitly disabled source maps
@@ -23,5 +23,5 @@ export declare function makeEnableSourceMapsVitePlugin(options: BuildTimeOptions
23
23
  *
24
24
  * --> only exported for testing
25
25
  */
26
- export declare function getUpdatedSourceMapSettings(viteConfig: UserConfig, sentryPluginOptions?: BuildTimeOptionsBase): boolean | 'inline' | 'hidden';
26
+ export declare function getUpdatedSourceMapSettings(viteConfig: UserConfig, sentryPluginOptions?: SentryTanstackStartOptions): boolean | 'inline' | 'hidden';
27
27
  //# sourceMappingURL=sourceMaps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sourceMaps.d.ts","sourceRoot":"","sources":["../../../src/vite/sourceMaps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAI/C;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,EAAE,CA2E/E;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAiBtF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,UAAU,EACtB,mBAAmB,CAAC,EAAE,oBAAoB,GACzC,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAwC/B"}
1
+ {"version":3,"file":"sourceMaps.d.ts","sourceRoot":"","sources":["../../../src/vite/sourceMaps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAIxE;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,0BAA0B,GAAG,MAAM,EAAE,CAgFrF;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,0BAA0B,GAAG,MAAM,EAAE,CAiB5F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,UAAU,EACtB,mBAAmB,CAAC,EAAE,0BAA0B,GAC/C,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAwC/B"}
@@ -24,6 +24,7 @@ export declare const OpenFeatureIntegrationHook: typeof clientSdk.OpenFeatureInt
24
24
  export declare const statsigIntegration: typeof clientSdk.statsigIntegration;
25
25
  export declare const unleashIntegration: typeof clientSdk.unleashIntegration;
26
26
  export declare const wrapMiddlewaresWithSentry: typeof serverSdk.wrapMiddlewaresWithSentry;
27
+ export declare const replayIntegration: typeof clientSdk.replayIntegration;
27
28
  export declare const tanstackRouterBrowserTracingIntegration: typeof clientSdk.tanstackRouterBrowserTracingIntegration;
28
29
  export declare const sentryGlobalRequestMiddleware: typeof serverSdk.sentryGlobalRequestMiddleware;
29
30
  export declare const sentryGlobalFunctionMiddleware: typeof serverSdk.sentryGlobalFunctionMiddleware;
@@ -5,6 +5,11 @@ export { wrapFetchWithSentry } from './wrapFetchWithSentry';
5
5
  export { wrapMiddlewaresWithSentry } from './middleware';
6
6
  export { sentryGlobalRequestMiddleware, sentryGlobalFunctionMiddleware } from './globalMiddleware';
7
7
  export { createSentryTunnelRoute } from './tunnelRoute';
8
+ /**
9
+ * A no-op stub of the replay integration for the server. Router setup code is shared between client and server,
10
+ * so this stub is needed to prevent build errors during SSR bundling.
11
+ */
12
+ export declare function replayIntegration(_options?: Record<string, unknown>): Integration;
8
13
  /**
9
14
  * A no-op stub of the browser tracing integration for the server. Router setup code is shared between client and server,
10
15
  * so this stub is needed to prevent build errors during SSR bundling.
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Matches a URL pathname against a list of TanStack Start route patterns.
3
+ * Patterns use `$param` syntax for dynamic segments (e.g., `/users/$id`).
4
+ *
5
+ * Patterns are expected to be pre-sorted by specificity (more segments first, static before dynamic).
6
+ */
7
+ export declare function matchUrlToRoutePattern(pathname: string, patterns: string[]): string | undefined;
8
+ /**
9
+ * Updates the active root span with a parametrized route name.
10
+ */
11
+ export declare function updateSpanWithRouteParametrization(method: string, pathname: string, patterns: string[]): void;
12
+ //# sourceMappingURL=routeParametrization.d.ts.map
@@ -1,13 +1,4 @@
1
1
  import { StartSpanOptions } from '@sentry/core';
2
- /**
3
- * Extracts the SHA-256 hash from a server function pathname.
4
- * Server function pathnames are structured as `/_serverFn/<hash>`.
5
- * This function matches the pattern and returns the hash if found.
6
- *
7
- * @param pathname - the pathname of the server function
8
- * @returns the sha256 of the server function
9
- */
10
- export declare function extractServerFunctionSha256(pathname: string): string;
11
2
  /**
12
3
  * Returns span options for TanStack Start middleware spans.
13
4
  */
@@ -0,0 +1,18 @@
1
+ import { Plugin } from 'vite';
2
+ /**
3
+ * Extracts route patterns from TanStack Start's generated routeTree.gen.ts
4
+ * and replaces `__SENTRY_ROUTE_PATTERNS__` references with the extracted patterns.
5
+ *
6
+ * The route tree file is read during `transform` rather than `config` because
7
+ * TanStack Start generates it during the build.
8
+ */
9
+ export declare function makeRoutePatternPlugin(): Plugin;
10
+ /**
11
+ * Extracts full route path patterns from the content of routeTree.gen.ts.
12
+ *
13
+ * Parses the `fullPaths` type union which contains the resolved full paths
14
+ * (e.g., `fullPaths: '/' | '/page-a' | '/users/$userId'`).
15
+ * This is more reliable than `path:` properties which can be relative for nested routes.
16
+ */
17
+ export declare function extractRoutePatterns(content: string): string[];
18
+ //# sourceMappingURL=routePatterns.d.ts.map
@@ -17,6 +17,23 @@ export interface SentryTanstackStartOptions extends BuildTimeOptionsBase {
17
17
  * @default true
18
18
  */
19
19
  autoInstrumentMiddleware?: boolean;
20
+ /**
21
+ * Options related to react component name annotations.
22
+ * Disabled by default, unless a value is set for this option.
23
+ * When enabled, your app's DOM will automatically be annotated during build-time with their respective component names.
24
+ * This will unlock the capability to search for Replays in Sentry by component name, as well as see component names in breadcrumbs and performance monitoring.
25
+ * Please note that this feature is not currently supported by the esbuild bundler plugins, and will only annotate React components
26
+ */
27
+ reactComponentAnnotation?: {
28
+ /**
29
+ * Whether the component name annotate plugin should be enabled or not.
30
+ */
31
+ enabled?: boolean;
32
+ /**
33
+ * A list of strings representing the names of components to ignore. The plugin will not apply `data-sentry` annotations on the DOM element for these components.
34
+ */
35
+ ignoredComponents?: string[];
36
+ };
20
37
  /**
21
38
  * Configures a framework-managed same-origin tunnel route for Sentry envelopes.
22
39
  *
@@ -1,13 +1,13 @@
1
- import { BuildTimeOptionsBase } from '@sentry/core';
2
1
  import { Plugin, UserConfig } from 'vite';
2
+ import { SentryTanstackStartOptions } from './sentryTanstackStart';
3
3
  /**
4
4
  * A Sentry plugin for adding the @sentry/vite-plugin to automatically upload source maps to Sentry.
5
5
  */
6
- export declare function makeAddSentryVitePlugin(options: BuildTimeOptionsBase): Plugin[];
6
+ export declare function makeAddSentryVitePlugin(options: SentryTanstackStartOptions): Plugin[];
7
7
  /**
8
8
  * A Sentry plugin for TanStack Start React to enable "hidden" source maps if they are unset.
9
9
  */
10
- export declare function makeEnableSourceMapsVitePlugin(options: BuildTimeOptionsBase): Plugin[];
10
+ export declare function makeEnableSourceMapsVitePlugin(options: SentryTanstackStartOptions): Plugin[];
11
11
  /** There are 3 ways to set up source map generation (https://github.com/getsentry/sentry-javascript/issues/13993)
12
12
  *
13
13
  * 1. User explicitly disabled source maps
@@ -23,5 +23,5 @@ export declare function makeEnableSourceMapsVitePlugin(options: BuildTimeOptions
23
23
  *
24
24
  * --> only exported for testing
25
25
  */
26
- export declare function getUpdatedSourceMapSettings(viteConfig: UserConfig, sentryPluginOptions?: BuildTimeOptionsBase): boolean | 'inline' | 'hidden';
26
+ export declare function getUpdatedSourceMapSettings(viteConfig: UserConfig, sentryPluginOptions?: SentryTanstackStartOptions): boolean | 'inline' | 'hidden';
27
27
  //# sourceMappingURL=sourceMaps.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentry/tanstackstart-react",
3
- "version": "10.53.1",
3
+ "version": "10.55.0",
4
4
  "description": "Official Sentry SDK for TanStack Start React",
5
5
  "repository": "git://github.com/getsentry/sentry-javascript.git",
6
6
  "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tanstackstart-react",
@@ -65,10 +65,10 @@
65
65
  "dependencies": {
66
66
  "@opentelemetry/api": "^1.9.1",
67
67
  "@opentelemetry/semantic-conventions": "^1.40.0",
68
- "@sentry-internal/browser-utils": "10.53.1",
69
- "@sentry/core": "10.53.1",
70
- "@sentry/node": "10.53.1",
71
- "@sentry/react": "10.53.1",
68
+ "@sentry-internal/browser-utils": "10.55.0",
69
+ "@sentry/core": "10.55.0",
70
+ "@sentry/node": "10.55.0",
71
+ "@sentry/react": "10.55.0",
72
72
  "@sentry/vite-plugin": "^5.3.0"
73
73
  },
74
74
  "devDependencies": {