@pkcprotocol/pkc-js 0.0.93 → 0.0.95

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.
Files changed (75) hide show
  1. package/dist/browser/clients/base-client-manager.d.ts +1 -0
  2. package/dist/browser/clients/base-client-manager.js +7 -1
  3. package/dist/browser/clients/base-client-manager.js.map +1 -1
  4. package/dist/browser/clients/rpc-client/pkc-rpc-client.d.ts +1 -0
  5. package/dist/browser/clients/rpc-client/pkc-rpc-client.js +27 -1
  6. package/dist/browser/clients/rpc-client/pkc-rpc-client.js.map +1 -1
  7. package/dist/browser/community/community-client-manager.d.ts +17 -0
  8. package/dist/browser/community/community-client-manager.js +328 -31
  9. package/dist/browser/community/community-client-manager.js.map +1 -1
  10. package/dist/browser/community/remote-community.js +7 -0
  11. package/dist/browser/community/remote-community.js.map +1 -1
  12. package/dist/browser/generated-version.d.ts +1 -1
  13. package/dist/browser/generated-version.js +1 -1
  14. package/dist/browser/helia/helia-for-pkc.d.ts +1 -0
  15. package/dist/browser/helia/helia-for-pkc.js +154 -5
  16. package/dist/browser/helia/helia-for-pkc.js.map +1 -1
  17. package/dist/browser/helia/libp2pjsClient.d.ts +3 -1
  18. package/dist/browser/helia/libp2pjsClient.js +1 -0
  19. package/dist/browser/helia/libp2pjsClient.js.map +1 -1
  20. package/dist/browser/helia/types.d.ts +25 -0
  21. package/dist/browser/helia/util.d.ts +3 -1
  22. package/dist/browser/helia/util.js +33 -2
  23. package/dist/browser/helia/util.js.map +1 -1
  24. package/dist/browser/rpc/src/index.d.ts +2 -0
  25. package/dist/browser/rpc/src/index.js +52 -19
  26. package/dist/browser/rpc/src/index.js.map +1 -1
  27. package/dist/browser/test/test-util.d.ts +353 -5
  28. package/dist/browser/test/test-util.js +88 -5
  29. package/dist/browser/test/test-util.js.map +1 -1
  30. package/dist/browser/util.d.ts +7 -0
  31. package/dist/browser/util.js +21 -11
  32. package/dist/browser/util.js.map +1 -1
  33. package/dist/bundled/bundle-manifest.json +31 -31
  34. package/dist/bundled/chunks/{helia-for-pkc-C8tOPlIj.js → helia-for-pkc-gnrYOd9S.js} +74 -4
  35. package/dist/bundled/chunks/{local-community-DgbMuVAA.js → local-community-B2tgEzEC.js} +2 -2
  36. package/dist/bundled/chunks/{local-community-DYEWq5rq.js → local-community-C-EhIxnP.js} +1 -1
  37. package/dist/bundled/chunks/{node-BrLiC0qX.js → node-BgrW8YM1.js} +21 -6
  38. package/dist/bundled/chunks/{rpc-local-community-DOSee621.js → rpc-local-community-1IZANITv.js} +158 -18
  39. package/dist/bundled/chunks/{schema-HH2zeH-j.js → schema-r1qeoNNd.js} +29 -12
  40. package/dist/bundled/chunks/{util-DSIDv1Cb.js → util-Dng2qrAF.js} +13 -4
  41. package/dist/bundled/index.js +1 -1
  42. package/dist/bundled/rpc/src/index.js +43 -22
  43. package/dist/node/clients/base-client-manager.d.ts +1 -0
  44. package/dist/node/clients/base-client-manager.js +7 -1
  45. package/dist/node/clients/base-client-manager.js.map +1 -1
  46. package/dist/node/clients/rpc-client/pkc-rpc-client.d.ts +1 -0
  47. package/dist/node/clients/rpc-client/pkc-rpc-client.js +27 -1
  48. package/dist/node/clients/rpc-client/pkc-rpc-client.js.map +1 -1
  49. package/dist/node/community/community-client-manager.d.ts +17 -0
  50. package/dist/node/community/community-client-manager.js +328 -31
  51. package/dist/node/community/community-client-manager.js.map +1 -1
  52. package/dist/node/community/remote-community.js +7 -0
  53. package/dist/node/community/remote-community.js.map +1 -1
  54. package/dist/node/generated-version.d.ts +1 -1
  55. package/dist/node/generated-version.js +1 -1
  56. package/dist/node/helia/helia-for-pkc.d.ts +1 -0
  57. package/dist/node/helia/helia-for-pkc.js +154 -5
  58. package/dist/node/helia/helia-for-pkc.js.map +1 -1
  59. package/dist/node/helia/libp2pjsClient.d.ts +3 -1
  60. package/dist/node/helia/libp2pjsClient.js +1 -0
  61. package/dist/node/helia/libp2pjsClient.js.map +1 -1
  62. package/dist/node/helia/types.d.ts +25 -0
  63. package/dist/node/helia/util.d.ts +3 -1
  64. package/dist/node/helia/util.js +33 -2
  65. package/dist/node/helia/util.js.map +1 -1
  66. package/dist/node/rpc/src/index.d.ts +2 -0
  67. package/dist/node/rpc/src/index.js +52 -19
  68. package/dist/node/rpc/src/index.js.map +1 -1
  69. package/dist/node/test/test-util.d.ts +353 -5
  70. package/dist/node/test/test-util.js +88 -5
  71. package/dist/node/test/test-util.js.map +1 -1
  72. package/dist/node/util.d.ts +7 -0
  73. package/dist/node/util.js +21 -11
  74. package/dist/node/util.js.map +1 -1
  75. package/package.json +1 -1
