@od-oneapp/observability 2026.1.1301

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 (107) hide show
  1. package/README.md +523 -0
  2. package/dist/client-next.d.mts +20 -0
  3. package/dist/client-next.d.mts.map +1 -0
  4. package/dist/client-next.mjs +64 -0
  5. package/dist/client-next.mjs.map +1 -0
  6. package/dist/client.d.mts +11 -0
  7. package/dist/client.d.mts.map +1 -0
  8. package/dist/client.mjs +47 -0
  9. package/dist/client.mjs.map +1 -0
  10. package/dist/env.d.mts +15 -0
  11. package/dist/env.d.mts.map +1 -0
  12. package/dist/env.mjs +45 -0
  13. package/dist/env.mjs.map +1 -0
  14. package/dist/factory-DkY353r8.mjs +380 -0
  15. package/dist/factory-DkY353r8.mjs.map +1 -0
  16. package/dist/hooks-useObservability.d.mts +11 -0
  17. package/dist/hooks-useObservability.d.mts.map +1 -0
  18. package/dist/hooks-useObservability.mjs +174 -0
  19. package/dist/hooks-useObservability.mjs.map +1 -0
  20. package/dist/index-CpcdzWrF.d.mts +24 -0
  21. package/dist/index-CpcdzWrF.d.mts.map +1 -0
  22. package/dist/index.d.mts +88 -0
  23. package/dist/index.d.mts.map +1 -0
  24. package/dist/index.mjs +97 -0
  25. package/dist/index.mjs.map +1 -0
  26. package/dist/manager-BxQqOPEg.d.mts +33 -0
  27. package/dist/manager-BxQqOPEg.d.mts.map +1 -0
  28. package/dist/plugin-Bfq-o3nr.d.mts +60 -0
  29. package/dist/plugin-Bfq-o3nr.d.mts.map +1 -0
  30. package/dist/plugin-Bt-ygG1m.d.mts +254 -0
  31. package/dist/plugin-Bt-ygG1m.d.mts.map +1 -0
  32. package/dist/plugin-CLFwRERa.mjs +593 -0
  33. package/dist/plugin-CLFwRERa.mjs.map +1 -0
  34. package/dist/plugin-CP895lBx.mjs +534 -0
  35. package/dist/plugin-CP895lBx.mjs.map +1 -0
  36. package/dist/plugin-CaQxviDs.d.mts +61 -0
  37. package/dist/plugin-CaQxviDs.d.mts.map +1 -0
  38. package/dist/plugin-lPdJirTY.mjs +234 -0
  39. package/dist/plugin-lPdJirTY.mjs.map +1 -0
  40. package/dist/plugins-betterstack-env.d.mts +29 -0
  41. package/dist/plugins-betterstack-env.d.mts.map +1 -0
  42. package/dist/plugins-betterstack-env.mjs +75 -0
  43. package/dist/plugins-betterstack-env.mjs.map +1 -0
  44. package/dist/plugins-betterstack.d.mts +4 -0
  45. package/dist/plugins-betterstack.mjs +4 -0
  46. package/dist/plugins-console.d.mts +37 -0
  47. package/dist/plugins-console.d.mts.map +1 -0
  48. package/dist/plugins-console.mjs +196 -0
  49. package/dist/plugins-console.mjs.map +1 -0
  50. package/dist/plugins-sentry-env.d.mts +37 -0
  51. package/dist/plugins-sentry-env.d.mts.map +1 -0
  52. package/dist/plugins-sentry-env.mjs +79 -0
  53. package/dist/plugins-sentry-env.mjs.map +1 -0
  54. package/dist/plugins-sentry-microfrontend-env.d.mts +49 -0
  55. package/dist/plugins-sentry-microfrontend-env.d.mts.map +1 -0
  56. package/dist/plugins-sentry-microfrontend-env.mjs +80 -0
  57. package/dist/plugins-sentry-microfrontend-env.mjs.map +1 -0
  58. package/dist/plugins-sentry-microfrontend.d.mts +2 -0
  59. package/dist/plugins-sentry-microfrontend.mjs +3 -0
  60. package/dist/plugins-sentry.d.mts +5 -0
  61. package/dist/plugins-sentry.mjs +6 -0
  62. package/dist/server-edge.d.mts +15 -0
  63. package/dist/server-edge.d.mts.map +1 -0
  64. package/dist/server-edge.mjs +53 -0
  65. package/dist/server-edge.mjs.map +1 -0
  66. package/dist/server-next.d.mts +17 -0
  67. package/dist/server-next.d.mts.map +1 -0
  68. package/dist/server-next.mjs +64 -0
  69. package/dist/server-next.mjs.map +1 -0
  70. package/dist/server.d.mts +11 -0
  71. package/dist/server.d.mts.map +1 -0
  72. package/dist/server.mjs +48 -0
  73. package/dist/server.mjs.map +1 -0
  74. package/dist/utils-CuGrTcD6.d.mts +77 -0
  75. package/dist/utils-CuGrTcD6.d.mts.map +1 -0
  76. package/env.ts +67 -0
  77. package/package.json +147 -0
  78. package/src/client-next.ts +131 -0
  79. package/src/client.ts +70 -0
  80. package/src/core/index.ts +15 -0
  81. package/src/core/manager.ts +361 -0
  82. package/src/core/plugin.ts +61 -0
  83. package/src/core/types.ts +151 -0
  84. package/src/factory/builder.ts +132 -0
  85. package/src/factory/index.ts +67 -0
  86. package/src/factory/presets.ts +78 -0
  87. package/src/hooks/useObservability.ts +206 -0
  88. package/src/plugins/betterstack/env.ts +101 -0
  89. package/src/plugins/betterstack/index.ts +15 -0
  90. package/src/plugins/betterstack/plugin.ts +373 -0
  91. package/src/plugins/console/index.ts +323 -0
  92. package/src/plugins/sentry/__tests__/plugin-tracing.test.ts +511 -0
  93. package/src/plugins/sentry/env.ts +93 -0
  94. package/src/plugins/sentry/index.ts +28 -0
  95. package/src/plugins/sentry/plugin.ts +953 -0
  96. package/src/plugins/sentry/types.ts +252 -0
  97. package/src/plugins/sentry-microfrontend/env.ts +105 -0
  98. package/src/plugins/sentry-microfrontend/index.ts +12 -0
  99. package/src/plugins/sentry-microfrontend/multiplexed-transport.ts +221 -0
  100. package/src/plugins/sentry-microfrontend/plugin.ts +500 -0
  101. package/src/plugins/sentry-microfrontend/sentry-types.ts +140 -0
  102. package/src/plugins/sentry-microfrontend/types.ts +130 -0
  103. package/src/plugins/sentry-microfrontend/utils.ts +326 -0
  104. package/src/server-edge.ts +113 -0
  105. package/src/server-next.ts +114 -0
  106. package/src/server.ts +71 -0
  107. package/src/shared.ts +148 -0
