@obtrace/browser 1.0.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 (51) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +85 -0
  3. package/dist/auto.js +126 -0
  4. package/dist/browser/breadcrumbs.js +41 -0
  5. package/dist/browser/clicks.js +68 -0
  6. package/dist/browser/console.js +58 -0
  7. package/dist/browser/errors.js +51 -0
  8. package/dist/browser/index.js +352 -0
  9. package/dist/browser/longtasks.js +24 -0
  10. package/dist/browser/memory.js +19 -0
  11. package/dist/browser/offline.js +115 -0
  12. package/dist/browser/replay.js +127 -0
  13. package/dist/browser/resources.js +24 -0
  14. package/dist/browser/vitals.js +81 -0
  15. package/dist/browser_entry.bundle.js +28780 -0
  16. package/dist/browser_entry.bundle.js.map +7 -0
  17. package/dist/browser_entry.js +3 -0
  18. package/dist/core/client.js +80 -0
  19. package/dist/core/otel-web-setup.js +93 -0
  20. package/dist/index.js +6 -0
  21. package/dist/shared/semantic_metrics.js +28 -0
  22. package/dist/shared/types.js +1 -0
  23. package/dist/shared/utils.js +112 -0
  24. package/dist/sourcemaps.js +32 -0
  25. package/dist/types/auto.d.ts +13 -0
  26. package/dist/types/browser/breadcrumbs.d.ts +12 -0
  27. package/dist/types/browser/clicks.d.ts +2 -0
  28. package/dist/types/browser/console.d.ts +2 -0
  29. package/dist/types/browser/errors.d.ts +2 -0
  30. package/dist/types/browser/index.d.ts +25 -0
  31. package/dist/types/browser/longtasks.d.ts +2 -0
  32. package/dist/types/browser/memory.d.ts +2 -0
  33. package/dist/types/browser/offline.d.ts +3 -0
  34. package/dist/types/browser/replay.d.ts +24 -0
  35. package/dist/types/browser/resources.d.ts +2 -0
  36. package/dist/types/browser/vitals.d.ts +2 -0
  37. package/dist/types/browser_entry.d.ts +6 -0
  38. package/dist/types/core/client.d.ts +19 -0
  39. package/dist/types/core/otel-web-setup.d.ts +8 -0
  40. package/dist/types/index.d.ts +9 -0
  41. package/dist/types/shared/semantic_metrics.d.ts +26 -0
  42. package/dist/types/shared/types.d.ts +104 -0
  43. package/dist/types/shared/utils.d.ts +21 -0
  44. package/dist/types/sourcemaps.d.ts +14 -0
  45. package/dist/types/wrappers/frontend/next.d.ts +4 -0
  46. package/dist/types/wrappers/frontend/react.d.ts +8 -0
  47. package/dist/types/wrappers/frontend/vite.d.ts +5 -0
  48. package/dist/wrappers/frontend/next.js +12 -0
  49. package/dist/wrappers/frontend/react.js +20 -0
  50. package/dist/wrappers/frontend/vite.js +19 -0
  51. package/package.json +82 -0
