@elaraai/east 1.0.44 → 1.0.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/src/containers/sortedmap.d.ts +22 -0
  2. package/dist/src/containers/sortedmap.d.ts.map +1 -1
  3. package/dist/src/containers/sortedmap.js +31 -2
  4. package/dist/src/containers/sortedmap.js.map +1 -1
  5. package/dist/src/containers/sortedset.d.ts +22 -0
  6. package/dist/src/containers/sortedset.d.ts.map +1 -1
  7. package/dist/src/containers/sortedset.js +31 -2
  8. package/dist/src/containers/sortedset.js.map +1 -1
  9. package/dist/src/expr/blob.d.ts +6 -1
  10. package/dist/src/expr/blob.d.ts.map +1 -1
  11. package/dist/src/expr/blob.js +6 -1
  12. package/dist/src/expr/blob.js.map +1 -1
  13. package/dist/src/expr/libs/blob.d.ts +10 -1
  14. package/dist/src/expr/libs/blob.d.ts.map +1 -1
  15. package/dist/src/expr/libs/blob.js +10 -1
  16. package/dist/src/expr/libs/blob.js.map +1 -1
  17. package/dist/src/fuzz.d.ts.map +1 -1
  18. package/dist/src/fuzz.js +11 -2
  19. package/dist/src/fuzz.js.map +1 -1
  20. package/dist/src/serialization/beast2/index.d.ts +76 -22
  21. package/dist/src/serialization/beast2/index.d.ts.map +1 -1
  22. package/dist/src/serialization/beast2/index.js +87 -720
  23. package/dist/src/serialization/beast2/index.js.map +1 -1
  24. package/dist/src/serialization/beast2/index.spec.js +147 -4
  25. package/dist/src/serialization/beast2/index.spec.js.map +1 -1
  26. package/dist/src/serialization/beast2/shared.d.ts +79 -0
  27. package/dist/src/serialization/beast2/shared.d.ts.map +1 -0
  28. package/dist/src/serialization/beast2/shared.js +143 -0
  29. package/dist/src/serialization/beast2/shared.js.map +1 -0
  30. package/dist/src/serialization/beast2/v4/container.d.ts +67 -0
  31. package/dist/src/serialization/beast2/v4/container.d.ts.map +1 -0
  32. package/dist/src/serialization/beast2/v4/container.js +727 -0
  33. package/dist/src/serialization/beast2/v4/container.js.map +1 -0
  34. package/dist/src/serialization/beast2/{sourcemap-table.d.ts → v4/sourcemap-table.d.ts} +2 -2
  35. package/dist/src/serialization/beast2/v4/sourcemap-table.d.ts.map +1 -0
  36. package/dist/src/serialization/beast2/{sourcemap-table.js → v4/sourcemap-table.js} +2 -2
  37. package/dist/src/serialization/beast2/v4/sourcemap-table.js.map +1 -0
  38. package/dist/src/serialization/beast2/{string-table.d.ts → v4/string-table.d.ts} +1 -1
  39. package/dist/src/serialization/beast2/v4/string-table.d.ts.map +1 -0
  40. package/dist/src/serialization/beast2/{string-table.js → v4/string-table.js} +1 -1
  41. package/dist/src/serialization/beast2/v4/string-table.js.map +1 -0
  42. package/dist/src/serialization/beast2/{type-table.d.ts → v4/type-table.d.ts} +6 -4
  43. package/dist/src/serialization/beast2/v4/type-table.d.ts.map +1 -0
  44. package/dist/src/serialization/beast2/{type-table.js → v4/type-table.js} +103 -10
  45. package/dist/src/serialization/beast2/v4/type-table.js.map +1 -0
  46. package/dist/src/serialization/beast2/{value-table.d.ts → v4/value-table.d.ts} +2 -2
  47. package/dist/src/serialization/beast2/v4/value-table.d.ts.map +1 -0
  48. package/dist/src/serialization/beast2/{value-table.js → v4/value-table.js} +3 -3
  49. package/dist/src/serialization/beast2/v4/value-table.js.map +1 -0
  50. package/dist/src/serialization/beast2/v5/codec.d.ts +213 -0
  51. package/dist/src/serialization/beast2/v5/codec.d.ts.map +1 -0
  52. package/dist/src/serialization/beast2/v5/codec.js +954 -0
  53. package/dist/src/serialization/beast2/v5/codec.js.map +1 -0
  54. package/dist/src/serialization/beast2/v5/deflate.d.ts +16 -0
  55. package/dist/src/serialization/beast2/v5/deflate.d.ts.map +1 -0
  56. package/dist/src/serialization/beast2/v5/deflate.js +172 -0
  57. package/dist/src/serialization/beast2/v5/deflate.js.map +1 -0
  58. package/dist/src/serialization/beast2/v5/frames.d.ts +150 -0
  59. package/dist/src/serialization/beast2/v5/frames.d.ts.map +1 -0
  60. package/dist/src/serialization/beast2/v5/frames.js +284 -0
  61. package/dist/src/serialization/beast2/v5/frames.js.map +1 -0
  62. package/dist/src/serialization/beast2/v5/index.spec.d.ts +6 -0
  63. package/dist/src/serialization/beast2/v5/index.spec.d.ts.map +1 -0
  64. package/dist/src/serialization/beast2/v5/index.spec.js +484 -0
  65. package/dist/src/serialization/beast2/v5/index.spec.js.map +1 -0
  66. package/dist/src/serialization/beast2/v5/stream.d.ts +177 -0
  67. package/dist/src/serialization/beast2/v5/stream.d.ts.map +1 -0
  68. package/dist/src/serialization/beast2/v5/stream.js +447 -0
  69. package/dist/src/serialization/beast2/v5/stream.js.map +1 -0
  70. package/dist/src/serialization/beast2/v5/type-section.d.ts +81 -0
  71. package/dist/src/serialization/beast2/v5/type-section.d.ts.map +1 -0
  72. package/dist/src/serialization/beast2/v5/type-section.js +211 -0
  73. package/dist/src/serialization/beast2/v5/type-section.js.map +1 -0
  74. package/dist/src/serialization/beast2/version.d.ts +40 -0
  75. package/dist/src/serialization/beast2/version.d.ts.map +1 -0
  76. package/dist/src/serialization/beast2/version.js +23 -0
  77. package/dist/src/serialization/beast2/version.js.map +1 -0
  78. package/dist/src/serialization/index.d.ts +1 -1
  79. package/dist/src/serialization/index.d.ts.map +1 -1
  80. package/dist/src/serialization/index.js +1 -1
  81. package/dist/src/serialization/index.js.map +1 -1
  82. package/package.json +1 -1
  83. package/dist/src/serialization/beast2/sourcemap-table.d.ts.map +0 -1
  84. package/dist/src/serialization/beast2/sourcemap-table.js.map +0 -1
  85. package/dist/src/serialization/beast2/string-table.d.ts.map +0 -1
  86. package/dist/src/serialization/beast2/string-table.js.map +0 -1
  87. package/dist/src/serialization/beast2/type-table.d.ts.map +0 -1
  88. package/dist/src/serialization/beast2/type-table.js.map +0 -1
  89. package/dist/src/serialization/beast2/value-table.d.ts.map +0 -1
  90. package/dist/src/serialization/beast2/value-table.js.map +0 -1
