@interfere/react 0.0.1 → 0.0.2-alpha.1
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/dist/client.d.mts +15 -0
- package/dist/client.d.mts.map +1 -0
- package/dist/client.mjs +75 -0
- package/dist/client.mjs.map +1 -0
- package/dist/core/events/event-registry.d.mts +23 -0
- package/dist/core/events/event-registry.d.mts.map +1 -0
- package/dist/core/events/event-registry.mjs +32 -0
- package/dist/core/events/event-registry.mjs.map +1 -0
- package/dist/core/events/plugin-event-types.d.mts +92 -0
- package/dist/core/events/plugin-event-types.d.mts.map +1 -0
- package/dist/core/events/plugin-event-types.mjs +25 -0
- package/dist/core/events/plugin-event-types.mjs.map +1 -0
- package/dist/core/plugins/dom-utils.d.mts +9 -0
- package/dist/core/plugins/dom-utils.d.mts.map +1 -0
- package/dist/core/plugins/dom-utils.mjs +25 -0
- package/dist/core/plugins/dom-utils.mjs.map +1 -0
- package/dist/core/plugins/impl/ai-summary.d.mts +6 -0
- package/dist/core/plugins/impl/ai-summary.d.mts.map +1 -0
- package/dist/core/plugins/impl/ai-summary.mjs +122 -0
- package/dist/core/plugins/impl/ai-summary.mjs.map +1 -0
- package/dist/core/plugins/impl/errors.d.mts +9 -0
- package/dist/core/plugins/impl/errors.d.mts.map +1 -0
- package/dist/core/plugins/impl/errors.mjs +153 -0
- package/dist/core/plugins/impl/errors.mjs.map +1 -0
- package/dist/core/plugins/impl/page-events.d.mts +15 -0
- package/dist/core/plugins/impl/page-events.d.mts.map +1 -0
- package/dist/core/plugins/impl/page-events.mjs +131 -0
- package/dist/core/plugins/impl/page-events.mjs.map +1 -0
- package/dist/core/plugins/impl/rage-click.d.mts +6 -0
- package/dist/core/plugins/impl/rage-click.d.mts.map +1 -0
- package/dist/core/plugins/impl/rage-click.mjs +53 -0
- package/dist/core/plugins/impl/rage-click.mjs.map +1 -0
- package/dist/core/plugins/impl/replay.d.mts +9 -0
- package/dist/core/plugins/impl/replay.d.mts.map +1 -0
- package/dist/core/plugins/impl/replay.mjs +144 -0
- package/dist/core/plugins/impl/replay.mjs.map +1 -0
- package/dist/core/plugins/impl/server-tracing.d.mts +7 -0
- package/dist/core/plugins/impl/server-tracing.d.mts.map +1 -0
- package/dist/core/plugins/impl/server-tracing.mjs +160 -0
- package/dist/core/plugins/impl/server-tracing.mjs.map +1 -0
- package/dist/core/plugins/plugin-event-system.d.mts +47 -0
- package/dist/core/plugins/plugin-event-system.d.mts.map +1 -0
- package/dist/core/plugins/plugin-event-system.mjs +75 -0
- package/dist/core/plugins/plugin-event-system.mjs.map +1 -0
- package/dist/core/plugins/plugin-loader.d.mts +22 -0
- package/dist/core/plugins/plugin-loader.d.mts.map +1 -0
- package/dist/core/plugins/plugin-loader.mjs +142 -0
- package/dist/core/plugins/plugin-loader.mjs.map +1 -0
- package/dist/core/runtime/config.d.mts +14 -0
- package/dist/core/runtime/config.d.mts.map +1 -0
- package/dist/core/runtime/config.mjs +39 -0
- package/dist/core/runtime/config.mjs.map +1 -0
- package/dist/core/runtime/context.d.mts +25 -0
- package/dist/core/runtime/context.d.mts.map +1 -0
- package/dist/core/runtime/context.mjs +48 -0
- package/dist/core/runtime/context.mjs.map +1 -0
- package/dist/core/runtime/ingest-target.d.mts +10 -0
- package/dist/core/runtime/ingest-target.d.mts.map +1 -0
- package/dist/core/runtime/ingest-target.mjs +15 -0
- package/dist/core/runtime/ingest-target.mjs.map +1 -0
- package/dist/core/schemas.d.mts +85 -0
- package/dist/core/schemas.d.mts.map +1 -0
- package/dist/core/schemas.mjs +1 -0
- package/dist/effect/build-envelope.d.mts +9 -0
- package/dist/effect/build-envelope.d.mts.map +1 -0
- package/dist/effect/build-envelope.mjs +29 -0
- package/dist/effect/build-envelope.mjs.map +1 -0
- package/dist/effect/errors.d.mts +36 -0
- package/dist/effect/errors.d.mts.map +1 -0
- package/dist/effect/errors.mjs +10 -0
- package/dist/effect/errors.mjs.map +1 -0
- package/dist/effect/layers/config.layer.d.mts +13 -0
- package/dist/effect/layers/config.layer.d.mts.map +1 -0
- package/dist/effect/layers/config.layer.mjs +21 -0
- package/dist/effect/layers/config.layer.mjs.map +1 -0
- package/dist/effect/layers/context.layer.d.mts +12 -0
- package/dist/effect/layers/context.layer.d.mts.map +1 -0
- package/dist/effect/layers/context.layer.mjs +14 -0
- package/dist/effect/layers/context.layer.mjs.map +1 -0
- package/dist/effect/layers/http.layer.d.mts +21 -0
- package/dist/effect/layers/http.layer.d.mts.map +1 -0
- package/dist/effect/layers/http.layer.mjs +113 -0
- package/dist/effect/layers/http.layer.mjs.map +1 -0
- package/dist/effect/layers/queue.layer.d.mts +30 -0
- package/dist/effect/layers/queue.layer.d.mts.map +1 -0
- package/dist/effect/layers/queue.layer.mjs +232 -0
- package/dist/effect/layers/queue.layer.mjs.map +1 -0
- package/dist/effect/layers/session.layer.d.mts +26 -0
- package/dist/effect/layers/session.layer.d.mts.map +1 -0
- package/dist/effect/layers/session.layer.mjs +126 -0
- package/dist/effect/layers/session.layer.mjs.map +1 -0
- package/dist/effect/layers/storage.layer.d.mts +19 -0
- package/dist/effect/layers/storage.layer.d.mts.map +1 -0
- package/dist/effect/layers/storage.layer.mjs +200 -0
- package/dist/effect/layers/storage.layer.mjs.map +1 -0
- package/dist/effect/layers/tracer.layer.d.mts +9 -0
- package/dist/effect/layers/tracer.layer.d.mts.map +1 -0
- package/dist/effect/layers/tracer.layer.mjs +11 -0
- package/dist/effect/layers/tracer.layer.mjs.map +1 -0
- package/dist/effect/runtime-services.d.mts +22 -0
- package/dist/effect/runtime-services.d.mts.map +1 -0
- package/dist/effect/runtime-services.mjs +76 -0
- package/dist/effect/runtime-services.mjs.map +1 -0
- package/dist/effect/tags.d.mts +50 -0
- package/dist/effect/tags.d.mts.map +1 -0
- package/dist/effect/tags.mjs +7 -0
- package/dist/effect/tags.mjs.map +1 -0
- package/dist/hooks/use-runtime-and-plugins.d.mts +7 -0
- package/dist/hooks/use-runtime-and-plugins.d.mts.map +1 -0
- package/dist/hooks/use-runtime-and-plugins.mjs +153 -0
- package/dist/hooks/use-runtime-and-plugins.mjs.map +1 -0
- package/dist/hooks/use-session.d.mts +40 -0
- package/dist/hooks/use-session.d.mts.map +1 -0
- package/dist/hooks/use-session.mjs +96 -0
- package/dist/hooks/use-session.mjs.map +1 -0
- package/dist/package.mjs +100 -0
- package/dist/package.mjs.map +1 -0
- package/dist/provider.d.mts +17 -0
- package/dist/provider.d.mts.map +1 -0
- package/dist/provider.mjs +26 -0
- package/dist/provider.mjs.map +1 -0
- package/dist/server/auth.d.mts +11 -0
- package/dist/server/auth.d.mts.map +1 -0
- package/dist/server/auth.mjs +36 -0
- package/dist/server/auth.mjs.map +1 -0
- package/dist/server/capture.d.mts +18 -0
- package/dist/server/capture.d.mts.map +1 -0
- package/dist/server/capture.mjs +105 -0
- package/dist/server/capture.mjs.map +1 -0
- package/package.json +60 -27
- package/dist/__tests__/client.test.d.ts +0 -2
- package/dist/__tests__/client.test.d.ts.map +0 -1
- package/dist/__tests__/client.test.js +0 -447
- package/dist/__tests__/client.test.js.map +0 -1
- package/dist/__tests__/lib/core/error-handlers.test.d.ts +0 -2
- package/dist/__tests__/lib/core/error-handlers.test.d.ts.map +0 -1
- package/dist/__tests__/lib/core/error-handlers.test.js +0 -596
- package/dist/__tests__/lib/core/error-handlers.test.js.map +0 -1
- package/dist/__tests__/lib/core/event-queue.test.d.ts +0 -2
- package/dist/__tests__/lib/core/event-queue.test.d.ts.map +0 -1
- package/dist/__tests__/lib/core/event-queue.test.js +0 -290
- package/dist/__tests__/lib/core/event-queue.test.js.map +0 -1
- package/dist/__tests__/lib/core/runtime.test.d.ts +0 -2
- package/dist/__tests__/lib/core/runtime.test.d.ts.map +0 -1
- package/dist/__tests__/lib/core/runtime.test.js +0 -133
- package/dist/__tests__/lib/core/runtime.test.js.map +0 -1
- package/dist/__tests__/lib/core/session-manager.test.d.ts +0 -2
- package/dist/__tests__/lib/core/session-manager.test.d.ts.map +0 -1
- package/dist/__tests__/lib/core/session-manager.test.js +0 -356
- package/dist/__tests__/lib/core/session-manager.test.js.map +0 -1
- package/dist/__tests__/provider.test.d.ts +0 -2
- package/dist/__tests__/provider.test.d.ts.map +0 -1
- package/dist/__tests__/provider.test.js +0 -143
- package/dist/__tests__/provider.test.js.map +0 -1
- package/dist/client.d.ts +0 -78
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -219
- package/dist/client.js.map +0 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -5
- package/dist/index.js.map +0 -1
- package/dist/lib/core/error-handlers.d.ts +0 -14
- package/dist/lib/core/error-handlers.d.ts.map +0 -1
- package/dist/lib/core/error-handlers.js +0 -191
- package/dist/lib/core/error-handlers.js.map +0 -1
- package/dist/lib/core/event-queue.d.ts +0 -90
- package/dist/lib/core/event-queue.d.ts.map +0 -1
- package/dist/lib/core/event-queue.js +0 -286
- package/dist/lib/core/event-queue.js.map +0 -1
- package/dist/lib/core/runtime.d.ts +0 -7
- package/dist/lib/core/runtime.d.ts.map +0 -1
- package/dist/lib/core/runtime.js +0 -16
- package/dist/lib/core/runtime.js.map +0 -1
- package/dist/lib/core/session-manager.d.ts +0 -96
- package/dist/lib/core/session-manager.d.ts.map +0 -1
- package/dist/lib/core/session-manager.js +0 -431
- package/dist/lib/core/session-manager.js.map +0 -1
- package/dist/lib/persistence/storage.d.ts +0 -5
- package/dist/lib/persistence/storage.d.ts.map +0 -1
- package/dist/lib/persistence/storage.js +0 -67
- package/dist/lib/persistence/storage.js.map +0 -1
- package/dist/lib/session/rage-click.d.ts +0 -2
- package/dist/lib/session/rage-click.d.ts.map +0 -1
- package/dist/lib/session/rage-click.js +0 -51
- package/dist/lib/session/rage-click.js.map +0 -1
- package/dist/lib/session/replay.d.ts +0 -3
- package/dist/lib/session/replay.d.ts.map +0 -1
- package/dist/lib/session/replay.js +0 -106
- package/dist/lib/session/replay.js.map +0 -1
- package/dist/lib/session/session-summary.d.ts +0 -3
- package/dist/lib/session/session-summary.d.ts.map +0 -1
- package/dist/lib/session/session-summary.js +0 -79
- package/dist/lib/session/session-summary.js.map +0 -1
- package/dist/provider.d.ts +0 -76
- package/dist/provider.d.ts.map +0 -1
- package/dist/provider.js +0 -138
- package/dist/provider.js.map +0 -1
|
@@ -1,356 +0,0 @@
|
|
|
1
|
-
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
|
-
import { SessionManager } from "../../../lib/core/session-manager.js";
|
|
3
|
-
// Test constants
|
|
4
|
-
const SESSION_KEY = "interfere_session";
|
|
5
|
-
const SESSION_TIMEOUT = 1_800_000; // 30 minutes
|
|
6
|
-
const FIVE_SECONDS = 5000;
|
|
7
|
-
const TEN_SECONDS = 10_000;
|
|
8
|
-
const SESSION_ID_REGEX = /^ses_[a-z0-9]+_[a-z0-9]+$/;
|
|
9
|
-
describe("SessionManager", () => {
|
|
10
|
-
let sessionManager;
|
|
11
|
-
let onSessionChange;
|
|
12
|
-
beforeEach(() => {
|
|
13
|
-
// Clear all mocks
|
|
14
|
-
vi.clearAllMocks();
|
|
15
|
-
vi.clearAllTimers();
|
|
16
|
-
// Mock localStorage
|
|
17
|
-
const localStorageMock = {
|
|
18
|
-
getItem: vi.fn().mockReturnValue(null),
|
|
19
|
-
setItem: vi.fn(),
|
|
20
|
-
removeItem: vi.fn(),
|
|
21
|
-
clear: vi.fn(),
|
|
22
|
-
length: 0,
|
|
23
|
-
key: vi.fn(),
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(window, "localStorage", {
|
|
26
|
-
value: localStorageMock,
|
|
27
|
-
writable: true,
|
|
28
|
-
configurable: true,
|
|
29
|
-
});
|
|
30
|
-
// Mock sessionStorage
|
|
31
|
-
const sessionStorageMock = {
|
|
32
|
-
getItem: vi.fn().mockReturnValue(null),
|
|
33
|
-
setItem: vi.fn(),
|
|
34
|
-
removeItem: vi.fn(),
|
|
35
|
-
clear: vi.fn(),
|
|
36
|
-
length: 0,
|
|
37
|
-
key: vi.fn(),
|
|
38
|
-
};
|
|
39
|
-
Object.defineProperty(window, "sessionStorage", {
|
|
40
|
-
value: sessionStorageMock,
|
|
41
|
-
writable: true,
|
|
42
|
-
configurable: true,
|
|
43
|
-
});
|
|
44
|
-
// Mock document.cookie
|
|
45
|
-
let cookieValue = "";
|
|
46
|
-
Object.defineProperty(document, "cookie", {
|
|
47
|
-
get: () => cookieValue,
|
|
48
|
-
set: (value) => {
|
|
49
|
-
cookieValue = value;
|
|
50
|
-
},
|
|
51
|
-
configurable: true,
|
|
52
|
-
});
|
|
53
|
-
// Create onSessionChange mock
|
|
54
|
-
onSessionChange = vi.fn();
|
|
55
|
-
});
|
|
56
|
-
afterEach(() => {
|
|
57
|
-
vi.clearAllTimers();
|
|
58
|
-
});
|
|
59
|
-
describe("initialization", () => {
|
|
60
|
-
it("should auto-create a new session on initialization", () => {
|
|
61
|
-
const manager = new SessionManager(onSessionChange);
|
|
62
|
-
const sessionId = manager.getSessionId();
|
|
63
|
-
expect(sessionId).toBeTruthy();
|
|
64
|
-
expect(sessionId).toMatch(SESSION_ID_REGEX);
|
|
65
|
-
});
|
|
66
|
-
it("should restore existing session from localStorage", () => {
|
|
67
|
-
const existingSession = {
|
|
68
|
-
sessionId: "ses_test_123",
|
|
69
|
-
startTimestamp: Date.now(),
|
|
70
|
-
lastActivityTimestamp: Date.now(),
|
|
71
|
-
};
|
|
72
|
-
vi.mocked(localStorage.getItem).mockReturnValue(JSON.stringify(existingSession));
|
|
73
|
-
const manager = new SessionManager(onSessionChange);
|
|
74
|
-
const sessionId = manager.getSessionId();
|
|
75
|
-
expect(localStorage.getItem).toHaveBeenCalledWith(SESSION_KEY);
|
|
76
|
-
expect(sessionId).toBe("ses_test_123");
|
|
77
|
-
});
|
|
78
|
-
it("should restore session from cookie if localStorage unavailable", () => {
|
|
79
|
-
// Make localStorage throw
|
|
80
|
-
vi.mocked(localStorage.getItem).mockImplementation(() => {
|
|
81
|
-
throw new Error("LocalStorage blocked");
|
|
82
|
-
});
|
|
83
|
-
// Set cookie value
|
|
84
|
-
const existingSession = {
|
|
85
|
-
sessionId: "ses_cookie_123",
|
|
86
|
-
startTimestamp: Date.now(),
|
|
87
|
-
lastActivityTimestamp: Date.now(),
|
|
88
|
-
};
|
|
89
|
-
const cookieValue = `interfereSessionData=${encodeURIComponent(JSON.stringify(existingSession))}; path=/`;
|
|
90
|
-
Object.defineProperty(document, "cookie", {
|
|
91
|
-
get: () => cookieValue,
|
|
92
|
-
configurable: true,
|
|
93
|
-
});
|
|
94
|
-
const manager = new SessionManager(onSessionChange);
|
|
95
|
-
const sessionId = manager.getSessionId();
|
|
96
|
-
expect(sessionId).toBe("ses_cookie_123");
|
|
97
|
-
});
|
|
98
|
-
it("should restore session from sessionStorage if others unavailable", () => {
|
|
99
|
-
// Make localStorage throw
|
|
100
|
-
vi.mocked(localStorage.getItem).mockImplementation(() => {
|
|
101
|
-
throw new Error("LocalStorage blocked");
|
|
102
|
-
});
|
|
103
|
-
// Cookie is empty
|
|
104
|
-
Object.defineProperty(document, "cookie", {
|
|
105
|
-
get: () => "",
|
|
106
|
-
configurable: true,
|
|
107
|
-
});
|
|
108
|
-
// Set sessionStorage
|
|
109
|
-
const existingSession = {
|
|
110
|
-
sessionId: "ses_sessionstorage_123",
|
|
111
|
-
startTimestamp: Date.now(),
|
|
112
|
-
lastActivityTimestamp: Date.now(),
|
|
113
|
-
};
|
|
114
|
-
vi.mocked(sessionStorage.getItem).mockReturnValue(JSON.stringify(existingSession));
|
|
115
|
-
const manager = new SessionManager(onSessionChange);
|
|
116
|
-
const sessionId = manager.getSessionId();
|
|
117
|
-
expect(sessionStorage.getItem).toHaveBeenCalledWith(SESSION_KEY);
|
|
118
|
-
expect(sessionId).toBe("ses_sessionstorage_123");
|
|
119
|
-
});
|
|
120
|
-
it("should call onSessionChange when session is restored", () => {
|
|
121
|
-
const existingSession = {
|
|
122
|
-
sessionId: "ses_restored_123",
|
|
123
|
-
startTimestamp: Date.now(),
|
|
124
|
-
lastActivityTimestamp: Date.now(),
|
|
125
|
-
};
|
|
126
|
-
vi.mocked(localStorage.getItem).mockReturnValue(JSON.stringify(existingSession));
|
|
127
|
-
new SessionManager(onSessionChange);
|
|
128
|
-
expect(onSessionChange).toHaveBeenCalledWith("ses_restored_123");
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
describe("session management", () => {
|
|
132
|
-
it("should persist session to storage", () => {
|
|
133
|
-
// Make localStorage work properly
|
|
134
|
-
vi.mocked(localStorage.setItem).mockImplementation(() => {
|
|
135
|
-
// no-op
|
|
136
|
-
});
|
|
137
|
-
sessionManager = new SessionManager(onSessionChange);
|
|
138
|
-
const sessionId = sessionManager.getSessionId();
|
|
139
|
-
if (!sessionId) {
|
|
140
|
-
throw new Error("Session ID is undefined");
|
|
141
|
-
}
|
|
142
|
-
// Check that session was persisted
|
|
143
|
-
expect(localStorage.setItem).toHaveBeenCalledWith(SESSION_KEY, expect.stringContaining(sessionId));
|
|
144
|
-
});
|
|
145
|
-
it("should get session data", () => {
|
|
146
|
-
sessionManager = new SessionManager(onSessionChange);
|
|
147
|
-
const sessionData = sessionManager.getSessionData();
|
|
148
|
-
expect(sessionData).toMatchObject({
|
|
149
|
-
sessionId: expect.any(String),
|
|
150
|
-
startTimestamp: expect.any(Number),
|
|
151
|
-
lastActivityTimestamp: expect.any(Number),
|
|
152
|
-
});
|
|
153
|
-
});
|
|
154
|
-
it("should update activity timestamp", () => {
|
|
155
|
-
vi.useFakeTimers();
|
|
156
|
-
const now = Date.now();
|
|
157
|
-
vi.setSystemTime(now);
|
|
158
|
-
sessionManager = new SessionManager(onSessionChange);
|
|
159
|
-
const initialData = sessionManager.getSessionData();
|
|
160
|
-
const initialTimestamp = initialData?.lastActivityTimestamp ?? 0;
|
|
161
|
-
// Advance time and update activity
|
|
162
|
-
vi.setSystemTime(now + FIVE_SECONDS);
|
|
163
|
-
sessionManager.updateActivity();
|
|
164
|
-
const updatedData = sessionManager.getSessionData();
|
|
165
|
-
expect(updatedData?.lastActivityTimestamp).toBeGreaterThan(initialTimestamp);
|
|
166
|
-
vi.useRealTimers();
|
|
167
|
-
});
|
|
168
|
-
});
|
|
169
|
-
describe("session reset", () => {
|
|
170
|
-
it("should clear session from all storage", () => {
|
|
171
|
-
// Make localStorage work properly
|
|
172
|
-
vi.mocked(localStorage.setItem).mockImplementation(() => {
|
|
173
|
-
// no-op
|
|
174
|
-
});
|
|
175
|
-
sessionManager = new SessionManager(onSessionChange);
|
|
176
|
-
const originalSessionId = sessionManager.getSessionId();
|
|
177
|
-
sessionManager.resetSession();
|
|
178
|
-
const newSessionId = sessionManager.getSessionId();
|
|
179
|
-
// Should have a new session ID
|
|
180
|
-
expect(newSessionId).not.toBe(originalSessionId);
|
|
181
|
-
// Should clear old session from storage
|
|
182
|
-
expect(localStorage.removeItem).toHaveBeenCalledWith(SESSION_KEY);
|
|
183
|
-
expect(sessionStorage.removeItem).toHaveBeenCalledWith(SESSION_KEY);
|
|
184
|
-
if (!newSessionId) {
|
|
185
|
-
throw new Error("New session ID is undefined");
|
|
186
|
-
}
|
|
187
|
-
// Should save new session
|
|
188
|
-
expect(localStorage.setItem).toHaveBeenCalledWith(SESSION_KEY, expect.stringContaining(newSessionId));
|
|
189
|
-
});
|
|
190
|
-
it("should call onSessionChange with new session", () => {
|
|
191
|
-
sessionManager = new SessionManager(onSessionChange);
|
|
192
|
-
onSessionChange.mockClear();
|
|
193
|
-
sessionManager.resetSession();
|
|
194
|
-
// Should be called with the new session ID
|
|
195
|
-
expect(onSessionChange).toHaveBeenCalled();
|
|
196
|
-
const newSessionId = onSessionChange.mock.calls[0]?.[0];
|
|
197
|
-
expect(newSessionId).toMatch(SESSION_ID_REGEX);
|
|
198
|
-
});
|
|
199
|
-
});
|
|
200
|
-
describe("debug info", () => {
|
|
201
|
-
it("should provide comprehensive debug information", () => {
|
|
202
|
-
sessionManager = new SessionManager(onSessionChange);
|
|
203
|
-
sessionManager.updateActivity();
|
|
204
|
-
const debugInfo = sessionManager.getDebugInfo();
|
|
205
|
-
expect(debugInfo).toMatchObject({
|
|
206
|
-
sessionId: expect.any(String),
|
|
207
|
-
sessionStartTimestamp: expect.any(Number),
|
|
208
|
-
lastActivityTimestamp: expect.any(Number),
|
|
209
|
-
sessionTimeoutMs: SESSION_TIMEOUT,
|
|
210
|
-
sessionAge: expect.any(Number),
|
|
211
|
-
timeSinceLastActivity: expect.any(Number),
|
|
212
|
-
isSessionActive: true,
|
|
213
|
-
storageInfo: expect.objectContaining({
|
|
214
|
-
canUseLocalStorage: expect.any(Boolean),
|
|
215
|
-
canUseSessionStorage: expect.any(Boolean),
|
|
216
|
-
localStorageSupported: expect.any(Boolean),
|
|
217
|
-
sessionStorageSupported: expect.any(Boolean),
|
|
218
|
-
persistenceType: expect.any(String),
|
|
219
|
-
storageKeys: expect.any(Array),
|
|
220
|
-
isDisabled: false,
|
|
221
|
-
}),
|
|
222
|
-
});
|
|
223
|
-
});
|
|
224
|
-
it("should detect storage availability", () => {
|
|
225
|
-
// Make localStorage throw on setItem
|
|
226
|
-
vi.mocked(localStorage.setItem).mockImplementation(() => {
|
|
227
|
-
throw new Error("Storage blocked");
|
|
228
|
-
});
|
|
229
|
-
const manager = new SessionManager(onSessionChange);
|
|
230
|
-
const debugInfo = manager.getDebugInfo();
|
|
231
|
-
// Since localStorage fails, it should fallback to another storage
|
|
232
|
-
const storageInfo = debugInfo.storageInfo;
|
|
233
|
-
expect(storageInfo?.persistenceType).not.toBe("localStorage");
|
|
234
|
-
});
|
|
235
|
-
it("should calculate session age correctly", () => {
|
|
236
|
-
vi.useFakeTimers();
|
|
237
|
-
const startTime = Date.now();
|
|
238
|
-
vi.setSystemTime(startTime);
|
|
239
|
-
sessionManager = new SessionManager(onSessionChange);
|
|
240
|
-
// Advance time by 10 seconds
|
|
241
|
-
vi.advanceTimersByTime(TEN_SECONDS);
|
|
242
|
-
const debugInfo = sessionManager.getDebugInfo();
|
|
243
|
-
expect(debugInfo.sessionAge).toBeGreaterThanOrEqual(TEN_SECONDS);
|
|
244
|
-
vi.useRealTimers();
|
|
245
|
-
});
|
|
246
|
-
it("should detect session timeout", () => {
|
|
247
|
-
vi.useFakeTimers();
|
|
248
|
-
const now = Date.now();
|
|
249
|
-
vi.setSystemTime(now);
|
|
250
|
-
sessionManager = new SessionManager(onSessionChange);
|
|
251
|
-
// Session should be active initially
|
|
252
|
-
let debugInfo = sessionManager.getDebugInfo();
|
|
253
|
-
expect(debugInfo.isSessionActive).toBe(true);
|
|
254
|
-
// Advance past session timeout
|
|
255
|
-
vi.advanceTimersByTime(SESSION_TIMEOUT + 1);
|
|
256
|
-
// Session should be inactive
|
|
257
|
-
debugInfo = sessionManager.getDebugInfo();
|
|
258
|
-
expect(debugInfo.isSessionActive).toBe(false);
|
|
259
|
-
vi.useRealTimers();
|
|
260
|
-
});
|
|
261
|
-
});
|
|
262
|
-
describe("storage fallbacks", () => {
|
|
263
|
-
it("should fallback when localStorage fails", () => {
|
|
264
|
-
// Make localStorage throw for both test and actual save
|
|
265
|
-
vi.mocked(localStorage.setItem).mockImplementation(() => {
|
|
266
|
-
throw new Error("LocalStorage blocked");
|
|
267
|
-
});
|
|
268
|
-
// Track if fallback was used
|
|
269
|
-
let cookieSet = false;
|
|
270
|
-
Object.defineProperty(document, "cookie", {
|
|
271
|
-
get: () => "",
|
|
272
|
-
set: () => {
|
|
273
|
-
cookieSet = true;
|
|
274
|
-
},
|
|
275
|
-
configurable: true,
|
|
276
|
-
});
|
|
277
|
-
// Make sessionStorage work
|
|
278
|
-
vi.mocked(sessionStorage.setItem).mockImplementation(() => {
|
|
279
|
-
// no-op
|
|
280
|
-
});
|
|
281
|
-
new SessionManager(onSessionChange);
|
|
282
|
-
// Should use either cookie or sessionStorage as fallback
|
|
283
|
-
const usedCookie = cookieSet;
|
|
284
|
-
const usedSessionStorage = vi.mocked(sessionStorage.setItem).mock.calls.length > 0;
|
|
285
|
-
expect(usedCookie || usedSessionStorage).toBe(true);
|
|
286
|
-
});
|
|
287
|
-
it("should fallback to cookies if localStorage and sessionStorage fail", () => {
|
|
288
|
-
// Make localStorage and sessionStorage throw
|
|
289
|
-
vi.mocked(localStorage.setItem).mockImplementation(() => {
|
|
290
|
-
throw new Error("LocalStorage blocked");
|
|
291
|
-
});
|
|
292
|
-
vi.mocked(sessionStorage.setItem).mockImplementation(() => {
|
|
293
|
-
throw new Error("SessionStorage blocked");
|
|
294
|
-
});
|
|
295
|
-
// Track cookie sets
|
|
296
|
-
let cookieSet = false;
|
|
297
|
-
Object.defineProperty(document, "cookie", {
|
|
298
|
-
get: () => "",
|
|
299
|
-
set: () => {
|
|
300
|
-
cookieSet = true;
|
|
301
|
-
},
|
|
302
|
-
configurable: true,
|
|
303
|
-
});
|
|
304
|
-
const manager = new SessionManager(onSessionChange);
|
|
305
|
-
manager.getSessionId(); // Trigger persistence
|
|
306
|
-
// Should have attempted to set cookie
|
|
307
|
-
expect(cookieSet).toBe(true);
|
|
308
|
-
});
|
|
309
|
-
it("should use in-memory storage if all storage fails", () => {
|
|
310
|
-
// Make all storage throw
|
|
311
|
-
vi.mocked(localStorage.setItem).mockImplementation(() => {
|
|
312
|
-
throw new Error("LocalStorage blocked");
|
|
313
|
-
});
|
|
314
|
-
vi.mocked(sessionStorage.setItem).mockImplementation(() => {
|
|
315
|
-
throw new Error("SessionStorage blocked");
|
|
316
|
-
});
|
|
317
|
-
Object.defineProperty(document, "cookie", {
|
|
318
|
-
get: () => "",
|
|
319
|
-
set: () => {
|
|
320
|
-
throw new Error("Cookies blocked");
|
|
321
|
-
},
|
|
322
|
-
configurable: true,
|
|
323
|
-
});
|
|
324
|
-
const manager = new SessionManager(onSessionChange);
|
|
325
|
-
const sessionId = manager.getSessionId();
|
|
326
|
-
// Should still have a session ID (in memory)
|
|
327
|
-
expect(sessionId).toBeTruthy();
|
|
328
|
-
expect(sessionId).toMatch(SESSION_ID_REGEX);
|
|
329
|
-
});
|
|
330
|
-
});
|
|
331
|
-
describe("session validation", () => {
|
|
332
|
-
it("should reject invalid session data from storage", () => {
|
|
333
|
-
// Set invalid session data
|
|
334
|
-
vi.mocked(localStorage.getItem).mockReturnValue("invalid json");
|
|
335
|
-
const manager = new SessionManager(onSessionChange);
|
|
336
|
-
const sessionId = manager.getSessionId();
|
|
337
|
-
// Should create a new session instead
|
|
338
|
-
expect(sessionId).toBeTruthy();
|
|
339
|
-
expect(sessionId).toMatch(SESSION_ID_REGEX);
|
|
340
|
-
});
|
|
341
|
-
it("should reject sessions with missing required fields", () => {
|
|
342
|
-
// Session without sessionId
|
|
343
|
-
const invalidSession = {
|
|
344
|
-
startTimestamp: Date.now(),
|
|
345
|
-
lastActivityTimestamp: Date.now(),
|
|
346
|
-
};
|
|
347
|
-
vi.mocked(localStorage.getItem).mockReturnValue(JSON.stringify(invalidSession));
|
|
348
|
-
const manager = new SessionManager(onSessionChange);
|
|
349
|
-
const sessionId = manager.getSessionId();
|
|
350
|
-
// Should create a new session
|
|
351
|
-
expect(sessionId).not.toBe(undefined);
|
|
352
|
-
expect(sessionId).toMatch(SESSION_ID_REGEX);
|
|
353
|
-
});
|
|
354
|
-
});
|
|
355
|
-
});
|
|
356
|
-
//# sourceMappingURL=session-manager.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.test.js","sourceRoot":"","sources":["../../../../src/__tests__/lib/core/session-manager.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/provider.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
// biome-ignore lint/correctness/noUnusedImports: React is required for JSX runtime
|
|
3
|
-
import React, {} from "react";
|
|
4
|
-
import { createRoot } from "react-dom/client";
|
|
5
|
-
import { act } from "react-dom/test-utils";
|
|
6
|
-
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
7
|
-
import { InterfereProvider, useInterfere } from "../provider.js";
|
|
8
|
-
// Mocks for client functions used by the Provider
|
|
9
|
-
const mockCapture = vi.fn();
|
|
10
|
-
const mockCaptureError = vi.fn();
|
|
11
|
-
const mockCaptureCustom = vi.fn();
|
|
12
|
-
const mockCaptureUIEvent = vi.fn();
|
|
13
|
-
const mockFlush = vi.fn();
|
|
14
|
-
const mockGetSessionId = vi.fn(() => "session-1");
|
|
15
|
-
const mockGetWindowId = vi.fn(() => "window-1");
|
|
16
|
-
const mockResetSession = vi.fn();
|
|
17
|
-
const mockGetDebugInfo = vi.fn(() => ({ ok: true }));
|
|
18
|
-
const mockSetDebugLogger = vi.fn();
|
|
19
|
-
vi.mock("../client", () => ({
|
|
20
|
-
capture: (...args) => mockCapture(...args),
|
|
21
|
-
captureError: (...args) => mockCaptureError(...args),
|
|
22
|
-
captureCustom: (...args) => mockCaptureCustom(...args),
|
|
23
|
-
captureUIEvent: (...args) => mockCaptureUIEvent(...args),
|
|
24
|
-
flush: () => mockFlush(),
|
|
25
|
-
getSessionId: () => mockGetSessionId(),
|
|
26
|
-
getWindowId: () => mockGetWindowId(),
|
|
27
|
-
resetSession: () => mockResetSession(),
|
|
28
|
-
getDebugInfo: () => mockGetDebugInfo(),
|
|
29
|
-
setDebugLogger: (fn) => mockSetDebugLogger(fn),
|
|
30
|
-
}));
|
|
31
|
-
// Mocks for session feature setup/teardown
|
|
32
|
-
const mockSetupReplay = vi.fn();
|
|
33
|
-
const mockStopReplay = vi.fn();
|
|
34
|
-
vi.mock("../lib/session/replay", () => ({
|
|
35
|
-
setupReplay: () => mockSetupReplay(),
|
|
36
|
-
stopReplay: () => mockStopReplay(),
|
|
37
|
-
}));
|
|
38
|
-
const mockRageCleanup = vi.fn();
|
|
39
|
-
const mockSetupRageClick = vi.fn(() => mockRageCleanup);
|
|
40
|
-
vi.mock("../lib/session/rage-click", () => ({
|
|
41
|
-
setupRageClick: () => mockSetupRageClick(),
|
|
42
|
-
}));
|
|
43
|
-
const mockSummaryCleanup = vi.fn();
|
|
44
|
-
const mockSetupSessionSummary = vi.fn(() => mockSummaryCleanup);
|
|
45
|
-
vi.mock("../lib/session/session-summary", () => ({
|
|
46
|
-
setupSessionSummary: () => mockSetupSessionSummary(),
|
|
47
|
-
}));
|
|
48
|
-
function render(ui) {
|
|
49
|
-
const container = document.createElement("div");
|
|
50
|
-
document.body.appendChild(container);
|
|
51
|
-
const root = createRoot(container);
|
|
52
|
-
act(() => {
|
|
53
|
-
root.render(ui);
|
|
54
|
-
});
|
|
55
|
-
return {
|
|
56
|
-
container,
|
|
57
|
-
root,
|
|
58
|
-
unmount: () => {
|
|
59
|
-
act(() => {
|
|
60
|
-
root.unmount();
|
|
61
|
-
});
|
|
62
|
-
container.remove();
|
|
63
|
-
},
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
describe("InterfereProvider", () => {
|
|
67
|
-
beforeEach(() => {
|
|
68
|
-
vi.clearAllMocks();
|
|
69
|
-
});
|
|
70
|
-
afterEach(() => {
|
|
71
|
-
// Ensure no stray listeners leak across tests
|
|
72
|
-
vi.clearAllMocks();
|
|
73
|
-
});
|
|
74
|
-
it("renders children and exposes context functions", () => {
|
|
75
|
-
let called = false;
|
|
76
|
-
function Probe() {
|
|
77
|
-
const ctx = useInterfere();
|
|
78
|
-
expect(ctx.capture).toBeDefined();
|
|
79
|
-
expect(ctx.captureError).toBeDefined();
|
|
80
|
-
expect(ctx.flush).toBeDefined();
|
|
81
|
-
ctx.capture("custom", { ok: true });
|
|
82
|
-
called = true;
|
|
83
|
-
return null;
|
|
84
|
-
}
|
|
85
|
-
const { unmount } = render(_jsx(InterfereProvider, { children: _jsx(Probe, {}) }));
|
|
86
|
-
expect(called).toBe(true);
|
|
87
|
-
expect(mockCapture).toHaveBeenCalledTimes(1);
|
|
88
|
-
unmount();
|
|
89
|
-
});
|
|
90
|
-
it("registers error and rejection handlers and forwards to captureError", () => {
|
|
91
|
-
const { unmount } = render(_jsx(InterfereProvider, { captureErrors: true, captureRejections: true, children: _jsx("div", {}) }));
|
|
92
|
-
// Simulate window error
|
|
93
|
-
const error = new Error("Boom");
|
|
94
|
-
act(() => {
|
|
95
|
-
window.dispatchEvent(new ErrorEvent("error", {
|
|
96
|
-
message: error.message,
|
|
97
|
-
error,
|
|
98
|
-
filename: "file.js",
|
|
99
|
-
lineno: 1,
|
|
100
|
-
colno: 1,
|
|
101
|
-
}));
|
|
102
|
-
});
|
|
103
|
-
// Simulate unhandled rejection
|
|
104
|
-
const reason = new Error("Nope");
|
|
105
|
-
act(() => {
|
|
106
|
-
const promise = new Promise((_resolve) => {
|
|
107
|
-
// Intentionally never resolve/reject to simulate pending promise
|
|
108
|
-
});
|
|
109
|
-
window.dispatchEvent(new PromiseRejectionEvent("unhandledrejection", { promise, reason }));
|
|
110
|
-
});
|
|
111
|
-
expect(mockCaptureError).toHaveBeenCalledTimes(2);
|
|
112
|
-
unmount();
|
|
113
|
-
});
|
|
114
|
-
it("configures session features and cleans up on unmount", () => {
|
|
115
|
-
const { unmount } = render(_jsx(InterfereProvider, { enableRageClick: true, enableReplay: true, enableSessionSummary: true, children: _jsx("div", {}) }));
|
|
116
|
-
expect(mockSetupReplay).toHaveBeenCalledTimes(1);
|
|
117
|
-
expect(mockSetupRageClick).toHaveBeenCalledTimes(1);
|
|
118
|
-
expect(mockSetupSessionSummary).toHaveBeenCalledTimes(1);
|
|
119
|
-
unmount();
|
|
120
|
-
expect(mockStopReplay).toHaveBeenCalledTimes(1);
|
|
121
|
-
expect(mockRageCleanup).toHaveBeenCalledTimes(1);
|
|
122
|
-
expect(mockSummaryCleanup).toHaveBeenCalledTimes(1);
|
|
123
|
-
expect(mockFlush).toHaveBeenCalledTimes(1);
|
|
124
|
-
});
|
|
125
|
-
it("respects feature toggles (no setup when disabled)", () => {
|
|
126
|
-
const { unmount } = render(_jsx(InterfereProvider, { enableRageClick: false, enableReplay: false, enableSessionSummary: false, children: _jsx("div", {}) }));
|
|
127
|
-
expect(mockSetupReplay).not.toHaveBeenCalled();
|
|
128
|
-
expect(mockSetupRageClick).not.toHaveBeenCalled();
|
|
129
|
-
expect(mockSetupSessionSummary).not.toHaveBeenCalled();
|
|
130
|
-
unmount();
|
|
131
|
-
expect(mockStopReplay).not.toHaveBeenCalled();
|
|
132
|
-
expect(mockRageCleanup).not.toHaveBeenCalled();
|
|
133
|
-
expect(mockSummaryCleanup).not.toHaveBeenCalled();
|
|
134
|
-
});
|
|
135
|
-
it("sets custom debug logger when provided", () => {
|
|
136
|
-
const logger = vi.fn();
|
|
137
|
-
const { unmount } = render(_jsx(InterfereProvider, { debugLogger: logger, children: _jsx("div", {}) }));
|
|
138
|
-
expect(mockSetDebugLogger).toHaveBeenCalledTimes(1);
|
|
139
|
-
expect(mockSetDebugLogger).toHaveBeenCalledWith(logger);
|
|
140
|
-
unmount();
|
|
141
|
-
});
|
|
142
|
-
});
|
|
143
|
-
//# sourceMappingURL=provider.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider.test.js","sourceRoot":"","sources":["../../src/__tests__/provider.test.tsx"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import type { EventType } from "@interfere/schemas/envelope";
|
|
2
|
-
/**
|
|
3
|
-
* Send an event to Interfere
|
|
4
|
-
*/
|
|
5
|
-
export declare const capture: (type: EventType, payload: unknown) => void;
|
|
6
|
-
/**
|
|
7
|
-
* Flush any pending events immediately
|
|
8
|
-
*/
|
|
9
|
-
export declare const flush: () => Promise<void>;
|
|
10
|
-
/**
|
|
11
|
-
* Get the current session ID
|
|
12
|
-
*/
|
|
13
|
-
export declare const getSessionId: () => string;
|
|
14
|
-
/**
|
|
15
|
-
* Get the current window ID
|
|
16
|
-
*/
|
|
17
|
-
export declare const getWindowId: () => string;
|
|
18
|
-
/**
|
|
19
|
-
* Reset the current session
|
|
20
|
-
*/
|
|
21
|
-
export declare const resetSession: () => void;
|
|
22
|
-
/**
|
|
23
|
-
* Capture an error event
|
|
24
|
-
*/
|
|
25
|
-
export declare const captureError: (error: Error | unknown) => void;
|
|
26
|
-
/**
|
|
27
|
-
* Capture a custom event
|
|
28
|
-
*/
|
|
29
|
-
export declare const captureCustom: (name: string, data: unknown) => void;
|
|
30
|
-
/**
|
|
31
|
-
* Capture a UI interaction event
|
|
32
|
-
*/
|
|
33
|
-
export declare const captureUIEvent: (action: string, metadata?: unknown) => void;
|
|
34
|
-
/**
|
|
35
|
-
* Set a debug logger for diagnostics
|
|
36
|
-
*/
|
|
37
|
-
export declare const setDebugLogger: (logger?: (message: string, error?: Error) => void) => void;
|
|
38
|
-
/**
|
|
39
|
-
* Debug information about the SDK state
|
|
40
|
-
*/
|
|
41
|
-
export type DebugInfo = {
|
|
42
|
-
sessionId: string | null;
|
|
43
|
-
windowId: string | null;
|
|
44
|
-
pendingEventsCount: number;
|
|
45
|
-
hasDebugLogger: boolean;
|
|
46
|
-
isServerSide: boolean;
|
|
47
|
-
sessionStartTimestamp?: number;
|
|
48
|
-
lastActivityTimestamp?: number;
|
|
49
|
-
sessionTimeoutMs?: number;
|
|
50
|
-
sessionAge?: number;
|
|
51
|
-
timeSinceLastActivity?: number;
|
|
52
|
-
isSessionActive?: boolean;
|
|
53
|
-
config?: Record<string, unknown>;
|
|
54
|
-
storageInfo?: {
|
|
55
|
-
canUseLocalStorage: boolean;
|
|
56
|
-
canUseSessionStorage: boolean;
|
|
57
|
-
storageKeys: string[];
|
|
58
|
-
localStorageSupported: boolean;
|
|
59
|
-
sessionStorageSupported: boolean;
|
|
60
|
-
persistenceType: string;
|
|
61
|
-
isDisabled: boolean;
|
|
62
|
-
};
|
|
63
|
-
queueSize?: number;
|
|
64
|
-
isOnline?: boolean;
|
|
65
|
-
};
|
|
66
|
-
/**
|
|
67
|
-
* Get debug information about the SDK state
|
|
68
|
-
*/
|
|
69
|
-
export declare const getDebugInfo: () => DebugInfo;
|
|
70
|
-
/**
|
|
71
|
-
* Subscribe to session ID changes
|
|
72
|
-
*/
|
|
73
|
-
export declare const onSessionId: (callback: (id: string) => void) => (() => void);
|
|
74
|
-
/**
|
|
75
|
-
* Destroy the SDK instance and clean up
|
|
76
|
-
*/
|
|
77
|
-
export declare const destroy: () => Promise<void>;
|
|
78
|
-
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAqF7D;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,SAAS,EAAE,SAAS,OAAO,KAAG,IAO3D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,QAAa,OAAO,CAAC,IAAI,CAK1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,QAAO,MAK/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,QAAO,MAK9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,QAAO,IAM/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,KAAK,GAAG,OAAO,KAAG,IAMrD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,EAAE,MAAM,OAAO,KAAG,IAK3D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,EAAE,WAAW,OAAO,KAAG,IAKnE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GACzB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,KAChD,IAEF,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE;QACZ,kBAAkB,EAAE,OAAO,CAAC;QAC5B,oBAAoB,EAAE,OAAO,CAAC;QAC9B,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,qBAAqB,EAAE,OAAO,CAAC;QAC/B,uBAAuB,EAAE,OAAO,CAAC;QACjC,eAAe,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,QAAO,SA8C/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,UAAU,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,KAAG,CAAC,MAAM,IAAI,CAWvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,QAAa,OAAO,CAAC,IAAI,CAQ5C,CAAC"}
|