@elaraai/east 1.0.78 → 1.0.80
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/README.md +1 -1
- package/dist/src/comparison.d.ts.map +1 -1
- package/dist/src/comparison.js +4 -5
- package/dist/src/comparison.js.map +1 -1
- package/dist/src/compile/builtins/array.d.ts +59 -0
- package/dist/src/compile/builtins/array.d.ts.map +1 -0
- package/dist/src/compile/builtins/array.js +656 -0
- package/dist/src/compile/builtins/array.js.map +1 -0
- package/dist/src/compile/builtins/blob.d.ts +18 -0
- package/dist/src/compile/builtins/blob.d.ts.map +1 -0
- package/dist/src/compile/builtins/blob.js +150 -0
- package/dist/src/compile/builtins/blob.js.map +1 -0
- package/dist/src/compile/builtins/compare.d.ts +18 -0
- package/dist/src/compile/builtins/compare.d.ts.map +1 -0
- package/dist/src/compile/builtins/compare.js +52 -0
- package/dist/src/compile/builtins/compare.js.map +1 -0
- package/dist/src/compile/builtins/datetime.d.ts +21 -0
- package/dist/src/compile/builtins/datetime.d.ts.map +1 -0
- package/dist/src/compile/builtins/datetime.js +46 -0
- package/dist/src/compile/builtins/datetime.js.map +1 -0
- package/dist/src/compile/builtins/dict.d.ts +46 -0
- package/dist/src/compile/builtins/dict.d.ts.map +1 -0
- package/dist/src/compile/builtins/dict.js +551 -0
- package/dist/src/compile/builtins/dict.js.map +1 -0
- package/dist/src/compile/builtins/index.d.ts +9 -0
- package/dist/src/compile/builtins/index.d.ts.map +1 -0
- package/dist/src/compile/builtins/index.js +28 -0
- package/dist/src/compile/builtins/index.js.map +1 -0
- package/dist/src/compile/builtins/matrix.d.ts +31 -0
- package/dist/src/compile/builtins/matrix.d.ts.map +1 -0
- package/dist/src/compile/builtins/matrix.js +310 -0
- package/dist/src/compile/builtins/matrix.js.map +1 -0
- package/dist/src/compile/builtins/primitives.d.ts +36 -0
- package/dist/src/compile/builtins/primitives.d.ts.map +1 -0
- package/dist/src/compile/builtins/primitives.js +67 -0
- package/dist/src/compile/builtins/primitives.js.map +1 -0
- package/dist/src/compile/builtins/ref.d.ts +11 -0
- package/dist/src/compile/builtins/ref.d.ts.map +1 -0
- package/dist/src/compile/builtins/ref.js +30 -0
- package/dist/src/compile/builtins/ref.js.map +1 -0
- package/dist/src/compile/builtins/set.d.ts +41 -0
- package/dist/src/compile/builtins/set.d.ts.map +1 -0
- package/dist/src/compile/builtins/set.js +385 -0
- package/dist/src/compile/builtins/set.js.map +1 -0
- package/dist/src/compile/builtins/sparse.d.ts +19 -0
- package/dist/src/compile/builtins/sparse.d.ts.map +1 -0
- package/dist/src/compile/builtins/sparse.js +143 -0
- package/dist/src/compile/builtins/sparse.js.map +1 -0
- package/dist/src/compile/builtins/string.d.ts +34 -0
- package/dist/src/compile/builtins/string.d.ts.map +1 -0
- package/dist/src/compile/builtins/string.js +238 -0
- package/dist/src/compile/builtins/string.js.map +1 -0
- package/dist/src/compile/builtins/vector.d.ts +44 -0
- package/dist/src/compile/builtins/vector.d.ts.map +1 -0
- package/dist/src/compile/builtins/vector.js +463 -0
- package/dist/src/compile/builtins/vector.js.map +1 -0
- package/dist/src/compile/constructors.d.ts +13 -0
- package/dist/src/compile/constructors.d.ts.map +1 -0
- package/dist/src/compile/constructors.js +179 -0
- package/dist/src/compile/constructors.js.map +1 -0
- package/dist/src/compile/control.d.ts +13 -0
- package/dist/src/compile/control.d.ts.map +1 -0
- package/dist/src/compile/control.js +513 -0
- package/dist/src/compile/control.js.map +1 -0
- package/dist/src/compile/functions.d.ts +13 -0
- package/dist/src/compile/functions.d.ts.map +1 -0
- package/dist/src/compile/functions.js +492 -0
- package/dist/src/compile/functions.js.map +1 -0
- package/dist/src/compile/ir.d.ts +19 -0
- package/dist/src/compile/ir.d.ts.map +1 -0
- package/dist/src/compile/ir.js +193 -0
- package/dist/src/compile/ir.js.map +1 -0
- package/dist/src/compile/runtime.d.ts +78 -0
- package/dist/src/compile/runtime.d.ts.map +1 -0
- package/dist/src/compile/runtime.js +111 -0
- package/dist/src/compile/runtime.js.map +1 -0
- package/dist/src/compile/type_parameters.d.ts +4 -0
- package/dist/src/compile/type_parameters.d.ts.map +1 -0
- package/dist/src/compile/type_parameters.js +55 -0
- package/dist/src/compile/type_parameters.js.map +1 -0
- package/dist/src/compile/typed_arrays.d.ts +28 -0
- package/dist/src/compile/typed_arrays.d.ts.map +1 -0
- package/dist/src/compile/typed_arrays.js +77 -0
- package/dist/src/compile/typed_arrays.js.map +1 -0
- package/dist/src/compile.d.ts +6 -41
- package/dist/src/compile.d.ts.map +1 -1
- package/dist/src/compile.js +8 -4415
- package/dist/src/compile.js.map +1 -1
- package/dist/src/compile.open_beast.spec.js +5 -4
- package/dist/src/compile.open_beast.spec.js.map +1 -1
- package/dist/src/containers/sortedmap.d.ts +2 -1
- package/dist/src/containers/sortedmap.d.ts.map +1 -1
- package/dist/src/containers/sortedmap.js +4 -2
- package/dist/src/containers/sortedmap.js.map +1 -1
- package/dist/src/containers/sortedset.d.ts +2 -1
- package/dist/src/containers/sortedset.d.ts.map +1 -1
- package/dist/src/containers/sortedset.js +4 -2
- package/dist/src/containers/sortedset.js.map +1 -1
- package/dist/src/error.d.ts +15 -0
- package/dist/src/error.d.ts.map +1 -1
- package/dist/src/error.js +16 -0
- package/dist/src/error.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/patch/index.d.ts +1 -1
- package/dist/src/patch/index.d.ts.map +1 -1
- package/dist/src/patch/index.js +1 -1
- package/dist/src/patch/index.js.map +1 -1
- package/dist/src/patch/type_of_patch.d.ts +25 -1
- package/dist/src/patch/type_of_patch.d.ts.map +1 -1
- package/dist/src/patch/type_of_patch.js +33 -10
- package/dist/src/patch/type_of_patch.js.map +1 -1
- package/dist/src/platform.spec.js +19 -1
- package/dist/src/platform.spec.js.map +1 -1
- package/dist/src/runner_protocol.d.ts +316 -0
- package/dist/src/runner_protocol.d.ts.map +1 -0
- package/dist/src/runner_protocol.js +135 -0
- package/dist/src/runner_protocol.js.map +1 -0
- package/dist/src/serialization/beast2/index.d.ts +21 -5
- package/dist/src/serialization/beast2/index.d.ts.map +1 -1
- package/dist/src/serialization/beast2/index.js +12 -2
- package/dist/src/serialization/beast2/index.js.map +1 -1
- package/dist/src/serialization/beast2/index.spec.js +84 -3
- package/dist/src/serialization/beast2/index.spec.js.map +1 -1
- package/dist/src/serialization/beast2/shared.d.ts +32 -3
- package/dist/src/serialization/beast2/shared.d.ts.map +1 -1
- package/dist/src/serialization/beast2/shared.js +135 -10
- package/dist/src/serialization/beast2/shared.js.map +1 -1
- package/dist/src/serialization/beast2/v4/container.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v4/container.js +5 -3
- package/dist/src/serialization/beast2/v4/container.js.map +1 -1
- package/dist/src/serialization/beast2/v5/aliasing.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/aliasing.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/aliasing.spec.js +75 -0
- package/dist/src/serialization/beast2/v5/aliasing.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/boundary.d.ts +176 -0
- package/dist/src/serialization/beast2/v5/boundary.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/boundary.js +297 -0
- package/dist/src/serialization/beast2/v5/boundary.js.map +1 -0
- package/dist/src/serialization/beast2/v5/boundary.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/boundary.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/boundary.spec.js +479 -0
- package/dist/src/serialization/beast2/v5/boundary.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/codec.d.ts +6 -5
- package/dist/src/serialization/beast2/v5/codec.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/codec.js +18 -3
- package/dist/src/serialization/beast2/v5/codec.js.map +1 -1
- package/dist/src/serialization/beast2/v5/deflate.d.ts +24 -2
- package/dist/src/serialization/beast2/v5/deflate.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/deflate.js +47 -12
- package/dist/src/serialization/beast2/v5/deflate.js.map +1 -1
- package/dist/src/serialization/beast2/v5/deflate.spec.js +15 -1
- package/dist/src/serialization/beast2/v5/deflate.spec.js.map +1 -1
- package/dist/src/serialization/beast2/v5/elements.d.ts +64 -0
- package/dist/src/serialization/beast2/v5/elements.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/elements.js +320 -0
- package/dist/src/serialization/beast2/v5/elements.js.map +1 -0
- package/dist/src/serialization/beast2/v5/elements.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/elements.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/elements.spec.js +161 -0
- package/dist/src/serialization/beast2/v5/elements.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/frame-pool.d.ts +62 -21
- package/dist/src/serialization/beast2/v5/frame-pool.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/frame-pool.js +138 -27
- package/dist/src/serialization/beast2/v5/frame-pool.js.map +1 -1
- package/dist/src/serialization/beast2/v5/frame-pool.spec.js +198 -71
- package/dist/src/serialization/beast2/v5/frame-pool.spec.js.map +1 -1
- package/dist/src/serialization/beast2/v5/frame-worker.js +25 -15
- package/dist/src/serialization/beast2/v5/frame-worker.js.map +1 -1
- package/dist/src/serialization/beast2/v5/frames.d.ts +22 -12
- package/dist/src/serialization/beast2/v5/frames.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/frames.js +52 -27
- package/dist/src/serialization/beast2/v5/frames.js.map +1 -1
- package/dist/src/serialization/beast2/v5/geometry.d.ts +38 -1
- package/dist/src/serialization/beast2/v5/geometry.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/geometry.js +73 -1
- package/dist/src/serialization/beast2/v5/geometry.js.map +1 -1
- package/dist/src/serialization/beast2/v5/geometry.spec.js +34 -23
- package/dist/src/serialization/beast2/v5/geometry.spec.js.map +1 -1
- package/dist/src/serialization/beast2/v5/index.spec.js +32 -28
- package/dist/src/serialization/beast2/v5/index.spec.js.map +1 -1
- package/dist/src/serialization/beast2/v5/lazy.d.ts +42 -1
- package/dist/src/serialization/beast2/v5/lazy.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/lazy.js +143 -28
- package/dist/src/serialization/beast2/v5/lazy.js.map +1 -1
- package/dist/src/serialization/beast2/v5/lazy.spec.js +102 -24
- package/dist/src/serialization/beast2/v5/lazy.spec.js.map +1 -1
- package/dist/src/serialization/beast2/v5/manifest-writer.d.ts +110 -0
- package/dist/src/serialization/beast2/v5/manifest-writer.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/manifest-writer.js +118 -0
- package/dist/src/serialization/beast2/v5/manifest-writer.js.map +1 -0
- package/dist/src/serialization/beast2/v5/manifest-writer.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/manifest-writer.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/manifest-writer.spec.js +207 -0
- package/dist/src/serialization/beast2/v5/manifest-writer.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/manifest.d.ts +241 -0
- package/dist/src/serialization/beast2/v5/manifest.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/manifest.js +233 -0
- package/dist/src/serialization/beast2/v5/manifest.js.map +1 -0
- package/dist/src/serialization/beast2/v5/merge.d.ts +93 -0
- package/dist/src/serialization/beast2/v5/merge.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/merge.js +202 -0
- package/dist/src/serialization/beast2/v5/merge.js.map +1 -0
- package/dist/src/serialization/beast2/v5/merge.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/merge.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/merge.spec.js +118 -0
- package/dist/src/serialization/beast2/v5/merge.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/recut.d.ts +143 -0
- package/dist/src/serialization/beast2/v5/recut.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/recut.js +365 -0
- package/dist/src/serialization/beast2/v5/recut.js.map +1 -0
- package/dist/src/serialization/beast2/v5/recut.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/recut.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/recut.spec.js +215 -0
- package/dist/src/serialization/beast2/v5/recut.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/runs.d.ts +148 -0
- package/dist/src/serialization/beast2/v5/runs.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/runs.js +260 -0
- package/dist/src/serialization/beast2/v5/runs.js.map +1 -0
- package/dist/src/serialization/beast2/v5/runs.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/runs.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/runs.spec.js +182 -0
- package/dist/src/serialization/beast2/v5/runs.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/sha256.d.ts +19 -0
- package/dist/src/serialization/beast2/v5/sha256.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/sha256.js +103 -0
- package/dist/src/serialization/beast2/v5/sha256.js.map +1 -0
- package/dist/src/serialization/beast2/v5/sha256.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/sha256.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/sha256.spec.js +42 -0
- package/dist/src/serialization/beast2/v5/sha256.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/stream.d.ts +273 -86
- package/dist/src/serialization/beast2/v5/stream.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/stream.js +576 -244
- package/dist/src/serialization/beast2/v5/stream.js.map +1 -1
- package/dist/src/serialization/beast2/v5/sync-reader.spec.js +24 -10
- package/dist/src/serialization/beast2/v5/sync-reader.spec.js.map +1 -1
- package/dist/src/serialization/index.d.ts +1 -1
- package/dist/src/serialization/index.d.ts.map +1 -1
- package/dist/src/serialization/index.js +1 -1
- package/dist/src/serialization/index.js.map +1 -1
- package/dist/src/serialization/json.d.ts +28 -0
- package/dist/src/serialization/json.d.ts.map +1 -1
- package/dist/src/serialization/json.js +141 -30
- package/dist/src/serialization/json.js.map +1 -1
- package/dist/src/serialization/json.spec.js +47 -2
- package/dist/src/serialization/json.spec.js.map +1 -1
- package/dist/src/serialization/json_schema.d.ts +15 -11
- package/dist/src/serialization/json_schema.d.ts.map +1 -1
- package/dist/src/serialization/json_schema.js +21 -36
- package/dist/src/serialization/json_schema.js.map +1 -1
- package/dist/src/serialization/json_schema.spec.js +26 -32
- package/dist/src/serialization/json_schema.spec.js.map +1 -1
- package/dist/src/serialization/json_schema_to_type.d.ts +10 -5
- package/dist/src/serialization/json_schema_to_type.d.ts.map +1 -1
- package/dist/src/serialization/json_schema_to_type.js +13 -6
- package/dist/src/serialization/json_schema_to_type.js.map +1 -1
- package/dist/src/serialization/json_schema_to_type.spec.js +19 -0
- package/dist/src/serialization/json_schema_to_type.spec.js.map +1 -1
- package/dist/src/string_order.d.ts +36 -0
- package/dist/src/string_order.d.ts.map +1 -0
- package/dist/src/string_order.js +64 -0
- package/dist/src/string_order.js.map +1 -0
- package/dist/src/string_order.spec.d.ts +6 -0
- package/dist/src/string_order.spec.d.ts.map +1 -0
- package/dist/src/string_order.spec.js +79 -0
- package/dist/src/string_order.spec.js.map +1 -0
- package/dist/src/type_of_type.d.ts +17 -0
- package/dist/src/type_of_type.d.ts.map +1 -1
- package/dist/src/type_of_type.js +66 -0
- package/dist/src/type_of_type.js.map +1 -1
- package/dist/src/type_of_type.to_etv.spec.js +69 -1
- package/dist/src/type_of_type.to_etv.spec.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* SHA-256, the name of every object a manifest directory holds: the FIPS
|
|
7
|
+
* 180-4 vectors, pinned in east-c's `tests/test_sha256.c` as well, and
|
|
8
|
+
* agreement with Node's own digest at every length across the padding
|
|
9
|
+
* boundaries.
|
|
10
|
+
*/
|
|
11
|
+
import { describe, test } from "node:test";
|
|
12
|
+
import assert from "node:assert/strict";
|
|
13
|
+
import { createHash } from "node:crypto";
|
|
14
|
+
import { sha256Hex } from "../index.js";
|
|
15
|
+
describe("sha256Hex", () => {
|
|
16
|
+
test("matches the FIPS 180-4 vectors", () => {
|
|
17
|
+
const of = (s) => sha256Hex(new TextEncoder().encode(s));
|
|
18
|
+
assert.equal(of(""), "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855");
|
|
19
|
+
assert.equal(of("abc"), "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad");
|
|
20
|
+
assert.equal(of("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"), "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1");
|
|
21
|
+
assert.equal(sha256Hex(new Uint8Array(1_000_000).fill(0x61)), "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0");
|
|
22
|
+
});
|
|
23
|
+
test("agrees with Node's digest at every length across the padding boundaries", () => {
|
|
24
|
+
// Lengths 55, 56 and 64 are where the length field moves to a second
|
|
25
|
+
// block, and where the rest is empty.
|
|
26
|
+
let seed = 0x9e3779b9;
|
|
27
|
+
for (let n = 0; n <= 300; n++) {
|
|
28
|
+
const bytes = new Uint8Array(n);
|
|
29
|
+
for (let i = 0; i < n; i++) {
|
|
30
|
+
seed = (Math.imul(seed, 1664525) + 1013904223) >>> 0;
|
|
31
|
+
bytes[i] = seed >>> 24;
|
|
32
|
+
}
|
|
33
|
+
assert.equal(sha256Hex(bytes), createHash("sha256").update(bytes).digest("hex"), `length ${n}`);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
test("hashes a view by its own bytes, not its buffer's", () => {
|
|
37
|
+
const buffer = new Uint8Array(200).map((_, i) => i);
|
|
38
|
+
const view = buffer.subarray(37, 150);
|
|
39
|
+
assert.equal(sha256Hex(view), createHash("sha256").update(view).digest("hex"));
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=sha256.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sha256.spec.js","sourceRoot":"","sources":["../../../../../src/serialization/beast2/v5/sha256.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC1C,MAAM,EAAE,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,SAAS,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,kEAAkE,CAAC,CAAC;QACzF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,kEAAkE,CAAC,CAAC;QAC5F,MAAM,CAAC,KAAK,CACV,EAAE,CAAC,0DAA0D,CAAC,EAC9D,kEAAkE,CACnE,CAAC;QACF,MAAM,CAAC,KAAK,CACV,SAAS,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAC/C,kEAAkE,CACnE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACnF,qEAAqE;QACrE,sCAAsC;QACtC,IAAI,IAAI,GAAG,UAAU,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;gBACrD,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC;YACzB,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAClG,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC5D,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -5,9 +5,15 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* Beast2 v5 streaming and paging APIs.
|
|
7
7
|
*
|
|
8
|
+
* - {@link Beast2ElementWriter} — the canonical writer: elements in, segments
|
|
9
|
+
* out where the content-defined cut rule places them, so a collection's
|
|
10
|
+
* bytes are a function of its value alone — as one blob, or as the
|
|
11
|
+
* standalone segment blobs a manifest names. Every writer of a stored
|
|
12
|
+
* collection writes through it.
|
|
13
|
+
* - {@link encodeBeast2PagedFor} — one whole value through the element writer.
|
|
8
14
|
* - {@link Beast2Writer} — append-only streaming writer: each `write(batch)`
|
|
9
15
|
* becomes one root segment (one frame), so writer memory is O(batch), never
|
|
10
|
-
* the whole collection.
|
|
16
|
+
* the whole collection. The geometry is the caller's.
|
|
11
17
|
* - {@link encodeBeast2SegmentsFor} — in-memory convenience over the writer.
|
|
12
18
|
* - {@link iterBeast2SegmentsFor} — sequential segment iterator: yields one
|
|
13
19
|
* decoded collection per root segment with O(segment) decoded memory.
|
|
@@ -15,22 +21,28 @@
|
|
|
15
21
|
* `elementCount`, per-segment decode via footer + index seeks.
|
|
16
22
|
*
|
|
17
23
|
* Streaming roots are collections (Array/Set/Dict). Writers default to
|
|
18
|
-
* self-contained
|
|
19
|
-
* pageable and parallel-decodable
|
|
20
|
-
* whole-stream aliasing at the cost
|
|
24
|
+
* self-contained output — aliasing scoped per root element — so segments are
|
|
25
|
+
* pageable and parallel-decodable and an element's bytes depend on the element
|
|
26
|
+
* alone; pass `selfContained: false` to keep whole-stream aliasing at the cost
|
|
27
|
+
* of random access.
|
|
21
28
|
*/
|
|
22
29
|
import { type EastTypeValue } from "../../../type_of_type.js";
|
|
23
|
-
import type { EastType, ValueTypeOf } from "../../../types.js";
|
|
30
|
+
import type { ArrayType, DictType, EastType, SetType, ValueTypeOf } from "../../../types.js";
|
|
31
|
+
import { BufferWriter } from "../../binary-utils.js";
|
|
24
32
|
import { SourceMap } from "../../../location.js";
|
|
25
33
|
import { type Beast2DecodeOptions } from "../shared.js";
|
|
26
34
|
import { type Beast2Codec } from "./frames.js";
|
|
27
35
|
import { type Beast2SyncRangeReader } from "./range.js";
|
|
36
|
+
import { type Beast2ManifestSource } from "./manifest.js";
|
|
28
37
|
/** Options accepted by {@link Beast2Writer} and {@link encodeBeast2SegmentsFor}. */
|
|
29
38
|
export type Beast2WriterOptions = {
|
|
30
39
|
/** Per-frame codec. Defaults to `"deflate"`. */
|
|
31
40
|
codec?: Beast2Codec;
|
|
32
|
-
/** Scope aliasing per
|
|
33
|
-
*
|
|
41
|
+
/** Scope aliasing per root element, so segments decode independently and an
|
|
42
|
+
* element's bytes never depend on which objects its neighbours share: the
|
|
43
|
+
* same collection encodes to the same bytes however it was built, and an
|
|
44
|
+
* encoded element can move between segments by byte copy. Defaults to
|
|
45
|
+
* `true`. */
|
|
34
46
|
selfContained?: boolean;
|
|
35
47
|
/** Write the trailing index + footer at {@link Beast2Writer.finish}.
|
|
36
48
|
* Defaults to `true`. */
|
|
@@ -46,14 +58,10 @@ export type Beast2WriterOptions = {
|
|
|
46
58
|
/**
|
|
47
59
|
* Deflate frames on worker threads (issue #763). Defaults to `false`.
|
|
48
60
|
*
|
|
49
|
-
* The bytes are identical either way
|
|
50
|
-
* index offsets are assigned as they land
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
* {@link Beast2Writer.emittedBounds} rather than count sink bytes, or its
|
|
54
|
-
* segmentation would depend on thread timing. The pool has one worker per
|
|
55
|
-
* CPU the process may use, at most 32 — a writer keeps two frames per worker
|
|
56
|
-
* in flight, and throughput flattens well before that. Node only; elsewhere,
|
|
61
|
+
* The bytes are identical either way: frames reach the sink in order, and
|
|
62
|
+
* index offsets are assigned as they land. The pool has one worker per CPU
|
|
63
|
+
* the process may use, at most 32 — a writer keeps two frames per worker in
|
|
64
|
+
* flight, and throughput flattens well before that. Node only; elsewhere,
|
|
57
65
|
* and on a single CPU, the writer frames inline.
|
|
58
66
|
*/
|
|
59
67
|
parallel?: boolean;
|
|
@@ -68,6 +76,10 @@ export type Beast2WriterOptions = {
|
|
|
68
76
|
* {@link finish} appends the terminator (plus index and footer by default),
|
|
69
77
|
* so the byte stream is append-only end to end.
|
|
70
78
|
*
|
|
79
|
+
* Where the segments fall is the caller's choice here. A collection that is
|
|
80
|
+
* stored is written through {@link Beast2ElementWriter} instead, which cuts
|
|
81
|
+
* where the content-defined rule says, so equal values store as equal bytes.
|
|
82
|
+
*
|
|
71
83
|
* @example
|
|
72
84
|
* ```ts
|
|
73
85
|
* const chunks: Uint8Array[] = [];
|
|
@@ -84,7 +96,6 @@ export declare class Beast2Writer<T extends EastType = EastType> {
|
|
|
84
96
|
segments: number;
|
|
85
97
|
private readonly kind;
|
|
86
98
|
private readonly sink;
|
|
87
|
-
private readonly codec;
|
|
88
99
|
private readonly selfContained;
|
|
89
100
|
private readonly withIndex;
|
|
90
101
|
private readonly ctx;
|
|
@@ -95,15 +106,9 @@ export declare class Beast2Writer<T extends EastType = EastType> {
|
|
|
95
106
|
private hasLast;
|
|
96
107
|
private bytesWritten;
|
|
97
108
|
private finished;
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
private
|
|
101
|
-
private logicalWritten;
|
|
102
|
-
/** Frames submitted to the pool and not yet on the sink, in order. */
|
|
103
|
-
private readonly inflight;
|
|
104
|
-
private inflightLogical;
|
|
105
|
-
/** {@link settle} calls that found frames in flight. */
|
|
106
|
-
private settlesInflight;
|
|
109
|
+
/** Frames each segment and puts it on the sink as it lands, recording its
|
|
110
|
+
* index entry there. */
|
|
111
|
+
private readonly frames;
|
|
107
112
|
/**
|
|
108
113
|
* @param type - the collection type this stream holds (Array/Set/Dict)
|
|
109
114
|
* @param sink - receives output bytes as they are produced
|
|
@@ -133,37 +138,34 @@ export declare class Beast2Writer<T extends EastType = EastType> {
|
|
|
133
138
|
*/
|
|
134
139
|
write(batch: ValueTypeOf<T>): void;
|
|
135
140
|
/**
|
|
136
|
-
*
|
|
137
|
-
*
|
|
141
|
+
* Writes one root segment from elements that are already encoded — each in
|
|
142
|
+
* its canonical bytes, with aliasing scoped to itself — which is how
|
|
143
|
+
* {@link Beast2ElementWriter} writes the segments it cuts.
|
|
144
|
+
*
|
|
145
|
+
* The elements are copied before this returns, so the caller may reuse the
|
|
146
|
+
* buffer. Their order is the caller's to keep: nothing here decodes them to
|
|
147
|
+
* check a Set or Dict's ascent.
|
|
138
148
|
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
|
|
149
|
+
* @param count - the elements (pairs, for a Dict) the bytes hold; a
|
|
150
|
+
* zero-count segment is skipped
|
|
151
|
+
* @param elements - the elements' bytes, back to back
|
|
152
|
+
* @throws {Error} When called after {@link finish}, or — for a parallel
|
|
153
|
+
* writer — when a frame worker failed (see {@link write}).
|
|
154
|
+
*/
|
|
155
|
+
writeEncodedSegment(count: number, elements: Uint8Array): void;
|
|
156
|
+
/** Frames one segment's logical bytes — inline, or on the frame pool — and
|
|
157
|
+
* records its index entry as its frame lands. */
|
|
158
|
+
private frameSegment;
|
|
159
|
+
/**
|
|
160
|
+
* Waits for every in-flight frame and passes it to the sink, so the sink
|
|
161
|
+
* holds every segment written so far. A writer about to go quiet then holds
|
|
162
|
+
* nothing on the pool, which lets an idle pool retire its workers. A no-op
|
|
163
|
+
* for a serial writer.
|
|
145
164
|
*
|
|
146
|
-
* @
|
|
165
|
+
* @throws {Error} For a parallel writer, when an in-flight frame's worker
|
|
166
|
+
* failed or stopped responding (see {@link write}).
|
|
147
167
|
*/
|
|
148
|
-
emittedBounds(): {
|
|
149
|
-
lo: number;
|
|
150
|
-
hi: number;
|
|
151
|
-
};
|
|
152
|
-
/** Waits for every in-flight frame and passes it to the sink, after which
|
|
153
|
-
* {@link emittedBounds} is exact. A no-op for a serial writer. */
|
|
154
168
|
settle(): void;
|
|
155
|
-
/** The pool to frame on — decided once a parallel writer has produced
|
|
156
|
-
* enough bytes to be worth it. While frames are in flight the writer keeps
|
|
157
|
-
* the pool they are on, so frames cannot interleave out of order; with none
|
|
158
|
-
* in flight it follows the process's current pool — a new one after an idle
|
|
159
|
-
* pool retired its workers, `null` once a pool has lost a worker — so a
|
|
160
|
-
* writer never submits to terminated workers. A writer demoted to inline
|
|
161
|
-
* framing stays inline. */
|
|
162
|
-
private poolFor;
|
|
163
|
-
/** Passes the done frames at the head of the in-flight queue to the sink,
|
|
164
|
-
* in order, assigning index offsets as they land; blocks until at least
|
|
165
|
-
* `minimum` have been passed (`Infinity` settles the queue). */
|
|
166
|
-
private appendFrames;
|
|
167
169
|
/**
|
|
168
170
|
* Terminates the stream: writes the terminator frame and, unless disabled,
|
|
169
171
|
* the index and footer. Idempotent.
|
|
@@ -188,31 +190,186 @@ export declare class Beast2Writer<T extends EastType = EastType> {
|
|
|
188
190
|
* @throws {TypeError} When `type` is not an Array, Set or Dict type.
|
|
189
191
|
*/
|
|
190
192
|
export declare function encodeBeast2SegmentsFor<T extends EastType>(type: T | EastTypeValue, options?: Beast2WriterOptions): (batches: Iterable<ValueTypeOf<T>>) => Uint8Array;
|
|
191
|
-
/**
|
|
192
|
-
*
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
*
|
|
199
|
-
*
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
193
|
+
/** An element of a collection type as {@link Beast2ElementWriter.add} takes
|
|
194
|
+
* it: an Array or Set element, or a Dict's `[key, value]` pair. */
|
|
195
|
+
export type Beast2ElementOf<T> = T extends DictType<infer K, infer V> ? [ValueTypeOf<K>, ValueTypeOf<V>] : T extends SetType<infer E> ? ValueTypeOf<E> : T extends ArrayType<infer E> ? ValueTypeOf<E> : unknown;
|
|
196
|
+
/** Options accepted by {@link Beast2ElementWriter}. Its blobs are always
|
|
197
|
+
* indexed and self-contained, so neither is an option here. */
|
|
198
|
+
export type Beast2ElementWriterOptions = Omit<Beast2WriterOptions, "selfContained" | "index">;
|
|
199
|
+
/**
|
|
200
|
+
* One segment of a collection as a store keeps it: a standalone blob, and what
|
|
201
|
+
* a manifest entry records of it.
|
|
202
|
+
*/
|
|
203
|
+
export interface Beast2Segment {
|
|
204
|
+
/** Elements (pairs, for a Dict) in the segment. */
|
|
205
|
+
readonly count: number;
|
|
206
|
+
/** Set/Dict: the segment's first key in its canonical bare encoding
|
|
207
|
+
* (`encodeBeast2FenceFor`) — its fence. Array: empty. */
|
|
208
|
+
readonly fence: Uint8Array;
|
|
209
|
+
/** The segment's logical size: its elements' canonical bytes before
|
|
210
|
+
* compression, which is what the cut rule measures a segment by. */
|
|
211
|
+
readonly logicalBytes: number;
|
|
212
|
+
/** The segment as a standalone v5 blob: the collection's header, the
|
|
213
|
+
* segment's frame, the terminator, and an index of the one segment. */
|
|
214
|
+
readonly blob: Uint8Array;
|
|
215
|
+
}
|
|
216
|
+
/** Where a {@link Beast2ElementWriter} puts a collection written as separate
|
|
217
|
+
* segment blobs rather than one blob. */
|
|
218
|
+
export interface Beast2SegmentSink {
|
|
219
|
+
/**
|
|
220
|
+
* Receives each segment once it is written, in order.
|
|
221
|
+
*
|
|
222
|
+
* @param segment - the segment
|
|
223
|
+
*/
|
|
224
|
+
segment(segment: Beast2Segment): void;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Builds an encoder of a collection's root elements, one at a time, each in
|
|
228
|
+
* its canonical bytes: aliasing is scoped to the element, so no REF reaches a
|
|
229
|
+
* neighbour and the element's bytes depend on it alone.
|
|
230
|
+
*
|
|
231
|
+
* @param typeValue - the collection type (Array/Set/Dict)
|
|
232
|
+
* @param sourceMap - the stream's source map, for function values
|
|
233
|
+
* @returns a function appending one element's bytes to a writer and returning
|
|
234
|
+
* the length of its key: a Set element's whole length, a Dict pair's key, 0
|
|
235
|
+
* for an Array element, which has none
|
|
236
|
+
* @throws {TypeError} When `typeValue` is not an Array, Set or Dict type.
|
|
237
|
+
* @internal
|
|
238
|
+
*/
|
|
239
|
+
export declare function elementEncoderFor(typeValue: EastTypeValue, sourceMap: SourceMap | null): (element: unknown, writer: BufferWriter) => number;
|
|
240
|
+
/**
|
|
241
|
+
* The canonical writer of a collection: elements go in one at a time, in
|
|
242
|
+
* canonical order, and segments come out wherever the content-defined cut rule
|
|
243
|
+
* ({@link SegmentCutter}) places them — as one blob, or as the standalone
|
|
244
|
+
* segment blobs a manifest names, one at a time to a {@link Beast2SegmentSink}.
|
|
245
|
+
*
|
|
246
|
+
* Each element is encoded as it arrives, with aliasing scoped to itself, so
|
|
247
|
+
* its bytes depend on the element alone — and the cut rule reads nothing but
|
|
248
|
+
* those bytes. The blob is therefore a function of the value: whichever
|
|
249
|
+
* process writes a collection, in whichever runtime, and however its elements
|
|
250
|
+
* were produced, it writes the same bytes. That is what lets a
|
|
251
|
+
* content-addressed store keep an equal value once and diff two values by
|
|
252
|
+
* segment.
|
|
253
|
+
*
|
|
254
|
+
* Memory is one open segment. Elements that are already encoded — sorted runs,
|
|
255
|
+
* a merge, a re-cut — go in through {@link addEncoded}, without a decode.
|
|
256
|
+
*
|
|
257
|
+
* @example
|
|
258
|
+
* ```ts
|
|
259
|
+
* const chunks: Uint8Array[] = [];
|
|
260
|
+
* const type = DictType(StringType, IntegerType);
|
|
261
|
+
* const writer = new Beast2ElementWriter(type, (b) => chunks.push(b));
|
|
262
|
+
* writer.add(["a", 1n]);
|
|
263
|
+
* writer.add(["b", 2n]);
|
|
264
|
+
* writer.finish();
|
|
265
|
+
* decodeBeast2For(type)(Buffer.concat(chunks)); // Map { "a" => 1n, "b" => 2n }
|
|
266
|
+
*
|
|
267
|
+
* const segments: Beast2Segment[] = [];
|
|
268
|
+
* const split = new Beast2ElementWriter(type, { segment: (s) => segments.push(s) });
|
|
269
|
+
* split.add(["a", 1n]);
|
|
270
|
+
* split.finish();
|
|
271
|
+
* segments[0].blob; // segment 0 as a standalone blob, under split.header
|
|
272
|
+
* ```
|
|
273
|
+
*/
|
|
274
|
+
export declare class Beast2ElementWriter<T extends EastType = EastType> {
|
|
275
|
+
private readonly kind;
|
|
276
|
+
/** The writer of the one blob, when that is the output. */
|
|
277
|
+
private readonly blob;
|
|
278
|
+
/** The framing of the segment blobs, when those are the output. */
|
|
279
|
+
private readonly frames;
|
|
280
|
+
private readonly head;
|
|
281
|
+
private readonly encodeElement;
|
|
282
|
+
private readonly orderCmp;
|
|
283
|
+
private cutter;
|
|
284
|
+
/** The open segment's elements, back to back. */
|
|
285
|
+
private readonly open;
|
|
286
|
+
/** Elements in the open segment. */
|
|
287
|
+
private count;
|
|
288
|
+
/** The length of the open segment's first key — its fence. */
|
|
289
|
+
private firstKeyLength;
|
|
290
|
+
private written;
|
|
291
|
+
private lastKey;
|
|
292
|
+
private hasLast;
|
|
293
|
+
private finished;
|
|
294
|
+
/**
|
|
295
|
+
* @param type - the collection type (Array/Set/Dict)
|
|
296
|
+
* @param sink - receives the blob's bytes as they are produced; or, as a
|
|
297
|
+
* {@link Beast2SegmentSink}, each segment as a standalone blob
|
|
298
|
+
* @param options - codec, source map, header prefix and parallel framing
|
|
299
|
+
* @throws {TypeError} When `type` is not an Array, Set or Dict type, or
|
|
300
|
+
* when `options.headerPrefix` is not a v5 header of exactly `type`.
|
|
301
|
+
*/
|
|
302
|
+
constructor(type: T | EastTypeValue, sink: ((bytes: Uint8Array) => void) | Beast2SegmentSink, options?: Beast2ElementWriterOptions);
|
|
303
|
+
/** Segments written so far; the open segment is not among them until the
|
|
304
|
+
* cut rule closes it or {@link finish} does. */
|
|
305
|
+
get segments(): number;
|
|
306
|
+
/** The header every segment is written under — magic, type section,
|
|
307
|
+
* source-map section and root tag — which a manifest names as its header. */
|
|
308
|
+
get header(): Uint8Array;
|
|
309
|
+
/**
|
|
310
|
+
* Encodes one element and appends it to the collection.
|
|
311
|
+
*
|
|
312
|
+
* @param element - an Array or Set element, or a Dict's `[key, value]` pair
|
|
313
|
+
* @throws {Error} When called after {@link finish}, when a Set element or
|
|
314
|
+
* Dict key does not ascend strictly from the last in East order, or when
|
|
315
|
+
* the element cannot be encoded — which leaves the writer as it was.
|
|
316
|
+
*/
|
|
317
|
+
add(element: Beast2ElementOf<T>): void;
|
|
318
|
+
/**
|
|
319
|
+
* Appends one element that is already in its canonical bytes — encoded
|
|
320
|
+
* with aliasing scoped to itself, as {@link add} encodes one — without
|
|
321
|
+
* decoding it.
|
|
322
|
+
*
|
|
323
|
+
* Order is the caller's to keep: a Set or Dict's elements must arrive
|
|
324
|
+
* strictly ascending, and nothing here decodes them to check.
|
|
325
|
+
*
|
|
326
|
+
* @param element - the element's canonical bytes (a Dict pair's key, then
|
|
327
|
+
* its value)
|
|
328
|
+
* @param keyLength - the length of the key at the front of `element`: a Set
|
|
329
|
+
* element's whole length, a Dict pair's key; ignored for an Array
|
|
330
|
+
* @throws {Error} When called after {@link finish}.
|
|
331
|
+
*/
|
|
332
|
+
addEncoded(element: Uint8Array, keyLength: number): void;
|
|
333
|
+
/** Accounts for the element just appended at `start`, and when the cut rule
|
|
334
|
+
* starts a segment at it, writes out the segment that closes. */
|
|
335
|
+
private place;
|
|
336
|
+
/**
|
|
337
|
+
* Waits for every in-flight frame and passes it to the sink, so the sink
|
|
338
|
+
* holds every segment written so far. A no-op for a serial writer.
|
|
339
|
+
*
|
|
340
|
+
* @throws {Error} For a parallel writer, when an in-flight frame's worker
|
|
341
|
+
* failed or stopped responding (see {@link Beast2Writer.write}).
|
|
342
|
+
*/
|
|
343
|
+
settle(): void;
|
|
344
|
+
/** Elements in the open segment.
|
|
345
|
+
* @internal */
|
|
346
|
+
get openCount(): number;
|
|
347
|
+
/** Logical bytes in the open segment.
|
|
348
|
+
* @internal */
|
|
349
|
+
get openBytes(): number;
|
|
350
|
+
/**
|
|
351
|
+
* Ends the open segment here, for a caller that knows the cut rule starts
|
|
352
|
+
* one at what comes next without handing it over: writes the open segment,
|
|
353
|
+
* and makes the next element the first of a segment.
|
|
354
|
+
*
|
|
355
|
+
* @throws {Error} When called after {@link finish}.
|
|
356
|
+
* @internal
|
|
357
|
+
*/
|
|
358
|
+
closeSegment(): void;
|
|
359
|
+
/**
|
|
360
|
+
* Writes the open segment and — for a blob — the terminator, index and
|
|
361
|
+
* footer. Idempotent.
|
|
362
|
+
*
|
|
363
|
+
* @throws {Error} For a parallel writer, when an in-flight frame's worker
|
|
364
|
+
* failed or stopped responding (see {@link Beast2Writer.write}).
|
|
365
|
+
*/
|
|
366
|
+
finish(): void;
|
|
367
|
+
/** Writes the open segment, whose elements are `elements`, unless it is
|
|
368
|
+
* empty. */
|
|
369
|
+
private writeSegment;
|
|
370
|
+
}
|
|
207
371
|
/** Options accepted by {@link encodeBeast2PagedFor}. */
|
|
208
372
|
export type Beast2PagedEncodeOptions = {
|
|
209
|
-
/** Element (pair for Dict roots) cap per segment. Defaults to
|
|
210
|
-
* {@link BEAST2_PAGED_BATCH_DEFAULT}. */
|
|
211
|
-
batchSize?: number;
|
|
212
|
-
/** Wire-byte target per segment — batches shrink below `batchSize` when
|
|
213
|
-
* measured element size would exceed it. Defaults to
|
|
214
|
-
* {@link BEAST2_PAGED_TARGET_BYTES_DEFAULT}. */
|
|
215
|
-
targetSegmentBytes?: number;
|
|
216
373
|
/** Per-frame codec. Defaults to `"deflate"`. */
|
|
217
374
|
codec?: Beast2Codec;
|
|
218
375
|
/** Source map for function values in the stream, written to the header. */
|
|
@@ -220,8 +377,8 @@ export type Beast2PagedEncodeOptions = {
|
|
|
220
377
|
};
|
|
221
378
|
/**
|
|
222
379
|
* Builds a curried paged encoder: `encode(value)` writes one whole collection
|
|
223
|
-
* value as a segmented, self-contained, indexed v5 blob
|
|
224
|
-
*
|
|
380
|
+
* value as a segmented, self-contained, indexed v5 blob, cut by the
|
|
381
|
+
* content-defined rule through {@link Beast2ElementWriter}.
|
|
225
382
|
*
|
|
226
383
|
* The write-side sibling of {@link openBeast2PagesFor}: a blob written this
|
|
227
384
|
* way supports random access ({@link Beast2Pages.segment} /
|
|
@@ -232,7 +389,7 @@ export type Beast2PagedEncodeOptions = {
|
|
|
232
389
|
* bytes), so content-addressed stores hash the two forms differently.
|
|
233
390
|
*
|
|
234
391
|
* @param type - the collection type (Array/Set/Dict)
|
|
235
|
-
* @param options -
|
|
392
|
+
* @param options - codec and source map options
|
|
236
393
|
* @returns a function encoding a collection value to an indexed v5 blob
|
|
237
394
|
* @throws {TypeError} When `type` is not an Array, Set or Dict type.
|
|
238
395
|
*/
|
|
@@ -287,12 +444,17 @@ export declare class Beast2Pages<T extends EastType = EastType> {
|
|
|
287
444
|
/** Whether segments are independently decodable. */
|
|
288
445
|
readonly selfContained: boolean;
|
|
289
446
|
private readonly source;
|
|
447
|
+
/** The manifest behind this reader, when the segments are separate blobs
|
|
448
|
+
* rather than runs of one. */
|
|
449
|
+
private readonly manifestSource;
|
|
290
450
|
/** Wire offset of the terminator frame — where the last segment's frame ends. */
|
|
291
451
|
private readonly segmentsEnd;
|
|
292
452
|
private readonly indexData;
|
|
293
453
|
private readonly kind;
|
|
294
454
|
private readonly typeValue;
|
|
295
|
-
|
|
455
|
+
/** The stream's source map. For a manifest it starts empty and is replaced
|
|
456
|
+
* by the first segment's own header map, which every segment shares. */
|
|
457
|
+
private sourceMap;
|
|
296
458
|
private readonly decodeSegment;
|
|
297
459
|
private readonly platform;
|
|
298
460
|
private readonly cumulative;
|
|
@@ -300,6 +462,8 @@ export declare class Beast2Pages<T extends EastType = EastType> {
|
|
|
300
462
|
/** First key/element of each segment, in segment order (Set/Dict only). */
|
|
301
463
|
private fences;
|
|
302
464
|
private fenceDec;
|
|
465
|
+
/** The decoder of a manifest's stored fence bytes, built on first use. */
|
|
466
|
+
private manifestFenceDec;
|
|
303
467
|
/** Decoded segments kept hot for the element and keyed read paths, keyed
|
|
304
468
|
* by segment index in LRU order (mirrors east-c's `B2V5_PAGES_LRU`).
|
|
305
469
|
* Only {@link element} and {@link get} route through it — the public
|
|
@@ -309,14 +473,19 @@ export declare class Beast2Pages<T extends EastType = EastType> {
|
|
|
309
473
|
* container walk. */
|
|
310
474
|
private readonly segmentCache;
|
|
311
475
|
/** @internal Use {@link openBeast2PagesFor}. */
|
|
312
|
-
constructor(source: Uint8Array | Beast2SyncRangeReader, typeValue: EastTypeValue, options?: Beast2DecodeOptions);
|
|
476
|
+
constructor(source: Uint8Array | Beast2SyncRangeReader | Beast2ManifestSource, typeValue: EastTypeValue, options?: Beast2DecodeOptions);
|
|
313
477
|
/** Number of segments in the blob. */
|
|
314
478
|
get segmentCount(): number;
|
|
315
479
|
/** Reads segment `i`'s frame — exactly its wire bytes, from its index
|
|
316
480
|
* offset to the next segment's (or the terminator) — and opens its
|
|
317
481
|
* logical chunk. The only place segment bytes are fetched, so a ranged
|
|
318
|
-
* source touches one frame per decode
|
|
482
|
+
* source touches one frame per decode, and a manifest source touches one
|
|
483
|
+
* segment blob. */
|
|
319
484
|
private frameReader;
|
|
485
|
+
/** Segment `i`'s frame out of its own standalone blob: the blob's geometry
|
|
486
|
+
* names exactly one frame, and its header carries the source map every
|
|
487
|
+
* segment of this collection shares. */
|
|
488
|
+
private manifestFrameReader;
|
|
320
489
|
/**
|
|
321
490
|
* Decodes one segment by index.
|
|
322
491
|
*
|
|
@@ -386,7 +555,7 @@ export declare class Beast2Pages<T extends EastType = EastType> {
|
|
|
386
555
|
* Rows address stream order — for Array roots the element order, for
|
|
387
556
|
* Set/Dict roots the canonical East (key) order, since segments are
|
|
388
557
|
* disjoint ascending ranges. Returns a collection value of the root kind
|
|
389
|
-
* holding the window (an array, `
|
|
558
|
+
* holding the window (an array, `SortedSet`, or `SortedMap` in that order).
|
|
390
559
|
*
|
|
391
560
|
* Clamps like `Array.prototype.slice`: a window past the end returns the
|
|
392
561
|
* available tail (or an empty collection), never throws for being short.
|
|
@@ -418,6 +587,23 @@ export declare class Beast2Pages<T extends EastType = EastType> {
|
|
|
418
587
|
* self-contained, or its segment fences do not ascend.
|
|
419
588
|
*/
|
|
420
589
|
segmentFor(key: ValueTypeOf<T> extends Map<infer K, any> ? K : ValueTypeOf<T> extends Set<infer E> ? E : never): number;
|
|
590
|
+
/**
|
|
591
|
+
* Decodes one segment of a Set or Dict for a walk in canonical order
|
|
592
|
+
* (Set/Dict roots only), as east-c's paged loops read one: the fences are
|
|
593
|
+
* probed and verified to ascend strictly first, once per reader, and the
|
|
594
|
+
* segment's last key is checked to fall below the next segment's fence. A
|
|
595
|
+
* walk from segment 0 over a blob that violates the canonical-order contract
|
|
596
|
+
* therefore fails at the first segment it reads: before any element when the
|
|
597
|
+
* fences are out of order, and before the elements of the first segment
|
|
598
|
+
* that overlaps the next.
|
|
599
|
+
*
|
|
600
|
+
* @param i - zero-based segment index
|
|
601
|
+
* @returns the segment's decoded collection
|
|
602
|
+
* @throws {Error} When the root is an Array, `i` is out of range, the blob
|
|
603
|
+
* is not self-contained, or the blob violates the canonical-order
|
|
604
|
+
* contract.
|
|
605
|
+
*/
|
|
606
|
+
segmentDisjoint(i: number): ValueTypeOf<T>;
|
|
421
607
|
/**
|
|
422
608
|
* Looks up one Set element or Dict value by key (Set/Dict roots only):
|
|
423
609
|
* binary-searches the verified segment fences for the only segment whose
|
|
@@ -435,14 +621,15 @@ export declare class Beast2Pages<T extends EastType = EastType> {
|
|
|
435
621
|
* Builds a curried pages opener: `open(source)` parses the header, footer and
|
|
436
622
|
* index once and returns a {@link Beast2Pages} for random access.
|
|
437
623
|
*
|
|
438
|
-
* `source` is the whole blob,
|
|
439
|
-
*
|
|
440
|
-
*
|
|
624
|
+
* `source` is the whole blob, a {@link Beast2SyncRangeReader} over it — then
|
|
625
|
+
* only the tail, the head and the segments actually read are ever fetched —
|
|
626
|
+
* or a {@link Beast2ManifestSource}, whose segments are separate blobs and
|
|
627
|
+
* whose fences are already decoded, so a keyed read touches exactly one.
|
|
441
628
|
*
|
|
442
629
|
* @param type - the collection type (Array/Set/Dict)
|
|
443
630
|
* @param options - decode options (platform functions for decoded functions)
|
|
444
631
|
* @returns a function opening a blob for paged reads
|
|
445
632
|
* @throws {TypeError} When `type` is not an Array, Set or Dict type.
|
|
446
633
|
*/
|
|
447
|
-
export declare function openBeast2PagesFor<T extends EastType>(type: T | EastTypeValue, options?: Beast2DecodeOptions): (source: Uint8Array | Beast2SyncRangeReader) => Beast2Pages<T>;
|
|
634
|
+
export declare function openBeast2PagesFor<T extends EastType>(type: T | EastTypeValue, options?: Beast2DecodeOptions): (source: Uint8Array | Beast2SyncRangeReader | Beast2ManifestSource) => Beast2Pages<T>;
|
|
448
635
|
//# sourceMappingURL=stream.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/beast2/v5/stream.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/beast2/v5/stream.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,KAAK,aAAa,EAAuC,MAAM,0BAA0B,CAAC;AACnG,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE7F,OAAO,EAAE,YAAY,EAAgB,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIjD,OAAO,EAAE,KAAK,mBAAmB,EAAwB,MAAM,cAAc,CAAC;AAE9E,OAAO,EAAE,KAAK,WAAW,EAA4C,MAAM,aAAa,CAAC;AAiBzF,OAAO,EAAE,KAAK,qBAAqB,EAA8G,MAAM,YAAY,CAAC;AAEpK,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAuBlF,oFAAoF;AACpF,MAAM,MAAM,mBAAmB,GAAG;IAChC,gDAAgD;IAChD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;;kBAIc;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;8BAC0B;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B;;;;6EAIyE;IACzE,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAkIF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,YAAY,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IACrD,yCAAyC;IACzC,QAAQ,SAAK;IACb,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA8B;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8C;IAC1E,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2C;IACjE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;IAC/D,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB;6BACyB;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAE/C;;;;;;OAMG;gBACS,IAAI,EAAE,CAAC,GAAG,aAAa,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,mBAAmB;IAuDrG;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAYlC;;;;;;;;;;;;;;OAcG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI;IAS9D;sDACkD;IAClD,OAAO,CAAC,YAAY;IAKpB;;;;;;;;OAQG;IACH,MAAM,IAAI,IAAI;IAId;;;;;;OAMG;IACH,MAAM,IAAI,IAAI;IAed;iFAC6E;IAC7E,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,IAAI;CAIb;AAuBD;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,aAAa,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,CAcrK;AAMD;oEACoE;AACpE,MAAM,MAAM,eAAe,CAAC,CAAC,IAC3B,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,GACvE,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAC3C,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAC7C,OAAO,CAAC;AAEV;gEACgE;AAChE,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,mBAAmB,EAAE,eAAe,GAAG,OAAO,CAAC,CAAC;AAE9F;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;8DAC0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B;yEACqE;IACrE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;4EACwE;IACxE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B;AAED;0CAC0C;AAC1C,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;CACvC;AAKD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,KAAK,MAAM,CA4B3I;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,mBAAmB,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IAC5D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;IACrC,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyB;IAC9C,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqD;IACnF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;IAC/D,OAAO,CAAC,MAAM,CAAuB;IACrC,iDAAiD;IACjD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAC3C,oCAAoC;IACpC,OAAO,CAAC,KAAK,CAAK;IAClB,8DAA8D;IAC9D,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;;;;OAOG;gBACS,IAAI,EAAE,CAAC,GAAG,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,iBAAiB,EAAE,OAAO,CAAC,EAAE,0BAA0B;IAiBlI;qDACiD;IACjD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;kFAC8E;IAC9E,IAAI,MAAM,IAAI,UAAU,CAEvB;IAED;;;;;;;OAOG;IACH,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI;IA6BtC;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAOxD;sEACkE;IAClE,OAAO,CAAC,KAAK;IAgBb;;;;;;OAMG;IACH,MAAM,IAAI,IAAI;IAKd;oBACgB;IAChB,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;oBACgB;IAChB,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;;;;;;OAOG;IACH,YAAY,IAAI,IAAI;IAQpB;;;;;;OAMG;IACH,MAAM,IAAI,IAAI;IAQd;iBACa;IACb,OAAO,CAAC,YAAY;CAgBrB;AAMD,wDAAwD;AACxD,MAAM,MAAM,wBAAwB,GAAG;IACrC,gDAAgD;IAChD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,aAAa,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,UAAU,CAgC3J;AA6FD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,aAAa,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAoCjK;AAmBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,WAAW,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IACpD,wEAAwE;IACxE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC;;0CAEsC;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C;mCAC+B;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqC;IACpE,iFAAiF;IACjF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C;6EACyE;IACzE,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuF;IACrH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkC;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAW;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;IAC/D,2EAA2E;IAC3E,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,QAAQ,CAAsE;IACtF,0EAA0E;IAC1E,OAAO,CAAC,gBAAgB,CAA6C;IACrE;;;;;;0BAMsB;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0D;IAEvF,gDAAgD;gBACpC,MAAM,EAAE,UAAU,GAAG,qBAAqB,GAAG,oBAAoB,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,mBAAmB;IA2DtI,sCAAsC;IACtC,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;;;wBAIoB;IACpB,OAAO,CAAC,WAAW;IAOnB;;6CAEyC;IACzC,OAAO,CAAC,mBAAmB;IAc3B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAKlC,4EAA4E;IAC5E,OAAO,CAAC,iBAAiB;IAoBzB;;;;2CAIuC;IACvC,OAAO,CAAC,aAAa;IA8BrB;;;;sCAIkC;IAClC,OAAO,CAAC,QAAQ;IAsChB;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK;IAUzJ;4DACwD;IACxD,OAAO,CAAC,YAAY;IAiBpB;;iFAE6E;IAC7E,OAAO,CAAC,cAAc;IAQtB;uEACmE;IACnE,OAAO,CAAC,UAAU;IAUlB;;;;;;;OAOG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK;IAYpE;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAwDpD;;;;;;;;;;;;;;;;;OAiBG;IACH,UAAU,CACR,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAClG,MAAM;IAeT;;;;;;;;;;;;;;;OAeG;IACH,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAO1C;;;;;;;;;;OAUG;IACH,GAAG,CACD,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAClG,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,SAAS;CAqBhH;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,aAAa,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,qBAAqB,GAAG,oBAAoB,KAAK,WAAW,CAAC,CAAC,CAAC,CAIpM"}
|