@@ -84,9 +84,11 @@ export declare function cacheIpnsRecordInPubsubLocalStore({ localStore, routingK
84
84
  routingKey: Uint8Array;
85
85
  marshalledRecord: Uint8Array;
86
86
  }): Promise<void>;
87
- export declare function readFreshCachedIpnsRecordFromPubsubLocalStore({ localStore, routingKey, lastNetworkValidatedAtMs }: {
87
+ export declare function ipnsCacheTtlJitterFactor(routingKey: Uint8Array): number;
88
+ export declare function readFreshCachedIpnsRecordFromPubsubLocalStore({ localStore, routingKey, lastNetworkValidatedAtMs, pushChannelHealthy }: {
88
89
  localStore: IpnsPubsubLocalStore;
89
90
  routingKey: Uint8Array;
90
91
  lastNetworkValidatedAtMs?: number;
92
+ pushChannelHealthy?: boolean;
91
93
  }): Promise<IPNSRecord | undefined>;
92
94
  export {};
@@ -731,6 +731,23 @@ export async function cacheIpnsRecordInPubsubLocalStore({ localStore, routingKey
731
731
  // publish their IPNS records with ttl = publishInterval * 3 (60s by default, see
732
732
  // ipns-publishing.ts), so this matches what a well-formed community record would have carried.
733
733
  const DEFAULT_CACHED_IPNS_RECORD_TTL_MS = 60_000;
734
+ // Deterministic per-name jitter over the cached record's serve window (issue #307). A directory
735
+ // app fetches all N of its community records in the same second and they all carry the same ttl,
736
+ // so without jitter all N cache entries expire in the same instant and every name misses the
737
+ // cache in the same update-loop pass: N=64 launches 250-320 near-simultaneous /libp2p/fetch
738
+ // streams against a 64-stream outbound cap, once per ttl window. Scaling each name's effective
739
+ // ttl by a factor derived from its routing key (FNV-1a, uniform-ish in [0.75, 1.0)) de-correlates
740
+ // the expiries while never serving a record beyond its own ttl. Deterministic per name on
741
+ // purpose: a factor re-rolled per read would make freshness flappy and bias the effective ttl
742
+ // toward the floor as reads accumulate.
743
+ export function ipnsCacheTtlJitterFactor(routingKey) {
744
+ let hash = 0x811c9dc5;
745
+ for (let i = 0; i < routingKey.length; i++) {
746
+ hash ^= routingKey[i];
747
+ hash = Math.imul(hash, 0x01000193) >>> 0;
748
+ }
749
+ return 0.75 + (hash / 0x1_0000_0000) * 0.25;
750
+ }
734
751
  // Read the record cached at the pubsub routing layer and return it only while it may still be
735
752
  // served WITHOUT a network revalidation (issue #301). Freshness follows the IPNS spec's ttl
736
753
  // semantics: a record may be served from cache for `ttl` after it was last confirmed current.
@@ -746,7 +763,16 @@ const DEFAULT_CACHED_IPNS_RECORD_TTL_MS = 60_000;
746
763
  // The record's signature and validity window are re-checked on every read (a cached record can
747
764
  // pass its EOL while sitting in the store); an invalid, expired, or stale record yields
748
765
  // undefined so the caller falls through to the network path.
749
- export async function readFreshCachedIpnsRecordFromPubsubLocalStore({ localStore, routingKey, lastNetworkValidatedAtMs }) {
766
+ //
767
+ // `pushChannelHealthy` (issue #330) widens the serve window past the record's ttl: when the
768
+ // caller can attest that the name's push channel is demonstrably alive (the topic has gossipsub
769
+ // subscribers and a signature-valid record arrived within the watchdog window), the
770
+ // ipns-pubsub-router spec's model applies — the network keeps a subscribed node current via
771
+ // pushes, rebroadcasts, and fetch-on-join, so a timer-driven revalidation buys nothing — and the
772
+ // cached record is served for as long as it stays signature-valid and inside its EOL. The ttl
773
+ // check below is the DEGRADED mode, exactly the pre-#330 behavior, for a name whose push channel
774
+ // is unhealthy (no subscribers, or the watchdog tripped).
775
+ export async function readFreshCachedIpnsRecordFromPubsubLocalStore({ localStore, routingKey, lastNetworkValidatedAtMs, pushChannelHealthy }) {
750
776
  if (!(await localStore.has(routingKey)))
751
777
  return undefined;
752
778
  const { record: recordBytes, created } = await localStore.get(routingKey);
@@ -758,9 +784,14 @@ export async function readFreshCachedIpnsRecordFromPubsubLocalStore({ localStore
758
784
  return undefined;
759
785
  }
760
786
  const record = unmarshalIPNSRecord(recordBytes);
787
+ if (pushChannelHealthy === true)
788
+ return record; // issue #330: freshness is the push channel's job
761
789
  const ttlMs = record.ttl !== undefined ? Number(record.ttl / 1000000n) : DEFAULT_CACHED_IPNS_RECORD_TTL_MS;
790
+ // Effective ttl is jittered per name (issue #307) so names cached together don't all miss
791
+ // the cache together; the factor only ever shortens the window, never extends it.
792
+ const effectiveTtlMs = ttlMs * ipnsCacheTtlJitterFactor(routingKey);
762
793
  const lastConfirmedCurrentAtMs = Math.max(created.getTime(), lastNetworkValidatedAtMs ?? 0);
763
- if (Date.now() - lastConfirmedCurrentAtMs >= ttlMs)
794
+ if (Date.now() - lastConfirmedCurrentAtMs >= effectiveTtlMs)
764
795
  return undefined;
765
796
  return record;
766
797
  }
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/helia/util.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAE3C,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,gCAAgC,GAAG,MAAM,CAAC;AAChD,MAAM,yBAAyB,GAAG,KAAK,CAAC;AACxC,6FAA6F;AAC7F,+FAA+F;AAC/F,8DAA8D;AAC9D,MAAM,gCAAgC,GAAG,KAAK,CAAC;AAS/C,MAAM,UAAU,oBAAoB,CAAC,KAA4B;IAC7D,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IAClD,OAAO;QACH,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;QAC3C,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;QAChC,kBAAkB,EAAE,WAAW,CAAC,MAAM;QACtC,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE;YAC7B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;YAC/B,SAAS,EAAE,CAAC,CAAC,SAAS;SACzB,CAAC,CAAC;KACN,CAAC;AACN,CAAC;AASD,sFAAsF;AACtF,8FAA8F;AAC9F,6FAA6F;AAC7F,8FAA8F;AAC9F,iGAAiG;AACjG,+FAA+F;AAC/F,iGAAiG;AACjG,qFAAqF;AACrF,MAAM,2CAA2C,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC,CAAC;AAE1G,SAAS,6BAA6B,CAAC,KAAc;IACjD,OAAO,2CAA2C,CAAC,GAAG,CAAE,KAAe,EAAE,IAAI,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAe;IAC5C,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;AACtF,CAAC;AAED,+FAA+F;AAC/F,+FAA+F;AAC/F,gGAAgG;AAChG,4FAA4F;AAC5F,gFAAgF;AAChF,yFAAyF;AACzF,8FAA8F;AAC9F,4FAA4F;AAC5F,yFAAyF;AACzF,SAAS,6BAA6B,CAAC,EACnC,KAAK,EACL,QAAQ,EAIX;IACG,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,MAAM,UAAU,GAAoB,EAAE,CAAC;IACvC,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,IAAI,eAAe,GAAG,KAAK,CAAC;IAE5B,MAAM,OAAO,GAAG,CAAC,MAAc,EAAQ,EAAE;QACrC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QACpC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,UAAU,CAAC,IAAI,CACX,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CACjB,CAAC,OAAO,EAAE,EAAE;YACR,IAAI,OAAO,KAAK,WAAW;gBAAE,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5D,CAAC,EACD,GAAG,EAAE,CAAC,SAAS,CAAC,+DAA+D;SAClF,CACJ,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,GAA4B,EAAQ,EAAE;QACxD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC;IACF,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAE3D,OAAO;QACH,uFAAuF;QACvF,wDAAwD;QACxD,aAAa,CAAC,MAAc;YACxB,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;YAC9C,IAAI,mBAAmB;gBAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;QACD,uFAAuF;QACvF,qFAAqF;QACrF,6CAA6C;QAC7C,qBAAqB;YACjB,mBAAmB,GAAG,IAAI,CAAC;YAC3B,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE;gBAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9D,IAAI,CAAC,eAAe,EAAE,CAAC;gBACnB,eAAe,GAAG,IAAI,CAAC;gBACvB,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;YAClE,CAAC;QACL,CAAC;QACD,UAAU;KACb,CAAC;AACN,CAAC;AAED,+EAA+E;AAC/E,kFAAkF;AAClF,8EAA8E;AAC9E,yEAAyE;AACzE,8BAA8B;AAC9B,MAAM,UAAU,sBAAsB,CAAC,EACnC,KAAK,EACL,KAAK,EACL,SAAS,EACT,WAAW,EAMd;IACG,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC5C,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IACtE,IAAI,WAAW,EAAE,OAAO;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAE/G,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACzC,MAAM,OAAO,GAAG,GAAG,EAAE;YACjB,MAAM,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;YAC5D,aAAa,CAAC,UAAU,CAAC,CAAC;YAC1B,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,WAAW,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvD,CAAC,CAAC;QACF,MAAM,UAAU,GAAG,GAAG,EAAE;YACpB,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;gBACV,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;QACF,MAAM,QAAQ,GAAG,CAAC,CAA2F,EAAE,EAAE;YAC7G,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,SAAS,CAAC;gBAAE,UAAU,EAAE,CAAC;QAC3F,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,GAAG,EAAE;YACjB,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,QAAQ,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC1B,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,QAAQ,CAAC,4CAA4C,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAC7F,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,wFAAwF;QACxF,2FAA2F;QAC3F,yDAAyD;QACzD,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;QACzD,WAAW,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,uFAAuF;QACvF,yFAAyF;QACzF,UAAU,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,kFAAkF;AAClF,sFAAsF;AACtF,sFAAsF;AACtF,mEAAmE;AACnE,SAAS,eAAe,CAAC,EACrB,KAAK,EACL,KAAK,EACL,SAAS,EACT,WAAW,EAMd;IACG,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC5C,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IACpE,IAAI,WAAW,EAAE,OAAO;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAEnD,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACjC,MAAM,OAAO,GAAG,GAAG,EAAE;YACjB,MAAM,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;YACvD,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,WAAW,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvD,CAAC,CAAC;QACF,MAAM,UAAU,GAAG,GAAG,EAAE;YACpB,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;gBACV,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,CAAC,CAAiC,EAAE,EAAE;YAClD,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK;gBAAE,UAAU,EAAE,CAAC;QAC/C,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,GAAG,EAAE;YACjB,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACd,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC1B,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACd,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QACpD,WAAW,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,6FAA6F;QAC7F,UAAU,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,2FAA2F;AAC3F,uFAAuF;AACvF,oFAAoF;AACpF,qGAAqG;AACrG,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EACvC,KAAK,EACL,WAAW,EACX,QAAQ,EACR,OAAO,EACP,GAAG,EAON;IACG,MAAM,UAAU,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAe,EAAE,CAAC;IACxC,MAAM,yBAAyB,GAAoD,EAAE,CAAC;IACtF,MAAM,eAAe,GAAoC,EAAE,CAAC;IAE5D,8BAA8B;IAC9B,oFAAoF;IACpF,+DAA+D;IAC/D,oFAAoF;IACpF,oFAAoF;IACpF,gFAAgF;IAChF,6DAA6D;IAC7D,MAAM,kBAAkB,GAAG,IAAI,eAAe,EAAE,CAAC;IACjD,MAAM,mBAAmB,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC;IAEvI,wEAAwE;IACxE,kGAAkG;IAClG,iGAAiG;IACjG,MAAM,yBAAyB,GAAG,sBAAsB,CAAC;QACrD,KAAK;QACL,KAAK,EAAE,WAAW;QAClB,SAAS,EAAE,gCAAgC;QAC3C,WAAW,EAAE,mBAAmB;KACnC,CAAC,CAAC;IACH,yBAAyB,CAAC,IAAI,CAC1B,GAAG,EAAE;QACD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACrC,GAAG,CAAC,KAAK,CAAC,oFAAoF,EAAE,WAAW,CAAC,CAAC;YAC7G,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;IACL,CAAC,EACD,GAAG,EAAE;QACD,yFAAyF;QACzF,yFAAyF;QACzF,wFAAwF;QACxF,yFAAyF;QACzF,sFAAsF;QACtF,8EAA8E;QAC9E,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACrC,GAAG,CAAC,KAAK,CAAC,wFAAwF,EAAE,WAAW,CAAC,CAAC;YACjH,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;IACL,CAAC,CACJ,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACtC,qFAAqF;IACrF,oFAAoF;IACpF,sFAAsF;IACtF,uFAAuF;IACvF,sFAAsF;IACtF,MAAM,oBAAoB,GAAoB,EAAE,CAAC;IACjD,MAAM,WAAW,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IACnC,+FAA+F;IAC/F,6FAA6F;IAC7F,8FAA8F;IAC9F,2FAA2F;IAC3F,oDAAoD;IACpD,MAAM,cAAc,GAAG,6BAA6B,CAAC;QACjD,KAAK;QACL,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACvB,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO;gBAAE,OAAO,MAAM,CAAC;YAC5C,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBAC1D,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrC,GAAG,CAAC,KAAK,CAAC,yCAAyC,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACxE,OAAO,MAAM,CAAC;YAClB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,0EAA0E;gBAC1E,+EAA+E;gBAC/E,uCAAuC;gBACvC,GAAG,CAAC,KAAK,CAAC,uCAAuC,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;gBACzF,OAAO,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;YACnE,CAAC;QACL,CAAC;KACJ,CAAC,CAAC;IACH,IAAI,CAAC;QACD,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAC;YAC1H,gBAAgB,CAAC,IAAI,CAAC,IAAgB,CAAC,CAAC;YACxC,MAAM,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;gBAC5B,IAAI,CAAC;oBACD,mFAAmF;oBACnF,kFAAkF;oBAClF,qEAAqE;oBACrE,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;wBAC1B,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;oBACjF,CAAC;oBACD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,6BAA6B;oBACzF,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACrC,IAAI,yBAAyB,CAAC,MAAM,IAAI,QAAQ,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;wBACrF,GAAG,CAAC,KAAK,CAAC,gDAAgD,EAAE,QAAQ,CAAC,CAAC;wBACtE,kBAAkB,CAAC,KAAK,EAAE,CAAC;oBAC/B,CAAC;gBACL,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,MAAM,GAAG,GAAG,CAAU,CAAC;oBACvB,IAAI,6BAA6B,CAAC,GAAG,CAAC;wBAAE,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC9E,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG;wBAClC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;wBACvC,SAAS,EAAE,GAAG,CAAC,IAAI;wBACnB,YAAY,EAAE,GAAG,CAAC,OAAO;wBACzB,UAAU,EAAE,GAAG,CAAC,KAAK;qBACxB,CAAC;oBACF,GAAG,CAAC,KAAK,CAAC,sCAAsC,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;gBAC7F,CAAC;YACL,CAAC,CAAC,EAAE,CAAC;YACL,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvC,IAAI,yBAAyB,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAC/C,GAAG,CAAC,KAAK,CAAC,qDAAqD,EAAE,QAAQ,CAAC,CAAC;gBAC3E,MAAM;YACV,CAAC;QACL,CAAC;QACD,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB,EAAE,IAAI,CAAC,CAAC;IAC/F,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,2FAA2F;QAC3F,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,CAAc,CAAC,OAAO,GAAG;gBACtB,GAAI,CAAc,CAAC,OAAO;gBAC1B,UAAU;gBACV,OAAO;gBACP,uCAAuC,EAAE,QAAQ;gBACjD,yBAAyB;gBACzB,gBAAgB;gBAChB,eAAe;gBACf,GAAG,oBAAoB,CAAC,KAAK,CAAC;aACjC,CAAC;YACF,MAAM,CAAC,CAAC;QACZ,CAAC;IACL,CAAC;YAAS,CAAC;QACP,0FAA0F;QAC1F,sFAAsF;QACtF,kFAAkF;QAClF,uFAAuF;QACvF,6FAA6F;QAC7F,0FAA0F;QAC1F,6DAA6D;QAC7D,EAAE;QACF,+EAA+E;QAC/E,yFAAyF;QACzF,uFAAuF;QACvF,mFAAmF;QACnF,mEAAmE;QACnE,cAAc,CAAC,qBAAqB,EAAE,CAAC;IAC3C,CAAC;IAED,oBAAoB,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAExD,yFAAyF;IACzF,2FAA2F;IAC3F,yFAAyF;IACzF,yFAAyF;IACzF,mFAAmF;IACnF,sDAAsD;IACtD,IAAI,UAAU,GAAiB,IAAI,CAAC;IACpC,IAAI,CAAC;QACD,MAAM,yBAAyB,CAAC;IACpC,CAAC;IAAC,OAAO,QAAQ,EAAE,CAAC;QAChB,UAAU,GAAG,QAAiB,CAAC;QAC/B,GAAG,CAAC,KAAK,CAAC,wGAAwG,EAAE,QAAQ,CAAC,CAAC;QAC9H,sFAAsF;QACtF,mFAAmF;QACnF,IAAI,oBAAoB,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;IACL,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,yBAAyB,CAAC,MAAM,EAAE,yCAAyC,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IAElI,6FAA6F;IAC7F,4FAA4F;IAC5F,2FAA2F;IAC3F,yFAAyF;IACzF,4FAA4F;IAC5F,2DAA2D;IAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC5C,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,yBAAyB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACzH,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC;QAC1C,IAAI,aAAa,KAAK,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,4CAA4C,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;;YAChH,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACjH,CAAC;IAED,sFAAsF;IACtF,qFAAqF;IACrF,wFAAwF;IACxF,uDAAuD;IACvD,IAAI,UAAU,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QACzC,MAAM,UAAU,CAAC;IACrB,CAAC;IAED,yFAAyF;IACzF,4FAA4F;IAC5F,sFAAsF;IACtF,IAAI,yBAAyB,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,4CAA4C,EAAE;YACrE,UAAU;YACV,eAAe;YACf,gBAAgB;YAChB,OAAO;YACP,UAAU;YACV,GAAG,oBAAoB,CAAC,KAAK,CAAC;SACjC,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjB,MAAM,KAAK,CAAC;IAChB,CAAC;IAED,OAAO,yBAAyB,CAAC;AACrC,CAAC;AAED,gGAAgG;AAChG,+FAA+F;AAC/F,gGAAgG;AAChG,4EAA4E;AAC5E,4FAA4F;AAC5F,6FAA6F;AAC7F,0FAA0F;AAC1F,2FAA2F;AAC3F,8FAA8F;AAC9F,gCAAgC;AAChC,2FAA2F;AAC3F,uFAAuF;AACvF,MAAM,UAAU,6BAA6B,CAAC,IAK7C;IACG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACtE,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9F,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,MAAM,eAAe,GAAG,CAAC,YAAoB,EAAE,EAAE;QAC7C,MAAM,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACpD,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC,CAAC;IACF,IAAI,CAAC,mCAAmC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAClE,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc;QAAE,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC;AAED,iGAAiG;AACjG,kGAAkG;AAClG,6FAA6F;AAC7F,2FAA2F;AAC3F,8FAA8F;AAC9F,6FAA6F;AAC7F,6FAA6F;AAC7F,+FAA+F;AAC/F,2DAA2D;AAC3D,MAAM,CAAC,MAAM,uCAAuC,GAAG,KAAK,CAAC;AAU7D,iGAAiG;AACjG,oGAAoG;AACpG,iGAAiG;AACjG,mGAAmG;AACnG,mEAAmE;AACnE,mGAAmG;AACnG,gGAAgG;AAChG,uFAAuF;AACvF,gGAAgG;AAChG,mGAAmG;AACnG,mGAAmG;AACnG,8BAA8B;AAC9B,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,oCAAoC,CAAC,IAO3D;IACG,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC5E,MAAM,YAAY,GAAG,OAAO,EAAE,MAAM,CAAC;IACrC,YAAY,EAAE,cAAc,EAAE,CAAC;IAE/B,6FAA6F;IAC7F,6FAA6F;IAC7F,8FAA8F;IAC9F,MAAM,iBAAiB,GAAG,IAAI,eAAe,EAAE,CAAC;IAChD,MAAM,kBAAkB,GAAG,IAAI,eAAe,EAAE,CAAC;IACjD,MAAM,yBAAyB,GAAG,GAAG,EAAE;QACnC,iBAAiB,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC9C,kBAAkB,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC,CAAC;IACF,YAAY,EAAE,gBAAgB,CAAC,OAAO,EAAE,yBAAyB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnF,yFAAyF;IACzF,uFAAuF;IACvF,MAAM,kBAAkB,GAAG,KAAK,EAAE,GAAiB,EAAE,MAAmB,EAAyB,EAAE;QAC/F,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/E,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;IAEF,IAAI,UAAqD,CAAC;IAC1D,IAAI,CAAC;QACD,MAAM,cAAc,GAAG,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC9F,MAAM,EAAE,SAAkB;YAC1B,MAAM;SACT,CAAC,CAAC,CAAC;QACJ,yFAAyF;QACzF,4FAA4F;QAC5F,+DAA+D;QAC/D,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE/B,uDAAuD;QACvD,MAAM,OAAO,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,EAAE;YACzD,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QACH,IAAI,MAAsG,CAAC;QAC3G,IAAI,CAAC;YACD,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;QAChE,CAAC;gBAAS,CAAC;YACP,YAAY,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QAED,iFAAiF;QACjF,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACrB,GAAG,CAAC,KAAK,CAAC,uCAAuC,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,2BAA2B,CAAC,CAAC;YACvH,MAAM,eAAe,GAAG,kBAAkB,CAAC,WAAW,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,CACnF,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,UAAmB,EAAE,MAAM,EAAE,CAAC,EACrD,CAAC,aAAa,EAAkB,EAAE;gBAC9B,+EAA+E;gBAC/E,oEAAoE;gBACpE,GAAG,CAAC,KAAK,CAAC,qCAAqC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,gCAAgC,EAAE,aAAa,CAAC,CAAC;gBAC/G,OAAO,IAAI,OAAO,CAAQ,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACxC,CAAC,CACJ,CAAC;YACF,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC;YAC/D,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3F,CAAC;QAED,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IACzB,CAAC;YAAS,CAAC;QACP,YAAY,EAAE,mBAAmB,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;QACtE,2FAA2F;QAC3F,yDAAyD;QACzD,MAAM,gBAAgB,GAAG,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;QAC5G,iBAAiB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC1C,kBAAkB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC/C,CAAC;AACL,CAAC;AASD,8FAA8F;AAC9F,gFAAgF;AAChF,+FAA+F;AAC/F,4EAA4E;AAC5E,EAAE;AACF,4FAA4F;AAC5F,6FAA6F;AAC7F,6FAA6F;AAC7F,8FAA8F;AAC9F,+FAA+F;AAC/F,iFAAiF;AACjF,EAAE;AACF,0FAA0F;AAC1F,6FAA6F;AAC7F,yBAAyB;AACzB,MAAM,CAAC,KAAK,UAAU,kCAAkC,CAAC,EACrD,KAAK,EACL,WAAW,EACX,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,GAAG,EASN;IACG,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO;QAAE,MAAM,IAAI,QAAQ,CAAC,+BAA+B,EAAE,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEnI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;IACjD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC5C,MAAM,UAAU,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;IAEvD,2FAA2F;IAC3F,kEAAkE;IAClE,MAAM,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;IAC/C,IAAI,MAAqC,CAAC;IAC1C,MAAM,WAAW,GAAgE,EAAE,CAAC;IAEpF,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,CAAU,EAAE,EAAE;QAC7C,MAAM,GAAG,GAAG,CAAU,CAAC;QACvB,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QACpF,GAAG,CAAC,KAAK,CAAC,oCAAoC,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;IAC1F,CAAC,CAAC;IAEF,6FAA6F;IAC7F,6FAA6F;IAC7F,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAAc,EAAE,MAAmC,EAAiB,EAAE;QAClG,IAAI,gBAAgB,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM;YAAE,OAAO;QACtD,2FAA2F;QAC3F,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,IAAI,gCAAgC,CAAC,CAAC;QAClG,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM;YAC1B,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YAC3E,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACvE,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAChB,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,oCAAoC,EAAE,WAAW,CAAC,CAAC;gBACxF,OAAO;YACX,CAAC;YACD,MAAM,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,8CAA8C;YACjF,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC9C,MAAM,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;gBACnG,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAC7B,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC;IACL,CAAC,CAAC;IAEF,oFAAoF;IACpF,sDAAsD;IACtD,MAAM,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAEnH,8FAA8F;IAC9F,+FAA+F;IAC/F,YAAY;IACZ,MAAM,cAAc,GAAG,CAAC,KAAK,IAAmB,EAAE;QAC9C,MAAM,kBAAkB,GAAG,IAAI,eAAe,EAAE,CAAC;QACjD,MAAM,mBAAmB,GAAG,OAAO,EAAE,MAAM;YACvC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACvF,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5E,MAAM,cAAc,GAAoB,EAAE,CAAC;QAC3C,wFAAwF;QACxF,mFAAmF;QACnF,gFAAgF;QAChF,yFAAyF;QACzF,sFAAsF;QACtF,wFAAwF;QACxF,qFAAqF;QACrF,cAAc;QACd,MAAM,cAAc,GAAG,6BAA6B,CAAC;YACjD,KAAK;YACL,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACvB,IAAI,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO;oBAAE,OAAO,MAAM,CAAC;gBACzF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBACjF,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC;qBAC1C,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC;qBACjC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtD,kFAAkF;gBAClF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;oBAAE,OAAO,WAAW,CAAC;gBAClG,IAAI,CAAC;oBACD,MAAM,UAAU,GAAG,OAAO,EAAE,MAAM;wBAC9B,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;wBAC5D,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC;oBAC9B,6EAA6E;oBAC7E,0EAA0E;oBAC1E,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;wBACzC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;wBACxC,OAAO,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBACpH,CAAC,CAAC,CAAC;oBACH,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,6BAA6B;oBAC3F,MAAM,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBAC/C,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBACzB,CAAC;gBACD,OAAO,MAAM,CAAC;YAClB,CAAC;SACJ,CAAC,CAAC;QACH,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC;YACD,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAC;gBAC1H,IAAI,gBAAgB,CAAC,MAAM,CAAC,OAAO;oBAAE,MAAM;gBAC3C,iFAAiF;gBACjF,+EAA+E;gBAC/E,oFAAoF;gBACpF,oFAAoF;gBACpF,mFAAmF;gBACnF,mFAAmF;gBACnF,oFAAoF;gBACpF,6DAA6D;gBAC7D,MAAM,cAAc,GAAI,IAAiB,CAAC,UAAU,IAAI,EAAE,CAAC;gBAC3D,gFAAgF;gBAChF,8EAA8E;gBAC9E,kFAAkF;gBAClF,iFAAiF;gBACjF,+EAA+E;gBAC/E,8EAA8E;gBAC9E,sBAAsB;gBACtB,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC;oBAC7E,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;oBACnG,GAAG,CAAC,KAAK,CAAC,wCAAwC,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;oBAClG,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACtC,SAAS;gBACb,CAAC;gBACD,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;gBACrG,cAAc,CAAC,IAAI,CACf,CAAC,KAAK,IAAI,EAAE;oBACR,IAAI,CAAC;wBACD,gFAAgF;wBAChF,oFAAoF;wBACpF,IAAK,IAAiB,CAAC,UAAU,EAAE,MAAM;4BACrC,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,EAAG,IAAiB,CAAC,UAAU,EAAE,CAAC,CAAC;wBAC/F,4EAA4E;wBAC5E,+EAA+E;wBAC/E,4CAA4C;wBAC5C,MAAM,UAAU,GAAG,OAAO,EAAE,MAAM;4BAC9B,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;4BAC5D,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC;wBAC9B,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,6BAA6B;wBACvF,MAAM,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;oBAChD,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACT,IAAI,6BAA6B,CAAC,CAAC,CAAC;4BAAE,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAC5E,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC1B,CAAC;gBACL,CAAC,CAAC,EAAE,CACP,CAAC;gBACF,IAAI,eAAe,IAAI,EAAE,SAAS,IAAI,QAAQ,EAAE,CAAC;oBAC7C,kBAAkB,CAAC,KAAK,EAAE,CAAC;oBAC3B,MAAM;gBACV,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,uFAAuF;YACvF,qFAAqF;YACrF,2EAA2E;YAC3E,IAAI,CAAC,mBAAmB,CAAC,OAAO;gBAAE,GAAG,CAAC,KAAK,CAAC,0DAA0D,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QAC5H,CAAC;QACD,sFAAsF;QACtF,mFAAmF;QACnF,yFAAyF;QACzF,qFAAqF;QACrF,oFAAoF;QACpF,cAAc,CAAC,qBAAqB,EAAE,CAAC;QACvC,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACzC,qFAAqF;QACrF,sFAAsF;QACtF,OAAO,cAAc,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC;IACL,CAAC,CAAC,EAAE,CAAC;IAEL,oEAAoE;IACpE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC;IAE/D,IAAI,MAAM,EAAE,CAAC;QACT,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;QAC5H,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,wFAAwF;IACxF,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO;QACxB,MAAM,IAAI,QAAQ,CAAC,+BAA+B,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEtH,OAAO,SAAS,CAAC;AACrB,CAAC;AAWD,gGAAgG;AAChG,8FAA8F;AAC9F,8FAA8F;AAC9F,iGAAiG;AACjG,oFAAoF;AACpF,8FAA8F;AAC9F,0FAA0F;AAC1F,MAAM,CAAC,KAAK,UAAU,iCAAiC,CAAC,EACpD,UAAU,EACV,UAAU,EACV,gBAAgB,EAKnB;IACG,IAAI,MAAM,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACnE,IAAI,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,CAAC;YAAE,OAAO;QAC9D,qFAAqF;QACrF,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO;IAClF,CAAC;IACD,MAAM,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;AACvD,CAAC;AAED,iGAAiG;AACjG,iFAAiF;AACjF,+FAA+F;AAC/F,MAAM,iCAAiC,GAAG,MAAM,CAAC;AAEjD,8FAA8F;AAC9F,4FAA4F;AAC5F,8FAA8F;AAC9F,4CAA4C;AAC5C,0FAA0F;AAC1F,yFAAyF;AACzF,iGAAiG;AACjG,+FAA+F;AAC/F,oFAAoF;AACpF,+FAA+F;AAC/F,+FAA+F;AAC/F,gDAAgD;AAChD,+FAA+F;AAC/F,wFAAwF;AACxF,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,6CAA6C,CAAC,EAChE,UAAU,EACV,UAAU,EACV,wBAAwB,EAK3B;IACG,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1E,IAAI,CAAC;QACD,MAAM,aAAa,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACL,2EAA2E;QAC3E,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,MAAM,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,QAAU,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC;IAC7G,MAAM,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,wBAAwB,IAAI,CAAC,CAAC,CAAC;IAC5F,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,wBAAwB,IAAI,KAAK;QAAE,OAAO,SAAS,CAAC;IACrE,OAAO,MAAM,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/helia/util.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,7 @@ declare class PKCWsServer extends TypedEmitter<PKCRpcServerEvents> {
43
43
  private _exportCommunityInstances;
44
44
  private _httpServer;
45
45
  private _ownsHttpServer;
46
+ private _pendingDisconnectionCleanups;
46
47
  constructor({ port, server, pkc, authKey, startStartedCommunitiesOnStartup, autoStartConcurrency, allowPrivateKeyExport, exportFileMaxAgeMs }: PKCWsServerClassOptions);
47
48
  getStartedCommunity(address: string): Promise<LocalCommunity>;
48
49
  private _findCommunityAddress;
@@ -107,6 +108,7 @@ declare class PKCWsServer extends TypedEmitter<PKCRpcServerEvents> {
107
108
  _sweepOldExportFiles(): Promise<void>;
108
109
  private _handleExportsHttpRequest;
109
110
  unsubscribe(params: any, connectionId: string): Promise<RpcSuccessResult>;
111
+ private _cleanUpDisconnectedClient;
110
112
  destroy(): Promise<void>;
111
113
  }
112
114
  declare const PKCRpc: {
@@ -9,6 +9,7 @@ import Database from "better-sqlite3";
9
9
  import PKCJs, { setPKCJs } from "./lib/pkc-js/index.js";
10
10
  import { encodeChallengeAnswerMessage, encodeChallengeMessage, encodeChallengeRequest, encodeChallengeVerificationMessage, generateSubscriptionId } from "./utils.js";
11
11
  import Logger from "../../logger.js";
12
+ import pTimeout from "p-timeout";
12
13
  import { PKCError } from "../../pkc-error.js";
13
14
  import { LocalCommunity } from "../../runtime/node/community/local-community.js";
14
15
  import { hideClassPrivateProps, replaceXWithY } from "../../util.js";
@@ -25,6 +26,7 @@ import { findStartedCommunity } from "../../pkc/tracked-instance-registry-util.j
25
26
  // store started communities to be able to stop them
26
27
  // store as a singleton because not possible to start the same community twice at the same time
27
28
  const log = Logger("pkc-js-rpc:pkc-ws-server");
29
+ const DESTROY_CLIENTS_CLOSE_TIMEOUT_MS = 5_000;
28
30
  // Max retries when an auto-start hits a transient Kubo network blip (e.g. a boot-time restart).
29
31
  // With factor=2, minTimeout=2s, maxTimeout=15s this spans ~89s of backoff, comfortably covering a
30
32
  // ~30-60s embedded-Kubo restart window observed in production (issue #158).
@@ -66,6 +68,7 @@ class PKCWsServer extends TypedEmitter {
66
68
  // calls for the same address.
67
69
  this._exportCommunityInstances = new Map();
68
70
  this._ownsHttpServer = false;
71
+ this._pendingDisconnectionCleanups = new Set();
69
72
  const log = Logger("pkc-js:PKCWsServer");
70
73
  this.authKey = authKey;
71
74
  this._autoStartOnBoot = startStartedCommunitiesOnStartup ?? true;
@@ -140,25 +143,18 @@ class PKCWsServer extends TypedEmitter {
140
143
  //@ts-expect-error
141
144
  log("Established connection with new RPC client", ws._id);
142
145
  });
143
- // cleanup on disconnect
144
- this.rpcWebsockets.on("disconnection", async (ws) => {
145
- log("RPC client disconnected", ws._id, "number of rpc clients connected", this.rpcWebsockets.wss.clients.size);
146
- const subscriptionCleanups = this.subscriptionCleanups[ws._id];
147
- if (!subscriptionCleanups) {
148
- delete this.subscriptionCleanups[ws._id];
149
- delete this.connections[ws._id];
150
- delete this._onSettingsChange[ws._id];
151
- log("Disconnected from RPC client (no subscriptions to clean)", ws._id);
152
- return;
153
- }
154
- for (const subscriptionId in subscriptionCleanups) {
155
- await subscriptionCleanups[subscriptionId]();
156
- delete subscriptionCleanups[subscriptionId];
157
- }
158
- delete this.subscriptionCleanups[ws._id];
159
- delete this.connections[ws._id];
160
- delete this._onSettingsChange[ws._id];
161
- log("Disconnected from RPC client", ws._id);
146
+ // cleanup on disconnect. rpc-websockets does not await this listener, so its promise is tracked in
147
+ // _pendingDisconnectionCleanups for destroy() to await (#325): a subscription registered between
148
+ // destroy()'s unsubscribe loop and the socket close would otherwise still be cleaning up after
149
+ // destroy() resolved.
150
+ this.rpcWebsockets.on("disconnection", (ws) => {
151
+ const cleanup = this._cleanUpDisconnectedClient(ws._id);
152
+ this._pendingDisconnectionCleanups.add(cleanup);
153
+ const untrack = () => this._pendingDisconnectionCleanups.delete(cleanup);
154
+ cleanup.then(untrack, (e) => {
155
+ log.error("Failed to clean up after RPC client disconnected", ws._id, e);
156
+ untrack();
157
+ });
162
158
  });
163
159
  // register all JSON RPC methods
164
160
  this.rpcWebsocketsRegister("getComment", this.getComment.bind(this));
@@ -1692,11 +1688,48 @@ class PKCWsServer extends TypedEmitter {
1692
1688
  delete connectionCleanups[subscriptionId];
1693
1689
  return { success: true };
1694
1690
  }
1691
+ async _cleanUpDisconnectedClient(connectionId) {
1692
+ log("RPC client disconnected", connectionId, "number of rpc clients connected", this.rpcWebsockets.wss.clients.size);
1693
+ const subscriptionCleanups = this.subscriptionCleanups[connectionId];
1694
+ if (!subscriptionCleanups) {
1695
+ delete this.subscriptionCleanups[connectionId];
1696
+ delete this.connections[connectionId];
1697
+ delete this._onSettingsChange[connectionId];
1698
+ log("Disconnected from RPC client (no subscriptions to clean)", connectionId);
1699
+ return;
1700
+ }
1701
+ for (const subscriptionId in subscriptionCleanups) {
1702
+ await subscriptionCleanups[subscriptionId]();
1703
+ delete subscriptionCleanups[subscriptionId];
1704
+ }
1705
+ delete this.subscriptionCleanups[connectionId];
1706
+ delete this.connections[connectionId];
1707
+ delete this._onSettingsChange[connectionId];
1708
+ log("Disconnected from RPC client", connectionId);
1709
+ }
1695
1710
  async destroy() {
1696
1711
  for (const connectionId of keys(this.subscriptionCleanups))
1697
1712
  for (const subscriptionId of keys(this.subscriptionCleanups[connectionId]))
1698
1713
  await this.unsubscribe([{ subscriptionId: Number(subscriptionId) }], connectionId);
1714
+ // Close every connected client and wait for the websocket server's "close", which ws only emits once
1715
+ // the last client is gone. ws.close() alone leaves existing connections open when the http server is
1716
+ // external, and http.Server.close() does not wait for upgraded sockets either, so the "disconnection"
1717
+ // cleanup (and its logs) used to run after destroy() had resolved (#325).
1718
+ const wssClosed = new Promise((resolve) => this.ws.once("close", () => resolve()));
1699
1719
  this.ws.close();
1720
+ for (const client of this.ws.clients)
1721
+ client.close(1000, "PKCWsServer is shutting down");
1722
+ try {
1723
+ await pTimeout(wssClosed, { milliseconds: DESTROY_CLIENTS_CLOSE_TIMEOUT_MS });
1724
+ }
1725
+ catch {
1726
+ log.error("Some RPC clients did not complete the close handshake within", DESTROY_CLIENTS_CLOSE_TIMEOUT_MS, "ms of destroy(), terminating them");
1727
+ for (const client of this.ws.clients)
1728
+ client.terminate();
1729
+ await wssClosed;
1730
+ }
1731
+ // Every client's "disconnection" has fired by now; wait for the cleanups they started
1732
+ await Promise.allSettled(this._pendingDisconnectionCleanups); // failures were already logged where they happened
1700
1733
  if (this._ownsHttpServer && this._httpServer)
1701
1734
  await new Promise((r) => this._httpServer.close(() => r()));
1702
1735
  const pkc = await this._getPKCInstance();