@typeberry/lib 0.8.4 → 0.9.0-1c3f157
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/package.json +6 -4
- package/packages/configs/index.d.ts +30 -1
- package/packages/configs/index.d.ts.map +1 -1
- package/packages/configs/index.js +4 -2
- package/packages/configs/typeberry-dev-full.json +29 -0
- package/packages/core/bytes/bytes.d.ts +1 -0
- package/packages/core/bytes/bytes.d.ts.map +1 -1
- package/packages/core/bytes/bytes.js +8 -0
- package/packages/core/collections/sorted-array.d.ts +1 -1
- package/packages/core/collections/sorted-array.d.ts.map +1 -1
- package/packages/core/collections/sorted-array.js +4 -2
- package/packages/core/collections/sorted-array.test.js +10 -0
- package/packages/core/collections/sorted-set.d.ts +1 -1
- package/packages/core/collections/sorted-set.d.ts.map +1 -1
- package/packages/core/collections/sorted-set.js +6 -2
- package/packages/core/collections/sorted-set.test.js +24 -0
- package/packages/core/utils/debug.d.ts +4 -2
- package/packages/core/utils/debug.d.ts.map +1 -1
- package/packages/core/utils/debug.js +18 -13
- package/packages/core/utils/debug.test.js +12 -6
- package/packages/core/utils/index.d.ts +1 -0
- package/packages/core/utils/index.d.ts.map +1 -1
- package/packages/core/utils/index.js +1 -0
- package/packages/core/utils/shutdown.d.ts +18 -0
- package/packages/core/utils/shutdown.d.ts.map +1 -0
- package/packages/core/utils/shutdown.js +3 -0
- package/packages/core/utils/shutdown.node.d.ts +5 -0
- package/packages/core/utils/shutdown.node.d.ts.map +1 -0
- package/packages/core/utils/shutdown.node.js +76 -0
- package/packages/core/utils/shutdown.test.d.ts +2 -0
- package/packages/core/utils/shutdown.test.d.ts.map +1 -0
- package/packages/core/utils/shutdown.test.js +164 -0
- package/packages/extensions/ipc/server.d.ts.map +1 -1
- package/packages/extensions/ipc/server.js +7 -0
- package/packages/jam/config-node/node-config.d.ts +22 -3
- package/packages/jam/config-node/node-config.d.ts.map +1 -1
- package/packages/jam/config-node/node-config.js +33 -6
- package/packages/jam/config-node/node-config.test.js +11 -4
- package/packages/jam/database/index.d.ts +1 -0
- package/packages/jam/database/index.d.ts.map +1 -1
- package/packages/jam/database/index.js +1 -0
- package/packages/jam/database/leaf-db-update.d.ts +1 -0
- package/packages/jam/database/leaf-db-update.d.ts.map +1 -1
- package/packages/jam/database/leaf-db-update.js +22 -5
- package/packages/jam/database/leaf-db-update.test.d.ts +2 -0
- package/packages/jam/database/leaf-db-update.test.d.ts.map +1 -0
- package/packages/jam/database/leaf-db-update.test.js +81 -0
- package/packages/jam/database/serialized-states-db.d.ts +1 -0
- package/packages/jam/database/serialized-states-db.d.ts.map +1 -1
- package/packages/jam/database/serialized-states-db.js +4 -0
- package/packages/jam/database/states.d.ts +11 -0
- package/packages/jam/database/states.d.ts.map +1 -1
- package/packages/jam/database/states.js +3 -0
- package/packages/jam/database/value-refs.d.ts +117 -0
- package/packages/jam/database/value-refs.d.ts.map +1 -0
- package/packages/jam/database/value-refs.js +206 -0
- package/packages/jam/database/value-refs.test.d.ts +2 -0
- package/packages/jam/database/value-refs.test.d.ts.map +1 -0
- package/packages/jam/database/value-refs.test.js +165 -0
- package/packages/jam/database-fjall/blocks.d.ts +25 -0
- package/packages/jam/database-fjall/blocks.d.ts.map +1 -0
- package/packages/jam/database-fjall/blocks.js +86 -0
- package/packages/jam/database-fjall/blocks.test.d.ts +2 -0
- package/packages/jam/database-fjall/blocks.test.d.ts.map +1 -0
- package/packages/jam/database-fjall/blocks.test.js +62 -0
- package/packages/jam/database-fjall/hybrid-states.d.ts +96 -0
- package/packages/jam/database-fjall/hybrid-states.d.ts.map +1 -0
- package/packages/jam/database-fjall/hybrid-states.js +218 -0
- package/packages/jam/database-fjall/hybrid-states.test.d.ts +2 -0
- package/packages/jam/database-fjall/hybrid-states.test.d.ts.map +1 -0
- package/packages/jam/database-fjall/hybrid-states.test.js +113 -0
- package/packages/jam/database-fjall/index.d.ts +5 -0
- package/packages/jam/database-fjall/index.d.ts.map +1 -0
- package/packages/jam/database-fjall/index.js +4 -0
- package/packages/jam/database-fjall/root.d.ts +64 -0
- package/packages/jam/database-fjall/root.d.ts.map +1 -0
- package/packages/jam/database-fjall/root.js +105 -0
- package/packages/jam/database-fjall/states.d.ts +31 -0
- package/packages/jam/database-fjall/states.d.ts.map +1 -0
- package/packages/jam/database-fjall/states.js +99 -0
- package/packages/jam/database-fjall/states.test.d.ts +2 -0
- package/packages/jam/database-fjall/states.test.d.ts.map +1 -0
- package/packages/jam/database-fjall/states.test.js +150 -0
- package/packages/jam/database-lmdb/hybrid-states.d.ts +12 -0
- package/packages/jam/database-lmdb/hybrid-states.d.ts.map +1 -1
- package/packages/jam/database-lmdb/hybrid-states.js +45 -4
- package/packages/jam/database-lmdb/states.d.ts +1 -0
- package/packages/jam/database-lmdb/states.d.ts.map +1 -1
- package/packages/jam/database-lmdb/states.js +5 -0
- package/packages/jam/jamnp-s/tasks/ticket-distribution.d.ts +18 -10
- package/packages/jam/jamnp-s/tasks/ticket-distribution.d.ts.map +1 -1
- package/packages/jam/jamnp-s/tasks/ticket-distribution.js +44 -68
- package/packages/jam/jamnp-s/tasks/ticket-distribution.test.js +30 -8
- package/packages/jam/node/export.d.ts.map +1 -1
- package/packages/jam/node/export.js +18 -9
- package/packages/jam/node/main-fuzz.d.ts +4 -1
- package/packages/jam/node/main-fuzz.d.ts.map +1 -1
- package/packages/jam/node/main-fuzz.js +142 -55
- package/packages/jam/node/main-importer.d.ts +15 -3
- package/packages/jam/node/main-importer.d.ts.map +1 -1
- package/packages/jam/node/main-importer.js +30 -14
- package/packages/jam/node/main.d.ts.map +1 -1
- package/packages/jam/node/main.js +42 -15
- package/packages/jam/node/workers.d.ts +4 -4
- package/packages/jam/node/workers.d.ts.map +1 -1
- package/packages/jam/safrole/bandersnatch-vrf.d.ts +24 -4
- package/packages/jam/safrole/bandersnatch-vrf.d.ts.map +1 -1
- package/packages/jam/safrole/bandersnatch-vrf.js +63 -26
- package/packages/jam/safrole/bandersnatch-vrf.test.js +12 -9
- package/packages/jam/safrole/bandersnatch-wasm.d.ts +10 -0
- package/packages/jam/safrole/bandersnatch-wasm.d.ts.map +1 -1
- package/packages/jam/safrole/bandersnatch-wasm.js +12 -0
- package/packages/jam/safrole/safrole.js +5 -5
- package/packages/jam/safrole/safrole.test.js +13 -13
- package/packages/jam/ticket-pool/index.d.ts +4 -0
- package/packages/jam/ticket-pool/index.d.ts.map +1 -0
- package/packages/jam/ticket-pool/index.js +3 -0
- package/packages/jam/ticket-pool/pending-ticket-pool.d.ts +30 -0
- package/packages/jam/ticket-pool/pending-ticket-pool.d.ts.map +1 -0
- package/packages/jam/ticket-pool/pending-ticket-pool.js +56 -0
- package/packages/jam/ticket-pool/pending-ticket-pool.test.d.ts +2 -0
- package/packages/jam/ticket-pool/pending-ticket-pool.test.d.ts.map +1 -0
- package/packages/jam/ticket-pool/pending-ticket-pool.test.js +67 -0
- package/packages/jam/ticket-pool/ticket-validator.d.ts +47 -0
- package/packages/jam/ticket-pool/ticket-validator.d.ts.map +1 -0
- package/packages/jam/ticket-pool/ticket-validator.js +34 -0
- package/packages/jam/ticket-pool/ticket-validator.test.d.ts +2 -0
- package/packages/jam/ticket-pool/ticket-validator.test.d.ts.map +1 -0
- package/packages/jam/ticket-pool/ticket-validator.test.js +35 -0
- package/packages/jam/ticket-pool/verified-ticket-pool.d.ts +26 -0
- package/packages/jam/ticket-pool/verified-ticket-pool.d.ts.map +1 -0
- package/packages/jam/ticket-pool/verified-ticket-pool.js +41 -0
- package/packages/jam/ticket-pool/verified-ticket-pool.test.d.ts +2 -0
- package/packages/jam/ticket-pool/verified-ticket-pool.test.d.ts.map +1 -0
- package/packages/jam/ticket-pool/verified-ticket-pool.test.js +54 -0
- package/packages/workers/api/config.d.ts +2 -2
- package/packages/workers/api/config.d.ts.map +1 -1
- package/packages/workers/api/config.js +1 -1
- package/packages/workers/api/port.d.ts +5 -1
- package/packages/workers/api/port.d.ts.map +1 -1
- package/packages/workers/api/port.js +56 -13
- package/packages/workers/api/port.test.js +35 -0
- package/packages/workers/api-node/config.d.ts +65 -9
- package/packages/workers/api-node/config.d.ts.map +1 -1
- package/packages/workers/api-node/config.js +151 -26
- package/packages/workers/api-node/config.test.js +88 -2
- package/packages/workers/api-node/port.d.ts +3 -0
- package/packages/workers/api-node/port.d.ts.map +1 -1
- package/packages/workers/api-node/port.js +31 -2
- package/packages/workers/api-node/port.test.js +17 -0
- package/packages/workers/api-node/protocol.d.ts +3 -3
- package/packages/workers/api-node/protocol.d.ts.map +1 -1
- package/packages/workers/api-node/protocol.js +18 -12
- package/packages/workers/block-authorship/{generator.d.ts → block-generator.d.ts} +5 -5
- package/packages/workers/block-authorship/block-generator.d.ts.map +1 -0
- package/packages/workers/block-authorship/{generator.js → block-generator.js} +3 -3
- package/packages/workers/block-authorship/block-generator.test.d.ts +2 -0
- package/packages/workers/block-authorship/block-generator.test.d.ts.map +1 -0
- package/packages/workers/block-authorship/{generator.test.js → block-generator.test.js} +8 -8
- package/packages/workers/block-authorship/epoch-authoring-slots.d.ts +35 -0
- package/packages/workers/block-authorship/epoch-authoring-slots.d.ts.map +1 -0
- package/packages/workers/block-authorship/epoch-authoring-slots.js +86 -0
- package/packages/workers/block-authorship/epoch-tracker.d.ts +29 -0
- package/packages/workers/block-authorship/epoch-tracker.d.ts.map +1 -0
- package/packages/workers/block-authorship/epoch-tracker.js +80 -0
- package/packages/workers/block-authorship/index.d.ts.map +1 -1
- package/packages/workers/block-authorship/index.js +1 -1
- package/packages/workers/block-authorship/main.d.ts +3 -0
- package/packages/workers/block-authorship/main.d.ts.map +1 -1
- package/packages/workers/block-authorship/main.js +198 -316
- package/packages/workers/block-authorship/ticket-generator/bootstrap-main.d.ts +2 -0
- package/packages/workers/block-authorship/ticket-generator/bootstrap-main.d.ts.map +1 -0
- package/packages/workers/block-authorship/ticket-generator/bootstrap-main.js +23 -0
- package/packages/workers/block-authorship/ticket-generator/index.d.ts +16 -0
- package/packages/workers/block-authorship/ticket-generator/index.d.ts.map +1 -0
- package/packages/workers/block-authorship/ticket-generator/index.js +62 -0
- package/packages/workers/block-authorship/ticket-generator/protocol.d.ts +50 -0
- package/packages/workers/block-authorship/ticket-generator/protocol.d.ts.map +1 -0
- package/packages/workers/block-authorship/ticket-generator/protocol.js +54 -0
- package/packages/workers/block-authorship/{ticket-generator.d.ts → ticket-generator/ticket-generator.d.ts} +4 -0
- package/packages/workers/block-authorship/ticket-generator/ticket-generator.d.ts.map +1 -0
- package/packages/workers/block-authorship/{ticket-generator.js → ticket-generator/ticket-generator.js} +19 -9
- package/packages/workers/block-authorship/ticket-generator/ticket-generator.test.d.ts.map +1 -0
- package/packages/workers/block-authorship/{ticket-generator.test.js → ticket-generator/ticket-generator.test.js} +13 -9
- package/packages/workers/block-authorship/ticket-generator/worker-pool.d.ts +36 -0
- package/packages/workers/block-authorship/ticket-generator/worker-pool.d.ts.map +1 -0
- package/packages/workers/block-authorship/ticket-generator/worker-pool.js +111 -0
- package/packages/workers/block-authorship/ticket-validator.d.ts +31 -0
- package/packages/workers/block-authorship/ticket-validator.d.ts.map +1 -0
- package/packages/workers/block-authorship/ticket-validator.js +59 -0
- package/packages/workers/comms-authorship-network/protocol.d.ts +14 -4
- package/packages/workers/comms-authorship-network/protocol.d.ts.map +1 -1
- package/packages/workers/comms-authorship-network/protocol.js +12 -6
- package/packages/workers/comms-authorship-network/tickets-message.d.ts +0 -14
- package/packages/workers/comms-authorship-network/tickets-message.d.ts.map +1 -1
- package/packages/workers/comms-authorship-network/tickets-message.js +0 -17
- package/packages/workers/importer/finality.d.ts +2 -0
- package/packages/workers/importer/finality.d.ts.map +1 -1
- package/packages/workers/importer/finality.js +8 -1
- package/packages/workers/importer/importer.d.ts +2 -2
- package/packages/workers/importer/importer.d.ts.map +1 -1
- package/packages/workers/importer/importer.js +6 -5
- package/packages/workers/importer/main.d.ts +1 -1
- package/packages/workers/importer/main.d.ts.map +1 -1
- package/packages/workers/importer/main.js +1 -1
- package/packages/workers/importer/stats.d.ts +1 -3
- package/packages/workers/importer/stats.d.ts.map +1 -1
- package/packages/workers/importer/stats.js +12 -12
- package/packages/workers/jam-network/main.d.ts.map +1 -1
- package/packages/workers/jam-network/main.js +26 -5
- package/packages/workers/block-authorship/generator.d.ts.map +0 -1
- package/packages/workers/block-authorship/generator.test.d.ts +0 -2
- package/packages/workers/block-authorship/generator.test.d.ts.map +0 -1
- package/packages/workers/block-authorship/ticket-generator.d.ts.map +0 -1
- package/packages/workers/block-authorship/ticket-generator.test.d.ts.map +0 -1
- /package/packages/configs/{typeberry-dev.json → typeberry-dev-tiny.json} +0 -0
- /package/packages/workers/block-authorship/{ticket-generator.test.d.ts → ticket-generator/ticket-generator.test.d.ts} +0 -0
|
@@ -71,6 +71,7 @@ export declare class Bytes<T extends number> extends BytesBlob {
|
|
|
71
71
|
isEqualTo(other: Bytes<T>): boolean;
|
|
72
72
|
/** Converts current type into some opaque extension. */
|
|
73
73
|
asOpaque<R>(): Opaque<Bytes<T>, TokenOf<R, Bytes<T>>>;
|
|
74
|
+
toStringTruncated(): string;
|
|
74
75
|
}
|
|
75
76
|
export declare const bytesBlobComparator: Comparator<BytesBlob>;
|
|
76
77
|
//# sourceMappingURL=bytes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../../../../../packages/core/bytes/bytes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../../../../../packages/core/bytes/bytes.ts"],"names":[],"mappings":"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"}
|
|
@@ -197,6 +197,14 @@ export class Bytes extends BytesBlob {
|
|
|
197
197
|
asOpaque() {
|
|
198
198
|
return asOpaqueType(this);
|
|
199
199
|
}
|
|
200
|
+
toStringTruncated() {
|
|
201
|
+
if (this.raw.length > 8) {
|
|
202
|
+
const start = bytesToHexString(this.raw.subarray(0, 2));
|
|
203
|
+
const end = bytesToHexString(this.raw.subarray(this.raw.length - 2));
|
|
204
|
+
return `${start}...${end.substring(2)}`;
|
|
205
|
+
}
|
|
206
|
+
return `${this.toString()}`;
|
|
207
|
+
}
|
|
200
208
|
}
|
|
201
209
|
function byteFromString(s) {
|
|
202
210
|
check `${s.length === 2} Two-character string expected`;
|
|
@@ -56,7 +56,7 @@ export declare class SortedArray<V> implements ImmutableSortedArray<V> {
|
|
|
56
56
|
findIndex(v: V): number;
|
|
57
57
|
findExact(v: V): V | undefined;
|
|
58
58
|
/** Remove one matching element from the collection. */
|
|
59
|
-
removeOne(v: V):
|
|
59
|
+
removeOne(v: V): V | undefined;
|
|
60
60
|
has(v: V): boolean;
|
|
61
61
|
get length(): number;
|
|
62
62
|
/** Return a regular array that's a copy of this one. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sorted-array.d.ts","sourceRoot":"","sources":["../../../../../packages/core/collections/sorted-array.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,MAAM,WAAW,oBAAoB,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAC1D,wBAAwB;IACxB,IAAI,KAAK,IAAI,SAAS,CAAC,EAAE,CAAC;IAC1B,6BAA6B;IAC7B,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAEhC;;;OAGG;IACH,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IAExB;;;;;;;OAOG;IACH,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAE/B,qDAAqD;IACrD,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IAEnB,+CAA+C;IAC/C,IAAI,MAAM,IAAI,MAAM,CAAC;IAErB,wDAAwD;IACxD,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;CAC1C;AAED;;;;;;;GAOG;AACH,qBAAa,WAAW,CAAC,CAAC,CAAE,YAAW,oBAAoB,CAAC,CAAC,CAAC;aAgC1C,KAAK,EAAE,CAAC,EAAE;aACV,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAhC3C;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,GAAE,SAAS,CAAC,EAAO;IAMvE;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,GAAE,SAAS,CAAC,EAAO;IAkB7E,SAAS,aACS,KAAK,EAAE,CAAC,EAAE,EACV,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAG3C,4CAA4C;IACrC,MAAM,CAAC,CAAC,EAAE,CAAC;IAKlB;;;;OAIG;IACI,GAAG,IAAI,CAAC,GAAG,SAAS;IAIpB,SAAS,CAAC,CAAC,EAAE,CAAC;IASd,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IASrC,uDAAuD;IAChD,SAAS,CAAC,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"sorted-array.d.ts","sourceRoot":"","sources":["../../../../../packages/core/collections/sorted-array.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,MAAM,WAAW,oBAAoB,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAC1D,wBAAwB;IACxB,IAAI,KAAK,IAAI,SAAS,CAAC,EAAE,CAAC;IAC1B,6BAA6B;IAC7B,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAEhC;;;OAGG;IACH,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IAExB;;;;;;;OAOG;IACH,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAE/B,qDAAqD;IACrD,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IAEnB,+CAA+C;IAC/C,IAAI,MAAM,IAAI,MAAM,CAAC;IAErB,wDAAwD;IACxD,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;CAC1C;AAED;;;;;;;GAOG;AACH,qBAAa,WAAW,CAAC,CAAC,CAAE,YAAW,oBAAoB,CAAC,CAAC,CAAC;aAgC1C,KAAK,EAAE,CAAC,EAAE;aACV,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAhC3C;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,GAAE,SAAS,CAAC,EAAO;IAMvE;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,GAAE,SAAS,CAAC,EAAO;IAkB7E,SAAS,aACS,KAAK,EAAE,CAAC,EAAE,EACV,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAG3C,4CAA4C;IACrC,MAAM,CAAC,CAAC,EAAE,CAAC;IAKlB;;;;OAIG;IACI,GAAG,IAAI,CAAC,GAAG,SAAS;IAIpB,SAAS,CAAC,CAAC,EAAE,CAAC;IASd,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IASrC,uDAAuD;IAChD,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAU9B,GAAG,CAAC,CAAC,EAAE,CAAC;IAIf,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED,wDAAwD;IACjD,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE;IAI/C,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;;;;IA8B3B,4DAA4D;IAC5D,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAqClG,kDAAkD;IACjD,CAAC,MAAM,CAAC,QAAQ,CAAC;CAKnB"}
|
|
@@ -69,9 +69,11 @@ export class SortedArray {
|
|
|
69
69
|
removeOne(v) {
|
|
70
70
|
const findIdx = this.binarySearch(v);
|
|
71
71
|
if (findIdx.isEqual) {
|
|
72
|
-
// remove the element
|
|
73
|
-
this.array.splice(findIdx.idx, 1);
|
|
72
|
+
// remove the element and return the stored one
|
|
73
|
+
const [removed] = this.array.splice(findIdx.idx, 1);
|
|
74
|
+
return removed;
|
|
74
75
|
}
|
|
76
|
+
return undefined;
|
|
75
77
|
}
|
|
76
78
|
has(v) {
|
|
77
79
|
return this.binarySearch(v).isEqual;
|
|
@@ -59,6 +59,16 @@ describe("SortedArray", { timeout: 10 }, () => {
|
|
|
59
59
|
data.removeOne(2);
|
|
60
60
|
assert.deepStrictEqual(data.slice(), [3]);
|
|
61
61
|
});
|
|
62
|
+
it("should return the stored element that was removed", () => {
|
|
63
|
+
const byKey = (self, other) => cmp(self[0], other[0]);
|
|
64
|
+
const data = SortedArray.fromArray(byKey, [
|
|
65
|
+
[1, "a"],
|
|
66
|
+
[2, "b"],
|
|
67
|
+
]);
|
|
68
|
+
const removed = data.removeOne([1, "x"]);
|
|
69
|
+
assert.deepStrictEqual(removed, [1, "a"]);
|
|
70
|
+
assert.strictEqual(data.removeOne([5, "z"]), undefined);
|
|
71
|
+
});
|
|
62
72
|
it("should throw when using fromSortedArray and array is not sorted", () => {
|
|
63
73
|
const data = [1, 3, 2];
|
|
64
74
|
const tryToCreate = () => SortedArray.fromSortedArray(cmp, data);
|
|
@@ -34,7 +34,7 @@ export declare class SortedSet<V> extends SortedArray<V> implements ImmutableSor
|
|
|
34
34
|
*
|
|
35
35
|
* Putting another value that's equal via comparator will replace the current one.
|
|
36
36
|
*/
|
|
37
|
-
replace(v: V):
|
|
37
|
+
replace(v: V): V | undefined;
|
|
38
38
|
/** Create a new SortedSet from two sorted collections. */
|
|
39
39
|
static fromTwoSortedCollections<V>(first: ImmutableSortedArray<V>, second: ImmutableSortedArray<V>): SortedSet<V>;
|
|
40
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sorted-set.d.ts","sourceRoot":"","sources":["../../../../../packages/core/collections/sorted-set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,KAAK,oBAAoB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE3E,MAAM,WAAW,kBAAkB,CAAC,CAAC,CAAE,SAAQ,oBAAoB,CAAC,CAAC,CAAC;CAAG;AAEzE;;;;;;;GAOG;AACH,qBAAa,SAAS,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAE,YAAW,kBAAkB,CAAC,CAAC,CAAC;IAC/E;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,GAAE,SAAS,CAAC,EAAO;IAkBvE;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE;IAaxE;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,GAAE,SAAS,CAAC,EAAO;IAiB7E,wEAAwE;IACjE,MAAM,CAAC,CAAC,EAAE,CAAC;IAOlB;;;;OAIG;IACI,OAAO,CAAC,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"sorted-set.d.ts","sourceRoot":"","sources":["../../../../../packages/core/collections/sorted-set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,KAAK,oBAAoB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE3E,MAAM,WAAW,kBAAkB,CAAC,CAAC,CAAE,SAAQ,oBAAoB,CAAC,CAAC,CAAC;CAAG;AAEzE;;;;;;;GAOG;AACH,qBAAa,SAAS,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAE,YAAW,kBAAkB,CAAC,CAAC,CAAC;IAC/E;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,GAAE,SAAS,CAAC,EAAO;IAkBvE;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE;IAaxE;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,GAAE,SAAS,CAAC,EAAO;IAiB7E,wEAAwE;IACjE,MAAM,CAAC,CAAC,EAAE,CAAC;IAOlB;;;;OAIG;IACI,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAUnC,0DAA0D;IAC1D,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC;CA0BnG"}
|
|
@@ -73,8 +73,12 @@ export class SortedSet extends SortedArray {
|
|
|
73
73
|
*/
|
|
74
74
|
replace(v) {
|
|
75
75
|
const findIdx = this.binarySearch(v);
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
if (findIdx.isEqual) {
|
|
77
|
+
const [displaced] = this.array.splice(findIdx.idx, 1, v);
|
|
78
|
+
return displaced;
|
|
79
|
+
}
|
|
80
|
+
this.array.splice(findIdx.idx, 0, v);
|
|
81
|
+
return undefined;
|
|
78
82
|
}
|
|
79
83
|
/** Create a new SortedSet from two sorted collections. */
|
|
80
84
|
static fromTwoSortedCollections(first, second) {
|
|
@@ -65,6 +65,30 @@ describe("SortedSet", () => {
|
|
|
65
65
|
assert.deepStrictEqual(data.length, 3);
|
|
66
66
|
});
|
|
67
67
|
});
|
|
68
|
+
describe("replace", () => {
|
|
69
|
+
const byKey = (self, other) => cmp(self[0], other[0]);
|
|
70
|
+
it("should return the displaced element when replacing an equal one", () => {
|
|
71
|
+
const data = SortedSet.fromArrayUnique(byKey, [
|
|
72
|
+
[1, "a"],
|
|
73
|
+
[2, "b"],
|
|
74
|
+
]);
|
|
75
|
+
const displaced = data.replace([1, "c"]);
|
|
76
|
+
assert.deepStrictEqual(displaced, [1, "a"]);
|
|
77
|
+
assert.deepStrictEqual(data.slice(), [
|
|
78
|
+
[1, "c"],
|
|
79
|
+
[2, "b"],
|
|
80
|
+
]);
|
|
81
|
+
});
|
|
82
|
+
it("should return undefined when inserting a fresh element", () => {
|
|
83
|
+
const data = SortedSet.fromArrayUnique(byKey, [[1, "a"]]);
|
|
84
|
+
const displaced = data.replace([2, "b"]);
|
|
85
|
+
assert.strictEqual(displaced, undefined);
|
|
86
|
+
assert.deepStrictEqual(data.slice(), [
|
|
87
|
+
[1, "a"],
|
|
88
|
+
[2, "b"],
|
|
89
|
+
]);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
68
92
|
describe("fromTwoSortedCollections", () => {
|
|
69
93
|
it("should merge two sorted sets without duplicates", () => {
|
|
70
94
|
const arr1 = [1, 2, 3];
|
|
@@ -59,9 +59,11 @@ export declare function measure(id: string): () => {
|
|
|
59
59
|
* `arrayBuffers` should allow tracking WASM memory, since every instance backs its
|
|
60
60
|
* memory with `ArrayBuffer`.
|
|
61
61
|
*/
|
|
62
|
-
export declare function memoryUsage(): string;
|
|
62
|
+
export declare function memoryUsage(withDetails: boolean): string;
|
|
63
63
|
/** Create a stateful memory usage reporter. */
|
|
64
|
-
export declare function memoryTracker(
|
|
64
|
+
export declare function memoryTracker(withDetails: boolean): {
|
|
65
|
+
toString(): string;
|
|
66
|
+
};
|
|
65
67
|
/** A class that adds `toString` method that prints all properties of an object. */
|
|
66
68
|
export declare abstract class WithDebug {
|
|
67
69
|
toString(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../../../packages/core/utils/debug.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,YAExB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,cAA6F,CAAC;AAE9G;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CACnB,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,OAAO,EAClB,GAAG,IAAI,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,SAAS,IAAI,IAAI,CAO3B;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAE/C;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,QAKpE;AAED,6BAA6B;AAC7B,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAEzC;AAkED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM;;;;;EAgBjC;AAcD;;;;;;;GAOG;AACH,wBAAgB,WAAW,
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../../../packages/core/utils/debug.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,YAExB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,cAA6F,CAAC;AAE9G;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CACnB,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,OAAO,EAClB,GAAG,IAAI,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,SAAS,IAAI,IAAI,CAO3B;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAE/C;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,QAKpE;AAED,6BAA6B;AAC7B,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAEzC;AAkED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM;;;;;EAgBjC;AAcD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,CAUxD;AAED,+CAA+C;AAC/C,wBAAgB,aAAa,CAAC,WAAW,EAAE,OAAO,GAAG;IAAE,QAAQ,IAAI,MAAM,CAAA;CAAE,CAgB1E;AAED,mFAAmF;AACnF,8BAAsB,SAAS;IAC7B,QAAQ;CAGT;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;;EAMpC"}
|
|
@@ -148,26 +148,31 @@ function rawMemoryUsage() {
|
|
|
148
148
|
* `arrayBuffers` should allow tracking WASM memory, since every instance backs its
|
|
149
149
|
* memory with `ArrayBuffer`.
|
|
150
150
|
*/
|
|
151
|
-
export function memoryUsage() {
|
|
151
|
+
export function memoryUsage(withDetails) {
|
|
152
152
|
const m = rawMemoryUsage();
|
|
153
153
|
if (m === null) {
|
|
154
154
|
return "";
|
|
155
155
|
}
|
|
156
|
-
|
|
156
|
+
if (withDetails) {
|
|
157
|
+
return `rss=${toMb(m.rss)}MB heap=${toMb(m.heapUsed)}/${toMb(m.heapTotal)}MB external=${toMb(m.external)}MB arrayBuffers=${toMb(m.arrayBuffers)}MB`;
|
|
158
|
+
}
|
|
159
|
+
return `rss=${toMb(m.rss)}MB heap=${toMb(m.heapUsed)}/${toMb(m.heapTotal)}MB`;
|
|
157
160
|
}
|
|
158
161
|
/** Create a stateful memory usage reporter. */
|
|
159
|
-
export function memoryTracker() {
|
|
162
|
+
export function memoryTracker(withDetails) {
|
|
160
163
|
let prev = null;
|
|
161
|
-
return
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
164
|
+
return {
|
|
165
|
+
toString() {
|
|
166
|
+
const m = rawMemoryUsage();
|
|
167
|
+
if (m === null) {
|
|
168
|
+
return "";
|
|
169
|
+
}
|
|
170
|
+
const delta = prev === null || withDetails === false
|
|
171
|
+
? ""
|
|
172
|
+
: ` (Δrss=${signedMb(m.rss - prev.rss)}MB ΔarrayBuffers=${signedMb(m.arrayBuffers - prev.arrayBuffers)}MB)`;
|
|
173
|
+
prev = m;
|
|
174
|
+
return `${memoryUsage(withDetails)}${delta}`;
|
|
175
|
+
},
|
|
171
176
|
};
|
|
172
177
|
}
|
|
173
178
|
/** A class that adds `toString` method that prints all properties of an object. */
|
|
@@ -25,21 +25,27 @@ describe("utils::lazyInspect", () => {
|
|
|
25
25
|
});
|
|
26
26
|
describe("utils::memoryUsage", () => {
|
|
27
27
|
it("should report all memory fields", () => {
|
|
28
|
-
const usage = memoryUsage();
|
|
28
|
+
const usage = memoryUsage(true);
|
|
29
29
|
for (const field of ["rss=", "heap=", "external=", "arrayBuffers="]) {
|
|
30
30
|
assert.ok(usage.includes(field), `expected "${field}" in "${usage}"`);
|
|
31
31
|
}
|
|
32
32
|
});
|
|
33
|
+
it("should report all memory fields without details", () => {
|
|
34
|
+
const usage = memoryUsage(false);
|
|
35
|
+
for (const field of ["rss=", "heap="]) {
|
|
36
|
+
assert.ok(usage.includes(field), `expected "${field}" in "${usage}"`);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
33
39
|
});
|
|
34
40
|
describe("utils::memoryTracker", () => {
|
|
35
41
|
it("should not include a delta on the first call", () => {
|
|
36
|
-
const tracker = memoryTracker();
|
|
37
|
-
assert.ok(!tracker().includes("Δrss"));
|
|
42
|
+
const tracker = memoryTracker(true);
|
|
43
|
+
assert.ok(!tracker.toString().includes("Δrss"));
|
|
38
44
|
});
|
|
39
45
|
it("should include a delta on subsequent calls", () => {
|
|
40
|
-
const tracker = memoryTracker();
|
|
41
|
-
tracker();
|
|
42
|
-
const second = tracker();
|
|
46
|
+
const tracker = memoryTracker(true);
|
|
47
|
+
tracker.toString();
|
|
48
|
+
const second = tracker.toString();
|
|
43
49
|
assert.ok(second.includes("Δrss="), `expected delta in "${second}"`);
|
|
44
50
|
assert.ok(second.includes("ΔarrayBuffers="), `expected delta in "${second}"`);
|
|
45
51
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/core/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC7C,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/core/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC7C,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type Closer = () => Promise<void>;
|
|
2
|
+
export type ShutdownSignal = string;
|
|
3
|
+
export interface ShutdownLogger {
|
|
4
|
+
info: (msg: string) => void;
|
|
5
|
+
error: (msg: string) => void;
|
|
6
|
+
}
|
|
7
|
+
export interface ShutdownOptions {
|
|
8
|
+
/** Max ms allowed for `close` before forced exit(1). Default 10_000. */
|
|
9
|
+
timeoutMs?: number;
|
|
10
|
+
/** Signals to listen for. Default ["SIGTERM", "SIGINT"]. */
|
|
11
|
+
signals?: readonly ShutdownSignal[];
|
|
12
|
+
/** Logger; defaults to a no-op logger. */
|
|
13
|
+
log?: ShutdownLogger;
|
|
14
|
+
/** Test hook used instead of process.exit. */
|
|
15
|
+
exit?: (code: number) => never;
|
|
16
|
+
}
|
|
17
|
+
export declare function installShutdownHandlers(_close: Closer, _options?: ShutdownOptions): () => void;
|
|
18
|
+
//# sourceMappingURL=shutdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shutdown.d.ts","sourceRoot":"","sources":["../../../../../packages/core/utils/shutdown.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzC,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACpC,0CAA0C;IAC1C,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC;CAChC;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,eAAoB,GAAG,MAAM,IAAI,CAElG"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Closer, ShutdownOptions } from "./shutdown.js";
|
|
2
|
+
export type { Closer, ShutdownLogger, ShutdownOptions, ShutdownSignal } from "./shutdown.js";
|
|
3
|
+
/** Returns an uninstall function (used by tests). */
|
|
4
|
+
export declare function installShutdownHandlers(close: Closer, options?: ShutdownOptions): () => void;
|
|
5
|
+
//# sourceMappingURL=shutdown.node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shutdown.node.d.ts","sourceRoot":"","sources":["../../../../../packages/core/utils/shutdown.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE7D,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAK7F,qDAAqD;AACrD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM,IAAI,CA+EhG"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
const DEFAULT_SIGNALS = ["SIGTERM", "SIGINT"];
|
|
2
|
+
const DEFAULT_TIMEOUT_MS = 10_000;
|
|
3
|
+
/** Returns an uninstall function (used by tests). */
|
|
4
|
+
export function installShutdownHandlers(close, options = {}) {
|
|
5
|
+
const signals = (options.signals ?? DEFAULT_SIGNALS);
|
|
6
|
+
const exit = (options.exit ?? process.exit);
|
|
7
|
+
const log = options.log;
|
|
8
|
+
const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
9
|
+
let state = "idle";
|
|
10
|
+
const forceExit = (signal) => {
|
|
11
|
+
log?.error(`Received ${signal} during shutdown, forcing exit.`);
|
|
12
|
+
try {
|
|
13
|
+
exit(1);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
// test-time exit throws; swallow.
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const handler = (signal) => {
|
|
20
|
+
if (state === "closing" || state === "done") {
|
|
21
|
+
forceExit(signal);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
state = "closing";
|
|
25
|
+
log?.info(`Received ${signal}, draining...`);
|
|
26
|
+
void (async () => {
|
|
27
|
+
const TIMED_OUT = Symbol("timed-out");
|
|
28
|
+
let timeoutHandle;
|
|
29
|
+
const timeoutPromise = new Promise((resolve) => {
|
|
30
|
+
timeoutHandle = setTimeout(() => resolve(TIMED_OUT), timeoutMs);
|
|
31
|
+
});
|
|
32
|
+
timeoutHandle?.unref?.();
|
|
33
|
+
let code = 0;
|
|
34
|
+
try {
|
|
35
|
+
const outcome = await Promise.race([
|
|
36
|
+
Promise.resolve()
|
|
37
|
+
.then(close)
|
|
38
|
+
.then(() => "ok", (e) => ({ err: e })),
|
|
39
|
+
timeoutPromise,
|
|
40
|
+
]);
|
|
41
|
+
if (outcome === TIMED_OUT) {
|
|
42
|
+
code = 1;
|
|
43
|
+
log?.error(`Shutdown cleanup exceeded ${timeoutMs}ms timeout, forcing exit.`);
|
|
44
|
+
}
|
|
45
|
+
else if (typeof outcome === "object" && "err" in outcome) {
|
|
46
|
+
code = 1;
|
|
47
|
+
const e = outcome.err;
|
|
48
|
+
log?.error(`Shutdown close threw: ${e instanceof Error ? (e.stack ?? e.message) : String(e)}`);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
log?.info("Shutdown complete.");
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
clearTimeout(timeoutHandle);
|
|
56
|
+
state = "done";
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
exit(code);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// test-time exit throws; swallow.
|
|
63
|
+
}
|
|
64
|
+
})();
|
|
65
|
+
};
|
|
66
|
+
// Node passes the signal name to the listener, so a single handler works
|
|
67
|
+
// for every signal.
|
|
68
|
+
for (const sig of signals) {
|
|
69
|
+
process.on(sig, handler);
|
|
70
|
+
}
|
|
71
|
+
return () => {
|
|
72
|
+
for (const sig of signals) {
|
|
73
|
+
process.off(sig, handler);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shutdown.test.d.ts","sourceRoot":"","sources":["../../../../../packages/core/utils/shutdown.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import assert from "node:assert";
|
|
2
|
+
import { afterEach, describe, it } from "node:test";
|
|
3
|
+
import { installShutdownHandlers as installGenericShutdownHandlers } from "./shutdown.js";
|
|
4
|
+
import { installShutdownHandlers } from "./shutdown.node.js";
|
|
5
|
+
function makeExitRecorder() {
|
|
6
|
+
let resolveExited;
|
|
7
|
+
const exited = new Promise((resolve) => {
|
|
8
|
+
resolveExited = resolve;
|
|
9
|
+
});
|
|
10
|
+
const recorder = {
|
|
11
|
+
exitCode: null,
|
|
12
|
+
exited,
|
|
13
|
+
exit: ((code) => {
|
|
14
|
+
recorder.exitCode = code;
|
|
15
|
+
resolveExited();
|
|
16
|
+
// Satisfy `never` and abort the calling promise chain.
|
|
17
|
+
throw new Error(`__test_exit_${code}`);
|
|
18
|
+
}),
|
|
19
|
+
};
|
|
20
|
+
return recorder;
|
|
21
|
+
}
|
|
22
|
+
const silentLog = { info: () => { }, error: () => { } };
|
|
23
|
+
describe("utils::installShutdownHandlers", () => {
|
|
24
|
+
const uninstallers = [];
|
|
25
|
+
afterEach(() => {
|
|
26
|
+
while (uninstallers.length > 0) {
|
|
27
|
+
uninstallers.pop()?.();
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
it("calls close and exits 0 on first SIGTERM", async () => {
|
|
31
|
+
const exitRec = makeExitRecorder();
|
|
32
|
+
let closeCalled = false;
|
|
33
|
+
uninstallers.push(installShutdownHandlers(async () => {
|
|
34
|
+
closeCalled = true;
|
|
35
|
+
}, { exit: exitRec.exit, log: silentLog }));
|
|
36
|
+
process.emit("SIGTERM", "SIGTERM");
|
|
37
|
+
await exitRec.exited;
|
|
38
|
+
assert.strictEqual(closeCalled, true);
|
|
39
|
+
assert.strictEqual(exitRec.exitCode, 0);
|
|
40
|
+
});
|
|
41
|
+
it("exits with code 1 when cleanup exceeds timeoutMs", async () => {
|
|
42
|
+
const exitRec = makeExitRecorder();
|
|
43
|
+
let closeStarted = false;
|
|
44
|
+
let errorLogged = null;
|
|
45
|
+
let releaseClose;
|
|
46
|
+
const closeReleased = new Promise((resolve) => {
|
|
47
|
+
releaseClose = resolve;
|
|
48
|
+
});
|
|
49
|
+
uninstallers.push(installShutdownHandlers(async () => {
|
|
50
|
+
closeStarted = true;
|
|
51
|
+
await closeReleased;
|
|
52
|
+
}, {
|
|
53
|
+
exit: exitRec.exit,
|
|
54
|
+
timeoutMs: 5,
|
|
55
|
+
log: {
|
|
56
|
+
info: () => { },
|
|
57
|
+
error: (msg) => {
|
|
58
|
+
errorLogged = msg;
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
}));
|
|
62
|
+
process.emit("SIGTERM", "SIGTERM");
|
|
63
|
+
await exitRec.exited;
|
|
64
|
+
assert.strictEqual(closeStarted, true, "close should have been invoked");
|
|
65
|
+
assert.strictEqual(exitRec.exitCode, 1);
|
|
66
|
+
assert.ok(errorLogged !== null, "expected timeout to be logged");
|
|
67
|
+
assert.match(errorLogged, /timeout|exceed/i);
|
|
68
|
+
// Allow the in-flight close promise to settle so the test doesn't leak.
|
|
69
|
+
releaseClose();
|
|
70
|
+
});
|
|
71
|
+
it("forces exit 1 when a second signal arrives during cleanup", async () => {
|
|
72
|
+
const exitRec = makeExitRecorder();
|
|
73
|
+
let releaseClose;
|
|
74
|
+
const closeReleased = new Promise((resolve) => {
|
|
75
|
+
releaseClose = resolve;
|
|
76
|
+
});
|
|
77
|
+
let errorLogged = null;
|
|
78
|
+
uninstallers.push(installShutdownHandlers(async () => {
|
|
79
|
+
await closeReleased;
|
|
80
|
+
}, {
|
|
81
|
+
// Large timeout so this test can't pass via the timeout path.
|
|
82
|
+
timeoutMs: 60_000,
|
|
83
|
+
exit: exitRec.exit,
|
|
84
|
+
log: {
|
|
85
|
+
info: () => { },
|
|
86
|
+
error: (msg) => {
|
|
87
|
+
errorLogged = msg;
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
}));
|
|
91
|
+
process.emit("SIGTERM", "SIGTERM");
|
|
92
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
93
|
+
process.emit("SIGINT", "SIGINT");
|
|
94
|
+
await exitRec.exited;
|
|
95
|
+
assert.strictEqual(exitRec.exitCode, 1);
|
|
96
|
+
assert.ok(errorLogged !== null, "expected force-exit message to be logged");
|
|
97
|
+
assert.match(errorLogged, /SIGINT/);
|
|
98
|
+
releaseClose();
|
|
99
|
+
});
|
|
100
|
+
it("does nothing after uninstall", async () => {
|
|
101
|
+
const exitRec = makeExitRecorder();
|
|
102
|
+
let closeCalled = false;
|
|
103
|
+
const uninstall = installShutdownHandlers(async () => {
|
|
104
|
+
closeCalled = true;
|
|
105
|
+
}, { exit: exitRec.exit, log: silentLog });
|
|
106
|
+
uninstall();
|
|
107
|
+
process.emit("SIGTERM", "SIGTERM");
|
|
108
|
+
// Give any (incorrectly registered) handler a tick to fire.
|
|
109
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
110
|
+
assert.strictEqual(closeCalled, false);
|
|
111
|
+
assert.strictEqual(exitRec.exitCode, null);
|
|
112
|
+
});
|
|
113
|
+
it("is a no-op from the generic shutdown module", async () => {
|
|
114
|
+
const exitRec = makeExitRecorder();
|
|
115
|
+
let closeCalled = false;
|
|
116
|
+
const uninstall = installGenericShutdownHandlers(async () => {
|
|
117
|
+
closeCalled = true;
|
|
118
|
+
}, { exit: exitRec.exit, log: silentLog });
|
|
119
|
+
uninstall();
|
|
120
|
+
assert.strictEqual(typeof uninstall, "function");
|
|
121
|
+
assert.strictEqual(closeCalled, false);
|
|
122
|
+
assert.strictEqual(exitRec.exitCode, null);
|
|
123
|
+
});
|
|
124
|
+
it("exits with code 1 when close rejects", async () => {
|
|
125
|
+
const exitRec = makeExitRecorder();
|
|
126
|
+
let errorLogged = null;
|
|
127
|
+
uninstallers.push(installShutdownHandlers(async () => {
|
|
128
|
+
throw new Error("boom");
|
|
129
|
+
}, {
|
|
130
|
+
exit: exitRec.exit,
|
|
131
|
+
log: {
|
|
132
|
+
info: () => { },
|
|
133
|
+
error: (msg) => {
|
|
134
|
+
errorLogged = msg;
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
}));
|
|
138
|
+
process.emit("SIGTERM", "SIGTERM");
|
|
139
|
+
await exitRec.exited;
|
|
140
|
+
assert.strictEqual(exitRec.exitCode, 1);
|
|
141
|
+
assert.ok(errorLogged !== null, "expected error to be logged");
|
|
142
|
+
assert.match(errorLogged, /boom/);
|
|
143
|
+
});
|
|
144
|
+
it("exits with code 1 when close throws synchronously", async () => {
|
|
145
|
+
const exitRec = makeExitRecorder();
|
|
146
|
+
let errorLogged = null;
|
|
147
|
+
uninstallers.push(installShutdownHandlers(() => {
|
|
148
|
+
throw new Error("sync boom");
|
|
149
|
+
}, {
|
|
150
|
+
exit: exitRec.exit,
|
|
151
|
+
log: {
|
|
152
|
+
info: () => { },
|
|
153
|
+
error: (msg) => {
|
|
154
|
+
errorLogged = msg;
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
}));
|
|
158
|
+
process.emit("SIGTERM", "SIGTERM");
|
|
159
|
+
await exitRec.exited;
|
|
160
|
+
assert.strictEqual(exitRec.exitCode, 1);
|
|
161
|
+
assert.ok(errorLogged !== null, "expected error to be logged");
|
|
162
|
+
assert.match(errorLogged, /sync boom/);
|
|
163
|
+
});
|
|
164
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../../packages/extensions/ipc/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AAIrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIxD,4CAA4C;AAC5C,qBAAa,SAAS;IAKA,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJ3C,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM;IAIzB,OAAO;IAEP,+CAA+C;IAC/C,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAI3B,wBAAwB;IACxB,KAAK,IAAI,IAAI;CAGd;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../../packages/extensions/ipc/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AAIrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIxD,4CAA4C;AAC5C,qBAAa,SAAS;IAKA,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJ3C,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM;IAIzB,OAAO;IAEP,+CAA+C;IAC/C,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAI3B,wBAAwB;IACxB,KAAK,IAAI,IAAI;CAGd;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,UAAU,cAuFhG"}
|
|
@@ -87,6 +87,13 @@ export function startIpcServer(name, newMessageHandler) {
|
|
|
87
87
|
controller.abort();
|
|
88
88
|
// unrefing
|
|
89
89
|
server.unref();
|
|
90
|
+
// Windows named pipes are cleaned up by the OS; Unix sockets are not.
|
|
91
|
+
if (!isWindows) {
|
|
92
|
+
try {
|
|
93
|
+
fs.unlinkSync(socketPath);
|
|
94
|
+
}
|
|
95
|
+
catch { }
|
|
96
|
+
}
|
|
90
97
|
};
|
|
91
98
|
}
|
|
92
99
|
/**
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { JsonObject } from "#@typeberry/block-json";
|
|
2
1
|
import { PvmBackend } from "#@typeberry/config";
|
|
3
2
|
import { type FromJson } from "#@typeberry/json-parser";
|
|
4
3
|
import { AuthorshipOptions } from "./authorship.js";
|
|
5
4
|
import { JipChainSpec } from "./jip-chain-spec.js";
|
|
6
5
|
/** Development config. Will accept unsealed blocks for now. */
|
|
7
|
-
export declare const
|
|
6
|
+
export declare const DEV_TINY_CONFIG = "dev";
|
|
7
|
+
export declare const DEV_FULL_CONFIG = "dev-full";
|
|
8
8
|
/** Default config file. */
|
|
9
9
|
export declare const DEFAULT_CONFIG = "default";
|
|
10
10
|
export declare const NODE_DEFAULTS: {
|
|
@@ -19,7 +19,23 @@ export declare enum KnownChainSpec {
|
|
|
19
19
|
/** Full chain spec. */
|
|
20
20
|
Full = "full"
|
|
21
21
|
}
|
|
22
|
+
/** Persistent regular-node database backend. */
|
|
23
|
+
export declare enum RegularStateBackend {
|
|
24
|
+
/** @deprecated lmdb remains available as an explicit fallback, but fjall is the default backend. */
|
|
25
|
+
Lmdb = "lmdb",
|
|
26
|
+
Fjall = "fjall"
|
|
27
|
+
}
|
|
22
28
|
export declare const knownChainSpecFromJson: FromJson<KnownChainSpec>;
|
|
29
|
+
export declare const regularStateBackendFromJson: FromJson<RegularStateBackend>;
|
|
30
|
+
type NodeConfigurationJson = {
|
|
31
|
+
$schema: string;
|
|
32
|
+
version: number;
|
|
33
|
+
flavor: KnownChainSpec;
|
|
34
|
+
chain_spec: JipChainSpec;
|
|
35
|
+
database_base_path?: string;
|
|
36
|
+
state_backend?: RegularStateBackend;
|
|
37
|
+
authorship: AuthorshipOptions;
|
|
38
|
+
};
|
|
23
39
|
export declare class NodeConfiguration {
|
|
24
40
|
readonly $schema: string;
|
|
25
41
|
readonly version: number;
|
|
@@ -27,10 +43,13 @@ export declare class NodeConfiguration {
|
|
|
27
43
|
readonly chainSpec: JipChainSpec;
|
|
28
44
|
/** If database path is not provided, we load an in-memory db. */
|
|
29
45
|
readonly databaseBasePath: string | undefined;
|
|
46
|
+
/** Persistent database backend used when `databaseBasePath` is set. */
|
|
47
|
+
readonly stateBackend: RegularStateBackend;
|
|
30
48
|
readonly authorship: AuthorshipOptions;
|
|
31
49
|
static fromJson: import("@typeberry/json-parser").FromJsonWithParser<unknown, NodeConfiguration>;
|
|
32
|
-
static new({ $schema, version, flavor, chain_spec, database_base_path, authorship }:
|
|
50
|
+
static new({ $schema, version, flavor, chain_spec, database_base_path, state_backend, authorship, }: NodeConfigurationJson): NodeConfiguration;
|
|
33
51
|
private constructor();
|
|
34
52
|
}
|
|
35
53
|
export declare function loadConfig(config: string[], withRelPath: (p: string) => string): NodeConfiguration;
|
|
54
|
+
export {};
|
|
36
55
|
//# sourceMappingURL=node-config.d.ts.map
|