reroute-js 0.43.7 → 0.43.8
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.
- package/cli/bin.d.ts +1 -1
- package/cli/bin.js +6 -6
- package/cli/bin.js.map +1 -1
- package/cli/index.d.ts +1 -1
- package/cli/index.js +4 -4
- package/cli/index.js.map +1 -1
- package/cli/src/cli.d.ts +1 -1
- package/cli/src/commands/analyze.d.ts +1 -1
- package/cli/src/commands/build.d.ts +1 -1
- package/cli/src/commands/dev.d.ts +1 -1
- package/cli/src/commands/gen.d.ts +1 -1
- package/cli/src/commands/index.d.ts +1 -1
- package/cli/src/commands/init.d.ts +1 -1
- package/cli/src/commands/lib/assets.d.ts +1 -1
- package/cli/src/commands/lib/bundler.d.ts +1 -1
- package/cli/src/commands/lib/command.d.ts +1 -1
- package/cli/src/commands/lib/env.d.ts +1 -1
- package/cli/src/commands/lib/index.d.ts +1 -1
- package/cli/src/commands/lib/log.d.ts +1 -1
- package/cli/src/commands/lib/markdown/availability.d.ts +1 -1
- package/cli/src/commands/lib/markdown/index.d.ts +1 -1
- package/cli/src/commands/lib/markdown/processor.d.ts +1 -1
- package/cli/src/commands/lib/production.d.ts +1 -1
- package/cli/src/commands/lib/server.d.ts +1 -1
- package/cli/src/commands/lib/streaming/analyzer.d.ts +1 -1
- package/cli/src/commands/lib/streaming/suspense.d.ts +1 -1
- package/cli/src/commands/lib/tailwind.d.ts +1 -1
- package/cli/src/commands/lib/terminal-ui.d.ts +1 -1
- package/cli/src/commands/lib/version.d.ts +1 -1
- package/cli/src/commands/og.d.ts +1 -1
- package/cli/src/commands/start.d.ts +1 -1
- package/cli/src/index.d.ts +1 -1
- package/core/index.d.ts +1 -1
- package/core/index.js +2 -2
- package/core/index.js.map +1 -1
- package/core/src/bundler/hash.d.ts +1 -1
- package/core/src/bundler/index.d.ts +1 -1
- package/core/src/config.d.ts +1 -1
- package/core/src/content/discovery.d.ts +1 -1
- package/core/src/content/index.d.ts +1 -1
- package/core/src/content/metadata.d.ts +1 -1
- package/core/src/index.d.ts +1 -1
- package/core/src/llms/extractor.d.ts +1 -1
- package/core/src/llms/formatter.d.ts +1 -1
- package/core/src/llms/full-generator.d.ts +1 -1
- package/core/src/llms/index-generator.d.ts +1 -1
- package/core/src/llms/index.d.ts +1 -1
- package/core/src/og/discovery.d.ts +1 -1
- package/core/src/og/index.d.ts +1 -1
- package/core/src/og/meta.d.ts +1 -1
- package/core/src/og/render.d.ts +1 -1
- package/core/src/og/types.d.ts +1 -1
- package/core/src/robots/discovery.d.ts +1 -1
- package/core/src/robots/generator.d.ts +1 -1
- package/core/src/robots/index.d.ts +1 -1
- package/core/src/robots/policies.d.ts +1 -1
- package/core/src/rss/discovery.d.ts +1 -1
- package/core/src/rss/generator.d.ts +1 -1
- package/core/src/rss/index.d.ts +1 -1
- package/core/src/sitemap/discovery.d.ts +1 -1
- package/core/src/sitemap/generator.d.ts +1 -1
- package/core/src/sitemap/index.d.ts +1 -1
- package/core/src/ssr/index.d.ts +1 -1
- package/core/src/ssr/lib/cache.d.ts +1 -1
- package/core/src/ssr/lib/collections.d.ts +1 -1
- package/core/src/ssr/lib/compression.d.ts +1 -1
- package/core/src/ssr/lib/compute/content.d.ts +1 -1
- package/core/src/ssr/lib/compute/index.d.ts +1 -1
- package/core/src/ssr/lib/compute/layouts.d.ts +1 -1
- package/core/src/ssr/lib/compute/routes.d.ts +1 -1
- package/core/src/ssr/lib/data.d.ts +1 -1
- package/core/src/ssr/lib/html.d.ts +1 -1
- package/core/src/ssr/lib/imports.d.ts +1 -1
- package/core/src/ssr/lib/index.d.ts +1 -1
- package/core/src/ssr/lib/layouts.d.ts +1 -1
- package/core/src/ssr/lib/metadata.d.ts +1 -1
- package/core/src/ssr/lib/mime.d.ts +1 -1
- package/core/src/ssr/lib/modules.d.ts +1 -1
- package/core/src/ssr/lib/path.d.ts +1 -1
- package/core/src/ssr/lib/preload.d.ts +1 -1
- package/core/src/ssr/lib/scripts/collections.d.ts +1 -1
- package/core/src/ssr/lib/scripts/data.d.ts +1 -1
- package/core/src/ssr/lib/scripts/escape.d.ts +1 -1
- package/core/src/ssr/lib/scripts/feeds.d.ts +1 -1
- package/core/src/ssr/lib/scripts/index.d.ts +1 -1
- package/core/src/ssr/lib/seed.d.ts +1 -1
- package/core/src/ssr/lib/serialize.d.ts +1 -1
- package/core/src/ssr/lib/setup.d.ts +1 -1
- package/core/src/ssr/lib/styles.d.ts +1 -1
- package/core/src/ssr/lib/template.d.ts +1 -1
- package/core/src/ssr/lib/types.d.ts +1 -1
- package/core/src/ssr/render.d.ts +1 -1
- package/core/src/ssr/stream.d.ts +1 -1
- package/elysia/index.d.ts +1 -1
- package/elysia/index.js +2 -2
- package/elysia/index.js.map +1 -1
- package/elysia/src/index.d.ts +1 -1
- package/elysia/src/libs/assets.d.ts +1 -1
- package/elysia/src/libs/cache.d.ts +1 -1
- package/elysia/src/libs/caching.d.ts +1 -1
- package/elysia/src/libs/http.d.ts +1 -1
- package/elysia/src/libs/image.d.ts +1 -1
- package/elysia/src/libs/index.d.ts +1 -1
- package/elysia/src/libs/llms.d.ts +1 -1
- package/elysia/src/libs/response.d.ts +1 -1
- package/elysia/src/libs/serving.d.ts +1 -1
- package/elysia/src/plugin.d.ts +1 -1
- package/elysia/src/routes/artifacts.d.ts +1 -1
- package/elysia/src/routes/content.d.ts +1 -1
- package/elysia/src/routes/image.d.ts +1 -1
- package/elysia/src/routes/index.d.ts +1 -1
- package/elysia/src/routes/internal.d.ts +1 -1
- package/elysia/src/routes/llms.d.ts +1 -1
- package/elysia/src/routes/og.d.ts +1 -1
- package/elysia/src/routes/redirects.d.ts +1 -1
- package/elysia/src/routes/robots.d.ts +1 -1
- package/elysia/src/routes/rss.d.ts +1 -1
- package/elysia/src/routes/search.d.ts +1 -1
- package/elysia/src/routes/sitemap.d.ts +1 -1
- package/elysia/src/routes/ssr.d.ts +1 -1
- package/elysia/src/routes/static.d.ts +1 -1
- package/elysia/src/types.d.ts +1 -1
- package/package.json +1 -1
- package/react/index.d.ts +1 -1
- package/react/index.js +2 -2
- package/react/index.js.map +1 -1
- package/react/src/components/ClientOnly.d.ts +1 -1
- package/react/src/components/ContentRoute.d.ts +1 -1
- package/react/src/components/Image.d.ts +1 -1
- package/react/src/components/LazyRoute.d.ts +1 -1
- package/react/src/components/Link.d.ts +1 -1
- package/react/src/components/Markdown.d.ts +1 -1
- package/react/src/components/Outlet.d.ts +1 -1
- package/react/src/components/index.d.ts +1 -1
- package/react/src/hooks/index.d.ts +1 -1
- package/react/src/hooks/useContent.d.ts +1 -1
- package/react/src/hooks/useData.d.ts +1 -1
- package/react/src/hooks/useFeed.d.ts +1 -1
- package/react/src/hooks/useLayoutData.d.ts +1 -1
- package/react/src/hooks/useLlms.d.ts +1 -1
- package/react/src/hooks/useNavigate.d.ts +1 -1
- package/react/src/hooks/useParams.d.ts +1 -1
- package/react/src/hooks/useRouter.d.ts +1 -1
- package/react/src/hooks/useSearch.d.ts +1 -1
- package/react/src/hooks/useSearchParams.d.ts +1 -1
- package/react/src/hooks/useToc.d.ts +1 -1
- package/react/src/index.d.ts +1 -1
- package/react/src/lib/collection.d.ts +1 -1
- package/react/src/lib/content.d.ts +1 -1
- package/react/src/lib/head.d.ts +1 -1
- package/react/src/lib/index.d.ts +1 -1
- package/react/src/lib/lazy-route.d.ts +1 -1
- package/react/src/lib/route-loader.d.ts +1 -1
- package/react/src/providers/ContentProvider.d.ts +1 -1
- package/react/src/providers/RerouteProvider.d.ts +1 -1
- package/react/src/providers/RouterProvider.d.ts +1 -1
- package/react/src/providers/index.d.ts +1 -1
- package/react/src/types/any.d.ts +1 -1
- package/react/src/types/index.d.ts +1 -1
- package/react/src/types/router.d.ts +1 -1
- package/telemetry/react.d.ts +1 -1
- package/telemetry/react.js +161 -180
- package/telemetry/react.js.map +5 -6
- package/telemetry/server.d.ts +1 -1
- package/telemetry/server.js +2 -2
- package/telemetry/server.js.map +1 -1
- package/telemetry/src/react/api.d.ts +1 -1
- package/telemetry/src/react/api.d.ts.map +1 -1
- package/telemetry/src/react/context.d.ts +1 -1
- package/telemetry/src/react/index.d.ts +1 -1
- package/telemetry/src/react/telemetry.d.ts +1 -1
- package/telemetry/src/server/context.d.ts +1 -1
- package/telemetry/src/server/headers/extractor.d.ts +1 -1
- package/telemetry/src/server/headers/index.d.ts +1 -1
- package/telemetry/src/server/headers/presets.d.ts +1 -1
- package/telemetry/src/server/index.d.ts +1 -1
- package/telemetry/src/server/instrumentation.d.ts +1 -1
- package/telemetry/src/server/plugin.d.ts +1 -1
- package/telemetry/src/server/sourcemap.d.ts +1 -1
package/telemetry/react.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* reroute-js v0.43.
|
|
2
|
+
* reroute-js v0.43.8
|
|
3
3
|
*
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @copyright 2026 stewones <hi@stewan.io>
|
|
@@ -41,149 +41,6 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
41
41
|
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
42
42
|
});
|
|
43
43
|
|
|
44
|
-
// packages/telemetry/src/react/api.tsx
|
|
45
|
-
import {
|
|
46
|
-
createContext,
|
|
47
|
-
useContext,
|
|
48
|
-
useEffect,
|
|
49
|
-
useMemo,
|
|
50
|
-
useRef,
|
|
51
|
-
useState
|
|
52
|
-
} from "react";
|
|
53
|
-
import { jsx } from "react/jsx-runtime";
|
|
54
|
-
function deserializeIgnoreRoutes(serialized) {
|
|
55
|
-
if (!(serialized && Array.isArray(serialized)))
|
|
56
|
-
return;
|
|
57
|
-
return serialized.map((pattern) => {
|
|
58
|
-
if (pattern?.type === "string") {
|
|
59
|
-
return pattern.value;
|
|
60
|
-
}
|
|
61
|
-
if (pattern?.type === "regex") {
|
|
62
|
-
return new RegExp(pattern.value, pattern.flags);
|
|
63
|
-
}
|
|
64
|
-
return pattern;
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
function getBrowserTelemetryConfig() {
|
|
68
|
-
if (typeof window !== "undefined") {
|
|
69
|
-
const globalConfig = window.__REROUTE_TELEMETRY_BROWSER__;
|
|
70
|
-
if (globalConfig) {
|
|
71
|
-
if (globalConfig.ignoreRoutes) {
|
|
72
|
-
globalConfig.ignoreRoutes = deserializeIgnoreRoutes(globalConfig.ignoreRoutes);
|
|
73
|
-
}
|
|
74
|
-
return globalConfig;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return {};
|
|
78
|
-
}
|
|
79
|
-
function TelemetryProvider({
|
|
80
|
-
children,
|
|
81
|
-
enabled,
|
|
82
|
-
serviceName,
|
|
83
|
-
serviceVersion,
|
|
84
|
-
otlpEndpoint,
|
|
85
|
-
apiKey,
|
|
86
|
-
environment,
|
|
87
|
-
enableConsoleCapture
|
|
88
|
-
}) {
|
|
89
|
-
const [telemetryReady, setTelemetryReady] = useState(false);
|
|
90
|
-
const [telemetryAPI, setTelemetryAPI] = useState(null);
|
|
91
|
-
const hasInitialized = useRef(false);
|
|
92
|
-
const globalConfig = useMemo(() => getBrowserTelemetryConfig(), []);
|
|
93
|
-
const mergedConfig = useMemo(() => ({
|
|
94
|
-
enabled: enabled ?? globalConfig.enabled ?? false,
|
|
95
|
-
serviceName: serviceName ?? globalConfig.serviceName ?? "reroute-app-browser",
|
|
96
|
-
serviceVersion: serviceVersion ?? globalConfig.serviceVersion ?? "1.0.0",
|
|
97
|
-
otlpEndpoint: otlpEndpoint ?? globalConfig.otlpEndpoint ?? "/__reroute_telemetry",
|
|
98
|
-
apiKey: apiKey ?? globalConfig.apiKey,
|
|
99
|
-
environment: environment ?? globalConfig.environment ?? "development",
|
|
100
|
-
enableConsoleCapture: enableConsoleCapture ?? globalConfig.enableConsoleCapture ?? true,
|
|
101
|
-
ignoreRoutes: globalConfig.ignoreRoutes
|
|
102
|
-
}), [
|
|
103
|
-
enabled,
|
|
104
|
-
serviceName,
|
|
105
|
-
serviceVersion,
|
|
106
|
-
otlpEndpoint,
|
|
107
|
-
apiKey,
|
|
108
|
-
environment,
|
|
109
|
-
enableConsoleCapture,
|
|
110
|
-
globalConfig
|
|
111
|
-
]);
|
|
112
|
-
useEffect(() => {
|
|
113
|
-
if (IS_SERVER) {
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
if (!mergedConfig.enabled) {
|
|
117
|
-
console.debug("[TelemetryProvider] Browser telemetry disabled");
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
if (hasInitialized.current) {
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
hasInitialized.current = true;
|
|
124
|
-
Promise.resolve().then(() => (init_react2(), exports_react)).then((module) => {
|
|
125
|
-
module.initBrowserTelemetry(mergedConfig);
|
|
126
|
-
setTelemetryAPI(module);
|
|
127
|
-
setTelemetryReady(true);
|
|
128
|
-
console.debug("[TelemetryProvider] Browser telemetry initialized");
|
|
129
|
-
}).catch((error) => {
|
|
130
|
-
console.warn("[TelemetryProvider] Failed to load telemetry:", error);
|
|
131
|
-
hasInitialized.current = false;
|
|
132
|
-
});
|
|
133
|
-
}, [mergedConfig]);
|
|
134
|
-
const contextValue = useMemo(() => ({
|
|
135
|
-
createCustomSpan: (name, attributes) => {
|
|
136
|
-
if (telemetryReady && telemetryAPI) {
|
|
137
|
-
return telemetryAPI.createSpan(name, attributes);
|
|
138
|
-
}
|
|
139
|
-
return noopSpan;
|
|
140
|
-
},
|
|
141
|
-
trackCustomEvent: (eventName, attributes) => {
|
|
142
|
-
if (telemetryReady && telemetryAPI) {
|
|
143
|
-
telemetryAPI.trackEvent(eventName, attributes);
|
|
144
|
-
}
|
|
145
|
-
},
|
|
146
|
-
trackCustomError: (error, context) => {
|
|
147
|
-
if (telemetryReady && telemetryAPI) {
|
|
148
|
-
telemetryAPI.trackError(error, context);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}), [telemetryReady, telemetryAPI]);
|
|
152
|
-
if (IS_SERVER) {
|
|
153
|
-
return /* @__PURE__ */ jsx(TelemetryContext.Provider, {
|
|
154
|
-
value: noopContext,
|
|
155
|
-
children
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
return /* @__PURE__ */ jsx(TelemetryContext.Provider, {
|
|
159
|
-
value: contextValue,
|
|
160
|
-
children
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
function useTelemetry() {
|
|
164
|
-
const context = useContext(TelemetryContext);
|
|
165
|
-
if (!context) {
|
|
166
|
-
throw new Error("useTelemetry must be used within a TelemetryProvider");
|
|
167
|
-
}
|
|
168
|
-
return context;
|
|
169
|
-
}
|
|
170
|
-
var IS_SERVER, noopSpan, noopContext, TelemetryContext;
|
|
171
|
-
var init_api = __esm(() => {
|
|
172
|
-
IS_SERVER = typeof window === "undefined";
|
|
173
|
-
noopSpan = {
|
|
174
|
-
setAttributes: () => {},
|
|
175
|
-
setStatus: () => {},
|
|
176
|
-
recordException: () => {},
|
|
177
|
-
end: () => {}
|
|
178
|
-
};
|
|
179
|
-
noopContext = {
|
|
180
|
-
createCustomSpan: () => noopSpan,
|
|
181
|
-
trackCustomEvent: () => {},
|
|
182
|
-
trackCustomError: () => {}
|
|
183
|
-
};
|
|
184
|
-
TelemetryContext = createContext(null);
|
|
185
|
-
});
|
|
186
|
-
|
|
187
44
|
// packages/telemetry/src/react/context.ts
|
|
188
45
|
function setContext(attributes) {
|
|
189
46
|
contextAttributes = { ...contextAttributes, ...attributes };
|
|
@@ -207,6 +64,14 @@ var init_context = __esm(() => {
|
|
|
207
64
|
});
|
|
208
65
|
|
|
209
66
|
// packages/telemetry/src/react/telemetry.ts
|
|
67
|
+
var exports_telemetry = {};
|
|
68
|
+
__export(exports_telemetry, {
|
|
69
|
+
trackEvent: () => trackEvent,
|
|
70
|
+
trackError: () => trackError,
|
|
71
|
+
shutdownTelemetry: () => shutdownTelemetry,
|
|
72
|
+
initBrowserTelemetry: () => initBrowserTelemetry,
|
|
73
|
+
createSpan: () => createSpan
|
|
74
|
+
});
|
|
210
75
|
function addBreadcrumb(category, message, data) {
|
|
211
76
|
breadcrumbs.push({
|
|
212
77
|
timestamp: Date.now(),
|
|
@@ -268,7 +133,7 @@ function shouldIgnoreUrl(url, method = "GET") {
|
|
|
268
133
|
});
|
|
269
134
|
}
|
|
270
135
|
async function initBrowserTelemetry(options = {}) {
|
|
271
|
-
if (
|
|
136
|
+
if (IS_SERVER || isInitialized) {
|
|
272
137
|
return;
|
|
273
138
|
}
|
|
274
139
|
isInitialized = true;
|
|
@@ -399,7 +264,7 @@ async function initBrowserTelemetry(options = {}) {
|
|
|
399
264
|
}
|
|
400
265
|
}
|
|
401
266
|
function setupBreadcrumbTracking() {
|
|
402
|
-
if (
|
|
267
|
+
if (IS_SERVER)
|
|
403
268
|
return;
|
|
404
269
|
document.addEventListener("click", (event) => {
|
|
405
270
|
const target = event.target;
|
|
@@ -460,7 +325,7 @@ function setupBreadcrumbTracking() {
|
|
|
460
325
|
console.log("[browser-telemetry] Breadcrumb tracking enabled");
|
|
461
326
|
}
|
|
462
327
|
function setupNetworkTracking() {
|
|
463
|
-
if (
|
|
328
|
+
if (IS_SERVER)
|
|
464
329
|
return;
|
|
465
330
|
const originalFetch = window.fetch;
|
|
466
331
|
window.fetch = async function(input, init) {
|
|
@@ -541,7 +406,7 @@ function setupNetworkTracking() {
|
|
|
541
406
|
console.log("[browser-telemetry] Network tracking enabled");
|
|
542
407
|
}
|
|
543
408
|
function getPerformanceMetrics() {
|
|
544
|
-
if (
|
|
409
|
+
if (IS_SERVER)
|
|
545
410
|
return {};
|
|
546
411
|
const metrics = {};
|
|
547
412
|
const memory = performance.memory;
|
|
@@ -800,7 +665,7 @@ async function setupConsoleCapture() {
|
|
|
800
665
|
console.error = wrappedError;
|
|
801
666
|
}
|
|
802
667
|
function createSpan(name, attributes = {}) {
|
|
803
|
-
if (
|
|
668
|
+
if (IS_SERVER || !isInitialized || !trace) {
|
|
804
669
|
return {
|
|
805
670
|
setAttributes: () => {},
|
|
806
671
|
setStatus: () => {},
|
|
@@ -843,7 +708,7 @@ function createSpan(name, attributes = {}) {
|
|
|
843
708
|
}
|
|
844
709
|
}
|
|
845
710
|
function trackEvent(eventName, attributes = {}) {
|
|
846
|
-
if (
|
|
711
|
+
if (IS_SERVER || !isInitialized) {
|
|
847
712
|
return;
|
|
848
713
|
}
|
|
849
714
|
try {
|
|
@@ -854,7 +719,7 @@ function trackEvent(eventName, attributes = {}) {
|
|
|
854
719
|
}
|
|
855
720
|
}
|
|
856
721
|
async function trackError(error, context = {}) {
|
|
857
|
-
if (
|
|
722
|
+
if (IS_SERVER || !isInitialized || !trace || !SpanStatusCode) {
|
|
858
723
|
return;
|
|
859
724
|
}
|
|
860
725
|
try {
|
|
@@ -934,42 +799,158 @@ async function shutdownTelemetry() {
|
|
|
934
799
|
console.log("[browser-telemetry] Shut down successfully");
|
|
935
800
|
}
|
|
936
801
|
}
|
|
937
|
-
var
|
|
802
|
+
var IS_SERVER, trace = null, SpanStatusCode = null, isInitialized = false, tracerProvider = null, serverTraceContext = null, ignorePatterns, breadcrumbs, MAX_BREADCRUMBS = 20, networkRequests, MAX_NETWORK_REQUESTS = 15;
|
|
938
803
|
var init_telemetry = __esm(() => {
|
|
939
804
|
init_context();
|
|
940
|
-
|
|
805
|
+
IS_SERVER = typeof window === "undefined";
|
|
941
806
|
ignorePatterns = [];
|
|
942
807
|
breadcrumbs = [];
|
|
943
808
|
networkRequests = [];
|
|
944
809
|
});
|
|
945
810
|
|
|
946
|
-
// packages/telemetry/src/react/
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
});
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
811
|
+
// packages/telemetry/src/react/api.tsx
|
|
812
|
+
import {
|
|
813
|
+
createContext,
|
|
814
|
+
useContext,
|
|
815
|
+
useEffect,
|
|
816
|
+
useMemo,
|
|
817
|
+
useRef,
|
|
818
|
+
useState
|
|
819
|
+
} from "react";
|
|
820
|
+
import { jsx } from "react/jsx-runtime";
|
|
821
|
+
function deserializeIgnoreRoutes(serialized) {
|
|
822
|
+
if (!(serialized && Array.isArray(serialized)))
|
|
823
|
+
return;
|
|
824
|
+
return serialized.map((pattern) => {
|
|
825
|
+
if (pattern?.type === "string") {
|
|
826
|
+
return pattern.value;
|
|
827
|
+
}
|
|
828
|
+
if (pattern?.type === "regex") {
|
|
829
|
+
return new RegExp(pattern.value, pattern.flags);
|
|
830
|
+
}
|
|
831
|
+
return pattern;
|
|
832
|
+
});
|
|
833
|
+
}
|
|
834
|
+
function getBrowserTelemetryConfig() {
|
|
835
|
+
if (typeof window !== "undefined") {
|
|
836
|
+
const globalConfig = window.__REROUTE_TELEMETRY_BROWSER__;
|
|
837
|
+
if (globalConfig) {
|
|
838
|
+
if (globalConfig.ignoreRoutes) {
|
|
839
|
+
globalConfig.ignoreRoutes = deserializeIgnoreRoutes(globalConfig.ignoreRoutes);
|
|
840
|
+
}
|
|
841
|
+
return globalConfig;
|
|
842
|
+
}
|
|
843
|
+
}
|
|
844
|
+
return {};
|
|
845
|
+
}
|
|
846
|
+
var IS_SERVER2 = typeof window === "undefined";
|
|
847
|
+
var noopSpan = {
|
|
848
|
+
setAttributes: () => {},
|
|
849
|
+
setStatus: () => {},
|
|
850
|
+
recordException: () => {},
|
|
851
|
+
end: () => {}
|
|
852
|
+
};
|
|
853
|
+
var noopContext = {
|
|
854
|
+
createCustomSpan: () => noopSpan,
|
|
855
|
+
trackCustomEvent: () => {},
|
|
856
|
+
trackCustomError: () => {}
|
|
857
|
+
};
|
|
858
|
+
var TelemetryContext = createContext(null);
|
|
859
|
+
function TelemetryProvider({
|
|
860
|
+
children,
|
|
861
|
+
enabled,
|
|
862
|
+
serviceName,
|
|
863
|
+
serviceVersion,
|
|
864
|
+
otlpEndpoint,
|
|
865
|
+
apiKey,
|
|
866
|
+
environment,
|
|
867
|
+
enableConsoleCapture
|
|
868
|
+
}) {
|
|
869
|
+
const [telemetryReady, setTelemetryReady] = useState(false);
|
|
870
|
+
const [telemetryAPI, setTelemetryAPI] = useState(null);
|
|
871
|
+
const hasInitialized = useRef(false);
|
|
872
|
+
const globalConfig = useMemo(() => getBrowserTelemetryConfig(), []);
|
|
873
|
+
const mergedConfig = useMemo(() => ({
|
|
874
|
+
enabled: enabled ?? globalConfig.enabled ?? false,
|
|
875
|
+
serviceName: serviceName ?? globalConfig.serviceName ?? "reroute-app-browser",
|
|
876
|
+
serviceVersion: serviceVersion ?? globalConfig.serviceVersion ?? "1.0.0",
|
|
877
|
+
otlpEndpoint: otlpEndpoint ?? globalConfig.otlpEndpoint ?? "/__reroute_telemetry",
|
|
878
|
+
apiKey: apiKey ?? globalConfig.apiKey,
|
|
879
|
+
environment: environment ?? globalConfig.environment ?? "development",
|
|
880
|
+
enableConsoleCapture: enableConsoleCapture ?? globalConfig.enableConsoleCapture ?? true,
|
|
881
|
+
ignoreRoutes: globalConfig.ignoreRoutes
|
|
882
|
+
}), [
|
|
883
|
+
enabled,
|
|
884
|
+
serviceName,
|
|
885
|
+
serviceVersion,
|
|
886
|
+
otlpEndpoint,
|
|
887
|
+
apiKey,
|
|
888
|
+
environment,
|
|
889
|
+
enableConsoleCapture,
|
|
890
|
+
globalConfig
|
|
891
|
+
]);
|
|
892
|
+
useEffect(() => {
|
|
893
|
+
if (IS_SERVER2) {
|
|
894
|
+
return;
|
|
895
|
+
}
|
|
896
|
+
if (!mergedConfig.enabled) {
|
|
897
|
+
console.debug("[TelemetryProvider] Browser telemetry disabled");
|
|
898
|
+
return;
|
|
899
|
+
}
|
|
900
|
+
if (hasInitialized.current) {
|
|
901
|
+
return;
|
|
902
|
+
}
|
|
903
|
+
hasInitialized.current = true;
|
|
904
|
+
Promise.resolve().then(() => (init_telemetry(), exports_telemetry)).then((module) => {
|
|
905
|
+
module.initBrowserTelemetry(mergedConfig);
|
|
906
|
+
setTelemetryAPI(module);
|
|
907
|
+
setTelemetryReady(true);
|
|
908
|
+
console.debug("[TelemetryProvider] Browser telemetry initialized");
|
|
909
|
+
}).catch((error) => {
|
|
910
|
+
console.warn("[TelemetryProvider] Failed to load telemetry:", error);
|
|
911
|
+
hasInitialized.current = false;
|
|
912
|
+
});
|
|
913
|
+
}, [mergedConfig]);
|
|
914
|
+
const contextValue = useMemo(() => ({
|
|
915
|
+
createCustomSpan: (name, attributes) => {
|
|
916
|
+
if (telemetryReady && telemetryAPI) {
|
|
917
|
+
return telemetryAPI.createSpan(name, attributes);
|
|
918
|
+
}
|
|
919
|
+
return noopSpan;
|
|
920
|
+
},
|
|
921
|
+
trackCustomEvent: (eventName, attributes) => {
|
|
922
|
+
if (telemetryReady && telemetryAPI) {
|
|
923
|
+
telemetryAPI.trackEvent(eventName, attributes);
|
|
924
|
+
}
|
|
925
|
+
},
|
|
926
|
+
trackCustomError: (error, context) => {
|
|
927
|
+
if (telemetryReady && telemetryAPI) {
|
|
928
|
+
telemetryAPI.trackError(error, context);
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
}), [telemetryReady, telemetryAPI]);
|
|
932
|
+
if (IS_SERVER2) {
|
|
933
|
+
return /* @__PURE__ */ jsx(TelemetryContext.Provider, {
|
|
934
|
+
value: noopContext,
|
|
935
|
+
children
|
|
936
|
+
});
|
|
937
|
+
}
|
|
938
|
+
return /* @__PURE__ */ jsx(TelemetryContext.Provider, {
|
|
939
|
+
value: contextValue,
|
|
940
|
+
children
|
|
941
|
+
});
|
|
942
|
+
}
|
|
943
|
+
function useTelemetry() {
|
|
944
|
+
const context = useContext(TelemetryContext);
|
|
945
|
+
if (!context) {
|
|
946
|
+
throw new Error("useTelemetry must be used within a TelemetryProvider");
|
|
947
|
+
}
|
|
948
|
+
return context;
|
|
949
|
+
}
|
|
972
950
|
|
|
951
|
+
// packages/telemetry/src/react/index.ts
|
|
952
|
+
init_context();
|
|
953
|
+
init_telemetry();
|
|
973
954
|
export {
|
|
974
955
|
useTelemetry,
|
|
975
956
|
trackEvent,
|
|
@@ -984,4 +965,4 @@ export {
|
|
|
984
965
|
TelemetryProvider
|
|
985
966
|
};
|
|
986
967
|
|
|
987
|
-
//# debugId=
|
|
968
|
+
//# debugId=0ECADDBD520FE42764756E2164756E21
|