@qurvo/sdk-browser 0.0.13 → 0.0.15
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/index.d.ts +134 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +229 -14
- package/dist/index.js.map +1 -1
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +260 -0
- package/dist/index.test.js.map +1 -0
- package/dist/qurvo.iife.js +1 -1
- package/dist/qurvo.iife.js.map +4 -4
- package/dist/utm.d.ts +15 -0
- package/dist/utm.d.ts.map +1 -0
- package/dist/utm.js +45 -0
- package/dist/utm.js.map +1 -0
- package/dist/utm.test.d.ts +2 -0
- package/dist/utm.test.d.ts.map +1 -0
- package/dist/utm.test.js +59 -0
- package/dist/utm.test.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,29 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration for the browser SDK.
|
|
3
|
+
*
|
|
4
|
+
* Only `apiKey` is required. All other fields have sensible defaults:
|
|
5
|
+
* endpoint defaults to `http://localhost:3001`, autocapture is enabled,
|
|
6
|
+
* and flush occurs every 3 s or 10 events (whichever comes first).
|
|
7
|
+
*/
|
|
1
8
|
export interface BrowserSdkConfig {
|
|
9
|
+
/** Project API key used to authenticate events with the ingest server. */
|
|
2
10
|
apiKey: string;
|
|
11
|
+
/** Ingest server URL. Defaults to `http://localhost:3001`. */
|
|
3
12
|
endpoint?: string;
|
|
4
13
|
/** If known upfront (e.g. Telegram Mini App), pass user ID to avoid identity gaps and namespace storage per user. */
|
|
5
14
|
distinctId?: string;
|
|
15
|
+
/** Enable automatic pageview tracking on navigation (pushState, popstate, hashchange). Defaults to `true`. */
|
|
6
16
|
autocapture?: boolean;
|
|
17
|
+
/** Milliseconds between automatic queue flushes. Defaults to `3000`. */
|
|
7
18
|
flushInterval?: number;
|
|
19
|
+
/** Maximum number of events buffered before an automatic flush. Defaults to `10`. */
|
|
8
20
|
flushSize?: number;
|
|
9
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Browser SDK singleton that captures events, manages user identity, and
|
|
24
|
+
* persists an offline queue in localStorage.
|
|
25
|
+
*
|
|
26
|
+
* Lifecycle: call {@link QurvoBrowser.init | init()} once with your API key.
|
|
27
|
+
* The SDK generates an anonymous ID on first visit, stores it in localStorage,
|
|
28
|
+
* and upgrades to a known identity when {@link QurvoBrowser.identify | identify()}
|
|
29
|
+
* is called. Autocapture hooks into `pushState`, `popstate`, and `hashchange`
|
|
30
|
+
* to track pageviews automatically.
|
|
31
|
+
*/
|
|
10
32
|
declare class QurvoBrowser {
|
|
11
33
|
private queue;
|
|
12
34
|
private userId;
|
|
13
35
|
private initialized;
|
|
36
|
+
/** Debounce: last page() URL + timestamp to suppress duplicate $pageview */
|
|
37
|
+
private lastPageUrl;
|
|
38
|
+
private lastPageTime;
|
|
39
|
+
/** Flag: $pageleave already emitted for current page, reset on new page() */
|
|
40
|
+
private pageLeaveEmitted;
|
|
41
|
+
/** Stored listener references for cleanup in shutdown() */
|
|
42
|
+
private listeners;
|
|
43
|
+
/** Original history methods saved for restore in shutdown() */
|
|
44
|
+
private originalPushState;
|
|
45
|
+
private originalReplaceState;
|
|
46
|
+
/**
|
|
47
|
+
* Initialize the SDK with the given configuration.
|
|
48
|
+
*
|
|
49
|
+
* Resolves `distinct_id` in priority order: explicit `config.distinctId` →
|
|
50
|
+
* previously stored userId in localStorage → auto-generated anonymous ID.
|
|
51
|
+
* Sets up a localStorage-backed event queue (namespaced per user when
|
|
52
|
+
* `distinctId` is provided), starts the flush timer, enables autocapture
|
|
53
|
+
* (unless opted out), and emits an initial `$pageview`.
|
|
54
|
+
*
|
|
55
|
+
* Calling `init()` a second time is a no-op unless `config.distinctId`
|
|
56
|
+
* differs from the current user, in which case the SDK resets identity
|
|
57
|
+
* and re-initializes to prevent cross-user event linkage.
|
|
58
|
+
*
|
|
59
|
+
* @param config - SDK configuration (only `apiKey` is required).
|
|
60
|
+
*/
|
|
14
61
|
init(config: BrowserSdkConfig): void;
|
|
62
|
+
/**
|
|
63
|
+
* Send a custom event.
|
|
64
|
+
*
|
|
65
|
+
* UTM parameters from the current URL are automatically merged into
|
|
66
|
+
* `properties`; explicitly provided properties take priority over UTM values.
|
|
67
|
+
* Requires {@link QurvoBrowser.init | init()} to have been called first.
|
|
68
|
+
*
|
|
69
|
+
* @param event - Event name (e.g. `"signup"`, `"purchase"`).
|
|
70
|
+
* @param properties - Arbitrary key/value pairs attached to the event.
|
|
71
|
+
*/
|
|
15
72
|
track(event: string, properties?: Record<string, unknown>): void;
|
|
73
|
+
/**
|
|
74
|
+
* Link the current anonymous session to a known user.
|
|
75
|
+
*
|
|
76
|
+
* Stores `userId` in localStorage and sends a `$identify` event that
|
|
77
|
+
* carries the current `anonymous_id`, allowing the server to merge
|
|
78
|
+
* pre-identify anonymous events with the identified user profile.
|
|
79
|
+
*
|
|
80
|
+
* If the user was already identified as a *different* user, the SDK
|
|
81
|
+
* automatically calls {@link QurvoBrowser.reset | reset()} first to
|
|
82
|
+
* prevent cross-user identity linkage.
|
|
83
|
+
*
|
|
84
|
+
* @param userId - Your application's stable user identifier.
|
|
85
|
+
* @param userProperties - Optional user-level properties (e.g. name, plan).
|
|
86
|
+
*/
|
|
16
87
|
identify(userId: string, userProperties?: Record<string, unknown>): void;
|
|
88
|
+
/**
|
|
89
|
+
* Track a pageview (`$pageview` event).
|
|
90
|
+
*
|
|
91
|
+
* Applies a 50 ms debounce on the same URL to suppress duplicate events
|
|
92
|
+
* caused by `pushState` and `popstate` firing in quick succession. Also
|
|
93
|
+
* resets the `$pageleave` flag so a fresh leave event can be emitted when
|
|
94
|
+
* the user navigates away from this page.
|
|
95
|
+
*
|
|
96
|
+
* Called automatically on navigation when `autocapture` is enabled.
|
|
97
|
+
*
|
|
98
|
+
* @param properties - Extra properties to attach to the pageview event.
|
|
99
|
+
*/
|
|
17
100
|
page(properties?: Record<string, unknown>): void;
|
|
101
|
+
/**
|
|
102
|
+
* Track a screen view (`$screen` event).
|
|
103
|
+
*
|
|
104
|
+
* Intended for non-web contexts (e.g. React Native, Telegram Mini Apps)
|
|
105
|
+
* where navigation doesn't map to browser URLs. Sends `$screen_name`
|
|
106
|
+
* inside the event properties.
|
|
107
|
+
*
|
|
108
|
+
* @param screenName - Logical screen name (e.g. `"Settings"`, `"Profile"`).
|
|
109
|
+
* @param properties - Extra properties to attach to the screen event.
|
|
110
|
+
*/
|
|
18
111
|
screen(screenName: string, properties?: Record<string, unknown>): void;
|
|
112
|
+
/**
|
|
113
|
+
* Set user properties on the current user (`$set` event).
|
|
114
|
+
*
|
|
115
|
+
* Properties are always overwritten with the provided values.
|
|
116
|
+
* Use {@link QurvoBrowser.setOnce | setOnce()} to write only if
|
|
117
|
+
* the property has not been set before.
|
|
118
|
+
*
|
|
119
|
+
* @param properties - Key/value pairs to set on the user profile.
|
|
120
|
+
*/
|
|
19
121
|
set(properties: Record<string, unknown>): void;
|
|
122
|
+
/**
|
|
123
|
+
* Set user properties only if they have not been set before (`$set_once` event).
|
|
124
|
+
*
|
|
125
|
+
* Useful for recording first-touch attribution (e.g. `initial_referrer`,
|
|
126
|
+
* `signup_date`) without overwriting values set by earlier events.
|
|
127
|
+
*
|
|
128
|
+
* @param properties - Key/value pairs to set once on the user profile.
|
|
129
|
+
*/
|
|
20
130
|
setOnce(properties: Record<string, unknown>): void;
|
|
131
|
+
/**
|
|
132
|
+
* Clear the current user identity.
|
|
133
|
+
*
|
|
134
|
+
* Removes `userId`, `anonymousId`, and `sessionId` from storage so the
|
|
135
|
+
* next event is treated as a brand-new anonymous visitor. Call this on
|
|
136
|
+
* logout to prevent post-logout events from being attributed to the
|
|
137
|
+
* previous user.
|
|
138
|
+
*/
|
|
21
139
|
reset(): void;
|
|
140
|
+
/** Gracefully stop the SDK: flush remaining events, remove all listeners. */
|
|
141
|
+
shutdown(): void;
|
|
22
142
|
/** Anonymous ID — always per-device, never namespaced. Links pre-identify events to identified users. */
|
|
23
143
|
private getAnonymousId;
|
|
144
|
+
private addListener;
|
|
24
145
|
private setupAutocapture;
|
|
25
146
|
private setupBeaconFlush;
|
|
26
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* Default SDK instance.
|
|
150
|
+
*
|
|
151
|
+
* Import and call `qurvo.init({ apiKey })` to start capturing events.
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```ts
|
|
155
|
+
* import { qurvo } from '@qurvo/sdk-browser';
|
|
156
|
+
*
|
|
157
|
+
* qurvo.init({ apiKey: 'pk_...' });
|
|
158
|
+
* qurvo.track('signup', { plan: 'pro' });
|
|
159
|
+
* ```
|
|
160
|
+
*/
|
|
27
161
|
export declare const qurvo: QurvoBrowser;
|
|
28
162
|
export {};
|
|
29
163
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqDA;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qHAAqH;IACrH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8GAA8G;IAC9G,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,cAAM,YAAY;IAChB,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAS;IAE5B,4EAA4E;IAC5E,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,YAAY,CAAK;IAEzB,6EAA6E;IAC7E,OAAO,CAAC,gBAAgB,CAAS;IAEjC,2DAA2D;IAC3D,OAAO,CAAC,SAAS,CAAwE;IACzF,+DAA+D;IAC/D,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,oBAAoB,CAA4C;IAExE;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,MAAM,EAAE,gBAAgB;IAoF7B;;;;;;;;;OASG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAuBzD;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA0BjE;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAqBzC;;;;;;;;;OASG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI/D;;;;;;;;OAQG;IACH,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAkBvC;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAkB3C;;;;;;;OAOG;IACH,KAAK;IAOL,6EAA6E;IAC7E,QAAQ,IAAI,IAAI;IA0BhB,yGAAyG;IACzG,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,gBAAgB;CAuBzB;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,KAAK,cAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,10 +4,13 @@ exports.qurvo = void 0;
|
|
|
4
4
|
const fflate_1 = require("fflate");
|
|
5
5
|
const sdk_core_1 = require("@qurvo/sdk-core");
|
|
6
6
|
const version_1 = require("./version");
|
|
7
|
+
const utm_1 = require("./utm");
|
|
7
8
|
const SDK_NAME = '@qurvo/sdk-browser';
|
|
8
9
|
const ANON_ID_KEY = 'qurvo_anonymous_id';
|
|
9
10
|
const SESSION_ID_KEY = 'qurvo_session_id';
|
|
10
11
|
const USER_ID_KEY = 'qurvo_user_id';
|
|
12
|
+
/** Debounce window for page() to prevent pushState + popstate double-fire */
|
|
13
|
+
const PAGE_DEBOUNCE_MS = 50;
|
|
11
14
|
function safeGetItem(storage, key) {
|
|
12
15
|
try {
|
|
13
16
|
return storage.getItem(key);
|
|
@@ -22,6 +25,12 @@ function safeSetItem(storage, key, value) {
|
|
|
22
25
|
}
|
|
23
26
|
catch { /* noop */ }
|
|
24
27
|
}
|
|
28
|
+
function safeRemoveItem(storage, key) {
|
|
29
|
+
try {
|
|
30
|
+
storage.removeItem(key);
|
|
31
|
+
}
|
|
32
|
+
catch { /* noop */ }
|
|
33
|
+
}
|
|
25
34
|
function generateId() {
|
|
26
35
|
return crypto.randomUUID?.() || Math.random().toString(36).substring(2) + Date.now().toString(36);
|
|
27
36
|
}
|
|
@@ -48,13 +57,66 @@ function getContext() {
|
|
|
48
57
|
sdk_version: version_1.SDK_VERSION,
|
|
49
58
|
};
|
|
50
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Browser SDK singleton that captures events, manages user identity, and
|
|
62
|
+
* persists an offline queue in localStorage.
|
|
63
|
+
*
|
|
64
|
+
* Lifecycle: call {@link QurvoBrowser.init | init()} once with your API key.
|
|
65
|
+
* The SDK generates an anonymous ID on first visit, stores it in localStorage,
|
|
66
|
+
* and upgrades to a known identity when {@link QurvoBrowser.identify | identify()}
|
|
67
|
+
* is called. Autocapture hooks into `pushState`, `popstate`, and `hashchange`
|
|
68
|
+
* to track pageviews automatically.
|
|
69
|
+
*/
|
|
51
70
|
class QurvoBrowser {
|
|
52
71
|
queue = null;
|
|
53
72
|
userId = null;
|
|
54
73
|
initialized = false;
|
|
74
|
+
/** Debounce: last page() URL + timestamp to suppress duplicate $pageview */
|
|
75
|
+
lastPageUrl = null;
|
|
76
|
+
lastPageTime = 0;
|
|
77
|
+
/** Flag: $pageleave already emitted for current page, reset on new page() */
|
|
78
|
+
pageLeaveEmitted = false;
|
|
79
|
+
/** Stored listener references for cleanup in shutdown() */
|
|
80
|
+
listeners = [];
|
|
81
|
+
/** Original history methods saved for restore in shutdown() */
|
|
82
|
+
originalPushState = null;
|
|
83
|
+
originalReplaceState = null;
|
|
84
|
+
/**
|
|
85
|
+
* Initialize the SDK with the given configuration.
|
|
86
|
+
*
|
|
87
|
+
* Resolves `distinct_id` in priority order: explicit `config.distinctId` →
|
|
88
|
+
* previously stored userId in localStorage → auto-generated anonymous ID.
|
|
89
|
+
* Sets up a localStorage-backed event queue (namespaced per user when
|
|
90
|
+
* `distinctId` is provided), starts the flush timer, enables autocapture
|
|
91
|
+
* (unless opted out), and emits an initial `$pageview`.
|
|
92
|
+
*
|
|
93
|
+
* Calling `init()` a second time is a no-op unless `config.distinctId`
|
|
94
|
+
* differs from the current user, in which case the SDK resets identity
|
|
95
|
+
* and re-initializes to prevent cross-user event linkage.
|
|
96
|
+
*
|
|
97
|
+
* @param config - SDK configuration (only `apiKey` is required).
|
|
98
|
+
*/
|
|
55
99
|
init(config) {
|
|
56
|
-
if
|
|
100
|
+
// Account switch detection: if already initialized with a different distinctId,
|
|
101
|
+
// reset anonymous_id and clean up stale queue key to prevent cross-user linkage.
|
|
102
|
+
if (this.initialized && config.distinctId) {
|
|
103
|
+
const previousUserId = safeGetItem(localStorage, USER_ID_KEY);
|
|
104
|
+
if (previousUserId && previousUserId !== config.distinctId) {
|
|
105
|
+
// Remove stale queue key from previous user
|
|
106
|
+
safeRemoveItem(localStorage, `qurvo_queue:${previousUserId}`);
|
|
107
|
+
// Reset anonymous_id so a fresh one is generated for the new user
|
|
108
|
+
safeRemoveItem(localStorage, ANON_ID_KEY);
|
|
109
|
+
safeRemoveItem(sessionStorage, SESSION_ID_KEY);
|
|
110
|
+
// Shutdown existing queue and allow full re-initialization
|
|
111
|
+
this.shutdown();
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
return; // Same user or no previous user — no-op
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else if (this.initialized) {
|
|
57
118
|
return;
|
|
119
|
+
}
|
|
58
120
|
// If distinctId passed at init — use it, otherwise fall back to stored/anonymous
|
|
59
121
|
if (config.distinctId) {
|
|
60
122
|
this.userId = config.distinctId;
|
|
@@ -110,23 +172,59 @@ class QurvoBrowser {
|
|
|
110
172
|
this.setupBeaconFlush();
|
|
111
173
|
this.page();
|
|
112
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Send a custom event.
|
|
177
|
+
*
|
|
178
|
+
* UTM parameters from the current URL are automatically merged into
|
|
179
|
+
* `properties`; explicitly provided properties take priority over UTM values.
|
|
180
|
+
* Requires {@link QurvoBrowser.init | init()} to have been called first.
|
|
181
|
+
*
|
|
182
|
+
* @param event - Event name (e.g. `"signup"`, `"purchase"`).
|
|
183
|
+
* @param properties - Arbitrary key/value pairs attached to the event.
|
|
184
|
+
*/
|
|
113
185
|
track(event, properties) {
|
|
114
|
-
if (!this.queue)
|
|
186
|
+
if (!this.queue) {
|
|
187
|
+
console.warn('[Qurvo] SDK not initialized. Call qurvo.init() first.');
|
|
115
188
|
return;
|
|
189
|
+
}
|
|
190
|
+
// Auto-capture UTM params from URL; user-supplied properties take priority
|
|
191
|
+
const utm = (0, utm_1.getUtmParams)();
|
|
192
|
+
const mergedProperties = Object.keys(utm).length > 0 ? { ...utm, ...properties } : properties;
|
|
116
193
|
const payload = {
|
|
117
194
|
event,
|
|
118
195
|
distinct_id: this.userId || this.getAnonymousId(),
|
|
119
196
|
anonymous_id: this.getAnonymousId(),
|
|
120
|
-
properties,
|
|
197
|
+
properties: mergedProperties,
|
|
121
198
|
context: getContext(),
|
|
122
199
|
timestamp: new Date().toISOString(),
|
|
123
200
|
event_id: generateId(),
|
|
124
201
|
};
|
|
125
202
|
this.queue.enqueue(payload);
|
|
126
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Link the current anonymous session to a known user.
|
|
206
|
+
*
|
|
207
|
+
* Stores `userId` in localStorage and sends a `$identify` event that
|
|
208
|
+
* carries the current `anonymous_id`, allowing the server to merge
|
|
209
|
+
* pre-identify anonymous events with the identified user profile.
|
|
210
|
+
*
|
|
211
|
+
* If the user was already identified as a *different* user, the SDK
|
|
212
|
+
* automatically calls {@link QurvoBrowser.reset | reset()} first to
|
|
213
|
+
* prevent cross-user identity linkage.
|
|
214
|
+
*
|
|
215
|
+
* @param userId - Your application's stable user identifier.
|
|
216
|
+
* @param userProperties - Optional user-level properties (e.g. name, plan).
|
|
217
|
+
*/
|
|
127
218
|
identify(userId, userProperties) {
|
|
128
|
-
if (!this.queue)
|
|
219
|
+
if (!this.queue) {
|
|
220
|
+
console.warn('[Qurvo] SDK not initialized. Call qurvo.init() first.');
|
|
129
221
|
return;
|
|
222
|
+
}
|
|
223
|
+
// Auto-reset when re-identifying as a different user (PostHog behavior).
|
|
224
|
+
// Prevents anonymous_id from linking two distinct accounts.
|
|
225
|
+
if (this.userId && this.userId !== userId) {
|
|
226
|
+
this.reset();
|
|
227
|
+
}
|
|
130
228
|
this.userId = userId;
|
|
131
229
|
safeSetItem(localStorage, USER_ID_KEY, userId);
|
|
132
230
|
const payload = {
|
|
@@ -140,15 +238,62 @@ class QurvoBrowser {
|
|
|
140
238
|
};
|
|
141
239
|
this.queue.enqueue(payload);
|
|
142
240
|
}
|
|
241
|
+
/**
|
|
242
|
+
* Track a pageview (`$pageview` event).
|
|
243
|
+
*
|
|
244
|
+
* Applies a 50 ms debounce on the same URL to suppress duplicate events
|
|
245
|
+
* caused by `pushState` and `popstate` firing in quick succession. Also
|
|
246
|
+
* resets the `$pageleave` flag so a fresh leave event can be emitted when
|
|
247
|
+
* the user navigates away from this page.
|
|
248
|
+
*
|
|
249
|
+
* Called automatically on navigation when `autocapture` is enabled.
|
|
250
|
+
*
|
|
251
|
+
* @param properties - Extra properties to attach to the pageview event.
|
|
252
|
+
*/
|
|
143
253
|
page(properties) {
|
|
254
|
+
if (!this.queue) {
|
|
255
|
+
console.warn('[Qurvo] SDK not initialized. Call qurvo.init() first.');
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
// Debounce: skip if same URL was tracked within PAGE_DEBOUNCE_MS
|
|
259
|
+
const now = Date.now();
|
|
260
|
+
const currentUrl = window.location.href;
|
|
261
|
+
if (this.lastPageUrl === currentUrl && now - this.lastPageTime < PAGE_DEBOUNCE_MS) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
this.lastPageUrl = currentUrl;
|
|
265
|
+
this.lastPageTime = now;
|
|
266
|
+
// New page navigation — allow a fresh $pageleave on unload
|
|
267
|
+
this.pageLeaveEmitted = false;
|
|
144
268
|
this.track('$pageview', properties);
|
|
145
269
|
}
|
|
270
|
+
/**
|
|
271
|
+
* Track a screen view (`$screen` event).
|
|
272
|
+
*
|
|
273
|
+
* Intended for non-web contexts (e.g. React Native, Telegram Mini Apps)
|
|
274
|
+
* where navigation doesn't map to browser URLs. Sends `$screen_name`
|
|
275
|
+
* inside the event properties.
|
|
276
|
+
*
|
|
277
|
+
* @param screenName - Logical screen name (e.g. `"Settings"`, `"Profile"`).
|
|
278
|
+
* @param properties - Extra properties to attach to the screen event.
|
|
279
|
+
*/
|
|
146
280
|
screen(screenName, properties) {
|
|
147
281
|
this.track('$screen', { $screen_name: screenName, ...properties });
|
|
148
282
|
}
|
|
283
|
+
/**
|
|
284
|
+
* Set user properties on the current user (`$set` event).
|
|
285
|
+
*
|
|
286
|
+
* Properties are always overwritten with the provided values.
|
|
287
|
+
* Use {@link QurvoBrowser.setOnce | setOnce()} to write only if
|
|
288
|
+
* the property has not been set before.
|
|
289
|
+
*
|
|
290
|
+
* @param properties - Key/value pairs to set on the user profile.
|
|
291
|
+
*/
|
|
149
292
|
set(properties) {
|
|
150
|
-
if (!this.queue)
|
|
293
|
+
if (!this.queue) {
|
|
294
|
+
console.warn('[Qurvo] SDK not initialized. Call qurvo.init() first.');
|
|
151
295
|
return;
|
|
296
|
+
}
|
|
152
297
|
const payload = {
|
|
153
298
|
event: '$set',
|
|
154
299
|
distinct_id: this.userId || this.getAnonymousId(),
|
|
@@ -160,9 +305,19 @@ class QurvoBrowser {
|
|
|
160
305
|
};
|
|
161
306
|
this.queue.enqueue(payload);
|
|
162
307
|
}
|
|
308
|
+
/**
|
|
309
|
+
* Set user properties only if they have not been set before (`$set_once` event).
|
|
310
|
+
*
|
|
311
|
+
* Useful for recording first-touch attribution (e.g. `initial_referrer`,
|
|
312
|
+
* `signup_date`) without overwriting values set by earlier events.
|
|
313
|
+
*
|
|
314
|
+
* @param properties - Key/value pairs to set once on the user profile.
|
|
315
|
+
*/
|
|
163
316
|
setOnce(properties) {
|
|
164
|
-
if (!this.queue)
|
|
317
|
+
if (!this.queue) {
|
|
318
|
+
console.warn('[Qurvo] SDK not initialized. Call qurvo.init() first.');
|
|
165
319
|
return;
|
|
320
|
+
}
|
|
166
321
|
const payload = {
|
|
167
322
|
event: '$set_once',
|
|
168
323
|
distinct_id: this.userId || this.getAnonymousId(),
|
|
@@ -174,8 +329,42 @@ class QurvoBrowser {
|
|
|
174
329
|
};
|
|
175
330
|
this.queue.enqueue(payload);
|
|
176
331
|
}
|
|
332
|
+
/**
|
|
333
|
+
* Clear the current user identity.
|
|
334
|
+
*
|
|
335
|
+
* Removes `userId`, `anonymousId`, and `sessionId` from storage so the
|
|
336
|
+
* next event is treated as a brand-new anonymous visitor. Call this on
|
|
337
|
+
* logout to prevent post-logout events from being attributed to the
|
|
338
|
+
* previous user.
|
|
339
|
+
*/
|
|
177
340
|
reset() {
|
|
178
341
|
this.userId = null;
|
|
342
|
+
safeRemoveItem(localStorage, USER_ID_KEY);
|
|
343
|
+
safeRemoveItem(localStorage, ANON_ID_KEY);
|
|
344
|
+
safeRemoveItem(sessionStorage, SESSION_ID_KEY);
|
|
345
|
+
}
|
|
346
|
+
/** Gracefully stop the SDK: flush remaining events, remove all listeners. */
|
|
347
|
+
shutdown() {
|
|
348
|
+
// Remove all registered event listeners
|
|
349
|
+
for (const { target, event, fn } of this.listeners) {
|
|
350
|
+
target.removeEventListener(event, fn);
|
|
351
|
+
}
|
|
352
|
+
this.listeners = [];
|
|
353
|
+
// Restore original history methods
|
|
354
|
+
if (this.originalPushState) {
|
|
355
|
+
history.pushState = this.originalPushState;
|
|
356
|
+
this.originalPushState = null;
|
|
357
|
+
}
|
|
358
|
+
if (this.originalReplaceState) {
|
|
359
|
+
history.replaceState = this.originalReplaceState;
|
|
360
|
+
this.originalReplaceState = null;
|
|
361
|
+
}
|
|
362
|
+
// Shutdown the queue (flush remaining + stop timer)
|
|
363
|
+
if (this.queue) {
|
|
364
|
+
this.queue.shutdown();
|
|
365
|
+
this.queue = null;
|
|
366
|
+
}
|
|
367
|
+
this.initialized = false;
|
|
179
368
|
}
|
|
180
369
|
/** Anonymous ID — always per-device, never namespaced. Links pre-identify events to identified users. */
|
|
181
370
|
getAnonymousId() {
|
|
@@ -186,27 +375,40 @@ class QurvoBrowser {
|
|
|
186
375
|
}
|
|
187
376
|
return id;
|
|
188
377
|
}
|
|
378
|
+
addListener(target, event, fn) {
|
|
379
|
+
target.addEventListener(event, fn);
|
|
380
|
+
this.listeners.push({ target, event, fn });
|
|
381
|
+
}
|
|
189
382
|
setupAutocapture() {
|
|
190
|
-
|
|
383
|
+
this.originalPushState = history.pushState;
|
|
384
|
+
const originalPushState = this.originalPushState;
|
|
191
385
|
history.pushState = (...args) => {
|
|
192
386
|
originalPushState.apply(history, args);
|
|
193
387
|
this.page();
|
|
194
388
|
};
|
|
195
|
-
|
|
389
|
+
// replaceState — intentionally does NOT trigger page() because it replaces
|
|
390
|
+
// the current URL without navigation (e.g. query param updates, scroll restoration)
|
|
391
|
+
this.originalReplaceState = history.replaceState;
|
|
392
|
+
const originalReplaceState = this.originalReplaceState;
|
|
196
393
|
history.replaceState = (...args) => {
|
|
197
394
|
originalReplaceState.apply(history, args);
|
|
198
|
-
this.page();
|
|
199
395
|
};
|
|
200
|
-
|
|
396
|
+
this.addListener(window, 'popstate', () => {
|
|
201
397
|
this.page();
|
|
202
398
|
});
|
|
203
|
-
|
|
399
|
+
this.addListener(window, 'hashchange', () => {
|
|
204
400
|
this.page();
|
|
205
401
|
});
|
|
206
402
|
}
|
|
207
403
|
setupBeaconFlush() {
|
|
208
404
|
const flushForUnload = () => {
|
|
209
|
-
|
|
405
|
+
// Only emit $pageleave once per page — visibilitychange (hidden) and
|
|
406
|
+
// pagehide/beforeunload can both fire on tab close. First call tracks +
|
|
407
|
+
// flushes; subsequent calls only flush remaining queue items.
|
|
408
|
+
if (!this.pageLeaveEmitted) {
|
|
409
|
+
this.track('$pageleave');
|
|
410
|
+
this.pageLeaveEmitted = true;
|
|
411
|
+
}
|
|
210
412
|
if (this.queue && this.queue.size > 0) {
|
|
211
413
|
this.queue.flushForUnload();
|
|
212
414
|
}
|
|
@@ -214,12 +416,25 @@ class QurvoBrowser {
|
|
|
214
416
|
// pagehide is more reliable than beforeunload in mobile webviews (Telegram, TikTok, etc.)
|
|
215
417
|
// see https://calendar.perfplanet.com/2020/beaconing-in-practice/#beaconing-reliability-avoiding-abandons
|
|
216
418
|
const unloadEvent = 'onpagehide' in self ? 'pagehide' : 'beforeunload';
|
|
217
|
-
|
|
218
|
-
|
|
419
|
+
this.addListener(window, unloadEvent, flushForUnload);
|
|
420
|
+
this.addListener(document, 'visibilitychange', () => {
|
|
219
421
|
if (document.visibilityState === 'hidden')
|
|
220
422
|
flushForUnload();
|
|
221
423
|
});
|
|
222
424
|
}
|
|
223
425
|
}
|
|
426
|
+
/**
|
|
427
|
+
* Default SDK instance.
|
|
428
|
+
*
|
|
429
|
+
* Import and call `qurvo.init({ apiKey })` to start capturing events.
|
|
430
|
+
*
|
|
431
|
+
* @example
|
|
432
|
+
* ```ts
|
|
433
|
+
* import { qurvo } from '@qurvo/sdk-browser';
|
|
434
|
+
*
|
|
435
|
+
* qurvo.init({ apiKey: 'pk_...' });
|
|
436
|
+
* qurvo.track('signup', { plan: 'pro' });
|
|
437
|
+
* ```
|
|
438
|
+
*/
|
|
224
439
|
exports.qurvo = new QurvoBrowser();
|
|
225
440
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAA2C;AAC3C,8CAA6D;AAE7D,uCAAwC;AAExC,MAAM,QAAQ,GAAG,oBAAoB,CAAC;AACtC,MAAM,WAAW,GAAG,oBAAoB,CAAC;AACzC,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAC1C,MAAM,WAAW,GAAG,eAAe,CAAC;AAEpC,SAAS,WAAW,CAAC,OAAgB,EAAE,GAAW;IAChD,IAAI,CAAC;QAAC,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AAC7D,CAAC;AACD,SAAS,WAAW,CAAC,OAAgB,EAAE,GAAW,EAAE,KAAa;IAC/D,IAAI,CAAC;QAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,EAAE,GAAG,WAAW,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,EAAE,GAAG,UAAU,EAAE,CAAC;QAClB,WAAW,CAAC,cAAc,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,UAAU;IACjB,OAAO;QACL,UAAU,EAAE,YAAY,EAAE;QAC1B,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;QACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,UAAU,EAAE,QAAQ,CAAC,KAAK;QAC1B,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;QACnC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;QACjC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;QACnC,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ;QAC1D,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,qBAAW;KACzB,CAAC;AACJ,CAAC;AAYD,MAAM,YAAY;IACR,KAAK,GAAsB,IAAI,CAAC;IAChC,MAAM,GAAkB,IAAI,CAAC;IAC7B,WAAW,GAAG,KAAK,CAAC;IAE5B,IAAI,CAAC,MAAwB;QAC3B,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,iFAAiF;QACjF,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;YAChC,WAAW,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,uBAAuB,CAAC;QAC5D,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;YACtC,MAAM,UAAU,GAAG,IAAA,iBAAQ,EAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACzD,OAAO,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,MAAqB,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAC9E,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,yBAAc,CAAC,QAAQ,CAAC,CAAC;QAE/C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;QAC5E,MAAM,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,6BAA6B;QACxE,MAAM,WAAW,GAAqB;YACpC,IAAI,CAAC,MAAM;gBACT,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxB,IAAI,CAAC;wBAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;oBAC/D,OAAO;gBACT,CAAC;gBACD,WAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI;gBACF,MAAM,GAAG,GAAG,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;gBAChD,IAAI,CAAC,GAAG;oBAAE,OAAO,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;wBAAE,OAAO,EAAE,CAAC;oBACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC;oBAC1C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE;wBAC9B,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC;wBACxB,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC;oBAC/C,CAAC,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;SACF,CAAC;QAEF,IAAI,CAAC,KAAK,GAAG,IAAI,qBAAU,CACzB,SAAS,EACT,GAAG,QAAQ,WAAW,EACtB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,aAAa,IAAI,IAAI,EAC5B,MAAM,CAAC,SAAS,IAAI,EAAE,EACtB,IAAI,EACJ,MAAM,EACN,SAAS,EACT,WAAW,CACZ,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YACjC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAa,EAAE,UAAoC;QACvD,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAExB,MAAM,OAAO,GAAiB;YAC5B,KAAK;YACL,WAAW,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;YACjD,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE;YACnC,UAAU;YACV,OAAO,EAAE,UAAU,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,UAAU,EAAE;SACvB,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,QAAQ,CAAC,MAAc,EAAE,cAAwC;QAC/D,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAExB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,WAAW,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAiB;YAC5B,KAAK,EAAE,WAAW;YAClB,WAAW,EAAE,MAAM;YACnB,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE;YACnC,eAAe,EAAE,cAAc;YAC/B,OAAO,EAAE,UAAU,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,UAAU,EAAE;SACvB,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,UAAoC;QACvC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,UAAkB,EAAE,UAAoC;QAC7D,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,GAAG,CAAC,UAAmC;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAExB,MAAM,OAAO,GAAiB;YAC5B,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;YACjD,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE;YACnC,eAAe,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;YACrC,OAAO,EAAE,UAAU,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,UAAU,EAAE;SACvB,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,UAAmC;QACzC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAExB,MAAM,OAAO,GAAiB;YAC5B,KAAK,EAAE,WAAW;YAClB,WAAW,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;YACjD,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE;YACnC,eAAe,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;YAC1C,OAAO,EAAE,UAAU,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,UAAU,EAAE;SACvB,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,yGAAyG;IACjG,cAAc;QACpB,IAAI,EAAE,GAAG,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,EAAE,GAAG,UAAU,EAAE,CAAC;YAClB,WAAW,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,gBAAgB;QACtB,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;QAC5C,OAAO,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE;YAC9B,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC,CAAC;QAEF,MAAM,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC;QAClD,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE;YACjC,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE;YACvC,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE;YACzC,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB;QACtB,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACzB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC;QAEF,0FAA0F;QAC1F,0GAA0G;QAC1G,MAAM,WAAW,GAAG,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC;QACvE,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAErD,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,EAAE;YACjD,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ;gBAAE,cAAc,EAAE,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAEY,QAAA,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAA2C;AAC3C,8CAA6D;AAE7D,uCAAwC;AACxC,+BAAqC;AAErC,MAAM,QAAQ,GAAG,oBAAoB,CAAC;AACtC,MAAM,WAAW,GAAG,oBAAoB,CAAC;AACzC,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAC1C,MAAM,WAAW,GAAG,eAAe,CAAC;AAEpC,6EAA6E;AAC7E,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,SAAS,WAAW,CAAC,OAAgB,EAAE,GAAW;IAChD,IAAI,CAAC;QAAC,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AAC7D,CAAC;AACD,SAAS,WAAW,CAAC,OAAgB,EAAE,GAAW,EAAE,KAAa;IAC/D,IAAI,CAAC;QAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;AAC3D,CAAC;AACD,SAAS,cAAc,CAAC,OAAgB,EAAE,GAAW;IACnD,IAAI,CAAC;QAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,EAAE,GAAG,WAAW,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,EAAE,GAAG,UAAU,EAAE,CAAC;QAClB,WAAW,CAAC,cAAc,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,UAAU;IACjB,OAAO;QACL,UAAU,EAAE,YAAY,EAAE;QAC1B,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;QACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,UAAU,EAAE,QAAQ,CAAC,KAAK;QAC1B,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;QACnC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;QACjC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;QACnC,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ;QAC1D,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,qBAAW;KACzB,CAAC;AACJ,CAAC;AAwBD;;;;;;;;;GASG;AACH,MAAM,YAAY;IACR,KAAK,GAAsB,IAAI,CAAC;IAChC,MAAM,GAAkB,IAAI,CAAC;IAC7B,WAAW,GAAG,KAAK,CAAC;IAE5B,4EAA4E;IACpE,WAAW,GAAkB,IAAI,CAAC;IAClC,YAAY,GAAG,CAAC,CAAC;IAEzB,6EAA6E;IACrE,gBAAgB,GAAG,KAAK,CAAC;IAEjC,2DAA2D;IACnD,SAAS,GAAqE,EAAE,CAAC;IACzF,+DAA+D;IACvD,iBAAiB,GAAoC,IAAI,CAAC;IAC1D,oBAAoB,GAAuC,IAAI,CAAC;IAExE;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,MAAwB;QAC3B,gFAAgF;QAChF,iFAAiF;QACjF,IAAI,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC1C,MAAM,cAAc,GAAG,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAC9D,IAAI,cAAc,IAAI,cAAc,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC3D,4CAA4C;gBAC5C,cAAc,CAAC,YAAY,EAAE,eAAe,cAAc,EAAE,CAAC,CAAC;gBAC9D,kEAAkE;gBAClE,cAAc,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;gBAC1C,cAAc,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;gBAC/C,2DAA2D;gBAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,wCAAwC;YAClD,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,iFAAiF;QACjF,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;YAChC,WAAW,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,uBAAuB,CAAC;QAC5D,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;YACtC,MAAM,UAAU,GAAG,IAAA,iBAAQ,EAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACzD,OAAO,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,MAAqB,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAC9E,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,yBAAc,CAAC,QAAQ,CAAC,CAAC;QAE/C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;QAC5E,MAAM,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,6BAA6B;QACxE,MAAM,WAAW,GAAqB;YACpC,IAAI,CAAC,MAAM;gBACT,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxB,IAAI,CAAC;wBAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;oBAC/D,OAAO;gBACT,CAAC;gBACD,WAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI;gBACF,MAAM,GAAG,GAAG,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;gBAChD,IAAI,CAAC,GAAG;oBAAE,OAAO,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;wBAAE,OAAO,EAAE,CAAC;oBACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC;oBAC1C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE;wBAC9B,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC;wBACxB,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC;oBAC/C,CAAC,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;SACF,CAAC;QAEF,IAAI,CAAC,KAAK,GAAG,IAAI,qBAAU,CACzB,SAAS,EACT,GAAG,QAAQ,WAAW,EACtB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,aAAa,IAAI,IAAI,EAC5B,MAAM,CAAC,SAAS,IAAI,EAAE,EACtB,IAAI,EACJ,MAAM,EACN,SAAS,EACT,WAAW,CACZ,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YACjC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,KAAa,EAAE,UAAoC;QACvD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QAED,2EAA2E;QAC3E,MAAM,GAAG,GAAG,IAAA,kBAAY,GAAE,CAAC;QAC3B,MAAM,gBAAgB,GACpB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;QAEvE,MAAM,OAAO,GAAiB;YAC5B,KAAK;YACL,WAAW,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;YACjD,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE;YACnC,UAAU,EAAE,gBAAgB;YAC5B,OAAO,EAAE,UAAU,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,UAAU,EAAE;SACvB,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,MAAc,EAAE,cAAwC;QAC/D,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QAED,yEAAyE;QACzE,4DAA4D;QAC5D,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,WAAW,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAiB;YAC5B,KAAK,EAAE,WAAW;YAClB,WAAW,EAAE,MAAM;YACnB,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE;YACnC,eAAe,EAAE,cAAc;YAC/B,OAAO,EAAE,UAAU,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,UAAU,EAAE;SACvB,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,UAAoC;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QAED,iEAAiE;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QACxC,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,gBAAgB,EAAE,CAAC;YAClF,OAAO;QACT,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QAExB,2DAA2D;QAC3D,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAE9B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,UAAkB,EAAE,UAAoC;QAC7D,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;;;OAQG;IACH,GAAG,CAAC,UAAmC;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAiB;YAC5B,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;YACjD,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE;YACnC,eAAe,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;YACrC,OAAO,EAAE,UAAU,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,UAAU,EAAE;SACvB,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,UAAmC;QACzC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAiB;YAC5B,KAAK,EAAE,WAAW;YAClB,WAAW,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;YACjD,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE;YACnC,eAAe,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;YAC1C,OAAO,EAAE,UAAU,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,UAAU,EAAE;SACvB,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,cAAc,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAC1C,cAAc,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAC1C,cAAc,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IACjD,CAAC;IAED,6EAA6E;IAC7E,QAAQ;QACN,wCAAwC;QACxC,KAAK,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnD,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QAEpB,mCAAmC;QACnC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAC3C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC;QACD,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACjD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACnC,CAAC;QAED,oDAAoD;QACpD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,yGAAyG;IACjG,cAAc;QACpB,IAAI,EAAE,GAAG,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,EAAE,GAAG,UAAU,EAAE,CAAC;YAClB,WAAW,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,WAAW,CAAC,MAAmB,EAAE,KAAa,EAAE,EAAiB;QACvE,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;QAC3C,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACjD,OAAO,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE;YAC9B,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC,CAAC;QAEF,2EAA2E;QAC3E,oFAAoF;QACpF,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC;QACjD,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACvD,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE;YACjC,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE;YACxC,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE;YAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB;QACtB,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,qEAAqE;YACrE,wEAAwE;YACxE,8DAA8D;YAC9D,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC3B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBACzB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC/B,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC;QAEF,0FAA0F;QAC1F,0GAA0G;QAC1G,MAAM,WAAW,GAAG,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC;QACvE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;QAEtD,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,EAAE;YAClD,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ;gBAAE,cAAc,EAAE,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;;;;;;;;;;GAYG;AACU,QAAA,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":""}
|