@ianmenethil/zp-observer 6.0.0 → 6.1.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 (107) hide show
  1. package/README.md +19 -276
  2. package/dist/adapters/browser-lifecycle-adapter.cjs +51 -0
  3. package/dist/adapters/browser-lifecycle-adapter.js +48 -0
  4. package/dist/adapters/iframe-detector-adapter.cjs +108 -0
  5. package/dist/adapters/iframe-detector-adapter.js +106 -0
  6. package/dist/client/create-telemetry-client.cjs +136 -0
  7. package/dist/client/create-telemetry-client.js +134 -0
  8. package/dist/client/state-machine.cjs +20 -0
  9. package/dist/client/state-machine.js +18 -0
  10. package/dist/diagnostics/diagnostics-buffer.cjs +34 -0
  11. package/dist/diagnostics/diagnostics-buffer.js +32 -0
  12. package/dist/diagnostics/preflight.cjs +36 -0
  13. package/dist/diagnostics/preflight.js +34 -0
  14. package/dist/events/envelope.cjs +23 -0
  15. package/dist/events/envelope.js +21 -0
  16. package/dist/index.cjs +23 -0
  17. package/dist/index.d.ts +230 -0
  18. package/dist/index.js +10 -0
  19. package/dist/persistence/local-storage-outbox.cjs +56 -0
  20. package/dist/persistence/local-storage-outbox.js +54 -0
  21. package/dist/persistence/memory-outbox.cjs +23 -0
  22. package/dist/persistence/memory-outbox.js +21 -0
  23. package/dist/runtime/event-pipeline.cjs +64 -0
  24. package/dist/runtime/event-pipeline.js +62 -0
  25. package/dist/runtime/heartbeat-scheduler.cjs +46 -0
  26. package/dist/runtime/heartbeat-scheduler.js +44 -0
  27. package/dist/runtime/session-manager.cjs +47 -0
  28. package/dist/runtime/session-manager.js +45 -0
  29. package/dist/transport/beacon.cjs +14 -0
  30. package/dist/transport/beacon.js +12 -0
  31. package/dist/transport/callback-transport.cjs +19 -0
  32. package/dist/transport/callback-transport.js +17 -0
  33. package/dist/transport/http-transport.cjs +62 -0
  34. package/dist/transport/http-transport.js +60 -0
  35. package/dist/types/internal.cjs +3 -0
  36. package/dist/types/internal.js +0 -0
  37. package/dist/types/public.cjs +3 -0
  38. package/dist/types/public.js +0 -0
  39. package/dist/utils/ids.cjs +20 -0
  40. package/dist/utils/ids.js +17 -0
  41. package/dist/utils/safe-globals.cjs +11 -0
  42. package/dist/utils/safe-globals.js +9 -0
  43. package/dist/version.cjs +5 -0
  44. package/dist/version.js +2 -0
  45. package/package.json +29 -89
  46. package/PRIVACY.md +0 -67
  47. package/dist/auto-patch.cjs +0 -171
  48. package/dist/auto-patch.cjs.map +0 -7
  49. package/dist/auto-patch.mjs +0 -148
  50. package/dist/auto-patch.mjs.map +0 -7
  51. package/dist/session.cjs +0 -1186
  52. package/dist/session.cjs.map +0 -7
  53. package/dist/session.mjs +0 -1163
  54. package/dist/session.mjs.map +0 -7
  55. package/dist/types/auto-patch.d.ts +0 -9
  56. package/dist/types/auto-patch.d.ts.map +0 -1
  57. package/dist/types/core/beacon.d.ts +0 -6
  58. package/dist/types/core/beacon.d.ts.map +0 -1
  59. package/dist/types/core/detection.d.ts +0 -34
  60. package/dist/types/core/detection.d.ts.map +0 -1
  61. package/dist/types/core/event-bus.d.ts +0 -21
  62. package/dist/types/core/event-bus.d.ts.map +0 -1
  63. package/dist/types/core/experimental.d.ts +0 -35
  64. package/dist/types/core/experimental.d.ts.map +0 -1
  65. package/dist/types/core/heartbeat.d.ts +0 -32
  66. package/dist/types/core/heartbeat.d.ts.map +0 -1
  67. package/dist/types/core/lifecycle.d.ts +0 -31
  68. package/dist/types/core/lifecycle.d.ts.map +0 -1
  69. package/dist/types/core/observer.d.ts +0 -10
  70. package/dist/types/core/observer.d.ts.map +0 -1
  71. package/dist/types/core/outbox.d.ts +0 -20
  72. package/dist/types/core/outbox.d.ts.map +0 -1
  73. package/dist/types/core/random.d.ts +0 -8
  74. package/dist/types/core/random.d.ts.map +0 -1
  75. package/dist/types/core/shortcode.d.ts +0 -17
  76. package/dist/types/core/shortcode.d.ts.map +0 -1
  77. package/dist/types/core/types.d.ts +0 -292
  78. package/dist/types/core/types.d.ts.map +0 -1
  79. package/dist/types/diagnostics/preflight.d.ts +0 -17
  80. package/dist/types/diagnostics/preflight.d.ts.map +0 -1
  81. package/dist/types/index.d.ts +0 -41
  82. package/dist/types/index.d.ts.map +0 -1
  83. package/dist/types/integration/devicefp-bridge.d.ts +0 -31
  84. package/dist/types/integration/devicefp-bridge.d.ts.map +0 -1
  85. package/dist/types/integration/hpp-bridge.d.ts +0 -13
  86. package/dist/types/integration/hpp-bridge.d.ts.map +0 -1
  87. package/dist/types/integration/zenpay-auto-patch.d.ts +0 -28
  88. package/dist/types/integration/zenpay-auto-patch.d.ts.map +0 -1
  89. package/dist/types/outcome.d.ts +0 -20
  90. package/dist/types/outcome.d.ts.map +0 -1
  91. package/dist/types/session.d.ts +0 -54
  92. package/dist/types/session.d.ts.map +0 -1
  93. package/dist/types/transport/callback-transport.d.ts +0 -17
  94. package/dist/types/transport/callback-transport.d.ts.map +0 -1
  95. package/dist/types/transport/http-transport.d.ts +0 -30
  96. package/dist/types/transport/http-transport.d.ts.map +0 -1
  97. package/dist/types/umd.d.ts +0 -16
  98. package/dist/types/umd.d.ts.map +0 -1
  99. package/dist/zp-observer.cjs +0 -1375
  100. package/dist/zp-observer.cjs.map +0 -7
  101. package/dist/zp-observer.js +0 -1377
  102. package/dist/zp-observer.js.map +0 -7
  103. package/dist/zp-observer.min.js +0 -2
  104. package/dist/zp-observer.min.js.map +0 -7
  105. package/dist/zp-observer.min.obf.js +0 -1
  106. package/dist/zp-observer.mjs +0 -1352
  107. package/dist/zp-observer.mjs.map +0 -7