@@ -0,0 +1,21 @@
1
+ export declare function nowUnixNano(): string;
2
+ export declare function hex(bytes: Uint8Array): string;
3
+ export declare function randomHex(lenBytes: number): string;
4
+ export declare function toBase64(input: string): string;
5
+ export declare function truncate(input: string, max: number): string;
6
+ export declare function safeJson(value: unknown): string;
7
+ export declare function sanitizeHeaders(headers: Record<string, string> | Headers | undefined): Record<string, string>;
8
+ export declare function stripQuery(url: string): string;
9
+ export declare function createTraceparent(traceId?: string, spanId?: string): string;
10
+ export declare function parseTraceparent(value: string | null | undefined): {
11
+ traceId: string;
12
+ parentSpanId: string;
13
+ flags: string;
14
+ } | null;
15
+ export interface PropagationHeaders {
16
+ traceId?: string;
17
+ parentSpanId?: string;
18
+ traceState?: string;
19
+ baggage?: string;
20
+ }
21
+ export declare function extractPropagation(headers?: HeadersInit): PropagationHeaders;
@@ -0,0 +1,14 @@
1
+ export interface SourceMapUploadOptions {
2
+ apiKey: string;
3
+ ingestBaseUrl: string;
4
+ release: string;
5
+ files: Array<{
6
+ url: string;
7
+ sourcemap: string;
8
+ source?: string;
9
+ }>;
10
+ }
11
+ export declare function uploadSourceMaps(options: SourceMapUploadOptions): Promise<{
12
+ uploaded: number;
13
+ errors: string[];
14
+ }>;
@@ -0,0 +1,4 @@
1
+ import type { ObtraceSDKConfig } from "../../shared/types";
2
+ import { initBrowserSDK } from "../../browser/index";
3
+ export declare function initNextBrowserSDK(config: ObtraceSDKConfig): import("./react").BrowserSDK;
4
+ export declare function withNextFetchInstrumentation(fetchImpl: typeof fetch, _sdk: ReturnType<typeof initBrowserSDK>): typeof fetch;
@@ -0,0 +1,8 @@
1
+ import type { ObtraceSDKConfig, SDKContext } from "../../shared/types";
2
+ import { type BrowserSDK } from "../../browser/index";
3
+ export declare function obtrace(config: ObtraceSDKConfig): BrowserSDK;
4
+ export declare function getObtrace(): BrowserSDK | null;
5
+ export declare function obtraceLog(level: "debug" | "info" | "warn" | "error" | "fatal", message: string, context?: SDKContext): void;
6
+ export declare function obtraceMetric(name: string, value: number, unit?: string, context?: SDKContext): void;
7
+ export declare function obtraceError(error: unknown, context?: SDKContext): void;
8
+ export type { BrowserSDK, ObtraceSDKConfig, SDKContext };
@@ -0,0 +1,5 @@
1
+ import type { ObtraceSDKConfig } from "../../shared/types";
2
+ export declare function initViteBrowserSDK(config: ObtraceSDKConfig): import("./react").BrowserSDK;
3
+ export declare function createViteConfigFromImportMetaEnv(env: Record<string, string | undefined>, base: Omit<ObtraceSDKConfig, "apiKey" | "ingestBaseUrl" | "serviceName"> & {
4
+ serviceName?: string;
5
+ }): ObtraceSDKConfig;
@@ -0,0 +1,12 @@
1
+ import { initBrowserSDK } from "../../browser/index";
2
+ export function initNextBrowserSDK(config) {
3
+ return initBrowserSDK(config);
4
+ }
5
+ export function withNextFetchInstrumentation(fetchImpl, _sdk) {
6
+ return async (input, init) => {
7
+ if (typeof window !== "undefined") {
8
+ return fetch(input, init);
9
+ }
10
+ return fetchImpl(input, init);
11
+ };
12
+ }
@@ -0,0 +1,20 @@
1
+ import { initBrowserSDK } from "../../browser/index";
2
+ let _sdk = null;
3
+ export function obtrace(config) {
4
+ if (_sdk)
5
+ return _sdk;
6
+ _sdk = initBrowserSDK(config);
7
+ return _sdk;
8
+ }
9
+ export function getObtrace() {
10
+ return _sdk;
11
+ }
12
+ export function obtraceLog(level, message, context) {
13
+ _sdk?.log(level, message, context);
14
+ }
15
+ export function obtraceMetric(name, value, unit, context) {
16
+ _sdk?.metric(name, value, unit, context);
17
+ }
18
+ export function obtraceError(error, context) {
19
+ _sdk?.captureException(error, context);
20
+ }
@@ -0,0 +1,19 @@
1
+ import { initBrowserSDK } from "../../browser/index";
2
+ export function initViteBrowserSDK(config) {
3
+ return initBrowserSDK(config);
4
+ }
5
+ export function createViteConfigFromImportMetaEnv(env, base) {
6
+ const apiKey = env.VITE_OBTRACE_API_KEY ?? "";
7
+ const ingestBaseUrl = env.VITE_OBTRACE_INGEST_BASE_URL ?? "";
8
+ const serviceName = base.serviceName ?? env.VITE_OBTRACE_SERVICE_NAME ?? "vite-app";
9
+ return {
10
+ ...base,
11
+ apiKey,
12
+ ingestBaseUrl,
13
+ serviceName,
14
+ tenantId: base.tenantId ?? env.VITE_OBTRACE_TENANT_ID,
15
+ projectId: base.projectId ?? env.VITE_OBTRACE_PROJECT_ID,
16
+ appId: base.appId ?? env.VITE_OBTRACE_APP_ID,
17
+ env: base.env ?? env.MODE ?? env.VITE_OBTRACE_ENV ?? "dev"
18
+ };
19
+ }
package/package.json ADDED
@@ -0,0 +1,82 @@
1
+ {
2
+ "name": "@obtrace/browser",
3
+ "version": "1.0.0",
4
+ "description": "Obtrace Browser SDK with frontend wrappers",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "main": "./dist/index.js",
8
+ "module": "./dist/index.js",
9
+ "types": "./dist/types/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/types/index.d.ts",
13
+ "import": "./dist/index.js"
14
+ },
15
+ "./auto": {
16
+ "types": "./dist/types/auto.d.ts",
17
+ "import": "./dist/auto.js"
18
+ },
19
+ "./react": {
20
+ "types": "./dist/types/wrappers/frontend/react.d.ts",
21
+ "import": "./dist/wrappers/frontend/react.js"
22
+ },
23
+ "./sourcemaps": {
24
+ "types": "./dist/types/sourcemaps.d.ts",
25
+ "import": "./dist/sourcemaps.js"
26
+ },
27
+ "./browser": {
28
+ "types": "./dist/types/browser_entry.d.ts",
29
+ "import": "./dist/browser_entry.js"
30
+ }
31
+ },
32
+ "typesVersions": {
33
+ "*": {
34
+ "auto": [
35
+ "./dist/types/auto.d.ts"
36
+ ],
37
+ "react": [
38
+ "./dist/types/wrappers/frontend/react.d.ts"
39
+ ],
40
+ "sourcemaps": [
41
+ "./dist/types/sourcemaps.d.ts"
42
+ ],
43
+ "browser": [
44
+ "./dist/types/browser_entry.d.ts"
45
+ ]
46
+ }
47
+ },
48
+ "files": [
49
+ "dist",
50
+ "README.md"
51
+ ],
52
+ "scripts": {
53
+ "build": "tsc -p tsconfig.json && node esbuild.config.mjs",
54
+ "typecheck": "tsc -p tsconfig.json --noEmit",
55
+ "test": "node --import tsx --test test/*.test.ts"
56
+ },
57
+ "engines": {
58
+ "node": ">=18"
59
+ },
60
+ "devDependencies": {
61
+ "@types/node": "^25.5.0",
62
+ "esbuild": "^0.27.4",
63
+ "tsx": "^4.20.5",
64
+ "typescript": "^6.0.2"
65
+ },
66
+ "dependencies": {
67
+ "@opentelemetry/api": "^1.9.0",
68
+ "@opentelemetry/context-zone": "^1.30.0",
69
+ "@opentelemetry/exporter-metrics-otlp-http": "^0.57.0",
70
+ "@opentelemetry/exporter-trace-otlp-http": "^0.57.0",
71
+ "@opentelemetry/instrumentation-document-load": "^0.43.0",
72
+ "@opentelemetry/instrumentation-fetch": "^0.57.0",
73
+ "@opentelemetry/instrumentation-user-interaction": "^0.43.0",
74
+ "@opentelemetry/instrumentation-xml-http-request": "^0.57.0",
75
+ "@opentelemetry/resources": "^1.30.0",
76
+ "@opentelemetry/sdk-metrics": "^1.30.0",
77
+ "@opentelemetry/sdk-trace-web": "^1.30.0",
78
+ "@opentelemetry/semantic-conventions": "^1.30.0",
79
+ "@rrweb/types": "^2.0.0-alpha.17",
80
+ "rrweb": "^2.0.0-alpha.17"
81
+ }
82
+ }