@@ -0,0 +1,196 @@
1
+ import { isBrowser } from "./index.mjs";
2
+
3
+ //#region src/plugins/console/index.ts
4
+ /**
5
+ * @fileoverview Console plugin for observability
6
+ * Console plugin for observability
7
+ * Simple logging implementation for development
8
+ */
9
+ /**
10
+ * Console plugin implementation for browser environments
11
+ */
12
+ /**
13
+ * Console plugin implementation for browser environments.
14
+ *
15
+ * Provides simple console logging with color support for development.
16
+ * Supports both browser (CSS colors) and Node.js (ANSI colors) environments.
17
+ */
18
+ var ConsolePlugin = class {
19
+ name = "console";
20
+ enabled;
21
+ prefix;
22
+ colors;
23
+ isBrowser;
24
+ /**
25
+ * Create a new ConsolePlugin instance.
26
+ *
27
+ * @param config - Console plugin configuration
28
+ */
29
+ constructor(config = {}) {
30
+ this.enabled = config.enabled ?? true;
31
+ this.prefix = config.prefix ?? "[Console]";
32
+ this.colors = config.colors ?? true;
33
+ this.isBrowser = isBrowser();
34
+ }
35
+ async initialize() {}
36
+ async shutdown() {}
37
+ getClient() {}
38
+ captureException(error, context) {
39
+ if (!this.enabled) return;
40
+ try {
41
+ const contextData = this.formatContext(context);
42
+ if (this.colors && this.isBrowser) console.error(`%c${this.prefix} Error:`, "color: red; font-weight: bold", error, contextData);
43
+ else if (this.colors) console.error(`\x1b[31m${this.prefix} Error:\x1b[0m`, error, contextData);
44
+ else console.error(`${this.prefix} Error:`, error, contextData);
45
+ } catch {}
46
+ }
47
+ captureMessage(message, level = "info", context) {
48
+ if (!this.enabled) return;
49
+ try {
50
+ const contextData = this.formatContext(context);
51
+ const logMethod = this.getLogMethod(level);
52
+ const levelLabel = this.getLevelLabel(level);
53
+ if (this.colors && this.isBrowser) {
54
+ const cssColor = this.getBrowserColorCSS(level);
55
+ console[logMethod](`%c${this.prefix} ${levelLabel}:`, cssColor, message, contextData);
56
+ } else if (this.colors) {
57
+ const ansiColor = this.getAnsiColorCode(level);
58
+ console[logMethod](`${ansiColor}${this.prefix} ${levelLabel}:\x1b[0m`, message, contextData);
59
+ } else console[logMethod](`${this.prefix} ${levelLabel}:`, message, contextData);
60
+ } catch {}
61
+ }
62
+ setUser(user) {
63
+ if (!this.enabled) return;
64
+ try {
65
+ if (user === null) console.info(this.prefix, "User cleared");
66
+ else console.info(this.prefix, "User set:", JSON.stringify(user));
67
+ } catch {}
68
+ }
69
+ addBreadcrumb(breadcrumb) {
70
+ if (!this.enabled) return;
71
+ try {
72
+ const enrichedBreadcrumb = {
73
+ ...breadcrumb,
74
+ timestamp: breadcrumb.timestamp ?? Date.now() / 1e3
75
+ };
76
+ console.log(this.prefix, "Breadcrumb:", JSON.stringify(enrichedBreadcrumb));
77
+ } catch {}
78
+ }
79
+ withScope(callback) {
80
+ if (!this.enabled) return;
81
+ try {
82
+ callback({
83
+ setContext: (key, context) => {
84
+ console.log(this.prefix, "Context set:", key, JSON.stringify(context));
85
+ },
86
+ setUser: (user) => {
87
+ this.setUser(user);
88
+ }
89
+ });
90
+ } catch {}
91
+ }
92
+ async flush() {
93
+ if (this.enabled) console.log(this.prefix, "Flushed");
94
+ return true;
95
+ }
96
+ formatContext(context) {
97
+ if (!context) return {};
98
+ if (context.extra !== void 0 || context.tags !== void 0) return {
99
+ context: context.extra,
100
+ tags: context.tags
101
+ };
102
+ if ("operation" in context || "metadata" in context) return {
103
+ context: context.metadata ?? {},
104
+ tags: { operation: context.operation }
105
+ };
106
+ return {
107
+ context,
108
+ tags: {}
109
+ };
110
+ }
111
+ /**
112
+ * Get CSS color style for browser console
113
+ * @param level - Log level
114
+ * @returns CSS style string
115
+ */
116
+ getBrowserColorCSS(level) {
117
+ return {
118
+ debug: "color: #00CED1; font-weight: bold",
119
+ info: "color: #32CD32; font-weight: bold",
120
+ warning: "color: #FFA500; font-weight: bold",
121
+ error: "color: #DC143C; font-weight: bold"
122
+ }[level] ?? "color: inherit";
123
+ }
124
+ /**
125
+ * Get ANSI color code for Node.js terminal
126
+ * @param level - Log level
127
+ * @returns ANSI escape code
128
+ */
129
+ getAnsiColorCode(level) {
130
+ return {
131
+ debug: "\x1B[36m",
132
+ info: "\x1B[32m",
133
+ warning: "\x1B[33m",
134
+ error: "\x1B[31m"
135
+ }[level] ?? "";
136
+ }
137
+ /**
138
+ * Get the console method name for a log level.
139
+ *
140
+ * @param level - Log level
141
+ * @returns Console method name ('debug', 'info', 'warn', or 'error')
142
+ */
143
+ getLogMethod(level) {
144
+ switch (level) {
145
+ case "debug": return "debug";
146
+ case "info": return "info";
147
+ case "warning": return "warn";
148
+ case "error": return "error";
149
+ default: return "info";
150
+ }
151
+ }
152
+ /**
153
+ * Get a human-readable label for a log level.
154
+ *
155
+ * @param level - Log level
156
+ * @returns Capitalized level label ('Debug', 'Info', 'Warning', 'Error')
157
+ */
158
+ getLevelLabel(level) {
159
+ switch (level) {
160
+ case "debug": return "Debug";
161
+ case "info": return "Info";
162
+ case "warning": return "Warning";
163
+ case "error": return "Error";
164
+ default: return "Info";
165
+ }
166
+ }
167
+ };
168
+ /**
169
+ * Console plugin implementation for server environments
170
+ * Inherits flush() from ConsolePlugin - no override needed
171
+ */
172
+ var ConsoleServerPlugin = class extends ConsolePlugin {};
173
+ /**
174
+ * Factory function to create a console plugin for browser environments.
175
+ *
176
+ * @param config - Console plugin configuration
177
+ * @returns ConsolePlugin instance configured for browser
178
+ */
179
+ const createConsolePlugin = (config) => {
180
+ return new ConsolePlugin(config);
181
+ };
182
+ /**
183
+ * Factory function to create a console plugin for server environments.
184
+ *
185
+ * Creates a server-compatible console plugin that includes flush() capability.
186
+ *
187
+ * @param config - Console plugin configuration
188
+ * @returns ConsoleServerPlugin instance configured for server
189
+ */
190
+ const createConsoleServerPlugin = (config) => {
191
+ return new ConsoleServerPlugin(config);
192
+ };
193
+
194
+ //#endregion
195
+ export { ConsolePlugin, ConsoleServerPlugin, createConsolePlugin, createConsoleServerPlugin };
196
+ //# sourceMappingURL=plugins-console.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins-console.mjs","names":[],"sources":["../src/plugins/console/index.ts"],"sourcesContent":["/**\n * @fileoverview Console plugin for observability\n * Console plugin for observability\n * Simple logging implementation for development\n */\n\nimport { isBrowser } from '../../shared';\n\nimport type {\n ObservabilityPlugin,\n ObservabilityServerPlugin,\n PluginFactory,\n} from '../../core/plugin';\nimport type {\n Breadcrumb,\n LogLevel,\n ObservabilityContext,\n ObservabilityUser,\n} from '../../core/types';\n\n/**\n * Console plugin configuration\n */\nexport interface ConsolePluginConfig {\n prefix?: string;\n logLevel?: LogLevel;\n enabled?: boolean;\n colors?: boolean;\n}\n\n/**\n * Console plugin implementation for browser environments\n */\n/**\n * Console plugin implementation for browser environments.\n *\n * Provides simple console logging with color support for development.\n * Supports both browser (CSS colors) and Node.js (ANSI colors) environments.\n */\nexport class ConsolePlugin implements ObservabilityPlugin<Console> {\n name = 'console';\n enabled: boolean;\n protected prefix: string;\n private colors: boolean;\n private isBrowser: boolean;\n\n /**\n * Create a new ConsolePlugin instance.\n *\n * @param config - Console plugin configuration\n */\n constructor(config: ConsolePluginConfig = {}) {\n this.enabled = config.enabled ?? true;\n this.prefix = config.prefix ?? '[Console]';\n // Note: config.logLevel is accepted but not yet used (reserved for future log level filtering)\n this.colors = config.colors ?? true;\n this.isBrowser = isBrowser();\n }\n\n async initialize(): Promise<void> {\n // Console doesn't need initialization\n }\n\n async shutdown(): Promise<void> {\n // Console doesn't need shutdown\n }\n\n getClient(): Console | undefined {\n return undefined; // Console has no client\n }\n\n captureException(error: Error | unknown, context?: ObservabilityContext): void {\n if (!this.enabled) return;\n\n try {\n const contextData = this.formatContext(context);\n\n if (this.colors && this.isBrowser) {\n // Browser: Use CSS colors\n console.error(\n `%c${this.prefix} Error:`,\n 'color: red; font-weight: bold',\n error,\n contextData,\n );\n } else if (this.colors) {\n // Node.js: Use ANSI codes\n console.error(`\\x1b[31m${this.prefix} Error:\\x1b[0m`, error, contextData);\n } else {\n // No colors\n console.error(`${this.prefix} Error:`, error, contextData);\n }\n } catch {\n // Gracefully handle console errors\n }\n }\n\n captureMessage(message: string, level: LogLevel = 'info', context?: ObservabilityContext): void {\n if (!this.enabled) return;\n\n try {\n const contextData = this.formatContext(context);\n const logMethod = this.getLogMethod(level);\n const levelLabel = this.getLevelLabel(level);\n\n if (this.colors && this.isBrowser) {\n // Browser: Use CSS colors\n const cssColor = this.getBrowserColorCSS(level);\n (console[logMethod] as (...args: any[]) => void)(\n `%c${this.prefix} ${levelLabel}:`,\n cssColor,\n message,\n contextData,\n );\n } else if (this.colors) {\n // Node.js: Use ANSI codes\n const ansiColor = this.getAnsiColorCode(level);\n (console[logMethod] as (...args: any[]) => void)(\n `${ansiColor}${this.prefix} ${levelLabel}:\\x1b[0m`,\n message,\n contextData,\n );\n } else {\n // No colors\n (console[logMethod] as (...args: any[]) => void)(\n `${this.prefix} ${levelLabel}:`,\n message,\n contextData,\n );\n }\n } catch {\n // Gracefully handle console errors\n }\n }\n\n setUser(user: ObservabilityUser | null): void {\n if (!this.enabled) return;\n\n try {\n if (user === null) {\n console.info(this.prefix, 'User cleared');\n } else {\n console.info(this.prefix, 'User set:', JSON.stringify(user));\n }\n } catch {\n // Gracefully handle console errors\n }\n }\n\n addBreadcrumb(breadcrumb: Breadcrumb): void {\n if (!this.enabled) return;\n\n try {\n const enrichedBreadcrumb = {\n ...breadcrumb,\n timestamp: breadcrumb.timestamp ?? Date.now() / 1000,\n };\n console.log(this.prefix, 'Breadcrumb:', JSON.stringify(enrichedBreadcrumb));\n } catch {\n // Gracefully handle console errors\n }\n }\n\n withScope(callback: (scope: any) => void): void {\n if (!this.enabled) return;\n\n try {\n const scope = {\n setContext: (key: string, context: unknown) => {\n console.log(this.prefix, 'Context set:', key, JSON.stringify(context));\n },\n setUser: (user: ObservabilityUser | null) => {\n this.setUser(user);\n },\n };\n callback(scope);\n } catch {\n // Gracefully handle scope errors\n }\n }\n\n async flush(): Promise<boolean> {\n // Console doesn't need flushing\n if (this.enabled) {\n console.log(this.prefix, 'Flushed');\n }\n return true;\n }\n\n private formatContext(context?: ObservabilityContext): any {\n if (!context) return {};\n\n // Handle new format with explicit extra/tags structure\n if (context.extra !== undefined || context.tags !== undefined) {\n return {\n context: context.extra,\n tags: context.tags,\n };\n }\n\n // Handle AI package format with operation/metadata structure\n if ('operation' in context || 'metadata' in context) {\n return {\n context: context.metadata ?? {},\n tags: { operation: context.operation },\n };\n }\n\n // Handle any other context format - use as-is for context\n return {\n context,\n tags: {},\n };\n }\n\n /**\n * Get CSS color style for browser console\n * @param level - Log level\n * @returns CSS style string\n */\n private getBrowserColorCSS(level: LogLevel): string {\n const colorMap: Record<LogLevel, string> = {\n debug: 'color: #00CED1; font-weight: bold', // Dark Cyan\n info: 'color: #32CD32; font-weight: bold', // Lime Green\n warning: 'color: #FFA500; font-weight: bold', // Orange\n error: 'color: #DC143C; font-weight: bold', // Crimson\n };\n return colorMap[level] ?? 'color: inherit';\n }\n\n /**\n * Get ANSI color code for Node.js terminal\n * @param level - Log level\n * @returns ANSI escape code\n */\n private getAnsiColorCode(level: LogLevel): string {\n const colorMap: Record<LogLevel, string> = {\n debug: '\\x1b[36m', // Cyan\n info: '\\x1b[32m', // Green\n warning: '\\x1b[33m', // Yellow\n error: '\\x1b[31m', // Red\n };\n return colorMap[level] ?? '';\n }\n\n /**\n * Get the console method name for a log level.\n *\n * @param level - Log level\n * @returns Console method name ('debug', 'info', 'warn', or 'error')\n */\n private getLogMethod(level: LogLevel): keyof Console {\n switch (level) {\n case 'debug':\n return 'debug';\n case 'info':\n return 'info';\n case 'warning':\n return 'warn';\n case 'error':\n return 'error';\n default:\n return 'info';\n }\n }\n\n /**\n * Get a human-readable label for a log level.\n *\n * @param level - Log level\n * @returns Capitalized level label ('Debug', 'Info', 'Warning', 'Error')\n */\n private getLevelLabel(level: LogLevel): string {\n switch (level) {\n case 'debug':\n return 'Debug';\n case 'info':\n return 'Info';\n case 'warning':\n return 'Warning';\n case 'error':\n return 'Error';\n default:\n return 'Info';\n }\n }\n}\n\n/**\n * Console plugin implementation for server environments\n * Inherits flush() from ConsolePlugin - no override needed\n */\nexport class ConsoleServerPlugin\n extends ConsolePlugin\n implements ObservabilityServerPlugin<Console> {}\n\n/**\n * Factory function to create a console plugin for browser environments.\n *\n * @param config - Console plugin configuration\n * @returns ConsolePlugin instance configured for browser\n */\nexport const createConsolePlugin: PluginFactory<ConsolePluginConfig, ConsolePlugin> = config => {\n return new ConsolePlugin(config);\n};\n\n/**\n * Factory function to create a console plugin for server environments.\n *\n * Creates a server-compatible console plugin that includes flush() capability.\n *\n * @param config - Console plugin configuration\n * @returns ConsoleServerPlugin instance configured for server\n */\nexport const createConsoleServerPlugin: PluginFactory<\n ConsolePluginConfig,\n ConsoleServerPlugin\n> = config => {\n return new ConsoleServerPlugin(config);\n};\n\n// Re-export types\nexport type { ObservabilityPlugin, ObservabilityServerPlugin } from '../../core/plugin';\n"],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ //#region src/plugins/sentry/env.d.ts
2
+ declare const env: Readonly<{
3
+ SENTRY_DSN?: string | undefined;
4
+ SENTRY_AUTH_TOKEN?: string | undefined;
5
+ SENTRY_ORG?: string | undefined;
6
+ SENTRY_PROJECT?: string | undefined;
7
+ SENTRY_ENVIRONMENT?: "development" | "preview" | "production" | undefined;
8
+ SENTRY_RELEASE?: string | undefined;
9
+ SENTRY_TRACES_SAMPLE_RATE?: number | undefined;
10
+ SENTRY_PROFILES_SAMPLE_RATE?: number | undefined;
11
+ SENTRY_REPLAYS_SESSION_SAMPLE_RATE?: number | undefined;
12
+ SENTRY_REPLAYS_ON_ERROR_SAMPLE_RATE?: number | undefined;
13
+ NEXT_PUBLIC_SENTRY_DSN?: string | undefined;
14
+ NEXT_PUBLIC_SENTRY_ENVIRONMENT?: "development" | "preview" | "production" | undefined;
15
+ NEXT_PUBLIC_SENTRY_RELEASE?: string | undefined;
16
+ SENTRY_DEBUG: boolean;
17
+ }>;
18
+ declare function safeEnv(): Readonly<{
19
+ SENTRY_DSN?: string | undefined;
20
+ SENTRY_AUTH_TOKEN?: string | undefined;
21
+ SENTRY_ORG?: string | undefined;
22
+ SENTRY_PROJECT?: string | undefined;
23
+ SENTRY_ENVIRONMENT?: "development" | "preview" | "production" | undefined;
24
+ SENTRY_RELEASE?: string | undefined;
25
+ SENTRY_TRACES_SAMPLE_RATE?: number | undefined;
26
+ SENTRY_PROFILES_SAMPLE_RATE?: number | undefined;
27
+ SENTRY_REPLAYS_SESSION_SAMPLE_RATE?: number | undefined;
28
+ SENTRY_REPLAYS_ON_ERROR_SAMPLE_RATE?: number | undefined;
29
+ NEXT_PUBLIC_SENTRY_DSN?: string | undefined;
30
+ NEXT_PUBLIC_SENTRY_ENVIRONMENT?: "development" | "preview" | "production" | undefined;
31
+ NEXT_PUBLIC_SENTRY_RELEASE?: string | undefined;
32
+ SENTRY_DEBUG: boolean;
33
+ }>;
34
+ type Env = typeof env;
35
+ //#endregion
36
+ export { Env, env, safeEnv };
37
+ //# sourceMappingURL=plugins-sentry-env.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins-sentry-env.d.mts","names":[],"sources":["../src/plugins/sentry/env.ts"],"mappings":";cAWa,GAAA,EAAG,QAAA;;;;;;;;;;;;;;;;iBAgDA,OAAA,CAAA,GAAO,QAAA;;;;;;;;;;;;;;;;KAiCX,GAAA,UAAa,GAAA"}
@@ -0,0 +1,79 @@
1
+ import { logWarn } from "@od-oneapp/shared/logger";
2
+ import { createEnv } from "@t3-oss/env-core";
3
+ import { z } from "zod/v4";
4
+
5
+ //#region src/plugins/sentry/env.ts
6
+ /**
7
+ * @fileoverview Sentry-specific environment configuration
8
+ * Sentry-specific environment configuration
9
+ * Apps can extend this configuration to inherit Sentry environment variables
10
+ */
11
+ const env = createEnv({
12
+ server: {
13
+ SENTRY_DSN: z.string().url().optional(),
14
+ SENTRY_AUTH_TOKEN: z.string().optional(),
15
+ SENTRY_ORG: z.string().optional(),
16
+ SENTRY_PROJECT: z.string().optional(),
17
+ SENTRY_ENVIRONMENT: z.enum([
18
+ "development",
19
+ "preview",
20
+ "production"
21
+ ]).optional(),
22
+ SENTRY_RELEASE: z.string().optional(),
23
+ SENTRY_TRACES_SAMPLE_RATE: z.coerce.number().min(0).max(1).optional(),
24
+ SENTRY_PROFILES_SAMPLE_RATE: z.coerce.number().min(0).max(1).optional(),
25
+ SENTRY_REPLAYS_SESSION_SAMPLE_RATE: z.coerce.number().min(0).max(1).optional(),
26
+ SENTRY_REPLAYS_ON_ERROR_SAMPLE_RATE: z.coerce.number().min(0).max(1).optional(),
27
+ SENTRY_DEBUG: z.string().optional().transform((val) => val === "true").default(false)
28
+ },
29
+ clientPrefix: "NEXT_PUBLIC_",
30
+ client: {
31
+ NEXT_PUBLIC_SENTRY_DSN: z.string().url().optional(),
32
+ NEXT_PUBLIC_SENTRY_ENVIRONMENT: z.enum([
33
+ "development",
34
+ "preview",
35
+ "production"
36
+ ]).optional(),
37
+ NEXT_PUBLIC_SENTRY_RELEASE: z.string().optional()
38
+ },
39
+ runtimeEnv: process.env,
40
+ emptyStringAsUndefined: true,
41
+ onInvalidAccess: (variable) => {
42
+ throw new Error(`❌ Attempted to access a server-side environment variable on the client: ${variable}`);
43
+ },
44
+ onValidationError: (error) => {
45
+ logWarn("Sentry environment validation failed", { error });
46
+ }
47
+ });
48
+ /**
49
+ * Safe environment access for non-Next.js contexts.
50
+ *
51
+ * Provides fallback environment variable access for Node.js, workers, and test environments
52
+ * where the validated env object may not be available. Returns fallback values with proper
53
+ * type coercion and defaults.
54
+ *
55
+ * @returns Environment object with Sentry configuration values
56
+ */
57
+ function safeEnv() {
58
+ if (env) return env;
59
+ return {
60
+ SENTRY_DSN: process.env.SENTRY_DSN ?? "",
61
+ SENTRY_AUTH_TOKEN: process.env.SENTRY_AUTH_TOKEN ?? "",
62
+ SENTRY_ORG: process.env.SENTRY_ORG ?? "",
63
+ SENTRY_PROJECT: process.env.SENTRY_PROJECT ?? "",
64
+ SENTRY_ENVIRONMENT: process.env.SENTRY_ENVIRONMENT ?? "development",
65
+ SENTRY_RELEASE: process.env.SENTRY_RELEASE ?? "",
66
+ SENTRY_TRACES_SAMPLE_RATE: Number(process.env.SENTRY_TRACES_SAMPLE_RATE) || 1,
67
+ SENTRY_PROFILES_SAMPLE_RATE: Number(process.env.SENTRY_PROFILES_SAMPLE_RATE) ?? 0,
68
+ SENTRY_REPLAYS_SESSION_SAMPLE_RATE: Number(process.env.SENTRY_REPLAYS_SESSION_SAMPLE_RATE) || 0,
69
+ SENTRY_REPLAYS_ON_ERROR_SAMPLE_RATE: Number(process.env.SENTRY_REPLAYS_ON_ERROR_SAMPLE_RATE) || 1,
70
+ SENTRY_DEBUG: process.env.SENTRY_DEBUG === "true",
71
+ NEXT_PUBLIC_SENTRY_DSN: process.env.NEXT_PUBLIC_SENTRY_DSN ?? "",
72
+ NEXT_PUBLIC_SENTRY_ENVIRONMENT: process.env.NEXT_PUBLIC_SENTRY_ENVIRONMENT ?? "development",
73
+ NEXT_PUBLIC_SENTRY_RELEASE: process.env.NEXT_PUBLIC_SENTRY_RELEASE ?? ""
74
+ };
75
+ }
76
+
77
+ //#endregion
78
+ export { env, safeEnv };
79
+ //# sourceMappingURL=plugins-sentry-env.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins-sentry-env.mjs","names":[],"sources":["../src/plugins/sentry/env.ts"],"sourcesContent":["/**\n * @fileoverview Sentry-specific environment configuration\n * Sentry-specific environment configuration\n * Apps can extend this configuration to inherit Sentry environment variables\n */\n\nimport { logWarn } from '@repo/shared/logger';\nimport { createEnv } from '@t3-oss/env-core';\nimport { z } from 'zod/v4';\n\n// Create validated env object\nexport const env = createEnv({\n server: {\n SENTRY_DSN: z.string().url().optional(),\n SENTRY_AUTH_TOKEN: z.string().optional(),\n SENTRY_ORG: z.string().optional(),\n SENTRY_PROJECT: z.string().optional(),\n SENTRY_ENVIRONMENT: z.enum(['development', 'preview', 'production']).optional(),\n SENTRY_RELEASE: z.string().optional(),\n SENTRY_TRACES_SAMPLE_RATE: z.coerce.number().min(0).max(1).optional(),\n SENTRY_PROFILES_SAMPLE_RATE: z.coerce.number().min(0).max(1).optional(),\n SENTRY_REPLAYS_SESSION_SAMPLE_RATE: z.coerce.number().min(0).max(1).optional(),\n SENTRY_REPLAYS_ON_ERROR_SAMPLE_RATE: z.coerce.number().min(0).max(1).optional(),\n SENTRY_DEBUG: z\n .string()\n .optional()\n .transform(val => val === 'true')\n .default(false),\n },\n clientPrefix: 'NEXT_PUBLIC_',\n client: {\n NEXT_PUBLIC_SENTRY_DSN: z.string().url().optional(),\n NEXT_PUBLIC_SENTRY_ENVIRONMENT: z.enum(['development', 'preview', 'production']).optional(),\n NEXT_PUBLIC_SENTRY_RELEASE: z.string().optional(),\n },\n runtimeEnv: process.env,\n emptyStringAsUndefined: true,\n onInvalidAccess: (variable: string) => {\n throw new Error(\n `❌ Attempted to access a server-side environment variable on the client: ${variable}`,\n );\n },\n onValidationError: error => {\n // Note: Using logWarn during env validation - shared logger is always available\n logWarn('Sentry environment validation failed', { error });\n // Don't throw in packages - use fallbacks\n return undefined as never;\n },\n});\n\n/**\n * Safe environment access for non-Next.js contexts.\n *\n * Provides fallback environment variable access for Node.js, workers, and test environments\n * where the validated env object may not be available. Returns fallback values with proper\n * type coercion and defaults.\n *\n * @returns Environment object with Sentry configuration values\n */\nexport function safeEnv() {\n if (env) return env;\n\n // Fallback values for resilience\n return {\n // Server\n SENTRY_DSN: process.env.SENTRY_DSN ?? '',\n SENTRY_AUTH_TOKEN: process.env.SENTRY_AUTH_TOKEN ?? '',\n SENTRY_ORG: process.env.SENTRY_ORG ?? '',\n SENTRY_PROJECT: process.env.SENTRY_PROJECT ?? '',\n SENTRY_ENVIRONMENT:\n (process.env.SENTRY_ENVIRONMENT as 'development' | 'preview' | 'production') ?? 'development',\n SENTRY_RELEASE: process.env.SENTRY_RELEASE ?? '',\n SENTRY_TRACES_SAMPLE_RATE:\n Number(process.env.SENTRY_TRACES_SAMPLE_RATE) ||\n (process.env.NODE_ENV === 'production' ? 0.1 : 1.0),\n SENTRY_PROFILES_SAMPLE_RATE: Number(process.env.SENTRY_PROFILES_SAMPLE_RATE) ?? 0,\n SENTRY_REPLAYS_SESSION_SAMPLE_RATE:\n Number(process.env.SENTRY_REPLAYS_SESSION_SAMPLE_RATE) ||\n (process.env.NODE_ENV === 'production' ? 0.1 : 0),\n SENTRY_REPLAYS_ON_ERROR_SAMPLE_RATE:\n Number(process.env.SENTRY_REPLAYS_ON_ERROR_SAMPLE_RATE) || 1.0,\n SENTRY_DEBUG: process.env.SENTRY_DEBUG === 'true',\n // Client\n NEXT_PUBLIC_SENTRY_DSN: process.env.NEXT_PUBLIC_SENTRY_DSN ?? '',\n NEXT_PUBLIC_SENTRY_ENVIRONMENT:\n (process.env.NEXT_PUBLIC_SENTRY_ENVIRONMENT as 'development' | 'preview' | 'production') ??\n 'development',\n NEXT_PUBLIC_SENTRY_RELEASE: process.env.NEXT_PUBLIC_SENTRY_RELEASE ?? '',\n };\n}\n\n// Export type\nexport type Env = typeof env;\n"],"mappings":";;;;;;;;;;AAWA,MAAa,MAAM,UAAU;CAC3B,QAAQ;EACN,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU;EACvC,mBAAmB,EAAE,QAAQ,CAAC,UAAU;EACxC,YAAY,EAAE,QAAQ,CAAC,UAAU;EACjC,gBAAgB,EAAE,QAAQ,CAAC,UAAU;EACrC,oBAAoB,EAAE,KAAK;GAAC;GAAe;GAAW;GAAa,CAAC,CAAC,UAAU;EAC/E,gBAAgB,EAAE,QAAQ,CAAC,UAAU;EACrC,2BAA2B,EAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU;EACrE,6BAA6B,EAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU;EACvE,oCAAoC,EAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU;EAC9E,qCAAqC,EAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU;EAC/E,cAAc,EACX,QAAQ,CACR,UAAU,CACV,WAAU,QAAO,QAAQ,OAAO,CAChC,QAAQ,MAAM;EAClB;CACD,cAAc;CACd,QAAQ;EACN,wBAAwB,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU;EACnD,gCAAgC,EAAE,KAAK;GAAC;GAAe;GAAW;GAAa,CAAC,CAAC,UAAU;EAC3F,4BAA4B,EAAE,QAAQ,CAAC,UAAU;EAClD;CACD,YAAY,QAAQ;CACpB,wBAAwB;CACxB,kBAAkB,aAAqB;AACrC,QAAM,IAAI,MACR,2EAA2E,WAC5E;;CAEH,oBAAmB,UAAS;AAE1B,UAAQ,wCAAwC,EAAE,OAAO,CAAC;;CAI7D,CAAC;;;;;;;;;;AAWF,SAAgB,UAAU;AACxB,KAAI,IAAK,QAAO;AAGhB,QAAO;EAEL,YAAY,QAAQ,IAAI,cAAc;EACtC,mBAAmB,QAAQ,IAAI,qBAAqB;EACpD,YAAY,QAAQ,IAAI,cAAc;EACtC,gBAAgB,QAAQ,IAAI,kBAAkB;EAC9C,oBACG,QAAQ,IAAI,sBAAmE;EAClF,gBAAgB,QAAQ,IAAI,kBAAkB;EAC9C,2BACE,OAAO,QAAQ,IAAI,0BAA0B,IACE;EACjD,6BAA6B,OAAO,QAAQ,IAAI,4BAA4B,IAAI;EAChF,oCACE,OAAO,QAAQ,IAAI,mCAAmC,IACP;EACjD,qCACE,OAAO,QAAQ,IAAI,oCAAoC,IAAI;EAC7D,cAAc,QAAQ,IAAI,iBAAiB;EAE3C,wBAAwB,QAAQ,IAAI,0BAA0B;EAC9D,gCACG,QAAQ,IAAI,kCACb;EACF,4BAA4B,QAAQ,IAAI,8BAA8B;EACvE"}
@@ -0,0 +1,49 @@
1
+ //#region src/plugins/sentry-microfrontend/env.d.ts
2
+ declare const env: Readonly<{
3
+ SENTRY_DSN_CMS?: string | undefined;
4
+ SENTRY_DSN_WORKFLOWS?: string | undefined;
5
+ SENTRY_DSN_AUTHMGMT?: string | undefined;
6
+ SENTRY_MICROFRONTEND_MODE?: "host" | "child" | "standalone" | undefined;
7
+ SENTRY_MICROFRONTEND_ZONE?: string | undefined;
8
+ SENTRY_MICROFRONTEND_ENABLED?: boolean | undefined;
9
+ SENTRY_MICROFRONTEND_MULTIPLEXED_TRANSPORT?: boolean | undefined;
10
+ NEXT_PUBLIC_SENTRY_DSN_CMS?: string | undefined;
11
+ NEXT_PUBLIC_SENTRY_DSN_WORKFLOWS?: string | undefined;
12
+ NEXT_PUBLIC_SENTRY_DSN_AUTHMGMT?: string | undefined;
13
+ NEXT_PUBLIC_SENTRY_MICROFRONTEND_MODE?: "host" | "child" | "standalone" | undefined;
14
+ NEXT_PUBLIC_SENTRY_MICROFRONTEND_ZONE?: string | undefined;
15
+ NEXT_PUBLIC_SENTRY_MICROFRONTEND_ENABLED?: boolean | undefined;
16
+ }>;
17
+ declare function safeEnv(): Readonly<{
18
+ SENTRY_DSN_CMS?: string | undefined;
19
+ SENTRY_DSN_WORKFLOWS?: string | undefined;
20
+ SENTRY_DSN_AUTHMGMT?: string | undefined;
21
+ SENTRY_MICROFRONTEND_MODE?: "host" | "child" | "standalone" | undefined;
22
+ SENTRY_MICROFRONTEND_ZONE?: string | undefined;
23
+ SENTRY_MICROFRONTEND_ENABLED?: boolean | undefined;
24
+ SENTRY_MICROFRONTEND_MULTIPLEXED_TRANSPORT?: boolean | undefined;
25
+ NEXT_PUBLIC_SENTRY_DSN_CMS?: string | undefined;
26
+ NEXT_PUBLIC_SENTRY_DSN_WORKFLOWS?: string | undefined;
27
+ NEXT_PUBLIC_SENTRY_DSN_AUTHMGMT?: string | undefined;
28
+ NEXT_PUBLIC_SENTRY_MICROFRONTEND_MODE?: "host" | "child" | "standalone" | undefined;
29
+ NEXT_PUBLIC_SENTRY_MICROFRONTEND_ZONE?: string | undefined;
30
+ NEXT_PUBLIC_SENTRY_MICROFRONTEND_ENABLED?: boolean | undefined;
31
+ }> | {
32
+ SENTRY_DSN_CMS: string | undefined;
33
+ SENTRY_DSN_WORKFLOWS: string | undefined;
34
+ SENTRY_DSN_AUTHMGMT: string | undefined;
35
+ SENTRY_MICROFRONTEND_MODE: "host" | "child" | "standalone" | undefined;
36
+ SENTRY_MICROFRONTEND_APP: string | undefined;
37
+ SENTRY_MICROFRONTEND_ENABLED: boolean;
38
+ SENTRY_MICROFRONTEND_MULTIPLEXED_TRANSPORT: boolean;
39
+ NEXT_PUBLIC_SENTRY_DSN_CMS: string | undefined;
40
+ NEXT_PUBLIC_SENTRY_DSN_WORKFLOWS: string | undefined;
41
+ NEXT_PUBLIC_SENTRY_DSN_AUTHMGMT: string | undefined;
42
+ NEXT_PUBLIC_SENTRY_MICROFRONTEND_MODE: "host" | "child" | "standalone" | undefined;
43
+ NEXT_PUBLIC_SENTRY_MICROFRONTEND_APP: string | undefined;
44
+ NEXT_PUBLIC_SENTRY_MICROFRONTEND_ENABLED: boolean;
45
+ };
46
+ type Env = typeof env;
47
+ //#endregion
48
+ export { Env, env, safeEnv };
49
+ //# sourceMappingURL=plugins-sentry-microfrontend-env.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins-sentry-microfrontend-env.d.mts","names":[],"sources":["../src/plugins/sentry-microfrontend/env.ts"],"mappings":";cAYa,GAAA,EAAG,QAAA;;;;;;;;;;;;;;;iBAqDA,OAAA,CAAA,GAAO,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuCX,GAAA,UAAa,GAAA"}
@@ -0,0 +1,80 @@
1
+ import { logWarn } from "@od-oneapp/shared/logger";
2
+ import { createEnv } from "@t3-oss/env-core";
3
+ import { z } from "zod/v4";
4
+
5
+ //#region src/plugins/sentry-microfrontend/env.ts
6
+ /**
7
+ * @fileoverview Environment configuration for Sentry Micro Frontend Plugin
8
+ * Environment configuration for Sentry Micro Frontend Plugin
9
+ */
10
+ /**
11
+ * Environment configuration specific to Sentry micro frontend functionality
12
+ */
13
+ const env = createEnv({
14
+ server: {
15
+ SENTRY_DSN_CMS: z.string().url().optional(),
16
+ SENTRY_DSN_WORKFLOWS: z.string().url().optional(),
17
+ SENTRY_DSN_AUTHMGMT: z.string().url().optional(),
18
+ SENTRY_MICROFRONTEND_MODE: z.enum([
19
+ "host",
20
+ "child",
21
+ "standalone"
22
+ ]).optional(),
23
+ SENTRY_MICROFRONTEND_ZONE: z.string().optional(),
24
+ SENTRY_MICROFRONTEND_ENABLED: z.boolean().optional(),
25
+ SENTRY_MICROFRONTEND_MULTIPLEXED_TRANSPORT: z.boolean().optional()
26
+ },
27
+ client: {
28
+ NEXT_PUBLIC_SENTRY_DSN_CMS: z.string().url().optional(),
29
+ NEXT_PUBLIC_SENTRY_DSN_WORKFLOWS: z.string().url().optional(),
30
+ NEXT_PUBLIC_SENTRY_DSN_AUTHMGMT: z.string().url().optional(),
31
+ NEXT_PUBLIC_SENTRY_MICROFRONTEND_MODE: z.enum([
32
+ "host",
33
+ "child",
34
+ "standalone"
35
+ ]).optional(),
36
+ NEXT_PUBLIC_SENTRY_MICROFRONTEND_ZONE: z.string().optional(),
37
+ NEXT_PUBLIC_SENTRY_MICROFRONTEND_ENABLED: z.boolean().optional()
38
+ },
39
+ clientPrefix: "NEXT_PUBLIC_",
40
+ runtimeEnv: process.env,
41
+ skipValidation: process.env.SKIP_ENV_VALIDATION === "true" || false,
42
+ emptyStringAsUndefined: true,
43
+ onInvalidAccess: (variable) => {
44
+ throw new Error(`❌ Attempted to access a server-side environment variable on the client: ${variable}`);
45
+ },
46
+ onValidationError: (error) => {
47
+ logWarn("Sentry Micro Frontend Plugin env validation failed", { error });
48
+ }
49
+ });
50
+ /**
51
+ * Safe environment access for non-Next.js contexts.
52
+ *
53
+ * Provides fallback environment variable access for Node.js, workers, and test environments
54
+ * where the validated env object may not be available. Returns fallback values for Sentry
55
+ * micro frontend configuration.
56
+ *
57
+ * @returns Environment object with Sentry micro frontend configuration values
58
+ */
59
+ function safeEnv() {
60
+ if (env) return env;
61
+ return {
62
+ SENTRY_DSN_CMS: process.env.SENTRY_DSN_CMS,
63
+ SENTRY_DSN_WORKFLOWS: process.env.SENTRY_DSN_WORKFLOWS,
64
+ SENTRY_DSN_AUTHMGMT: process.env.SENTRY_DSN_AUTHMGMT,
65
+ SENTRY_MICROFRONTEND_MODE: process.env.SENTRY_MICROFRONTEND_MODE,
66
+ SENTRY_MICROFRONTEND_APP: process.env.SENTRY_MICROFRONTEND_APP ?? process.env.SENTRY_MICROFRONTEND_ZONE,
67
+ SENTRY_MICROFRONTEND_ENABLED: process.env.SENTRY_MICROFRONTEND_ENABLED === "true",
68
+ SENTRY_MICROFRONTEND_MULTIPLEXED_TRANSPORT: process.env.SENTRY_MICROFRONTEND_MULTIPLEXED_TRANSPORT === "true",
69
+ NEXT_PUBLIC_SENTRY_DSN_CMS: process.env.NEXT_PUBLIC_SENTRY_DSN_CMS,
70
+ NEXT_PUBLIC_SENTRY_DSN_WORKFLOWS: process.env.NEXT_PUBLIC_SENTRY_DSN_WORKFLOWS,
71
+ NEXT_PUBLIC_SENTRY_DSN_AUTHMGMT: process.env.NEXT_PUBLIC_SENTRY_DSN_AUTHMGMT,
72
+ NEXT_PUBLIC_SENTRY_MICROFRONTEND_MODE: process.env.NEXT_PUBLIC_SENTRY_MICROFRONTEND_MODE,
73
+ NEXT_PUBLIC_SENTRY_MICROFRONTEND_APP: process.env.NEXT_PUBLIC_SENTRY_MICROFRONTEND_APP ?? process.env.NEXT_PUBLIC_SENTRY_MICROFRONTEND_ZONE,
74
+ NEXT_PUBLIC_SENTRY_MICROFRONTEND_ENABLED: process.env.NEXT_PUBLIC_SENTRY_MICROFRONTEND_ENABLED === "true"
75
+ };
76
+ }
77
+
78
+ //#endregion
79
+ export { env, safeEnv };
80
+ //# sourceMappingURL=plugins-sentry-microfrontend-env.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins-sentry-microfrontend-env.mjs","names":[],"sources":["../src/plugins/sentry-microfrontend/env.ts"],"sourcesContent":["/**\n * @fileoverview Environment configuration for Sentry Micro Frontend Plugin\n * Environment configuration for Sentry Micro Frontend Plugin\n */\n\nimport { logWarn } from '@repo/shared/logger';\nimport { createEnv } from '@t3-oss/env-core';\nimport { z } from 'zod/v4';\n\n/**\n * Environment configuration specific to Sentry micro frontend functionality\n */\nexport const env = createEnv({\n server: {\n // Backstage app-specific DSNs for server-side\n SENTRY_DSN_CMS: z.string().url().optional(),\n SENTRY_DSN_WORKFLOWS: z.string().url().optional(),\n SENTRY_DSN_AUTHMGMT: z.string().url().optional(),\n\n // Micro frontend configuration\n SENTRY_MICROFRONTEND_MODE: z.enum(['host', 'child', 'standalone']).optional(),\n SENTRY_MICROFRONTEND_ZONE: z.string().optional(),\n\n // Feature toggles\n SENTRY_MICROFRONTEND_ENABLED: z.boolean().optional(),\n SENTRY_MICROFRONTEND_MULTIPLEXED_TRANSPORT: z.boolean().optional(),\n },\n client: {\n // Backstage app-specific DSNs for client-side\n NEXT_PUBLIC_SENTRY_DSN_CMS: z.string().url().optional(),\n NEXT_PUBLIC_SENTRY_DSN_WORKFLOWS: z.string().url().optional(),\n NEXT_PUBLIC_SENTRY_DSN_AUTHMGMT: z.string().url().optional(),\n\n // Client-side micro frontend configuration\n NEXT_PUBLIC_SENTRY_MICROFRONTEND_MODE: z.enum(['host', 'child', 'standalone']).optional(),\n NEXT_PUBLIC_SENTRY_MICROFRONTEND_ZONE: z.string().optional(),\n\n // Feature toggles\n NEXT_PUBLIC_SENTRY_MICROFRONTEND_ENABLED: z.boolean().optional(),\n },\n clientPrefix: 'NEXT_PUBLIC_',\n runtimeEnv: process.env,\n skipValidation: process.env.SKIP_ENV_VALIDATION === 'true' || process.env.NODE_ENV === 'test',\n emptyStringAsUndefined: true,\n onInvalidAccess: (variable: string) => {\n throw new Error(\n `❌ Attempted to access a server-side environment variable on the client: ${variable}`,\n );\n },\n onValidationError: error => {\n // Non-critical plugin, warn but don't throw\n logWarn('Sentry Micro Frontend Plugin env validation failed', { error });\n return undefined as never;\n },\n});\n\n/**\n * Safe environment access for non-Next.js contexts.\n *\n * Provides fallback environment variable access for Node.js, workers, and test environments\n * where the validated env object may not be available. Returns fallback values for Sentry\n * micro frontend configuration.\n *\n * @returns Environment object with Sentry micro frontend configuration values\n */\nexport function safeEnv() {\n if (env) {\n return env;\n }\n\n // Fallback for non-Next.js contexts\n return {\n // Server\n SENTRY_DSN_CMS: process.env.SENTRY_DSN_CMS,\n SENTRY_DSN_WORKFLOWS: process.env.SENTRY_DSN_WORKFLOWS,\n SENTRY_DSN_AUTHMGMT: process.env.SENTRY_DSN_AUTHMGMT,\n SENTRY_MICROFRONTEND_MODE: process.env.SENTRY_MICROFRONTEND_MODE as\n | 'host'\n | 'child'\n | 'standalone'\n | undefined,\n SENTRY_MICROFRONTEND_APP:\n process.env.SENTRY_MICROFRONTEND_APP ?? process.env.SENTRY_MICROFRONTEND_ZONE,\n SENTRY_MICROFRONTEND_ENABLED: process.env.SENTRY_MICROFRONTEND_ENABLED === 'true',\n SENTRY_MICROFRONTEND_MULTIPLEXED_TRANSPORT:\n process.env.SENTRY_MICROFRONTEND_MULTIPLEXED_TRANSPORT === 'true',\n\n // Client\n NEXT_PUBLIC_SENTRY_DSN_CMS: process.env.NEXT_PUBLIC_SENTRY_DSN_CMS,\n NEXT_PUBLIC_SENTRY_DSN_WORKFLOWS: process.env.NEXT_PUBLIC_SENTRY_DSN_WORKFLOWS,\n NEXT_PUBLIC_SENTRY_DSN_AUTHMGMT: process.env.NEXT_PUBLIC_SENTRY_DSN_AUTHMGMT,\n NEXT_PUBLIC_SENTRY_MICROFRONTEND_MODE: process.env.NEXT_PUBLIC_SENTRY_MICROFRONTEND_MODE as\n | 'host'\n | 'child'\n | 'standalone'\n | undefined,\n NEXT_PUBLIC_SENTRY_MICROFRONTEND_APP:\n process.env.NEXT_PUBLIC_SENTRY_MICROFRONTEND_APP ??\n process.env.NEXT_PUBLIC_SENTRY_MICROFRONTEND_ZONE,\n NEXT_PUBLIC_SENTRY_MICROFRONTEND_ENABLED:\n process.env.NEXT_PUBLIC_SENTRY_MICROFRONTEND_ENABLED === 'true',\n };\n}\n\nexport type Env = typeof env;\n"],"mappings":";;;;;;;;;;;;AAYA,MAAa,MAAM,UAAU;CAC3B,QAAQ;EAEN,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU;EAC3C,sBAAsB,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU;EACjD,qBAAqB,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU;EAGhD,2BAA2B,EAAE,KAAK;GAAC;GAAQ;GAAS;GAAa,CAAC,CAAC,UAAU;EAC7E,2BAA2B,EAAE,QAAQ,CAAC,UAAU;EAGhD,8BAA8B,EAAE,SAAS,CAAC,UAAU;EACpD,4CAA4C,EAAE,SAAS,CAAC,UAAU;EACnE;CACD,QAAQ;EAEN,4BAA4B,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU;EACvD,kCAAkC,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU;EAC7D,iCAAiC,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU;EAG5D,uCAAuC,EAAE,KAAK;GAAC;GAAQ;GAAS;GAAa,CAAC,CAAC,UAAU;EACzF,uCAAuC,EAAE,QAAQ,CAAC,UAAU;EAG5D,0CAA0C,EAAE,SAAS,CAAC,UAAU;EACjE;CACD,cAAc;CACd,YAAY,QAAQ;CACpB,gBAAgB,QAAQ,IAAI,wBAAwB,UAAU;CAC9D,wBAAwB;CACxB,kBAAkB,aAAqB;AACrC,QAAM,IAAI,MACR,2EAA2E,WAC5E;;CAEH,oBAAmB,UAAS;AAE1B,UAAQ,sDAAsD,EAAE,OAAO,CAAC;;CAG3E,CAAC;;;;;;;;;;AAWF,SAAgB,UAAU;AACxB,KAAI,IACF,QAAO;AAIT,QAAO;EAEL,gBAAgB,QAAQ,IAAI;EAC5B,sBAAsB,QAAQ,IAAI;EAClC,qBAAqB,QAAQ,IAAI;EACjC,2BAA2B,QAAQ,IAAI;EAKvC,0BACE,QAAQ,IAAI,4BAA4B,QAAQ,IAAI;EACtD,8BAA8B,QAAQ,IAAI,iCAAiC;EAC3E,4CACE,QAAQ,IAAI,+CAA+C;EAG7D,4BAA4B,QAAQ,IAAI;EACxC,kCAAkC,QAAQ,IAAI;EAC9C,iCAAiC,QAAQ,IAAI;EAC7C,uCAAuC,QAAQ,IAAI;EAKnD,sCACE,QAAQ,IAAI,wCACZ,QAAQ,IAAI;EACd,0CACE,QAAQ,IAAI,6CAA6C;EAC5D"}
@@ -0,0 +1,2 @@
1
+ import { a as createSentryMicroFrontendPlugin, c as MicroFrontendMode, i as SentryMicroFrontendPlugin, l as SentryMicroFrontendConfig, n as detectCurrentBackstageApp, o as createMultiplexedTransport, r as isHostEnvironment, s as BackstageAppConfig, t as createBackstageScope } from "./utils-CuGrTcD6.mjs";
2
+ export { type BackstageAppConfig, type MicroFrontendMode, type SentryMicroFrontendConfig, SentryMicroFrontendPlugin, createBackstageScope, createMultiplexedTransport, createSentryMicroFrontendPlugin, detectCurrentBackstageApp, isHostEnvironment };
@@ -0,0 +1,3 @@
1
+ import { a as isHostEnvironment, i as detectCurrentBackstageApp, n as createSentryMicroFrontendPlugin, o as createMultiplexedTransport, r as createBackstageScope, t as SentryMicroFrontendPlugin } from "./plugin-CLFwRERa.mjs";
2
+
3
+ export { SentryMicroFrontendPlugin, createBackstageScope, createMultiplexedTransport, createSentryMicroFrontendPlugin, detectCurrentBackstageApp, isHostEnvironment };
@@ -0,0 +1,5 @@
1
+ import { n as ObservabilityServerPlugin, t as ObservabilityPlugin } from "./plugin-Bfq-o3nr.mjs";
2
+ import { a as Hub, c as SpanContext, d as TransactionContext, i as defaultBeforeSendLog, l as SpanStatus, n as SentryPluginConfig, o as Scope, r as createSentryPlugin, s as Span, t as SentryPlugin, u as Transaction } from "./plugin-Bt-ygG1m.mjs";
3
+ import { Env, env, safeEnv } from "./plugins-sentry-env.mjs";
4
+ export * from "@sentry/nextjs";
5
+ export { type Env, type Hub, type ObservabilityPlugin, type ObservabilityServerPlugin, type Scope, SentryPlugin, type SentryPluginConfig, type Span, type SpanContext, type SpanStatus, type Transaction, type TransactionContext, createSentryPlugin, defaultBeforeSendLog, env, safeEnv };
@@ -0,0 +1,6 @@
1
+ import { env, safeEnv } from "./plugins-sentry-env.mjs";
2
+ import { n as createSentryPlugin, r as defaultBeforeSendLog, t as SentryPlugin } from "./plugin-CP895lBx.mjs";
3
+
4
+ export * from "@sentry/nextjs"
5
+
6
+ export { SentryPlugin, createSentryPlugin, defaultBeforeSendLog, env, safeEnv };
@@ -0,0 +1,15 @@
1
+ import { a as Breadcrumb, c as ObservabilityConfig, d as ObservabilityServer, f as ObservabilityUser, i as PluginLifecycle, l as ObservabilityContext, n as ObservabilityServerPlugin, o as LogLevel, r as PluginFactory, s as ObservabilityClient, t as ObservabilityPlugin, u as ObservabilityScope } from "./plugin-Bfq-o3nr.mjs";
2
+ import { t as ObservabilityManager } from "./manager-BxQqOPEg.mjs";
3
+ import { n as ObservabilityBuilder, t as createObservability } from "./index-CpcdzWrF.mjs";
4
+ import { n as BetterStackPluginConfig, r as createBetterStackPlugin, t as BetterStackPlugin } from "./plugin-CaQxviDs.mjs";
5
+ import { env, safeEnv } from "./plugins-betterstack-env.mjs";
6
+ import { ConsolePlugin, ConsolePluginConfig, ConsoleServerPlugin, createConsolePlugin, createConsoleServerPlugin } from "./plugins-console.mjs";
7
+
8
+ //#region src/server-edge.d.ts
9
+ declare function createEdgeObservability(): Promise<ObservabilityManager>;
10
+ declare function getObservability(): Promise<ObservabilityManager>;
11
+ declare const configureLogger: () => void;
12
+ type LogContext = Record<string, unknown>;
13
+ //#endregion
14
+ export { BetterStackPlugin, type BetterStackPluginConfig, Breadcrumb, ConsolePlugin, type ConsolePluginConfig, ConsoleServerPlugin, LogContext, LogLevel, ObservabilityBuilder, ObservabilityClient, ObservabilityConfig, ObservabilityContext, type ObservabilityPlugin, ObservabilityScope, ObservabilityServer, type ObservabilityServerPlugin, ObservabilityUser, type PluginFactory, type PluginLifecycle, configureLogger, createBetterStackPlugin, createConsolePlugin, createConsoleServerPlugin, createEdgeObservability, createObservability, env, getObservability, safeEnv };
15
+ //# sourceMappingURL=server-edge.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-edge.d.mts","names":[],"sources":["../src/server-edge.ts"],"mappings":";;;;;;;;iBAoBsB,uBAAA,CAAA,GAAuB,OAAA,CAAA,oBAAA;AAAA,iBA8CvB,gBAAA,CAAA,GAAoB,OAAA,CAAQ,oBAAA;AAAA,cAyCrC,eAAA;AAAA,KAKD,UAAA,GAAa,MAAA"}
@@ -0,0 +1,53 @@
1
+ import { shouldEnableConsole } from "./index.mjs";
2
+ import { env as env$1 } from "./env.mjs";
3
+ import { n as ObservabilityBuilder, t as createObservability } from "./factory-DkY353r8.mjs";
4
+ import { ConsolePlugin, ConsoleServerPlugin, createConsolePlugin, createConsoleServerPlugin } from "./plugins-console.mjs";
5
+ import { env, safeEnv } from "./plugins-betterstack-env.mjs";
6
+ import { n as createBetterStackPlugin, t as BetterStackPlugin } from "./plugin-lPdJirTY.mjs";
7
+
8
+ //#region src/server-edge.ts
9
+ /**
10
+ * @fileoverview Next.js edge runtime observability export
11
+ * Next.js edge runtime observability export
12
+ * Limited to fetch-based implementations only
13
+ */
14
+ /**
15
+ * Create auto-configured observability for Next.js edge runtime
16
+ * Note: Sentry is not included here as it requires Node.js APIs
17
+ */
18
+ async function createEdgeObservability() {
19
+ const builder = ObservabilityBuilder.create().withAutoInitialize(false);
20
+ const enableConsole = shouldEnableConsole(env$1.NEXT_PUBLIC_NODE_ENV, env$1.NEXT_PUBLIC_OBSERVABILITY_CONSOLE_ENABLED, env$1.NEXT_PUBLIC_OBSERVABILITY_DEBUG);
21
+ builder.withPlugin(createConsolePlugin({
22
+ prefix: "[Next.js Edge]",
23
+ enabled: enableConsole
24
+ }));
25
+ const betterStackToken = env.BETTER_STACK_SOURCE_TOKEN ?? env.BETTERSTACK_SOURCE_TOKEN ?? env.LOGTAIL_SOURCE_TOKEN;
26
+ if (betterStackToken) builder.withPlugin(createBetterStackPlugin({ sourceToken: betterStackToken }));
27
+ return builder.build();
28
+ }
29
+ let initializationPromise = null;
30
+ /**
31
+ * Get or create the observability instance
32
+ * Uses promise-based singleton pattern to prevent race conditions in concurrent scenarios
33
+ * @returns Promise resolving to the ObservabilityManager instance
34
+ */
35
+ async function getObservability() {
36
+ if (!initializationPromise) initializationPromise = (async () => {
37
+ try {
38
+ return await createEdgeObservability();
39
+ } catch (error) {
40
+ initializationPromise = null;
41
+ throw error;
42
+ }
43
+ })();
44
+ return initializationPromise;
45
+ }
46
+ /**
47
+ * @deprecated Configuration now happens through the observability system
48
+ */
49
+ const configureLogger = () => {};
50
+
51
+ //#endregion
52
+ export { BetterStackPlugin, ConsolePlugin, ConsoleServerPlugin, ObservabilityBuilder, configureLogger, createBetterStackPlugin, createConsolePlugin, createConsoleServerPlugin, createEdgeObservability, createObservability, env, getObservability, safeEnv };
53
+ //# sourceMappingURL=server-edge.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-edge.mjs","names":["env","betterStackEnv"],"sources":["../src/server-edge.ts"],"sourcesContent":["/**\n * @fileoverview Next.js edge runtime observability export\n * Next.js edge runtime observability export\n * Limited to fetch-based implementations only\n */\n\nimport { env } from '../env';\n\nimport { ObservabilityBuilder } from './factory/builder';\nimport { createBetterStackPlugin } from './plugins/betterstack';\nimport { env as betterStackEnv } from './plugins/betterstack/env';\nimport { createConsolePlugin } from './plugins/console';\nimport { shouldEnableConsole } from './shared';\n\nimport type { ObservabilityManager } from './core/manager';\n\n/**\n * Create auto-configured observability for Next.js edge runtime\n * Note: Sentry is not included here as it requires Node.js APIs\n */\nexport async function createEdgeObservability() {\n const builder = ObservabilityBuilder.create().withAutoInitialize(false); // Manual init in edge runtime\n\n // Console logging control using shared utility\n const enableConsole = shouldEnableConsole(\n env.NEXT_PUBLIC_NODE_ENV,\n env.NEXT_PUBLIC_OBSERVABILITY_CONSOLE_ENABLED,\n env.NEXT_PUBLIC_OBSERVABILITY_DEBUG,\n );\n\n // Always add console plugin, control via enabled flag\n builder.withPlugin(\n createConsolePlugin({\n prefix: '[Next.js Edge]',\n enabled: enableConsole,\n }),\n );\n\n // Auto-activate Better Stack if source token is provided (uses fetch API)\n const betterStackToken =\n betterStackEnv.BETTER_STACK_SOURCE_TOKEN ??\n betterStackEnv.BETTERSTACK_SOURCE_TOKEN ??\n betterStackEnv.LOGTAIL_SOURCE_TOKEN;\n\n if (betterStackToken) {\n builder.withPlugin(\n createBetterStackPlugin({\n sourceToken: betterStackToken,\n }),\n );\n }\n\n // Note: Sentry requires Node.js APIs and isn't available in edge runtime\n // Better Stack is the recommended solution for edge runtime logging\n\n return builder.build();\n}\n\n// Lazy initialization for the observability instance using promise-based singleton\nlet initializationPromise: Promise<ObservabilityManager> | null = null;\n\n/**\n * Get or create the observability instance\n * Uses promise-based singleton pattern to prevent race conditions in concurrent scenarios\n * @returns Promise resolving to the ObservabilityManager instance\n */\nexport async function getObservability(): Promise<ObservabilityManager> {\n if (!initializationPromise) {\n initializationPromise = (async () => {\n try {\n return await createEdgeObservability();\n } catch (error) {\n // Reset cached promise on failure so callers can retry\n initializationPromise = null;\n throw error;\n }\n })();\n }\n return initializationPromise;\n}\n\n// Export types and utilities\nexport * from './core/types';\nexport type {\n ObservabilityPlugin,\n ObservabilityServerPlugin,\n PluginFactory,\n PluginLifecycle,\n} from './core/plugin';\nexport { createObservability } from './factory';\nexport { ObservabilityBuilder } from './factory/builder';\n\n// Re-export edge-compatible plugins only (explicit to avoid duplicate ObservabilityPlugin/ObservabilityServerPlugin)\nexport { BetterStackPlugin, createBetterStackPlugin, env, safeEnv } from './plugins/betterstack';\nexport type { BetterStackPluginConfig } from './plugins/betterstack';\nexport {\n ConsolePlugin,\n ConsoleServerPlugin,\n createConsolePlugin,\n createConsoleServerPlugin,\n} from './plugins/console';\nexport type { ConsolePluginConfig } from './plugins/console';\n\n// Legacy function for backward compatibility (no-op)\n/**\n * @deprecated Configuration now happens through the observability system\n */\nexport const configureLogger = () => {\n // No-op: Configuration now happens through the observability system\n};\n\n// Re-export type\nexport type LogContext = Record<string, unknown>;\n"],"mappings":";;;;;;;;;;;;;;;;;AAoBA,eAAsB,0BAA0B;CAC9C,MAAM,UAAU,qBAAqB,QAAQ,CAAC,mBAAmB,MAAM;CAGvE,MAAM,gBAAgB,oBACpBA,MAAI,sBACJA,MAAI,2CACJA,MAAI,gCACL;AAGD,SAAQ,WACN,oBAAoB;EAClB,QAAQ;EACR,SAAS;EACV,CAAC,CACH;CAGD,MAAM,mBACJC,IAAe,6BACfA,IAAe,4BACfA,IAAe;AAEjB,KAAI,iBACF,SAAQ,WACN,wBAAwB,EACtB,aAAa,kBACd,CAAC,CACH;AAMH,QAAO,QAAQ,OAAO;;AAIxB,IAAI,wBAA8D;;;;;;AAOlE,eAAsB,mBAAkD;AACtE,KAAI,CAAC,sBACH,0BAAyB,YAAY;AACnC,MAAI;AACF,UAAO,MAAM,yBAAyB;WAC/B,OAAO;AAEd,2BAAwB;AACxB,SAAM;;KAEN;AAEN,QAAO;;;;;AA6BT,MAAa,wBAAwB"}
@@ -0,0 +1,17 @@
1
+ import { a as Breadcrumb, c as ObservabilityConfig, d as ObservabilityServer, f as ObservabilityUser, l as ObservabilityContext, o as LogLevel, s as ObservabilityClient, u as ObservabilityScope } from "./plugin-Bfq-o3nr.mjs";
2
+ import { t as ObservabilityManager } from "./manager-BxQqOPEg.mjs";
3
+ import { n as ObservabilityBuilder, t as createObservability } from "./index-CpcdzWrF.mjs";
4
+ import { t as BetterStackPlugin } from "./plugin-CaQxviDs.mjs";
5
+ import { ConsolePlugin } from "./plugins-console.mjs";
6
+ import { t as SentryPlugin } from "./plugin-Bt-ygG1m.mjs";
7
+ import "./plugins-sentry.mjs";
8
+ import { i as SentryMicroFrontendPlugin } from "./utils-CuGrTcD6.mjs";
9
+ import "./plugins-sentry-microfrontend.mjs";
10
+
11
+ //#region src/server-next.d.ts
12
+ declare function createServerObservability(): Promise<ObservabilityManager>;
13
+ declare function getObservability(): Promise<ObservabilityManager>;
14
+ declare const configureLogger: () => void;
15
+ //#endregion
16
+ export { BetterStackPlugin, Breadcrumb, ConsolePlugin, LogLevel, ObservabilityBuilder, ObservabilityClient, ObservabilityConfig, ObservabilityContext, ObservabilityManager, ObservabilityScope, ObservabilityServer, ObservabilityUser, SentryMicroFrontendPlugin, SentryPlugin, configureLogger, createObservability, createServerObservability, getObservability };
17
+ //# sourceMappingURL=server-next.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-next.d.mts","names":[],"sources":["../src/server-next.ts"],"mappings":";;;;;;;;;;;iBAoBsB,yBAAA,CAAA,GAAyB,OAAA,CAAA,oBAAA;AAAA,iBAsDzB,gBAAA,CAAA,GAAoB,OAAA,CAAQ,oBAAA;AAAA,cAmCrC,eAAA"}