@qurvo/sdk-core 0.0.8 → 0.0.10
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 +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/queue.d.ts +5 -2
- package/dist/queue.d.ts.map +1 -1
- package/dist/queue.js +46 -13
- package/dist/queue.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { SdkConfig, EventPayload, EventContext, Transport, SendOptions, CompressFn, LogFn } from './types';
|
|
1
|
+
export type { SdkConfig, EventPayload, EventContext, Transport, SendOptions, CompressFn, LogFn, QueuePersistence } from './types';
|
|
2
2
|
export { QuotaExceededError, NonRetryableError } from './types';
|
|
3
3
|
export { EventQueue } from './queue';
|
|
4
4
|
export { FetchTransport } from './fetch-transport';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAClI,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/queue.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Transport, LogFn } from './types';
|
|
1
|
+
import type { Transport, LogFn, QueuePersistence } from './types';
|
|
2
2
|
export declare class EventQueue {
|
|
3
3
|
private readonly transport;
|
|
4
4
|
private readonly endpoint;
|
|
@@ -8,13 +8,15 @@ export declare class EventQueue {
|
|
|
8
8
|
private readonly maxQueueSize;
|
|
9
9
|
private readonly sendTimeoutMs;
|
|
10
10
|
private readonly logger?;
|
|
11
|
+
private readonly persistence?;
|
|
11
12
|
private queue;
|
|
12
13
|
private timer;
|
|
13
14
|
private flushing;
|
|
15
|
+
private inFlightBatch;
|
|
14
16
|
private failureCount;
|
|
15
17
|
private retryAfter;
|
|
16
18
|
private readonly maxBackoffMs;
|
|
17
|
-
constructor(transport: Transport, endpoint: string, apiKey: string, flushInterval?: number, flushSize?: number, maxQueueSize?: number, sendTimeoutMs?: number, logger?: LogFn | undefined);
|
|
19
|
+
constructor(transport: Transport, endpoint: string, apiKey: string, flushInterval?: number, flushSize?: number, maxQueueSize?: number, sendTimeoutMs?: number, logger?: LogFn | undefined, persistence?: QueuePersistence | undefined);
|
|
18
20
|
enqueue(event: unknown): void;
|
|
19
21
|
start(): void;
|
|
20
22
|
stop(): void;
|
|
@@ -24,5 +26,6 @@ export declare class EventQueue {
|
|
|
24
26
|
shutdown(timeoutMs?: number): Promise<void>;
|
|
25
27
|
flushForUnload(): void;
|
|
26
28
|
get size(): number;
|
|
29
|
+
private persist;
|
|
27
30
|
}
|
|
28
31
|
//# sourceMappingURL=queue.d.ts.map
|
package/dist/queue.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGlE,qBAAa,UAAU;IAUnB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAjB/B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;gBAGpB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,MAAa,EAC5B,SAAS,GAAE,MAAW,EACtB,YAAY,GAAE,MAAa,EAC3B,aAAa,GAAE,MAAe,EAC9B,MAAM,CAAC,EAAE,KAAK,YAAA,EACd,WAAW,CAAC,EAAE,gBAAgB,YAAA;IAejD,OAAO,CAAC,KAAK,EAAE,OAAO;IAatB,KAAK;IAKL,IAAI;IAOE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiD5B,OAAO,CAAC,eAAe;IAMjB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAUzB,QAAQ,CAAC,SAAS,GAAE,MAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IASzD,cAAc,IAAI,IAAI;IAatB,IAAI,IAAI,WAEP;IAED,OAAO,CAAC,OAAO;CAOhB"}
|
package/dist/queue.js
CHANGED
|
@@ -11,13 +11,15 @@ class EventQueue {
|
|
|
11
11
|
maxQueueSize;
|
|
12
12
|
sendTimeoutMs;
|
|
13
13
|
logger;
|
|
14
|
+
persistence;
|
|
14
15
|
queue = [];
|
|
15
16
|
timer = null;
|
|
16
17
|
flushing = false;
|
|
18
|
+
inFlightBatch = null;
|
|
17
19
|
failureCount = 0;
|
|
18
20
|
retryAfter = 0;
|
|
19
21
|
maxBackoffMs = 30_000;
|
|
20
|
-
constructor(transport, endpoint, apiKey, flushInterval = 5000, flushSize = 20, maxQueueSize = 1000, sendTimeoutMs = 30_000, logger) {
|
|
22
|
+
constructor(transport, endpoint, apiKey, flushInterval = 5000, flushSize = 20, maxQueueSize = 1000, sendTimeoutMs = 30_000, logger, persistence) {
|
|
21
23
|
this.transport = transport;
|
|
22
24
|
this.endpoint = endpoint;
|
|
23
25
|
this.apiKey = apiKey;
|
|
@@ -26,6 +28,19 @@ class EventQueue {
|
|
|
26
28
|
this.maxQueueSize = maxQueueSize;
|
|
27
29
|
this.sendTimeoutMs = sendTimeoutMs;
|
|
28
30
|
this.logger = logger;
|
|
31
|
+
this.persistence = persistence;
|
|
32
|
+
if (this.persistence) {
|
|
33
|
+
try {
|
|
34
|
+
const persisted = this.persistence.load();
|
|
35
|
+
if (persisted.length > 0) {
|
|
36
|
+
this.queue.push(...persisted);
|
|
37
|
+
this.logger?.(`restored ${persisted.length} events from persistence`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
this.logger?.('failed to restore persisted events');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
29
44
|
}
|
|
30
45
|
enqueue(event) {
|
|
31
46
|
if (this.queue.length >= this.maxQueueSize) {
|
|
@@ -33,6 +48,7 @@ class EventQueue {
|
|
|
33
48
|
this.logger?.(`queue full (${this.maxQueueSize}), oldest event dropped`);
|
|
34
49
|
}
|
|
35
50
|
this.queue.push(event);
|
|
51
|
+
this.persist();
|
|
36
52
|
if (this.queue.length >= this.flushSize) {
|
|
37
53
|
this.flush();
|
|
38
54
|
}
|
|
@@ -54,17 +70,17 @@ class EventQueue {
|
|
|
54
70
|
if (Date.now() < this.retryAfter)
|
|
55
71
|
return;
|
|
56
72
|
this.flushing = true;
|
|
57
|
-
|
|
73
|
+
this.inFlightBatch = this.queue.splice(0, this.flushSize);
|
|
58
74
|
try {
|
|
59
75
|
const controller = new AbortController();
|
|
60
76
|
const timeout = setTimeout(() => controller.abort(), this.sendTimeoutMs);
|
|
61
77
|
try {
|
|
62
|
-
const ok = await this.transport.send(this.endpoint, this.apiKey, { events:
|
|
78
|
+
const ok = await this.transport.send(this.endpoint, this.apiKey, { events: this.inFlightBatch, sent_at: new Date().toISOString() }, { signal: controller.signal });
|
|
63
79
|
if (!ok) {
|
|
64
|
-
this.queue.unshift(...
|
|
80
|
+
this.queue.unshift(...this.inFlightBatch);
|
|
65
81
|
this.scheduleBackoff();
|
|
66
82
|
const backoffMs = Math.min(1000 * Math.pow(2, this.failureCount - 1), this.maxBackoffMs);
|
|
67
|
-
this.logger?.(`flush failed, ${
|
|
83
|
+
this.logger?.(`flush failed, ${this.inFlightBatch.length} events re-queued, retry in ${backoffMs}ms`);
|
|
68
84
|
}
|
|
69
85
|
else {
|
|
70
86
|
this.failureCount = 0;
|
|
@@ -78,21 +94,23 @@ class EventQueue {
|
|
|
78
94
|
catch (err) {
|
|
79
95
|
if (err instanceof types_1.QuotaExceededError) {
|
|
80
96
|
this.queue.length = 0;
|
|
97
|
+
this.inFlightBatch = null;
|
|
81
98
|
this.stop();
|
|
82
99
|
this.logger?.('quota exceeded, events dropped and queue stopped');
|
|
83
100
|
}
|
|
84
101
|
else if (err instanceof types_1.NonRetryableError) {
|
|
85
|
-
|
|
86
|
-
this.logger?.(`non-retryable error (${err.statusCode}), ${batch.length} events dropped`, err);
|
|
102
|
+
this.logger?.(`non-retryable error (${err.statusCode}), ${this.inFlightBatch.length} events dropped`, err);
|
|
87
103
|
}
|
|
88
104
|
else {
|
|
89
|
-
this.queue.unshift(...
|
|
105
|
+
this.queue.unshift(...this.inFlightBatch);
|
|
90
106
|
this.scheduleBackoff();
|
|
91
|
-
this.logger?.(`flush error, ${
|
|
107
|
+
this.logger?.(`flush error, ${this.inFlightBatch.length} events re-queued`, err);
|
|
92
108
|
}
|
|
93
109
|
}
|
|
94
110
|
finally {
|
|
111
|
+
this.inFlightBatch = null;
|
|
95
112
|
this.flushing = false;
|
|
113
|
+
this.persist();
|
|
96
114
|
}
|
|
97
115
|
}
|
|
98
116
|
scheduleBackoff() {
|
|
@@ -112,7 +130,7 @@ class EventQueue {
|
|
|
112
130
|
}
|
|
113
131
|
async shutdown(timeoutMs = 30_000) {
|
|
114
132
|
this.stop();
|
|
115
|
-
if (this.
|
|
133
|
+
if (this.size === 0)
|
|
116
134
|
return;
|
|
117
135
|
await Promise.race([
|
|
118
136
|
this.flushAll(),
|
|
@@ -120,13 +138,28 @@ class EventQueue {
|
|
|
120
138
|
]);
|
|
121
139
|
}
|
|
122
140
|
flushForUnload() {
|
|
123
|
-
|
|
141
|
+
// If a flush() is already in-flight, don't re-send those events — they are
|
|
142
|
+
// being delivered by the ongoing fetch. Only grab remaining queue items.
|
|
143
|
+
const batch = this.flushing
|
|
144
|
+
? this.queue.splice(0)
|
|
145
|
+
: [...(this.inFlightBatch || []), ...this.queue.splice(0)];
|
|
146
|
+
if (!this.flushing)
|
|
147
|
+
this.inFlightBatch = null;
|
|
148
|
+
this.persist();
|
|
149
|
+
if (batch.length === 0)
|
|
124
150
|
return;
|
|
125
|
-
const batch = this.queue.splice(0);
|
|
126
151
|
this.transport.send(this.endpoint, this.apiKey, { events: batch, sent_at: new Date().toISOString() }, { keepalive: true }).catch(() => { });
|
|
127
152
|
}
|
|
128
153
|
get size() {
|
|
129
|
-
return this.queue.length;
|
|
154
|
+
return this.queue.length + (this.inFlightBatch?.length || 0);
|
|
155
|
+
}
|
|
156
|
+
persist() {
|
|
157
|
+
try {
|
|
158
|
+
this.persistence?.save(this.queue);
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
// persistence is best-effort
|
|
162
|
+
}
|
|
130
163
|
}
|
|
131
164
|
}
|
|
132
165
|
exports.EventQueue = EventQueue;
|
package/dist/queue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":";;;AACA,mCAAgE;AAEhE,MAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export interface EventPayload {
|
|
|
14
14
|
user_properties?: Record<string, unknown>;
|
|
15
15
|
context?: EventContext;
|
|
16
16
|
timestamp?: string;
|
|
17
|
+
event_id?: string;
|
|
17
18
|
}
|
|
18
19
|
export interface EventContext {
|
|
19
20
|
session_id?: string;
|
|
@@ -38,6 +39,10 @@ export interface SendOptions {
|
|
|
38
39
|
signal?: AbortSignal;
|
|
39
40
|
}
|
|
40
41
|
export type LogFn = (message: string, error?: unknown) => void;
|
|
42
|
+
export interface QueuePersistence {
|
|
43
|
+
save(events: unknown[]): void;
|
|
44
|
+
load(): unknown[];
|
|
45
|
+
}
|
|
41
46
|
export type CompressFn = (data: string) => Promise<Blob>;
|
|
42
47
|
export interface Transport {
|
|
43
48
|
send(endpoint: string, apiKey: string, payload: unknown, options?: SendOptions): Promise<boolean>;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC9B,IAAI,IAAI,OAAO,EAAE,CAAC;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzD,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACnG;AAED,qBAAa,kBAAmB,SAAQ,KAAK;;CAK5C;AAED,uEAAuE;AACvE,qBAAa,iBAAkB,SAAQ,KAAK;aACd,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAIhE"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AA0DA,MAAa,kBAAmB,SAAQ,KAAK;IAC3C;QACE,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AALD,gDAKC;AAED,uEAAuE;AACvE,MAAa,iBAAkB,SAAQ,KAAK;IACd;IAA5B,YAA4B,UAAkB,EAAE,OAAe;QAC7D,KAAK,CAAC,OAAO,CAAC,CAAC;QADW,eAAU,GAAV,UAAU,CAAQ;QAE5C,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AALD,8CAKC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qurvo/sdk-core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.10",
|
|
4
4
|
"description": "Core transport and event queue for Qurvo analytics SDKs",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
15
|
"typescript": "^5.7.0",
|
|
16
|
+
"vitest": "^4.0.18",
|
|
16
17
|
"@qurvo/tsconfig": "0.0.0"
|
|
17
18
|
},
|
|
18
19
|
"scripts": {
|