@cef-ai/vault-sdk 5.4.0 → 5.4.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.
|
@@ -13,6 +13,12 @@ export interface SubscribeOptions {
|
|
|
13
13
|
pageSize?: number;
|
|
14
14
|
/** Hook for poll-error observation. Default: console.warn. */
|
|
15
15
|
onError?: (err: unknown) => void;
|
|
16
|
+
/**
|
|
17
|
+
* Back off on consecutive poll errors: the wait doubles from `intervalMs`
|
|
18
|
+
* up to this ceiling, and drops back to `intervalMs` on the next success.
|
|
19
|
+
* Absent means no backoff — every poll waits `intervalMs`, as before.
|
|
20
|
+
*/
|
|
21
|
+
maxBackoffMs?: number;
|
|
16
22
|
}
|
|
17
23
|
export interface Subscription {
|
|
18
24
|
unsubscribe(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["../../src/fluent/subscribe.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["../../src/fluent/subscribe.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,IAAI,IAAI,CAAC;IACpB,gEAAgE;IAChE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE3F,wBAAgB,SAAS,CAAC,CAAC,GAAG,OAAO,EACnC,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC5B,IAAI,GAAE,gBAAqB,GAC1B,YAAY,CAgEd"}
|
package/dist/fluent/subscribe.js
CHANGED
|
@@ -5,35 +5,58 @@ export function subscribe(http, vaultId, scope, filter, handler, opts = {}) {
|
|
|
5
5
|
const pageSize = opts.pageSize ?? 100;
|
|
6
6
|
const onError = opts.onError ?? ((e) => { console.warn("[vault-sdk] subscribe poll failed:", e); });
|
|
7
7
|
const seen = new Set();
|
|
8
|
-
let cursor;
|
|
9
8
|
let stopped = false;
|
|
9
|
+
let failures = 0;
|
|
10
10
|
let closeResolve;
|
|
11
11
|
const closed = new Promise((r) => (closeResolve = r));
|
|
12
|
+
/*
|
|
13
|
+
* ONE POLL READS THE STREAM TO ITS END, AND THE NEXT ONE STARTS OVER.
|
|
14
|
+
*
|
|
15
|
+
* vault-api's cursor pages a SNAPSHOT taken by the first request (the NATS
|
|
16
|
+
* tail's ids are pinned into it), not a live position: the last page comes
|
|
17
|
+
* back with no cursor, and replaying an earlier cursor only re-serves that
|
|
18
|
+
* frozen page. Keeping the last cursor between polls therefore stopped
|
|
19
|
+
* delivery for good once a stream ever needed a second page — every later
|
|
20
|
+
* poll re-read the same old snapshot. So a poll drains every page now, and
|
|
21
|
+
* the next poll asks afresh; `seen` is what keeps that from re-delivering.
|
|
22
|
+
*/
|
|
23
|
+
const poll = async () => {
|
|
24
|
+
let cursor;
|
|
25
|
+
do {
|
|
26
|
+
const page = await browse.listStreamEvents(vaultId, scope, filter.context, {
|
|
27
|
+
cursor, limit: pageSize,
|
|
28
|
+
});
|
|
29
|
+
for (const event of page.items) {
|
|
30
|
+
if (stopped)
|
|
31
|
+
return;
|
|
32
|
+
if (seen.has(event.eventId))
|
|
33
|
+
continue;
|
|
34
|
+
seen.add(event.eventId);
|
|
35
|
+
if (filter.types && !filter.types.includes(event.type))
|
|
36
|
+
continue;
|
|
37
|
+
if (filter.from && !filter.from.includes(event.from ?? ""))
|
|
38
|
+
continue;
|
|
39
|
+
await handler(event);
|
|
40
|
+
}
|
|
41
|
+
cursor = page.hasMore && page.nextCursor ? page.nextCursor : undefined;
|
|
42
|
+
} while (cursor && !stopped);
|
|
43
|
+
};
|
|
12
44
|
const tick = async () => {
|
|
13
45
|
while (!stopped) {
|
|
14
46
|
try {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
});
|
|
18
|
-
for (const event of page.items) {
|
|
19
|
-
if (seen.has(event.eventId))
|
|
20
|
-
continue;
|
|
21
|
-
seen.add(event.eventId);
|
|
22
|
-
if (filter.types && !filter.types.includes(event.type))
|
|
23
|
-
continue;
|
|
24
|
-
if (filter.from && !filter.from.includes(event.from ?? ""))
|
|
25
|
-
continue;
|
|
26
|
-
await handler(event);
|
|
27
|
-
}
|
|
28
|
-
if (page.nextCursor)
|
|
29
|
-
cursor = page.nextCursor;
|
|
47
|
+
await poll();
|
|
48
|
+
failures = 0;
|
|
30
49
|
}
|
|
31
50
|
catch (err) {
|
|
51
|
+
failures++;
|
|
32
52
|
onError(err);
|
|
33
53
|
}
|
|
34
54
|
if (stopped)
|
|
35
55
|
break;
|
|
36
|
-
|
|
56
|
+
const wait = opts.maxBackoffMs && failures > 0
|
|
57
|
+
? Math.min(interval * 2 ** failures, opts.maxBackoffMs)
|
|
58
|
+
: interval;
|
|
59
|
+
await new Promise((r) => setTimeout(r, wait));
|
|
37
60
|
}
|
|
38
61
|
closeResolve();
|
|
39
62
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribe.js","sourceRoot":"","sources":["../../src/fluent/subscribe.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"subscribe.js","sourceRoot":"","sources":["../../src/fluent/subscribe.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cef-ai/vault-sdk",
|
|
3
|
-
"version": "5.4.
|
|
3
|
+
"version": "5.4.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
"@polkadot/util": "^14.0.3",
|
|
27
27
|
"@polkadot/util-crypto": "^14.0.3",
|
|
28
28
|
"@cef-ai/account": "2.0.0",
|
|
29
|
-
"@cef-ai/
|
|
30
|
-
"@cef-ai/
|
|
29
|
+
"@cef-ai/transport": "1.1.0",
|
|
30
|
+
"@cef-ai/signer": "1.0.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@types/node": "^20.11.0",
|