@@ -0,0 +1,213 @@
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
+ * Beast2 v5 codec — the single-pass, segment-terminated record stream.
7
+ *
8
+ * Blob layout:
9
+ *
10
+ * magic[8] 0x89 "East" 0x0D 0x0A 0x05
11
+ * type_section well-known id + hash, or structural (v4 table)
12
+ * source_map_section varint(len) + stacks with inline filenames
13
+ * value stream frames carrying the logical value encoding
14
+ * [index_section] optional — segment offsets/counts (see stream.ts)
15
+ * [footer] u64-LE index offset + footer magic
16
+ *
17
+ * Logical value encoding (type-directed, positional):
18
+ * - immutable scalars encode as in v4, except strings are inline
19
+ * (`varint(len) + utf8`) — there is no string table.
20
+ * - mutable containers (Array/Set/Dict/Ref) carry a tag byte: `0x00 NEW`
21
+ * defines the container (registered in definition-start preorder) and is
22
+ * followed by its content; `0x01 REF` + `varint(delta)` aliases the
23
+ * container defined `delta` definitions ago. Relative deltas make decode
24
+ * independent of segment scoping — a self-contained segment resolves the
25
+ * same deltas with a fresh table that a sequential reader resolves with a
26
+ * global one.
27
+ * - Array/Set/Dict content is segment-terminated:
28
+ * `repeat[varint(n>0) + n elements] varint(0)` — no up-front totals.
29
+ * - Function values emit a source-map delta (`varint(n_new)` + stacks not yet
30
+ * written to this stream), then their IR, then `varint(capture_count)` +
31
+ * captures. Location ids inside IR stay plain integer data, so round-trips
32
+ * preserve them exactly.
33
+ *
34
+ * See v5/SPEC.md for the full wire specification.
35
+ */
36
+ import { type EastTypeValue } from "../../../type_of_type.js";
37
+ import type { EastType } from "../../../types.js";
38
+ import { BufferWriter, BufferReader } from "../../binary-utils.js";
39
+ import { SourceMap } from "../../../location.js";
40
+ import { type Beast2DecodeOptions, type PlatformDecodeContext } from "../shared.js";
41
+ import { type Beast2Codec } from "./frames.js";
42
+ /** The v5 container magic: the beast2 magic with version byte 0x05. */
43
+ export declare const MAGIC_BYTES_V5: Uint8Array<ArrayBuffer>;
44
+ /** Container tag: defines a new mutable container at this position. */
45
+ export declare const TAG_NEW = 0;
46
+ /** Container tag: aliases a previously defined container by relative delta. */
47
+ export declare const TAG_REF = 1;
48
+ /** Mutable state threaded through a v5 encode pass. */
49
+ export interface V5EncodeContext {
50
+ /** Identity map: container object → definition index. Cleared per root
51
+ * segment by self-contained writers. */
52
+ containerIndex: Map<any, number>;
53
+ /** Count of container definitions so far (the definition counter). */
54
+ containerCount: number;
55
+ /** Definition count at the start of the current root segment — REFs
56
+ * reaching below this mark are cross-segment aliases. */
57
+ segmentBaseDef: number;
58
+ /** Whether any REF crossed a root-segment boundary. */
59
+ crossSegmentRef: boolean;
60
+ /** The stream's source map (header map, or adopted from the first function
61
+ * value that carries one). */
62
+ sourceMap: SourceMap | null;
63
+ /** Number of source-map stacks already written (header + inline deltas),
64
+ * including the index-0 empty sentinel. */
65
+ sourceMapEmitted: number;
66
+ /** Self-contained mode: inline source-map growth is forbidden (stacks
67
+ * emitted mid-stream would be unreachable from later segments). */
68
+ selfContained: boolean;
69
+ }
70
+ /** Creates a fresh v5 encode context.
71
+ *
72
+ * @param sourceMap - the pre-resolved header source map, if any
73
+ * @param selfContained - whether the writer scopes aliasing per segment
74
+ * @returns the initialized context
75
+ */
76
+ export declare function createV5EncodeContext(sourceMap: SourceMap | null, selfContained: boolean): V5EncodeContext;
77
+ /** Mutable state threaded through a v5 decode pass. */
78
+ export interface V5DecodeContext extends PlatformDecodeContext {
79
+ /** Every decoded container in definition order — REF deltas resolve from
80
+ * the tail of this list. */
81
+ containers: any[];
82
+ /** The stream's source map, accumulated from the header section and inline
83
+ * deltas. Attached to every decoded function. */
84
+ sourceMap: SourceMap;
85
+ }
86
+ /**
87
+ * Writes the v5 source_map_section: `varint(payload_len)` + `varint(count)` +
88
+ * stacks with inline filenames. Entry 0 (the empty sentinel) is implicit.
89
+ *
90
+ * @param sourceMap - the header source map, or `null` for an empty section
91
+ * @param writer - the wire-level writer
92
+ */
93
+ export declare function writeSourceMapSectionV5(sourceMap: SourceMap | null, writer: BufferWriter): void;
94
+ /**
95
+ * Reads the v5 source_map_section into a fresh {@link SourceMap}.
96
+ *
97
+ * @param reader - the wire-level reader positioned at the section start
98
+ * @returns the decoded source map (stack ids match encode-side ids)
99
+ */
100
+ export declare function readSourceMapSectionV5(reader: BufferReader): SourceMap;
101
+ type V5Encoder = (value: any, writer: BufferWriter, ctx: V5EncodeContext) => void;
102
+ type V5Decoder = (reader: BufferReader, ctx: V5DecodeContext) => any;
103
+ /**
104
+ * Builds a v5 value encoder closure tree for the given type.
105
+ *
106
+ * @param type - the type to encode
107
+ * @param typeCtx - recursive-type resolution context shared across the tree
108
+ * @returns the encoder closure
109
+ */
110
+ export declare function buildV5Encoder(type: EastTypeValue, typeCtx?: Map<bigint, V5Encoder>): V5Encoder;
111
+ /**
112
+ * Builds a v5 value decoder closure tree for the given type.
113
+ *
114
+ * @param type - the type to decode
115
+ * @param typeCtx - recursive-type resolution context shared across the tree
116
+ * @returns the decoder closure
117
+ */
118
+ export declare function buildV5Decoder(type: EastTypeValue, typeCtx?: Map<bigint, V5Decoder>): V5Decoder;
119
+ /** Options accepted by the v5 whole-value encoder. */
120
+ export type Beast2V5EncodeOptions = {
121
+ /** Explicit source map to embed in the header section. */
122
+ sourceMap?: SourceMap | null;
123
+ /** Per-frame codec. Defaults to `"deflate"`. */
124
+ codec?: Beast2Codec;
125
+ /** Write the trailing index + footer (container roots only). Defaults to
126
+ * `false` for whole-value encodes. */
127
+ index?: boolean;
128
+ };
129
+ /** Whether a root type takes the segmented container framing. */
130
+ export declare function isSegmentedRoot(type: EastTypeValue): boolean;
131
+ /**
132
+ * Builds a v5 whole-value encoder closure for the given type.
133
+ *
134
+ * @param type - the root East type (as `EastType` or `EastTypeValue`)
135
+ * @param options - encode options (source map, codec, index)
136
+ * @returns a reusable function encoding values of `type` to v5 beast2 bytes
137
+ */
138
+ export declare function encodeBeast2V5For(type: EastTypeValue | EastType, options?: Beast2V5EncodeOptions): (value: any) => Uint8Array;
139
+ /** The v5 footer magic: the beast2 magic family with terminal byte 0xF5. */
140
+ export declare const FOOTER_MAGIC_V5: Uint8Array<ArrayBuffer>;
141
+ /** Index flag bit: segments are independently decodable (no cross-segment
142
+ * aliasing), so paging readers may seek. */
143
+ export declare const INDEX_FLAG_SELF_CONTAINED = 1;
144
+ /**
145
+ * Writes the index_section and footer.
146
+ *
147
+ * @param writer - the wire-level writer (its current size is the index offset)
148
+ * @param segments - per-segment absolute frame offsets and element counts
149
+ * @param selfContained - whether segments are independently decodable
150
+ */
151
+ export declare function writeIndexAndFooter(writer: BufferWriter, segments: {
152
+ offset: number;
153
+ count: number;
154
+ }[], selfContained: boolean): void;
155
+ /** A parsed v5 index. */
156
+ export interface Beast2Index {
157
+ selfContained: boolean;
158
+ /** Absolute wire offset of each segment's frame. */
159
+ offsets: number[];
160
+ /** Element count of each segment (pairs for Dict roots). */
161
+ counts: number[];
162
+ /** Sum of all segment counts. */
163
+ totalCount: number;
164
+ }
165
+ /**
166
+ * Reads the index_section + footer from the tail of a blob.
167
+ *
168
+ * @param data - the whole blob
169
+ * @returns the parsed index, or `null` when the blob carries no footer
170
+ * @throws {Error} When a footer is present but the index is malformed.
171
+ */
172
+ export declare function readIndex(data: Uint8Array): Beast2Index | null;
173
+ /**
174
+ * Builds a v5 decoder closure for the given type.
175
+ *
176
+ * @param type - the expected root East type (as `EastType` or `EastTypeValue`)
177
+ * @param options - decode options (platform functions for decoded functions)
178
+ * @returns a reusable function decoding v5 beast2 bytes to values of `type`
179
+ */
180
+ export declare function decodeBeast2V5For(type: EastTypeValue | EastType, options?: Beast2DecodeOptions): (data: Uint8Array) => any;
181
+ /**
182
+ * Builds an async v5 decoder closure — pre-inflates deflate frames with the
183
+ * platform's async decompressor, so it works in browsers without zlib.
184
+ *
185
+ * @param type - the expected root East type (as `EastType` or `EastTypeValue`)
186
+ * @param options - decode options (platform functions for decoded functions)
187
+ * @returns a reusable async function decoding v5 beast2 bytes
188
+ */
189
+ export declare function decodeBeast2V5ForAsync(type: EastTypeValue | EastType, options?: Beast2DecodeOptions): (data: Uint8Array) => Promise<any>;
190
+ /**
191
+ * Decodes a self-describing v5 blob using its embedded root type.
192
+ *
193
+ * @param data - a v5 beast2 blob
194
+ * @param options - decode options (platform functions for decoded functions)
195
+ * @returns the blob's root type and decoded value
196
+ */
197
+ export declare function decodeBeast2V5(data: Uint8Array, options?: Beast2DecodeOptions): {
198
+ type: EastTypeValue;
199
+ value: any;
200
+ };
201
+ /**
202
+ * Decodes a v5 IRType blob and returns both the IR value and the decoded
203
+ * source map. Backs the version-agnostic `decodeEastIR` / `decodeAsyncEastIR`.
204
+ *
205
+ * @param data - a v5 beast2 blob whose root is a Function/AsyncFunction IR
206
+ * @returns the decoded IR value and the blob's source map
207
+ */
208
+ export declare function decodeIRWithSourceMapV5(data: Uint8Array): {
209
+ ir: any;
210
+ sourceMap: SourceMap | null;
211
+ };
212
+ export {};
213
+ //# sourceMappingURL=codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/beast2/v5/codec.ts"],"names":[],"mappings":"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"}