@elaraai/east 0.0.1-beta.0
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/LICENSE.md +682 -0
- package/README.md +276 -0
- package/dist/src/analyze.d.ts +95 -0
- package/dist/src/analyze.d.ts.map +1 -0
- package/dist/src/analyze.js +1110 -0
- package/dist/src/analyze.js.map +1 -0
- package/dist/src/ast.d.ts +263 -0
- package/dist/src/ast.d.ts.map +1 -0
- package/dist/src/ast.js +151 -0
- package/dist/src/ast.js.map +1 -0
- package/dist/src/ast_to_ir.d.ts +24 -0
- package/dist/src/ast_to_ir.d.ts.map +1 -0
- package/dist/src/ast_to_ir.js +834 -0
- package/dist/src/ast_to_ir.js.map +1 -0
- package/dist/src/builtins.d.ts +18 -0
- package/dist/src/builtins.d.ts.map +1 -0
- package/dist/src/builtins.js +1105 -0
- package/dist/src/builtins.js.map +1 -0
- package/dist/src/comparison.d.ts +28 -0
- package/dist/src/comparison.d.ts.map +1 -0
- package/dist/src/comparison.js +1017 -0
- package/dist/src/comparison.js.map +1 -0
- package/dist/src/compile.d.ts +22 -0
- package/dist/src/compile.d.ts.map +1 -0
- package/dist/src/compile.js +3260 -0
- package/dist/src/compile.js.map +1 -0
- package/dist/src/containers/ref.d.ts +106 -0
- package/dist/src/containers/ref.d.ts.map +1 -0
- package/dist/src/containers/ref.js +100 -0
- package/dist/src/containers/ref.js.map +1 -0
- package/dist/src/containers/sortedmap.d.ts +165 -0
- package/dist/src/containers/sortedmap.d.ts.map +1 -0
- package/dist/src/containers/sortedmap.js +237 -0
- package/dist/src/containers/sortedmap.js.map +1 -0
- package/dist/src/containers/sortedset.d.ts +185 -0
- package/dist/src/containers/sortedset.d.ts.map +1 -0
- package/dist/src/containers/sortedset.js +312 -0
- package/dist/src/containers/sortedset.js.map +1 -0
- package/dist/src/containers/variant.d.ts +131 -0
- package/dist/src/containers/variant.d.ts.map +1 -0
- package/dist/src/containers/variant.js +68 -0
- package/dist/src/containers/variant.js.map +1 -0
- package/dist/src/datetime_format/parse.d.ts +50 -0
- package/dist/src/datetime_format/parse.d.ts.map +1 -0
- package/dist/src/datetime_format/parse.js +908 -0
- package/dist/src/datetime_format/parse.js.map +1 -0
- package/dist/src/datetime_format/print.d.ts +35 -0
- package/dist/src/datetime_format/print.d.ts.map +1 -0
- package/dist/src/datetime_format/print.js +157 -0
- package/dist/src/datetime_format/print.js.map +1 -0
- package/dist/src/datetime_format/tokenize.d.ts +76 -0
- package/dist/src/datetime_format/tokenize.d.ts.map +1 -0
- package/dist/src/datetime_format/tokenize.js +271 -0
- package/dist/src/datetime_format/tokenize.js.map +1 -0
- package/dist/src/datetime_format/types.d.ts +99 -0
- package/dist/src/datetime_format/types.d.ts.map +1 -0
- package/dist/src/datetime_format/types.js +103 -0
- package/dist/src/datetime_format/types.js.map +1 -0
- package/dist/src/datetime_format/validate.d.ts +51 -0
- package/dist/src/datetime_format/validate.d.ts.map +1 -0
- package/dist/src/datetime_format/validate.js +208 -0
- package/dist/src/datetime_format/validate.js.map +1 -0
- package/dist/src/default.d.ts +21 -0
- package/dist/src/default.d.ts.map +1 -0
- package/dist/src/default.js +82 -0
- package/dist/src/default.js.map +1 -0
- package/dist/src/eastir.d.ts +33 -0
- package/dist/src/eastir.d.ts.map +1 -0
- package/dist/src/eastir.js +92 -0
- package/dist/src/eastir.js.map +1 -0
- package/dist/src/error.d.ts +13 -0
- package/dist/src/error.d.ts.map +1 -0
- package/dist/src/error.js +8 -0
- package/dist/src/error.js.map +1 -0
- package/dist/src/expr/array.d.ts +1711 -0
- package/dist/src/expr/array.d.ts.map +1 -0
- package/dist/src/expr/array.js +1805 -0
- package/dist/src/expr/array.js.map +1 -0
- package/dist/src/expr/ast.d.ts +17 -0
- package/dist/src/expr/ast.d.ts.map +1 -0
- package/dist/src/expr/ast.js +302 -0
- package/dist/src/expr/ast.js.map +1 -0
- package/dist/src/expr/blob.d.ts +141 -0
- package/dist/src/expr/blob.d.ts.map +1 -0
- package/dist/src/expr/blob.js +198 -0
- package/dist/src/expr/blob.js.map +1 -0
- package/dist/src/expr/block.d.ts +201 -0
- package/dist/src/expr/block.d.ts.map +1 -0
- package/dist/src/expr/block.js +1505 -0
- package/dist/src/expr/block.js.map +1 -0
- package/dist/src/expr/boolean.d.ts +207 -0
- package/dist/src/expr/boolean.d.ts.map +1 -0
- package/dist/src/expr/boolean.js +261 -0
- package/dist/src/expr/boolean.js.map +1 -0
- package/dist/src/expr/datetime.d.ts +544 -0
- package/dist/src/expr/datetime.d.ts.map +1 -0
- package/dist/src/expr/datetime.js +980 -0
- package/dist/src/expr/datetime.js.map +1 -0
- package/dist/src/expr/dict.d.ts +1242 -0
- package/dist/src/expr/dict.d.ts.map +1 -0
- package/dist/src/expr/dict.js +1492 -0
- package/dist/src/expr/dict.js.map +1 -0
- package/dist/src/expr/expr.d.ts +95 -0
- package/dist/src/expr/expr.d.ts.map +1 -0
- package/dist/src/expr/expr.js +171 -0
- package/dist/src/expr/expr.js.map +1 -0
- package/dist/src/expr/float.d.ts +357 -0
- package/dist/src/expr/float.d.ts.map +1 -0
- package/dist/src/expr/float.js +637 -0
- package/dist/src/expr/float.js.map +1 -0
- package/dist/src/expr/function.d.ts +46 -0
- package/dist/src/expr/function.d.ts.map +1 -0
- package/dist/src/expr/function.js +58 -0
- package/dist/src/expr/function.js.map +1 -0
- package/dist/src/expr/index.d.ts +450 -0
- package/dist/src/expr/index.d.ts.map +1 -0
- package/dist/src/expr/index.js +423 -0
- package/dist/src/expr/index.js.map +1 -0
- package/dist/src/expr/integer.d.ts +256 -0
- package/dist/src/expr/integer.d.ts.map +1 -0
- package/dist/src/expr/integer.js +311 -0
- package/dist/src/expr/integer.js.map +1 -0
- package/dist/src/expr/libs/array.d.ts +106 -0
- package/dist/src/expr/libs/array.d.ts.map +1 -0
- package/dist/src/expr/libs/array.js +140 -0
- package/dist/src/expr/libs/array.js.map +1 -0
- package/dist/src/expr/libs/blob.d.ts +42 -0
- package/dist/src/expr/libs/blob.d.ts.map +1 -0
- package/dist/src/expr/libs/blob.js +70 -0
- package/dist/src/expr/libs/blob.js.map +1 -0
- package/dist/src/expr/libs/datetime.d.ts +479 -0
- package/dist/src/expr/libs/datetime.d.ts.map +1 -0
- package/dist/src/expr/libs/datetime.js +624 -0
- package/dist/src/expr/libs/datetime.js.map +1 -0
- package/dist/src/expr/libs/dict.d.ts +66 -0
- package/dist/src/expr/libs/dict.d.ts.map +1 -0
- package/dist/src/expr/libs/dict.js +77 -0
- package/dist/src/expr/libs/dict.js.map +1 -0
- package/dist/src/expr/libs/float.d.ts +299 -0
- package/dist/src/expr/libs/float.d.ts.map +1 -0
- package/dist/src/expr/libs/float.js +564 -0
- package/dist/src/expr/libs/float.js.map +1 -0
- package/dist/src/expr/libs/integer.d.ts +228 -0
- package/dist/src/expr/libs/integer.d.ts.map +1 -0
- package/dist/src/expr/libs/integer.js +398 -0
- package/dist/src/expr/libs/integer.js.map +1 -0
- package/dist/src/expr/libs/set.d.ts +59 -0
- package/dist/src/expr/libs/set.d.ts.map +1 -0
- package/dist/src/expr/libs/set.js +69 -0
- package/dist/src/expr/libs/set.js.map +1 -0
- package/dist/src/expr/libs/string.d.ts +71 -0
- package/dist/src/expr/libs/string.d.ts.map +1 -0
- package/dist/src/expr/libs/string.js +75 -0
- package/dist/src/expr/libs/string.js.map +1 -0
- package/dist/src/expr/never.d.ts +15 -0
- package/dist/src/expr/never.d.ts.map +1 -0
- package/dist/src/expr/never.js +12 -0
- package/dist/src/expr/never.js.map +1 -0
- package/dist/src/expr/null.d.ts +15 -0
- package/dist/src/expr/null.d.ts.map +1 -0
- package/dist/src/expr/null.js +12 -0
- package/dist/src/expr/null.js.map +1 -0
- package/dist/src/expr/ref.d.ts +103 -0
- package/dist/src/expr/ref.d.ts.map +1 -0
- package/dist/src/expr/ref.js +131 -0
- package/dist/src/expr/ref.js.map +1 -0
- package/dist/src/expr/regex_validation.d.ts +25 -0
- package/dist/src/expr/regex_validation.d.ts.map +1 -0
- package/dist/src/expr/regex_validation.js +130 -0
- package/dist/src/expr/regex_validation.js.map +1 -0
- package/dist/src/expr/set.d.ts +1071 -0
- package/dist/src/expr/set.d.ts.map +1 -0
- package/dist/src/expr/set.js +1137 -0
- package/dist/src/expr/set.js.map +1 -0
- package/dist/src/expr/string.d.ts +414 -0
- package/dist/src/expr/string.d.ts.map +1 -0
- package/dist/src/expr/string.js +683 -0
- package/dist/src/expr/string.js.map +1 -0
- package/dist/src/expr/struct.d.ts +48 -0
- package/dist/src/expr/struct.d.ts.map +1 -0
- package/dist/src/expr/struct.js +65 -0
- package/dist/src/expr/struct.js.map +1 -0
- package/dist/src/expr/types.d.ts +68 -0
- package/dist/src/expr/types.d.ts.map +1 -0
- package/dist/src/expr/types.js +6 -0
- package/dist/src/expr/types.js.map +1 -0
- package/dist/src/expr/variant.d.ts +137 -0
- package/dist/src/expr/variant.d.ts.map +1 -0
- package/dist/src/expr/variant.js +105 -0
- package/dist/src/expr/variant.js.map +1 -0
- package/dist/src/fuzz.d.ts +80 -0
- package/dist/src/fuzz.d.ts.map +1 -0
- package/dist/src/fuzz.js +300 -0
- package/dist/src/fuzz.js.map +1 -0
- package/dist/src/index.d.ts +21 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +21 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/internal.d.ts +36 -0
- package/dist/src/internal.d.ts.map +1 -0
- package/dist/src/internal.js +11 -0
- package/dist/src/internal.js.map +1 -0
- package/dist/src/ir.d.ts +1571 -0
- package/dist/src/ir.d.ts.map +1 -0
- package/dist/src/ir.js +56 -0
- package/dist/src/ir.js.map +1 -0
- package/dist/src/location.d.ts +48 -0
- package/dist/src/location.d.ts.map +1 -0
- package/dist/src/location.js +62 -0
- package/dist/src/location.js.map +1 -0
- package/dist/src/platform.d.ts +21 -0
- package/dist/src/platform.d.ts.map +1 -0
- package/dist/src/platform.js +8 -0
- package/dist/src/platform.js.map +1 -0
- package/dist/src/serialization/beast.d.ts +39 -0
- package/dist/src/serialization/beast.d.ts.map +1 -0
- package/dist/src/serialization/beast.js +555 -0
- package/dist/src/serialization/beast.js.map +1 -0
- package/dist/src/serialization/beast2-stream.d.ts +38 -0
- package/dist/src/serialization/beast2-stream.d.ts.map +1 -0
- package/dist/src/serialization/beast2-stream.js +665 -0
- package/dist/src/serialization/beast2-stream.js.map +1 -0
- package/dist/src/serialization/beast2.d.ts +41 -0
- package/dist/src/serialization/beast2.d.ts.map +1 -0
- package/dist/src/serialization/beast2.js +489 -0
- package/dist/src/serialization/beast2.js.map +1 -0
- package/dist/src/serialization/binary-utils.d.ts +151 -0
- package/dist/src/serialization/binary-utils.d.ts.map +1 -0
- package/dist/src/serialization/binary-utils.js +929 -0
- package/dist/src/serialization/binary-utils.js.map +1 -0
- package/dist/src/serialization/east.d.ts +84 -0
- package/dist/src/serialization/east.d.ts.map +1 -0
- package/dist/src/serialization/east.js +1802 -0
- package/dist/src/serialization/east.js.map +1 -0
- package/dist/src/serialization/index.d.ts +11 -0
- package/dist/src/serialization/index.d.ts.map +1 -0
- package/dist/src/serialization/index.js +12 -0
- package/dist/src/serialization/index.js.map +1 -0
- package/dist/src/serialization/json.d.ts +36 -0
- package/dist/src/serialization/json.d.ts.map +1 -0
- package/dist/src/serialization/json.js +849 -0
- package/dist/src/serialization/json.js.map +1 -0
- package/dist/src/type_of_type.d.ts +115 -0
- package/dist/src/type_of_type.d.ts.map +1 -0
- package/dist/src/type_of_type.js +362 -0
- package/dist/src/type_of_type.js.map +1 -0
- package/dist/src/types.d.ts +648 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +1631 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1,555 @@
|
|
|
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
|
+
import { BufferWriter, readInt64Twiddled, readFloat64Twiddled, readStringUtf8Null, } from "./binary-utils.js";
|
|
6
|
+
import { isVariant, variant } from "../containers/variant.js";
|
|
7
|
+
import { EastTypeValueType, toEastTypeValue } from "../type_of_type.js";
|
|
8
|
+
import { printFor } from "./east.js";
|
|
9
|
+
import { equalFor } from "../comparison.js";
|
|
10
|
+
const printTypeValue = printFor(EastTypeValueType);
|
|
11
|
+
const isTypeValueEqual = equalFor(EastTypeValueType);
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// Beast v1 Type encoding/decoding (different from beast2!)
|
|
14
|
+
// =============================================================================
|
|
15
|
+
//
|
|
16
|
+
// NULLABLE TYPE HANDLING:
|
|
17
|
+
//
|
|
18
|
+
// Old East supported nullable types with a special flag (bit 7 set in type byte).
|
|
19
|
+
// New East removed nullable in favor of explicit Option/Variant types.
|
|
20
|
+
//
|
|
21
|
+
// DECODING: We auto-convert nullable types to Variant<{notNull: T, null: Null}>
|
|
22
|
+
// - This allows reading legacy .beast files seamlessly
|
|
23
|
+
// - The variant cases are named to sort correctly: "notNull" < "null" alphabetically
|
|
24
|
+
// - Tag mapping: tag 0 = notNull (has value), tag 1 = null
|
|
25
|
+
// - This matches the old nullable encoding perfectly for values (byte-for-byte identical)
|
|
26
|
+
//
|
|
27
|
+
// ENCODING: We currently do NOT auto-convert Variant<{notNull: T, null: Null}> back to nullable
|
|
28
|
+
// - Pro: Simpler, more explicit, no magic behavior
|
|
29
|
+
// - Con: Type schemas are larger (expanded Variant vs single nullable flag)
|
|
30
|
+
// - Con: Old ELARACore cannot read files written by new East
|
|
31
|
+
//
|
|
32
|
+
// FUTURE WORK: Consider implementing inverse transform on encode for full interoperability:
|
|
33
|
+
// - Detect Variant with exactly 2 cases: "notNull": T and "null": Null
|
|
34
|
+
// - Encode as nullable T (type byte with bit 7 set)
|
|
35
|
+
// - This would enable bidirectional compatibility and smaller type schemas
|
|
36
|
+
// - Trade-off: More magic behavior, but symmetric with decode behavior
|
|
37
|
+
//
|
|
38
|
+
// =============================================================================
|
|
39
|
+
// Beast v1 uses single-byte type tags (0-13) with nullable flag at bit 7
|
|
40
|
+
export const BEAST_TYPE_TO_BYTE = {
|
|
41
|
+
Array: 0,
|
|
42
|
+
Blob: 1,
|
|
43
|
+
Boolean: 2,
|
|
44
|
+
DateTime: 3,
|
|
45
|
+
Dict: 4,
|
|
46
|
+
Float: 5,
|
|
47
|
+
Integer: 6,
|
|
48
|
+
// Node: 7, // Not implemented in this version
|
|
49
|
+
Null: 8,
|
|
50
|
+
Set: 9,
|
|
51
|
+
String: 10,
|
|
52
|
+
Struct: 11,
|
|
53
|
+
// Tree: 12, // Not implemented in this version
|
|
54
|
+
Variant: 13,
|
|
55
|
+
};
|
|
56
|
+
export const BEAST_BYTE_TO_TYPE = [
|
|
57
|
+
"Array", "Blob", "Boolean", "DateTime", "Dict", "Float", "Integer",
|
|
58
|
+
undefined, // 7 - Node (not implemented)
|
|
59
|
+
"Null", "Set", "String", "Struct",
|
|
60
|
+
undefined, // 12 - Tree (not implemented)
|
|
61
|
+
"Variant",
|
|
62
|
+
];
|
|
63
|
+
export function encodeTypeToBeastBuffer(type, writer) {
|
|
64
|
+
const t = type.type;
|
|
65
|
+
// NOTE: We don't currently detect Variant<{notNull: T, null: Null}> and convert it
|
|
66
|
+
// back to the old nullable encoding. This means type schemas are larger than necessary
|
|
67
|
+
// but encoding is simpler and more explicit. See comments at top of file for trade-offs.
|
|
68
|
+
if (t === "Recursive") {
|
|
69
|
+
throw new Error("TODO");
|
|
70
|
+
}
|
|
71
|
+
const typeByte = BEAST_TYPE_TO_BYTE[t];
|
|
72
|
+
if (typeByte === undefined) {
|
|
73
|
+
throw new Error(`Unsupported type for Beast v1: ${t}`);
|
|
74
|
+
}
|
|
75
|
+
writer.writeUint8(typeByte);
|
|
76
|
+
if (t === "Array") {
|
|
77
|
+
encodeTypeToBeastBuffer(type.value, writer);
|
|
78
|
+
}
|
|
79
|
+
else if (t === "Set") {
|
|
80
|
+
encodeTypeToBeastBuffer(type.value, writer);
|
|
81
|
+
}
|
|
82
|
+
else if (t === "Dict") {
|
|
83
|
+
encodeTypeToBeastBuffer(type.value.key, writer);
|
|
84
|
+
encodeTypeToBeastBuffer(type.value.value, writer);
|
|
85
|
+
}
|
|
86
|
+
else if (t === "Struct") {
|
|
87
|
+
for (const { name: fieldName, type: fieldType } of type.value) {
|
|
88
|
+
writer.writeUint8(1); // continuation byte
|
|
89
|
+
writer.writeStringUtf8Null(fieldName);
|
|
90
|
+
encodeTypeToBeastBuffer(fieldType, writer);
|
|
91
|
+
}
|
|
92
|
+
writer.writeUint8(0); // terminator
|
|
93
|
+
}
|
|
94
|
+
else if (t === "Variant") {
|
|
95
|
+
for (const { name: caseName, type: caseType } of type.value) {
|
|
96
|
+
writer.writeUint8(1); // continuation byte
|
|
97
|
+
writer.writeStringUtf8Null(caseName);
|
|
98
|
+
encodeTypeToBeastBuffer(caseType, writer);
|
|
99
|
+
}
|
|
100
|
+
writer.writeUint8(0); // terminator
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
export function decodeTypeBeast(buffer, offset) {
|
|
104
|
+
const typeByte = buffer[offset];
|
|
105
|
+
offset += 1;
|
|
106
|
+
// Check for nullable flag (bit 7)
|
|
107
|
+
// In old East, nullable types were encoded with bit 7 set
|
|
108
|
+
// We convert these to Variant types with cases "notNull" (tag 0) and "null" (tag 1)
|
|
109
|
+
// which matches the old encoding where tag 0 = has value, tag 1 = null
|
|
110
|
+
const nullable = typeByte >= 128;
|
|
111
|
+
const actualTypeByte = nullable ? typeByte - 128 : typeByte;
|
|
112
|
+
const t = BEAST_BYTE_TO_TYPE[actualTypeByte];
|
|
113
|
+
if (!t) {
|
|
114
|
+
throw new Error(`Invalid type byte 0x${typeByte.toString(16).padStart(2, '0')} at offset ${offset - 1}`);
|
|
115
|
+
}
|
|
116
|
+
// Decode the base type
|
|
117
|
+
let baseType;
|
|
118
|
+
if (t === "Null") {
|
|
119
|
+
baseType = variant("Null", null);
|
|
120
|
+
}
|
|
121
|
+
else if (t === "Boolean") {
|
|
122
|
+
baseType = variant("Boolean", null);
|
|
123
|
+
}
|
|
124
|
+
else if (t === "Integer") {
|
|
125
|
+
baseType = variant("Integer", null);
|
|
126
|
+
}
|
|
127
|
+
else if (t === "Float") {
|
|
128
|
+
baseType = variant("Float", null);
|
|
129
|
+
}
|
|
130
|
+
else if (t === "DateTime") {
|
|
131
|
+
baseType = variant("DateTime", null);
|
|
132
|
+
}
|
|
133
|
+
else if (t === "String") {
|
|
134
|
+
baseType = variant("String", null);
|
|
135
|
+
}
|
|
136
|
+
else if (t === "Blob") {
|
|
137
|
+
baseType = variant("Blob", null);
|
|
138
|
+
}
|
|
139
|
+
else if (t === "Array") {
|
|
140
|
+
const [elementType, newOffset] = decodeTypeBeast(buffer, offset);
|
|
141
|
+
offset = newOffset;
|
|
142
|
+
baseType = variant("Array", elementType);
|
|
143
|
+
}
|
|
144
|
+
else if (t === "Set") {
|
|
145
|
+
const [keyType, newOffset] = decodeTypeBeast(buffer, offset);
|
|
146
|
+
offset = newOffset;
|
|
147
|
+
baseType = variant("Set", keyType);
|
|
148
|
+
}
|
|
149
|
+
else if (t === "Dict") {
|
|
150
|
+
const [keyType, keyOffset] = decodeTypeBeast(buffer, offset);
|
|
151
|
+
const [valueType, valueOffset] = decodeTypeBeast(buffer, keyOffset);
|
|
152
|
+
offset = valueOffset;
|
|
153
|
+
baseType = variant("Dict", { key: keyType, value: valueType });
|
|
154
|
+
}
|
|
155
|
+
else if (t === "Struct") {
|
|
156
|
+
const fields = [];
|
|
157
|
+
while (buffer[offset] === 1) {
|
|
158
|
+
offset += 1;
|
|
159
|
+
const [fieldName, nameOffset] = readStringUtf8Null(buffer, offset);
|
|
160
|
+
const [fieldType, typeOffset] = decodeTypeBeast(buffer, nameOffset);
|
|
161
|
+
fields.push({ name: fieldName, type: fieldType });
|
|
162
|
+
offset = typeOffset;
|
|
163
|
+
}
|
|
164
|
+
if (buffer[offset] !== 0) {
|
|
165
|
+
throw new Error(`Unexpected struct field separator ${buffer[offset]} at offset ${offset}`);
|
|
166
|
+
}
|
|
167
|
+
offset += 1;
|
|
168
|
+
baseType = variant("Struct", fields);
|
|
169
|
+
}
|
|
170
|
+
else if (t === "Variant") {
|
|
171
|
+
const cases = [];
|
|
172
|
+
while (buffer[offset] === 1) {
|
|
173
|
+
offset += 1;
|
|
174
|
+
const [caseName, nameOffset] = readStringUtf8Null(buffer, offset);
|
|
175
|
+
const [caseType, typeOffset] = decodeTypeBeast(buffer, nameOffset);
|
|
176
|
+
cases.push({ name: caseName, type: caseType });
|
|
177
|
+
offset = typeOffset;
|
|
178
|
+
}
|
|
179
|
+
if (buffer[offset] !== 0) {
|
|
180
|
+
throw new Error(`Unexpected variant case separator ${buffer[offset]} at offset ${offset}`);
|
|
181
|
+
}
|
|
182
|
+
offset += 1;
|
|
183
|
+
baseType = variant("Variant", cases);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
throw new Error(`Unhandled type: ${t}`);
|
|
187
|
+
}
|
|
188
|
+
// If nullable, wrap in a Variant with "notNull" (tag 0) and "null" (tag 1)
|
|
189
|
+
// This matches the old encoding where tag 0 = has value, tag 1 = null
|
|
190
|
+
if (nullable) {
|
|
191
|
+
return [variant("Variant", [{ name: "notNull", type: baseType }, { name: "null", type: variant("Null", null) }]), offset];
|
|
192
|
+
}
|
|
193
|
+
return [baseType, offset];
|
|
194
|
+
}
|
|
195
|
+
// =============================================================================
|
|
196
|
+
// Value encoding/decoding factories (closure-compiler pattern)
|
|
197
|
+
// =============================================================================
|
|
198
|
+
export function encodeBeastValueToBufferFor(type) {
|
|
199
|
+
if (type.type === "Never") {
|
|
200
|
+
return (_, _writer) => { throw new Error(`Cannot encode Never type`); };
|
|
201
|
+
}
|
|
202
|
+
else if (type.type === "Null") {
|
|
203
|
+
return (_, _writer) => { };
|
|
204
|
+
}
|
|
205
|
+
else if (type.type === "Boolean") {
|
|
206
|
+
return (x, writer) => writer.writeUint8(x ? 1 : 0);
|
|
207
|
+
}
|
|
208
|
+
else if (type.type === "Integer") {
|
|
209
|
+
return (x, writer) => writer.writeInt64Twiddled(x);
|
|
210
|
+
}
|
|
211
|
+
else if (type.type === "Float") {
|
|
212
|
+
return (x, writer) => writer.writeFloat64Twiddled(x);
|
|
213
|
+
}
|
|
214
|
+
else if (type.type === "String") {
|
|
215
|
+
return (x, writer) => writer.writeStringUtf8Null(x);
|
|
216
|
+
}
|
|
217
|
+
else if (type.type === "DateTime") {
|
|
218
|
+
return (x, writer) => writer.writeInt64Twiddled(BigInt(x.valueOf()));
|
|
219
|
+
}
|
|
220
|
+
else if (type.type === "Blob") {
|
|
221
|
+
// Preallocate length buffer (reused across calls)
|
|
222
|
+
const lengthBytes = new Uint8Array(8);
|
|
223
|
+
const lengthView = new DataView(lengthBytes.buffer);
|
|
224
|
+
return (x, writer) => {
|
|
225
|
+
// Old format: 8-byte big-endian length + raw bytes
|
|
226
|
+
lengthView.setBigUint64(0, BigInt(x.length), false); // big-endian
|
|
227
|
+
writer.writeBytes(lengthBytes);
|
|
228
|
+
writer.writeBytes(x);
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
else if (type.type === "Ref") {
|
|
232
|
+
throw new Error(`Beast v1 format does not support ref types`);
|
|
233
|
+
}
|
|
234
|
+
else if (type.type === "Array") {
|
|
235
|
+
const valueEncoder = encodeBeastValueToBufferFor(type.value);
|
|
236
|
+
return (x, writer) => {
|
|
237
|
+
// Old format: continuation bytes (0x01 before each element, 0x00 at end)
|
|
238
|
+
for (const item of x) {
|
|
239
|
+
writer.writeUint8(1); // continuation byte
|
|
240
|
+
valueEncoder(item, writer);
|
|
241
|
+
}
|
|
242
|
+
writer.writeUint8(0); // end marker
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
else if (type.type === "Set") {
|
|
246
|
+
const keyEncoder = encodeBeastValueToBufferFor(type.value);
|
|
247
|
+
return (x, writer) => {
|
|
248
|
+
// Old format: continuation bytes (0x01 before each element, 0x00 at end)
|
|
249
|
+
for (const key of x) {
|
|
250
|
+
writer.writeUint8(1); // continuation byte
|
|
251
|
+
keyEncoder(key, writer);
|
|
252
|
+
}
|
|
253
|
+
writer.writeUint8(0); // end marker
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
else if (type.type === "Dict") {
|
|
257
|
+
const keyEncoder = encodeBeastValueToBufferFor(type.value.key);
|
|
258
|
+
const valueEncoder = encodeBeastValueToBufferFor(type.value.value);
|
|
259
|
+
return (x, writer) => {
|
|
260
|
+
// Old format: continuation bytes (0x01 before each entry, 0x00 at end)
|
|
261
|
+
for (const [k, v] of x) {
|
|
262
|
+
writer.writeUint8(1); // continuation byte
|
|
263
|
+
keyEncoder(k, writer);
|
|
264
|
+
valueEncoder(v, writer);
|
|
265
|
+
}
|
|
266
|
+
writer.writeUint8(0); // end marker
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
else if (type.type === "Struct") {
|
|
270
|
+
const fieldEncoders = type.value.map(({ name, type }) => [name, encodeBeastValueToBufferFor(type)]);
|
|
271
|
+
return (x, writer) => {
|
|
272
|
+
for (const [k, encoder] of fieldEncoders) {
|
|
273
|
+
encoder(x[k], writer);
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
else if (type.type === "Variant") {
|
|
278
|
+
const caseEncoders = Object.fromEntries(type.value.map(({ name, type }) => [name, encodeBeastValueToBufferFor(type)]));
|
|
279
|
+
const caseTags = Object.fromEntries(type.value.map(({ name }, i) => [name, i]));
|
|
280
|
+
return (x, writer) => {
|
|
281
|
+
const tag = x.type;
|
|
282
|
+
const tagIndex = caseTags[tag]; // Assume valid input
|
|
283
|
+
writer.writeUint8(tagIndex);
|
|
284
|
+
caseEncoders[tag](x.value, writer);
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
else if (type.type === "Recursive") {
|
|
288
|
+
throw new Error(`Beast v1 format does not support recursive types`);
|
|
289
|
+
}
|
|
290
|
+
else if (type.type === "Function") {
|
|
291
|
+
throw new Error(`Functions cannot be serialized`);
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
throw new Error(`Unhandled type ${type.type}`);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
export function decodeBeastValueFor(type) {
|
|
298
|
+
// Convert EastType to EastTypeValue if necessary
|
|
299
|
+
if (!isVariant(type)) {
|
|
300
|
+
type = toEastTypeValue(type);
|
|
301
|
+
}
|
|
302
|
+
if (type.type === "Never") {
|
|
303
|
+
return (_buffer, _offset) => { throw new Error(`Cannot decode Never type`); };
|
|
304
|
+
}
|
|
305
|
+
else if (type.type === "Null") {
|
|
306
|
+
return (_buffer, offset) => [null, offset];
|
|
307
|
+
}
|
|
308
|
+
else if (type.type === "Boolean") {
|
|
309
|
+
return (buffer, offset) => {
|
|
310
|
+
if (offset >= buffer.length) {
|
|
311
|
+
throw new Error(`Buffer underflow reading boolean at offset ${offset}`);
|
|
312
|
+
}
|
|
313
|
+
return [buffer[offset] !== 0, offset + 1];
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
else if (type.type === "Integer") {
|
|
317
|
+
return (buffer, offset) => {
|
|
318
|
+
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
319
|
+
return readInt64Twiddled(view, offset);
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
else if (type.type === "Float") {
|
|
323
|
+
return (buffer, offset) => {
|
|
324
|
+
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
325
|
+
const value = readFloat64Twiddled(view, offset);
|
|
326
|
+
return [value, offset + 8];
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
else if (type.type === "String") {
|
|
330
|
+
return (buffer, offset) => readStringUtf8Null(buffer, offset);
|
|
331
|
+
}
|
|
332
|
+
else if (type.type === "DateTime") {
|
|
333
|
+
return (buffer, offset) => {
|
|
334
|
+
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
335
|
+
const [unixTime, newOffset] = readInt64Twiddled(view, offset);
|
|
336
|
+
return [new Date(Number(unixTime)), newOffset];
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
else if (type.type === "Blob") {
|
|
340
|
+
return (buffer, offset) => {
|
|
341
|
+
if (offset + 8 > buffer.length) {
|
|
342
|
+
throw new Error(`Buffer underflow reading blob length at offset ${offset}`);
|
|
343
|
+
}
|
|
344
|
+
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
345
|
+
const length = Number(view.getBigUint64(offset, false)); // big-endian
|
|
346
|
+
const newOffset = offset + 8;
|
|
347
|
+
if (newOffset + length > buffer.length) {
|
|
348
|
+
throw new Error(`Buffer underflow reading blob data at offset ${newOffset}, length ${length}`);
|
|
349
|
+
}
|
|
350
|
+
const blob = buffer.slice(newOffset, newOffset + length);
|
|
351
|
+
return [blob, newOffset + length];
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
else if (type.type === "Ref") {
|
|
355
|
+
throw new Error("Beast v1 format does not support ref types");
|
|
356
|
+
;
|
|
357
|
+
}
|
|
358
|
+
else if (type.type === "Array") {
|
|
359
|
+
const valueDecoder = decodeBeastValueFor(type.value);
|
|
360
|
+
return (buffer, offset) => {
|
|
361
|
+
const result = [];
|
|
362
|
+
while (true) {
|
|
363
|
+
if (offset >= buffer.length) {
|
|
364
|
+
throw new Error(`Buffer underflow reading array continuation byte at offset ${offset}`);
|
|
365
|
+
}
|
|
366
|
+
const continuationByte = buffer[offset++];
|
|
367
|
+
if (continuationByte === 0) {
|
|
368
|
+
break; // end of array
|
|
369
|
+
}
|
|
370
|
+
else if (continuationByte === 1) {
|
|
371
|
+
const [value, newOffset] = valueDecoder(buffer, offset);
|
|
372
|
+
result.push(value);
|
|
373
|
+
offset = newOffset;
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
throw new Error(`Invalid continuation byte ${continuationByte} at offset ${offset - 1}`);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
return [result, offset];
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
else if (type.type === "Set") {
|
|
383
|
+
const keyDecoder = decodeBeastValueFor(type.value);
|
|
384
|
+
return (buffer, offset) => {
|
|
385
|
+
const result = new Set();
|
|
386
|
+
while (true) {
|
|
387
|
+
if (offset >= buffer.length) {
|
|
388
|
+
throw new Error(`Buffer underflow reading set continuation byte at offset ${offset}`);
|
|
389
|
+
}
|
|
390
|
+
const continuationByte = buffer[offset++];
|
|
391
|
+
if (continuationByte === 0) {
|
|
392
|
+
break; // end of set
|
|
393
|
+
}
|
|
394
|
+
else if (continuationByte === 1) {
|
|
395
|
+
const [key, newOffset] = keyDecoder(buffer, offset);
|
|
396
|
+
result.add(key);
|
|
397
|
+
offset = newOffset;
|
|
398
|
+
}
|
|
399
|
+
else {
|
|
400
|
+
throw new Error(`Invalid continuation byte ${continuationByte} at offset ${offset - 1}`);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
return [result, offset];
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
else if (type.type === "Dict") {
|
|
407
|
+
const keyDecoder = decodeBeastValueFor(type.value.key);
|
|
408
|
+
const valueDecoder = decodeBeastValueFor(type.value.value);
|
|
409
|
+
return (buffer, offset) => {
|
|
410
|
+
const result = new Map();
|
|
411
|
+
while (true) {
|
|
412
|
+
if (offset >= buffer.length) {
|
|
413
|
+
throw new Error(`Buffer underflow reading dict continuation byte at offset ${offset}`);
|
|
414
|
+
}
|
|
415
|
+
const continuationByte = buffer[offset++];
|
|
416
|
+
if (continuationByte === 0) {
|
|
417
|
+
break; // end of dict
|
|
418
|
+
}
|
|
419
|
+
else if (continuationByte === 1) {
|
|
420
|
+
const [key, keyOffset] = keyDecoder(buffer, offset);
|
|
421
|
+
const [value, valueOffset] = valueDecoder(buffer, keyOffset);
|
|
422
|
+
result.set(key, value);
|
|
423
|
+
offset = valueOffset;
|
|
424
|
+
}
|
|
425
|
+
else {
|
|
426
|
+
throw new Error(`Invalid continuation byte ${continuationByte} at offset ${offset - 1}`);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
return [result, offset];
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
else if (type.type === "Struct") {
|
|
433
|
+
const fieldDecoders = type.value.map(({ name, type }) => [name, decodeBeastValueFor(type)]);
|
|
434
|
+
return (buffer, offset) => {
|
|
435
|
+
const result = {};
|
|
436
|
+
let currentOffset = offset;
|
|
437
|
+
for (const [k, decoder] of fieldDecoders) {
|
|
438
|
+
const [value, nextOffset] = decoder(buffer, currentOffset);
|
|
439
|
+
result[k] = value;
|
|
440
|
+
currentOffset = nextOffset;
|
|
441
|
+
}
|
|
442
|
+
return [result, currentOffset];
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
else if (type.type === "Variant") {
|
|
446
|
+
const caseDecoders = type.value.map(({ name, type }) => [name, decodeBeastValueFor(type)]);
|
|
447
|
+
return (buffer, offset) => {
|
|
448
|
+
if (offset >= buffer.length) {
|
|
449
|
+
throw new Error(`Buffer underflow reading variant tag at offset ${offset}`);
|
|
450
|
+
}
|
|
451
|
+
const tagIndex = buffer[offset++];
|
|
452
|
+
if (tagIndex >= caseDecoders.length) {
|
|
453
|
+
throw new Error(`Invalid variant tag ${tagIndex} at offset ${offset - 1}`);
|
|
454
|
+
}
|
|
455
|
+
const [caseName, caseDecoder] = caseDecoders[tagIndex];
|
|
456
|
+
const [value, finalOffset] = caseDecoder(buffer, offset);
|
|
457
|
+
return [variant(caseName, value), finalOffset];
|
|
458
|
+
};
|
|
459
|
+
}
|
|
460
|
+
else if (type.type === "Recursive") {
|
|
461
|
+
throw new Error("Beast v1 format does not support recursive types");
|
|
462
|
+
;
|
|
463
|
+
}
|
|
464
|
+
else if (type.type === "Function") {
|
|
465
|
+
throw new Error(`Functions cannot be deserialized`);
|
|
466
|
+
}
|
|
467
|
+
else {
|
|
468
|
+
throw new Error(`Unhandled type ${type.type}`);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
export function encodeBeastValueFor(type) {
|
|
472
|
+
// Convert EastType to EastTypeValue if necessary
|
|
473
|
+
if (!isVariant(type)) {
|
|
474
|
+
type = toEastTypeValue(type);
|
|
475
|
+
}
|
|
476
|
+
const encoder = encodeBeastValueToBufferFor(type);
|
|
477
|
+
return (value) => {
|
|
478
|
+
const writer = new BufferWriter();
|
|
479
|
+
encoder(value, writer);
|
|
480
|
+
return writer.toUint8Array();
|
|
481
|
+
};
|
|
482
|
+
}
|
|
483
|
+
export const MAGIC_BYTES = Uint8Array.from([69, 97, 115, 116, 0, 234, 87, 255]);
|
|
484
|
+
export function encodeBeastFor(type) {
|
|
485
|
+
// Convert EastType to EastTypeValue if necessary
|
|
486
|
+
if (!isVariant(type)) {
|
|
487
|
+
type = toEastTypeValue(type);
|
|
488
|
+
}
|
|
489
|
+
const valueEncoder = encodeBeastValueToBufferFor(type);
|
|
490
|
+
return (value) => {
|
|
491
|
+
const writer = new BufferWriter();
|
|
492
|
+
// Write magic bytes (8 bytes)
|
|
493
|
+
writer.writeBytes(MAGIC_BYTES);
|
|
494
|
+
// Write type schema (using beast v1 type encoding)
|
|
495
|
+
encodeTypeToBeastBuffer(type, writer);
|
|
496
|
+
// Write value (using beast v1 encoding)
|
|
497
|
+
valueEncoder(value, writer);
|
|
498
|
+
return writer.toUint8Array();
|
|
499
|
+
};
|
|
500
|
+
}
|
|
501
|
+
export function decodeBeast(data) {
|
|
502
|
+
// Verify magic bytes
|
|
503
|
+
if (data.length < MAGIC_BYTES.length) {
|
|
504
|
+
throw new Error(`Data too short for Beast format: ${data.length} bytes`);
|
|
505
|
+
}
|
|
506
|
+
for (let i = 0; i < MAGIC_BYTES.length; i++) {
|
|
507
|
+
if (data[i] !== MAGIC_BYTES[i]) {
|
|
508
|
+
throw new Error(`Invalid Beast magic bytes at offset ${i}: expected 0x${MAGIC_BYTES[i].toString(16)}, got 0x${data[i].toString(16)}`);
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
// Decode type schema
|
|
512
|
+
let offset = MAGIC_BYTES.length;
|
|
513
|
+
const [type, typeEndOffset] = decodeTypeBeast(data, offset);
|
|
514
|
+
// Decode value
|
|
515
|
+
const valueDecoder = decodeBeastValueFor(type);
|
|
516
|
+
const [value, valueEndOffset] = valueDecoder(data, typeEndOffset);
|
|
517
|
+
// Verify we consumed all data
|
|
518
|
+
if (valueEndOffset !== data.length) {
|
|
519
|
+
throw new Error(`Unexpected data after Beast value at offset ${valueEndOffset} (${data.length - valueEndOffset} bytes remaining)`);
|
|
520
|
+
}
|
|
521
|
+
return { type, value };
|
|
522
|
+
}
|
|
523
|
+
export function decodeBeastFor(type) {
|
|
524
|
+
// Convert EastType to EastTypeValue if necessary
|
|
525
|
+
if (!isVariant(type)) {
|
|
526
|
+
type = toEastTypeValue(type);
|
|
527
|
+
}
|
|
528
|
+
const valueDecoder = decodeBeastValueFor(type);
|
|
529
|
+
return (data) => {
|
|
530
|
+
// Verify magic bytes
|
|
531
|
+
if (data.length < MAGIC_BYTES.length) {
|
|
532
|
+
throw new Error(`Data too short for Beast format: ${data.length} bytes`);
|
|
533
|
+
}
|
|
534
|
+
for (let i = 0; i < MAGIC_BYTES.length; i++) {
|
|
535
|
+
if (data[i] !== MAGIC_BYTES[i]) {
|
|
536
|
+
throw new Error(`Invalid Beast magic bytes at offset ${i}: expected 0x${MAGIC_BYTES[i].toString(16)}, got 0x${data[i].toString(16)}`);
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
// Decode type schema
|
|
540
|
+
let offset = MAGIC_BYTES.length;
|
|
541
|
+
const [decodedType, typeEndOffset] = decodeTypeBeast(data, offset);
|
|
542
|
+
// Verify type matches expected type
|
|
543
|
+
if (!isTypeValueEqual(decodedType, type)) {
|
|
544
|
+
throw new Error(`Type mismatch: expected ${printTypeValue(type)}, got ${printTypeValue(decodedType)}`);
|
|
545
|
+
}
|
|
546
|
+
// Decode value
|
|
547
|
+
const [value, valueEndOffset] = valueDecoder(data, typeEndOffset);
|
|
548
|
+
// Verify we consumed all data
|
|
549
|
+
if (valueEndOffset !== data.length) {
|
|
550
|
+
throw new Error(`Unexpected data after Beast value at offset ${valueEndOffset} (${data.length - valueEndOffset} bytes remaining)`);
|
|
551
|
+
}
|
|
552
|
+
return value;
|
|
553
|
+
};
|
|
554
|
+
}
|
|
555
|
+
//# sourceMappingURL=beast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beast.js","sourceRoot":"","sources":["../../../src/serialization/beast.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
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
|
+
import { type EastType, type ValueTypeOf } from "../types.js";
|
|
6
|
+
import { type EastTypeValue } from "../type_of_type.js";
|
|
7
|
+
/**
|
|
8
|
+
* Encode an East value to a ReadableStream in Beast v2 format with true backpressure.
|
|
9
|
+
*
|
|
10
|
+
* Uses pull-based control flow: the consumer pulls chunks via ReadableStream.pull(),
|
|
11
|
+
* which drives the generator to produce the next chunk. This provides automatic
|
|
12
|
+
* backpressure without any buffering or queueing.
|
|
13
|
+
*
|
|
14
|
+
* @param type The type of the value to encode
|
|
15
|
+
* @returns A function that takes a value and returns a ReadableStream<Uint8Array>
|
|
16
|
+
*/
|
|
17
|
+
export declare function encodeBeast2ToStreamFor(type: EastTypeValue): (value: any) => ReadableStream<Uint8Array>;
|
|
18
|
+
export declare function encodeBeast2ToStreamFor<T extends EastType>(type: T): (value: ValueTypeOf<T>) => ReadableStream<Uint8Array>;
|
|
19
|
+
/**
|
|
20
|
+
* Decode a Beast v2 format stream to an East value.
|
|
21
|
+
* Reads the type schema from the stream and returns both type and value.
|
|
22
|
+
*
|
|
23
|
+
* @param stream The input stream to decode
|
|
24
|
+
* @returns Promise resolving to { type, value }
|
|
25
|
+
*/
|
|
26
|
+
export declare function decodeBeast2FromStream(stream: ReadableStream<Uint8Array>): Promise<{
|
|
27
|
+
type: EastTypeValue;
|
|
28
|
+
value: any;
|
|
29
|
+
}>;
|
|
30
|
+
/**
|
|
31
|
+
* Create a streaming decoder for a specific Beast v2 type.
|
|
32
|
+
* Factory pattern: the type is verified once, returns async decoder.
|
|
33
|
+
*
|
|
34
|
+
* @param type The expected type to decode
|
|
35
|
+
* @returns A function that takes a stream and returns a Promise of the decoded value
|
|
36
|
+
*/
|
|
37
|
+
export declare function decodeBeast2FromStreamFor<T extends EastTypeValue>(type: T): (stream: ReadableStream<Uint8Array>) => Promise<ValueTypeOf<T>>;
|
|
38
|
+
//# sourceMappingURL=beast2-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beast2-stream.d.ts","sourceRoot":"","sources":["../../../src/serialization/beast2-stream.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAI9D,OAAO,EAAsC,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAuX5F;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,aAAa,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,cAAc,CAAC,UAAU,CAAC,CAAA;AACxG,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,UAAU,CAAC,CAAA;AA6R3H;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACjC,OAAO,CAAC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,CAAC,CAwB9C;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,aAAa,EAC/D,IAAI,EAAE,CAAC,GACN,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAkCjE"}
|