@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;CAClC;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,CAwCd"}
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"}
@@ -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
- const page = await browse.listStreamEvents(vaultId, scope, filter.context, {
16
- cursor, limit: pageSize,
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
- await new Promise((r) => setTimeout(r, interval));
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;AA2B/C,MAAM,UAAU,SAAS,CACvB,IAAqB,EACrB,OAAe,EACf,KAAa,EACb,MAAuB,EACvB,OAA4B,EAC5B,OAAyB,EAAE;IAE3B,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpG,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,MAA0B,CAAC;IAC/B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,YAAyB,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;IAE5D,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;QACrC,OAAO,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAI,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE;oBAC5E,MAAM,EAAE,KAAK,EAAE,QAAQ;iBACxB,CAAC,CAAC;gBACH,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;wBAAE,SAAS;oBACtC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACxB,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;wBAAE,SAAS;oBACjE,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;wBAAE,SAAS;oBACrE,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;gBACD,IAAI,IAAI,CAAC,UAAU;oBAAE,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;YAChD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,CAAC;YACf,CAAC;YACD,IAAI,OAAO;gBAAE,MAAM;YACnB,MAAM,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC1D,CAAC;QACD,YAAY,EAAE,CAAC;IACjB,CAAC,CAAC;IAEF,KAAK,IAAI,EAAE,CAAC;IAEZ,OAAO;QACL,WAAW,KAAK,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;QACjC,MAAM;KACP,CAAC;AACJ,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.0",
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/signer": "1.0.0",
30
- "@cef-ai/transport": "1.1.0"
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",