@@ -0,0 +1,136 @@
1
+ const {createDiagnosticsBuffer} = require('../diagnostics/diagnostics-buffer.cjs');
2
+ const {createEnvelopeBuilder} = require('../events/envelope.cjs');
3
+ const {createEventPipeline} = require('../runtime/event-pipeline.cjs');
4
+ const {createHeartbeatScheduler} = require('../runtime/heartbeat-scheduler.cjs');
5
+ const {createSessionManager} = require('../runtime/session-manager.cjs');
6
+ const {localStorageOutbox} = require('../persistence/local-storage-outbox.cjs');
7
+ const {memoryOutbox} = require('../persistence/memory-outbox.cjs');
8
+ const {readDefaultContext} = require('../utils/safe-globals.cjs');
9
+ const DEFAULT_PERSISTENCE_POLICY = {
10
+ shouldPersist(kind) {
11
+ return [
12
+ "session.started",
13
+ "session.stopped",
14
+ "checkout.session_init",
15
+ "checkout.modal_opened",
16
+ "checkout.modal_closed",
17
+ "merchant.outcome_reported"
18
+ ].includes(kind);
19
+ }
20
+ };
21
+ function createTelemetryClient(options) {
22
+ if (!options?.session?.sessionId) {
23
+ throw new Error("createTelemetryClient requires session.sessionId");
24
+ }
25
+ if (!options.transport) {
26
+ throw new Error("createTelemetryClient requires a transport");
27
+ }
28
+ const now = options.now ?? Date.now;
29
+ const session = createSessionManager({
30
+ sessionId: options.session.sessionId,
31
+ correlationId: options.session.correlationId,
32
+ now
33
+ });
34
+ const diagnostics = createDiagnosticsBuffer();
35
+ const buildEnvelope = createEnvelopeBuilder({
36
+ session,
37
+ now,
38
+ context: () => ({
39
+ ...readDefaultContext(),
40
+ ...options.context ?? {}
41
+ })
42
+ });
43
+ let delivery = {
44
+ attempted: 0,
45
+ succeeded: 0,
46
+ failed: 0
47
+ };
48
+ const outbox = options.outbox ?? (options.persistence === "memory" ? memoryOutbox() : options.persistence === "localStorage" ? localStorageOutbox() : undefined);
49
+ const pipeline = createEventPipeline({
50
+ transport: options.transport,
51
+ outbox,
52
+ persistencePolicy: options.persistencePolicy ?? DEFAULT_PERSISTENCE_POLICY,
53
+ middleware: options.middleware ?? [],
54
+ diagnostics
55
+ });
56
+ let heartbeat = null;
57
+ async function dispatch(kind, payload, updateDelivery = true) {
58
+ const envelope = buildEnvelope(kind, payload);
59
+ if (updateDelivery) {
60
+ delivery.attempted += 1;
61
+ }
62
+ const result = await pipeline.dispatch(envelope);
63
+ if (updateDelivery) {
64
+ if (result.ok) {
65
+ delivery.succeeded += 1;
66
+ } else {
67
+ delivery.failed += 1;
68
+ }
69
+ }
70
+ return result;
71
+ }
72
+ return {
73
+ sessionId: session.sessionId,
74
+ correlationId: session.correlationId,
75
+ start() {
76
+ if (session.snapshot().state !== "idle") {
77
+ return;
78
+ }
79
+ session.transition("starting");
80
+ session.transition("active");
81
+ if (options.heartbeat && heartbeat === null) {
82
+ heartbeat = createHeartbeatScheduler({
83
+ intervalMs: options.heartbeat.intervalMs,
84
+ missThreshold: options.heartbeat.missThreshold,
85
+ sendHeartbeat: (missedBeats) => dispatch("transport.heartbeat", { missedBeats }, false),
86
+ onMissThreshold(missedBeats) {
87
+ diagnostics.add({
88
+ level: "warn",
89
+ message: "Heartbeat miss threshold reached.",
90
+ timestamp: now(),
91
+ details: { missedBeats }
92
+ });
93
+ const state = session.snapshot().state;
94
+ if (state === "active" || state === "backgrounded" || state === "degraded") {
95
+ session.transition("abandoned");
96
+ }
97
+ }
98
+ });
99
+ }
100
+ dispatch("session.started", {});
101
+ },
102
+ stop(reason = "manual_stop") {
103
+ const current = session.snapshot().state;
104
+ if (current === "closed") {
105
+ return;
106
+ }
107
+ heartbeat?.stop();
108
+ heartbeat = null;
109
+ session.transition("closing");
110
+ dispatch("session.stopped", { reason }).finally(() => {
111
+ session.transition("closed");
112
+ });
113
+ },
114
+ emit(kind, payload) {
115
+ return dispatch(kind, payload);
116
+ },
117
+ flush() {
118
+ return pipeline.flush();
119
+ },
120
+ getState() {
121
+ return session.snapshot();
122
+ },
123
+ diagnostics: {
124
+ snapshot() {
125
+ const state = session.snapshot();
126
+ return diagnostics.snapshot(pipeline.queueDepth(), delivery, {
127
+ state: state.state,
128
+ sessionId: state.sessionId,
129
+ correlationId: state.correlationId
130
+ });
131
+ }
132
+ }
133
+ };
134
+ }
135
+
136
+ exports.createTelemetryClient = createTelemetryClient;
@@ -0,0 +1,134 @@
1
+ import { createDiagnosticsBuffer } from "../diagnostics/diagnostics-buffer.js";
2
+ import { createEnvelopeBuilder } from "../events/envelope.js";
3
+ import { createEventPipeline } from "../runtime/event-pipeline.js";
4
+ import { createHeartbeatScheduler } from "../runtime/heartbeat-scheduler.js";
5
+ import { createSessionManager } from "../runtime/session-manager.js";
6
+ import { localStorageOutbox } from "../persistence/local-storage-outbox.js";
7
+ import { memoryOutbox } from "../persistence/memory-outbox.js";
8
+ import { readDefaultContext } from "../utils/safe-globals.js";
9
+ const DEFAULT_PERSISTENCE_POLICY = {
10
+ shouldPersist(kind) {
11
+ return [
12
+ "session.started",
13
+ "session.stopped",
14
+ "checkout.session_init",
15
+ "checkout.modal_opened",
16
+ "checkout.modal_closed",
17
+ "merchant.outcome_reported"
18
+ ].includes(kind);
19
+ }
20
+ };
21
+ export function createTelemetryClient(options) {
22
+ if (!options?.session?.sessionId) {
23
+ throw new Error("createTelemetryClient requires session.sessionId");
24
+ }
25
+ if (!options.transport) {
26
+ throw new Error("createTelemetryClient requires a transport");
27
+ }
28
+ const now = options.now ?? Date.now;
29
+ const session = createSessionManager({
30
+ sessionId: options.session.sessionId,
31
+ correlationId: options.session.correlationId,
32
+ now
33
+ });
34
+ const diagnostics = createDiagnosticsBuffer();
35
+ const buildEnvelope = createEnvelopeBuilder({
36
+ session,
37
+ now,
38
+ context: () => ({
39
+ ...readDefaultContext(),
40
+ ...options.context ?? {}
41
+ })
42
+ });
43
+ let delivery = {
44
+ attempted: 0,
45
+ succeeded: 0,
46
+ failed: 0
47
+ };
48
+ const outbox = options.outbox ?? (options.persistence === "memory" ? memoryOutbox() : options.persistence === "localStorage" ? localStorageOutbox() : undefined);
49
+ const pipeline = createEventPipeline({
50
+ transport: options.transport,
51
+ outbox,
52
+ persistencePolicy: options.persistencePolicy ?? DEFAULT_PERSISTENCE_POLICY,
53
+ middleware: options.middleware ?? [],
54
+ diagnostics
55
+ });
56
+ let heartbeat = null;
57
+ async function dispatch(kind, payload, updateDelivery = true) {
58
+ const envelope = buildEnvelope(kind, payload);
59
+ if (updateDelivery) {
60
+ delivery.attempted += 1;
61
+ }
62
+ const result = await pipeline.dispatch(envelope);
63
+ if (updateDelivery) {
64
+ if (result.ok) {
65
+ delivery.succeeded += 1;
66
+ } else {
67
+ delivery.failed += 1;
68
+ }
69
+ }
70
+ return result;
71
+ }
72
+ return {
73
+ sessionId: session.sessionId,
74
+ correlationId: session.correlationId,
75
+ start() {
76
+ if (session.snapshot().state !== "idle") {
77
+ return;
78
+ }
79
+ session.transition("starting");
80
+ session.transition("active");
81
+ if (options.heartbeat && heartbeat === null) {
82
+ heartbeat = createHeartbeatScheduler({
83
+ intervalMs: options.heartbeat.intervalMs,
84
+ missThreshold: options.heartbeat.missThreshold,
85
+ sendHeartbeat: (missedBeats) => dispatch("transport.heartbeat", { missedBeats }, false),
86
+ onMissThreshold(missedBeats) {
87
+ diagnostics.add({
88
+ level: "warn",
89
+ message: "Heartbeat miss threshold reached.",
90
+ timestamp: now(),
91
+ details: { missedBeats }
92
+ });
93
+ const state = session.snapshot().state;
94
+ if (state === "active" || state === "backgrounded" || state === "degraded") {
95
+ session.transition("abandoned");
96
+ }
97
+ }
98
+ });
99
+ }
100
+ dispatch("session.started", {});
101
+ },
102
+ stop(reason = "manual_stop") {
103
+ const current = session.snapshot().state;
104
+ if (current === "closed") {
105
+ return;
106
+ }
107
+ heartbeat?.stop();
108
+ heartbeat = null;
109
+ session.transition("closing");
110
+ dispatch("session.stopped", { reason }).finally(() => {
111
+ session.transition("closed");
112
+ });
113
+ },
114
+ emit(kind, payload) {
115
+ return dispatch(kind, payload);
116
+ },
117
+ flush() {
118
+ return pipeline.flush();
119
+ },
120
+ getState() {
121
+ return session.snapshot();
122
+ },
123
+ diagnostics: {
124
+ snapshot() {
125
+ const state = session.snapshot();
126
+ return diagnostics.snapshot(pipeline.queueDepth(), delivery, {
127
+ state: state.state,
128
+ sessionId: state.sessionId,
129
+ correlationId: state.correlationId
130
+ });
131
+ }
132
+ }
133
+ };
134
+ }
@@ -0,0 +1,20 @@
1
+ const ALLOWED_TRANSITIONS = {
2
+ idle: ["starting"],
3
+ starting: ["active", "degraded", "closed"],
4
+ active: ["backgrounded", "degraded", "closing", "abandoned"],
5
+ backgrounded: ["active", "degraded", "closing", "abandoned"],
6
+ degraded: ["active", "backgrounded", "closing", "abandoned"],
7
+ closing: ["closed"],
8
+ closed: [],
9
+ abandoned: ["closing", "closed"]
10
+ };
11
+ function assertTransition(current, next) {
12
+ if (current === next) {
13
+ return;
14
+ }
15
+ if (!ALLOWED_TRANSITIONS[current].includes(next)) {
16
+ throw new Error(`Invalid telemetry state transition: ${current} -> ${next}`);
17
+ }
18
+ }
19
+
20
+ exports.assertTransition = assertTransition;
@@ -0,0 +1,18 @@
1
+ const ALLOWED_TRANSITIONS = {
2
+ idle: ["starting"],
3
+ starting: ["active", "degraded", "closed"],
4
+ active: ["backgrounded", "degraded", "closing", "abandoned"],
5
+ backgrounded: ["active", "degraded", "closing", "abandoned"],
6
+ degraded: ["active", "backgrounded", "closing", "abandoned"],
7
+ closing: ["closed"],
8
+ closed: [],
9
+ abandoned: ["closing", "closed"]
10
+ };
11
+ export function assertTransition(current, next) {
12
+ if (current === next) {
13
+ return;
14
+ }
15
+ if (!ALLOWED_TRANSITIONS[current].includes(next)) {
16
+ throw new Error(`Invalid telemetry state transition: ${current} -> ${next}`);
17
+ }
18
+ }
@@ -0,0 +1,34 @@
1
+ function createDiagnosticsBuffer(options = {}) {
2
+ const entriesMax = options.entriesMax ?? 100;
3
+ const envelopesMax = options.envelopesMax ?? 50;
4
+ const entries = [];
5
+ const envelopes = [];
6
+ function trim(items, max) {
7
+ while (items.length > max) {
8
+ items.shift();
9
+ }
10
+ }
11
+ return {
12
+ add(entry) {
13
+ entries.push(entry);
14
+ trim(entries, entriesMax);
15
+ },
16
+ recordEnvelope(envelope) {
17
+ envelopes.push(envelope);
18
+ trim(envelopes, envelopesMax);
19
+ },
20
+ snapshot(queueDepth, delivery, state) {
21
+ return {
22
+ state: state.state,
23
+ sessionId: state.sessionId,
24
+ correlationId: state.correlationId,
25
+ queueDepth,
26
+ delivery,
27
+ recentEnvelopes: envelopes.slice(),
28
+ entries: entries.slice()
29
+ };
30
+ }
31
+ };
32
+ }
33
+
34
+ exports.createDiagnosticsBuffer = createDiagnosticsBuffer;
@@ -0,0 +1,32 @@
1
+ export function createDiagnosticsBuffer(options = {}) {
2
+ const entriesMax = options.entriesMax ?? 100;
3
+ const envelopesMax = options.envelopesMax ?? 50;
4
+ const entries = [];
5
+ const envelopes = [];
6
+ function trim(items, max) {
7
+ while (items.length > max) {
8
+ items.shift();
9
+ }
10
+ }
11
+ return {
12
+ add(entry) {
13
+ entries.push(entry);
14
+ trim(entries, entriesMax);
15
+ },
16
+ recordEnvelope(envelope) {
17
+ envelopes.push(envelope);
18
+ trim(envelopes, envelopesMax);
19
+ },
20
+ snapshot(queueDepth, delivery, state) {
21
+ return {
22
+ state: state.state,
23
+ sessionId: state.sessionId,
24
+ correlationId: state.correlationId,
25
+ queueDepth,
26
+ delivery,
27
+ recentEnvelopes: envelopes.slice(),
28
+ entries: entries.slice()
29
+ };
30
+ }
31
+ };
32
+ }
@@ -0,0 +1,36 @@
1
+ async function preflight(options) {
2
+ const now = options.now ?? Date.now;
3
+ const startedAt = now();
4
+ try {
5
+ const result = await options.transport.send({
6
+ schemaVersion: 1,
7
+ libraryVersion: "preflight",
8
+ eventId: "evt_preflight",
9
+ sequence: 1,
10
+ kind: "diagnostic.preflight",
11
+ sessionId: "__preflight__",
12
+ correlationId: "__preflight__",
13
+ timestamp: startedAt,
14
+ source: "browser",
15
+ payload: {
16
+ ok: true,
17
+ latencyMs: 0
18
+ },
19
+ context: {}
20
+ });
21
+ return {
22
+ ok: result.ok,
23
+ status: result.status,
24
+ latencyMs: now() - startedAt,
25
+ networkError: result.ok ? null : result.error ?? null
26
+ };
27
+ } catch (error) {
28
+ return {
29
+ ok: false,
30
+ latencyMs: now() - startedAt,
31
+ networkError: error instanceof Error ? error.message : String(error)
32
+ };
33
+ }
34
+ }
35
+
36
+ exports.preflight = preflight;
@@ -0,0 +1,34 @@
1
+ export async function preflight(options) {
2
+ const now = options.now ?? Date.now;
3
+ const startedAt = now();
4
+ try {
5
+ const result = await options.transport.send({
6
+ schemaVersion: 1,
7
+ libraryVersion: "preflight",
8
+ eventId: "evt_preflight",
9
+ sequence: 1,
10
+ kind: "diagnostic.preflight",
11
+ sessionId: "__preflight__",
12
+ correlationId: "__preflight__",
13
+ timestamp: startedAt,
14
+ source: "browser",
15
+ payload: {
16
+ ok: true,
17
+ latencyMs: 0
18
+ },
19
+ context: {}
20
+ });
21
+ return {
22
+ ok: result.ok,
23
+ status: result.status,
24
+ latencyMs: now() - startedAt,
25
+ networkError: result.ok ? null : result.error ?? null
26
+ };
27
+ } catch (error) {
28
+ return {
29
+ ok: false,
30
+ latencyMs: now() - startedAt,
31
+ networkError: error instanceof Error ? error.message : String(error)
32
+ };
33
+ }
34
+ }
@@ -0,0 +1,23 @@
1
+ const {SCHEMA_VERSION, VERSION} = require('../version.cjs');
2
+ function createEnvelopeBuilder(options) {
3
+ const now = options.now ?? Date.now;
4
+ const contextFactory = options.context ?? (() => ({}));
5
+ return function buildEnvelope(kind, payload) {
6
+ const sequence = options.session.nextSequence();
7
+ return {
8
+ schemaVersion: SCHEMA_VERSION,
9
+ libraryVersion: VERSION,
10
+ eventId: options.session.nextEventId(),
11
+ sequence,
12
+ kind,
13
+ sessionId: options.session.sessionId,
14
+ correlationId: options.session.correlationId,
15
+ timestamp: now(),
16
+ source: "browser",
17
+ payload,
18
+ context: contextFactory()
19
+ };
20
+ };
21
+ }
22
+
23
+ exports.createEnvelopeBuilder = createEnvelopeBuilder;
@@ -0,0 +1,21 @@
1
+ import { SCHEMA_VERSION, VERSION } from "../version.js";
2
+ export function createEnvelopeBuilder(options) {
3
+ const now = options.now ?? Date.now;
4
+ const contextFactory = options.context ?? (() => ({}));
5
+ return function buildEnvelope(kind, payload) {
6
+ const sequence = options.session.nextSequence();
7
+ return {
8
+ schemaVersion: SCHEMA_VERSION,
9
+ libraryVersion: VERSION,
10
+ eventId: options.session.nextEventId(),
11
+ sequence,
12
+ kind,
13
+ sessionId: options.session.sessionId,
14
+ correlationId: options.session.correlationId,
15
+ timestamp: now(),
16
+ source: "browser",
17
+ payload,
18
+ context: contextFactory()
19
+ };
20
+ };
21
+ }
package/dist/index.cjs ADDED
@@ -0,0 +1,23 @@
1
+ const __reexport_1 = require('./client/create-telemetry-client.cjs');
2
+ exports.createTelemetryClient = __reexport_1.createTelemetryClient;
3
+ const __reexport_2 = require('./adapters/browser-lifecycle-adapter.cjs');
4
+ exports.installBrowserLifecycleAdapter = __reexport_2.installBrowserLifecycleAdapter;
5
+ const __reexport_3 = require('./adapters/browser-lifecycle-adapter.cjs');
6
+ exports.observeElementVisibility = __reexport_3.observeElementVisibility;
7
+ const __reexport_4 = require('./adapters/iframe-detector-adapter.cjs');
8
+ exports.installIframeDetectorAdapter = __reexport_4.installIframeDetectorAdapter;
9
+ const __reexport_5 = require('./transport/callback-transport.cjs');
10
+ exports.callbackTransport = __reexport_5.callbackTransport;
11
+ const __reexport_6 = require('./transport/http-transport.cjs');
12
+ exports.httpTransport = __reexport_6.httpTransport;
13
+ const __reexport_7 = require('./diagnostics/preflight.cjs');
14
+ exports.preflight = __reexport_7.preflight;
15
+ const __reexport_8 = require('./persistence/memory-outbox.cjs');
16
+ exports.memoryOutbox = __reexport_8.memoryOutbox;
17
+ const __reexport_9 = require('./persistence/local-storage-outbox.cjs');
18
+ exports.localStorageOutbox = __reexport_9.localStorageOutbox;
19
+ const __reexport_10 = require('./version.cjs');
20
+ exports.VERSION = __reexport_10.VERSION;
21
+ exports.SCHEMA_VERSION = __reexport_10.SCHEMA_VERSION;
22
+
23
+