@exornea/zeno-runtime 1.7.0 → 2.3.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.
Files changed (61) hide show
  1. package/dist/abi.d.ts +2 -2
  2. package/dist/abi.d.ts.map +1 -1
  3. package/dist/abi.js +2 -2
  4. package/dist/abi.js.map +1 -1
  5. package/dist/byte-vectors.d.ts +7 -4
  6. package/dist/byte-vectors.d.ts.map +1 -1
  7. package/dist/byte-vectors.js +13 -6
  8. package/dist/byte-vectors.js.map +1 -1
  9. package/dist/fixed-arrays.d.ts +3 -2
  10. package/dist/fixed-arrays.d.ts.map +1 -1
  11. package/dist/fixed-arrays.js +5 -2
  12. package/dist/fixed-arrays.js.map +1 -1
  13. package/dist/fixed.d.ts +3 -0
  14. package/dist/fixed.d.ts.map +1 -1
  15. package/dist/fixed.js +35 -0
  16. package/dist/fixed.js.map +1 -1
  17. package/dist/index.d.ts +5 -4
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +4 -3
  20. package/dist/index.js.map +1 -1
  21. package/dist/scalar-vector.d.ts +2 -0
  22. package/dist/scalar-vector.d.ts.map +1 -1
  23. package/dist/scalar-vector.js +44 -3
  24. package/dist/scalar-vector.js.map +1 -1
  25. package/dist/vector-base.d.ts +20 -0
  26. package/dist/vector-base.d.ts.map +1 -1
  27. package/dist/vector-base.js +60 -4
  28. package/dist/vector-base.js.map +1 -1
  29. package/dist/view-base.d.ts +2 -0
  30. package/dist/view-base.d.ts.map +1 -1
  31. package/dist/view-base.js +9 -0
  32. package/dist/view-base.js.map +1 -1
  33. package/dist/writer-arena.d.ts +58 -0
  34. package/dist/writer-arena.d.ts.map +1 -1
  35. package/dist/writer-arena.js +160 -10
  36. package/dist/writer-arena.js.map +1 -1
  37. package/dist/writer-byte-vectors.d.ts +6 -0
  38. package/dist/writer-byte-vectors.d.ts.map +1 -1
  39. package/dist/writer-byte-vectors.js +38 -16
  40. package/dist/writer-byte-vectors.js.map +1 -1
  41. package/dist/writer-pointer-vectors.d.ts +1 -0
  42. package/dist/writer-pointer-vectors.d.ts.map +1 -1
  43. package/dist/writer-pointer-vectors.js +7 -4
  44. package/dist/writer-pointer-vectors.js.map +1 -1
  45. package/dist/writer-scalar-vectors.d.ts +1 -0
  46. package/dist/writer-scalar-vectors.d.ts.map +1 -1
  47. package/dist/writer-scalar-vectors.js +7 -3
  48. package/dist/writer-scalar-vectors.js.map +1 -1
  49. package/dist/writer-spans.d.ts +3 -0
  50. package/dist/writer-spans.d.ts.map +1 -1
  51. package/dist/writer-spans.js +15 -6
  52. package/dist/writer-spans.js.map +1 -1
  53. package/dist/writer-struct-vectors.d.ts +3 -0
  54. package/dist/writer-struct-vectors.d.ts.map +1 -1
  55. package/dist/writer-struct-vectors.js +27 -3
  56. package/dist/writer-struct-vectors.js.map +1 -1
  57. package/dist/writer.d.ts +53 -0
  58. package/dist/writer.d.ts.map +1 -1
  59. package/dist/writer.js +161 -0
  60. package/dist/writer.js.map +1 -1
  61. package/package.json +2 -2
package/dist/view-base.js CHANGED
@@ -24,12 +24,21 @@ export class ProjectionView {
24
24
  const baseOffset = index * byteLength;
25
25
  return this.moveToOffset(baseOffset, byteLength);
26
26
  }
27
+ moveToIndexUnchecked(index, byteLength) {
28
+ const baseOffset = index * byteLength;
29
+ this.baseOffset = baseOffset;
30
+ return this;
31
+ }
27
32
  moveToOffset(baseOffset, byteLength) {
28
33
  assertDataViewRange(this.view, baseOffset, 0);
29
34
  assertDataViewRange(this.view, baseOffset, byteLength);
30
35
  this.baseOffset = baseOffset;
31
36
  return this;
32
37
  }
38
+ moveToOffsetUnchecked(baseOffset, _byteLength) {
39
+ this.baseOffset = baseOffset;
40
+ return this;
41
+ }
33
42
  absoluteOffset(localOffset = 0) {
34
43
  return this.baseOffset + localOffset;
35
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"view-base.js","sourceRoot":"","sources":["../src/view-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,OAAgB,cAAc;IAEb;IACT;IACS;IAHrB,YACqB,IAAc,EACvB,aAAa,CAAC,EACL,eAAe,IAAI;QAFnB,SAAI,GAAJ,IAAI,CAAU;QACvB,eAAU,GAAV,UAAU,CAAI;QACL,iBAAY,GAAZ,YAAY,CAAO;IACrC,CAAC;IAEJ,MAAM,CAAC,UAAkB;QACvB,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe,CAAC,UAAkB;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAES,WAAW,CAAC,KAAa,EAAE,UAAkB;QACrD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,UAAU,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,CAAC;QACtC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC;IAED,YAAY,CAAC,UAAkB,EAAE,UAAkB;QACjD,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QAC9C,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAES,cAAc,CAAC,WAAW,GAAG,CAAC;QACtC,OAAO,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;IACvC,CAAC;IAES,aAAa,CAAC,WAAW,GAAG,CAAC;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IACjE,CAAC;IAES,aAAa;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;IAES,WAAW,CAAC,WAAmB,EAAE,UAAkB;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC/C,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IACpD,CAAC;CACF"}
1
+ {"version":3,"file":"view-base.js","sourceRoot":"","sources":["../src/view-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,OAAgB,cAAc;IAEb;IACT;IACS;IAHrB,YACqB,IAAc,EACvB,aAAa,CAAC,EACL,eAAe,IAAI;QAFnB,SAAI,GAAJ,IAAI,CAAU;QACvB,eAAU,GAAV,UAAU,CAAI;QACL,iBAAY,GAAZ,YAAY,CAAO;IACrC,CAAC;IAEJ,MAAM,CAAC,UAAkB;QACvB,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe,CAAC,UAAkB;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAES,WAAW,CAAC,KAAa,EAAE,UAAkB;QACrD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,UAAU,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,CAAC;QACtC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC;IAES,oBAAoB,CAAC,KAAa,EAAE,UAAkB;QAC9D,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,UAAkB,EAAE,UAAkB;QACjD,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QAC9C,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qBAAqB,CAAC,UAAkB,EAAE,WAAmB;QAC3D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAES,cAAc,CAAC,WAAW,GAAG,CAAC;QACtC,OAAO,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;IACvC,CAAC;IAES,aAAa,CAAC,WAAW,GAAG,CAAC;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IACjE,CAAC;IAES,aAAa;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;IAES,WAAW,CAAC,WAAmB,EAAE,UAAkB;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC/C,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IACpD,CAAC;CACF"}
@@ -1,5 +1,57 @@
1
1
  import { type Span32Descriptor } from "./descriptor32.js";
2
2
  import { type TextEncoding } from "./fixed.js";
3
+ export interface SharedArenaViewOptions {
4
+ readonly byteOffset?: number;
5
+ readonly byteLength?: number;
6
+ }
7
+ export interface SharedArenaOptions extends SharedArenaViewOptions {
8
+ readonly cursorByteOffset: number;
9
+ }
10
+ export interface SharedArenaShardOptions {
11
+ readonly shardCount: number;
12
+ readonly shardIndex: number;
13
+ readonly payloadByteOffset: number;
14
+ readonly payloadByteLength: number;
15
+ readonly cursorTableByteOffset: number;
16
+ }
17
+ /**
18
+ * Create a `DataView` over a caller-owned `SharedArrayBuffer`.
19
+ *
20
+ * This helper does not add synchronization by itself. It only creates the view
21
+ * used by `SharedDynamicLayoutWriter`; atomic coordination lives in the cursor
22
+ * and descriptor state cells below.
23
+ */
24
+ export declare function sharedArenaView(buffer: SharedArrayBuffer, options?: SharedArenaViewOptions): DataView;
25
+ export declare function sharedInt32Cell(buffer: SharedArrayBuffer, byteOffset: number, label?: string): Int32Array;
26
+ export declare function sharedArenaCursorCell(buffer: SharedArrayBuffer, cursorByteOffset: number): Int32Array;
27
+ /**
28
+ * Compute the single-writer shard owned by one worker.
29
+ *
30
+ * This is the preferred high-contention shape: give each worker a different
31
+ * shard so most appends use a different cursor cell and payload range instead
32
+ * of spinning on one shared CAS loop.
33
+ */
34
+ export declare function sharedArenaShard(buffer: SharedArrayBuffer, options: SharedArenaShardOptions): SharedArenaOptions;
35
+ export declare function initializeSharedArenaShard(buffer: SharedArrayBuffer, options: SharedArenaShardOptions, tailOffset?: number): SharedArenaOptions;
36
+ /**
37
+ * A one-slot atomic publication cell for a dynamic descriptor.
38
+ *
39
+ * Writers publish the cell only after payload bytes and the `span32`/`vector32`
40
+ * descriptor fields have been written. Readers must observe this cell with
41
+ * `Atomics.load` before reading the descriptor to avoid torn descriptor reads.
42
+ */
43
+ export declare function sharedDescriptorStateCell(buffer: SharedArrayBuffer, stateByteOffset: number): Int32Array;
44
+ /**
45
+ * Publish a descriptor with an atomic ready flag.
46
+ *
47
+ * JavaScript Atomics are sequentially consistent, so writes sequenced before
48
+ * this store in the writer happen-before a reader that observes the value with
49
+ * `isSharedDescriptorPublished(...)`. The ready cell is a host-native control
50
+ * word and is not part of the portable Zeno binary ABI.
51
+ */
52
+ export declare function publishSharedDescriptor(state: Int32Array, readyValue?: number): void;
53
+ export declare function resetSharedDescriptor(state: Int32Array): void;
54
+ export declare function isSharedDescriptorPublished(state: Int32Array, readyValue?: number): boolean;
3
55
  export declare class DynamicLayoutArena {
4
56
  protected readonly view: DataView;
5
57
  protected readonly baseOffset: number;
@@ -10,7 +62,13 @@ export declare class DynamicLayoutArena {
10
62
  align(alignment: number): this;
11
63
  reserve(byteLength: number, alignment?: number): number;
12
64
  appendBytes(bytes: ArrayLike<number> | Uint8Array, alignment?: number): Span32Descriptor;
65
+ appendBytesAtBase(descriptorBaseOffset: number, bytes: ArrayLike<number> | Uint8Array, alignment?: number): Span32Descriptor;
13
66
  appendUtf8(text: string, encoder?: TextEncoder): Span32Descriptor;
67
+ appendUtf8AtBase(descriptorBaseOffset: number, text: string, encoder?: TextEncoder): Span32Descriptor;
14
68
  appendText(text: string, encoding?: TextEncoding): Span32Descriptor;
69
+ appendTextAtBase(descriptorBaseOffset: number, text: string, encoding?: TextEncoding): Span32Descriptor;
70
+ protected readCursor(): number;
71
+ protected writeCursor(value: number): void;
72
+ protected relativeOffsetFromBase(descriptorBaseOffset: number, absoluteOffset: number, label: string): number;
15
73
  }
16
74
  //# sourceMappingURL=writer-arena.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"writer-arena.d.ts","sourceRoot":"","sources":["../src/writer-arena.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAA4B,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAGzE,qBAAa,kBAAkB;IAI3B,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAEjC,SAAS,CAAC,QAAQ,CAAC,UAAU;IAC7B,SAAS,CAAC,QAAQ,CAAC,YAAY;IANjC,OAAO,CAAC,MAAM,CAAS;gBAGF,IAAI,EAAE,QAAQ,EACjC,UAAU,EAAE,MAAM,EACC,UAAU,SAAI,EACd,YAAY,UAAO;IAOxC,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAO9B,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,SAAI,GAAG,MAAM;IAQlD,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,EAAE,SAAS,SAAI,GAAG,gBAAgB;IAWnF,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,cAAe,GAAG,gBAAgB;IAIlE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,YAAqB,GAAG,gBAAgB;CAG5E"}
1
+ {"version":3,"file":"writer-arena.d.ts","sourceRoot":"","sources":["../src/writer-arena.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,95 @@
1
1
  import {} from "./descriptor32.js";
2
2
  import { UTF8_ENCODER, encodeText } from "./fixed.js";
3
- import { alignOffset, assertDataViewRange } from "./range.js";
3
+ import { alignOffset, assertDataViewRange, assertUint32 } from "./range.js";
4
+ /**
5
+ * Create a `DataView` over a caller-owned `SharedArrayBuffer`.
6
+ *
7
+ * This helper does not add synchronization by itself. It only creates the view
8
+ * used by `SharedDynamicLayoutWriter`; atomic coordination lives in the cursor
9
+ * and descriptor state cells below.
10
+ */
11
+ export function sharedArenaView(buffer, options = {}) {
12
+ const byteOffset = options.byteOffset ?? 0;
13
+ if (options.byteLength === undefined) {
14
+ return new DataView(buffer, byteOffset);
15
+ }
16
+ return new DataView(buffer, byteOffset, options.byteLength);
17
+ }
18
+ export function sharedInt32Cell(buffer, byteOffset, label = "shared i32 cell") {
19
+ if (!Number.isInteger(byteOffset) || byteOffset < 0) {
20
+ throw new RangeError(`Invalid ${label} byte offset: ${byteOffset}`);
21
+ }
22
+ if (byteOffset % Int32Array.BYTES_PER_ELEMENT !== 0) {
23
+ throw new RangeError(`${label} byte offset must be ${Int32Array.BYTES_PER_ELEMENT}-byte aligned: ${byteOffset}`);
24
+ }
25
+ if (byteOffset + Int32Array.BYTES_PER_ELEMENT > buffer.byteLength) {
26
+ throw new RangeError(`${label} byte offset ${byteOffset} exceeds SharedArrayBuffer length ${buffer.byteLength}`);
27
+ }
28
+ return new Int32Array(buffer, byteOffset, 1);
29
+ }
30
+ export function sharedArenaCursorCell(buffer, cursorByteOffset) {
31
+ return sharedInt32Cell(buffer, cursorByteOffset, "shared arena cursor");
32
+ }
33
+ /**
34
+ * Compute the single-writer shard owned by one worker.
35
+ *
36
+ * This is the preferred high-contention shape: give each worker a different
37
+ * shard so most appends use a different cursor cell and payload range instead
38
+ * of spinning on one shared CAS loop.
39
+ */
40
+ export function sharedArenaShard(buffer, options) {
41
+ assertShardOptions(buffer, options);
42
+ const shardBaseLength = Math.floor(options.payloadByteLength / options.shardCount);
43
+ const byteOffset = options.payloadByteOffset + options.shardIndex * shardBaseLength;
44
+ const byteEnd = options.shardIndex === options.shardCount - 1
45
+ ? options.payloadByteOffset + options.payloadByteLength
46
+ : byteOffset + shardBaseLength;
47
+ const byteLength = byteEnd - byteOffset;
48
+ const cursorByteOffset = options.cursorTableByteOffset + options.shardIndex * Int32Array.BYTES_PER_ELEMENT;
49
+ sharedArenaView(buffer, { byteOffset, byteLength });
50
+ sharedArenaCursorCell(buffer, cursorByteOffset);
51
+ return { byteOffset, byteLength, cursorByteOffset };
52
+ }
53
+ export function initializeSharedArenaShard(buffer, options, tailOffset = 0) {
54
+ const shard = sharedArenaShard(buffer, options);
55
+ if (!Number.isInteger(tailOffset) || tailOffset < 0 || tailOffset > shard.byteLength) {
56
+ throw new RangeError(`Invalid shard tail offset: ${tailOffset}`);
57
+ }
58
+ Atomics.store(sharedArenaCursorCell(buffer, shard.cursorByteOffset), 0, tailOffset);
59
+ return shard;
60
+ }
61
+ /**
62
+ * A one-slot atomic publication cell for a dynamic descriptor.
63
+ *
64
+ * Writers publish the cell only after payload bytes and the `span32`/`vector32`
65
+ * descriptor fields have been written. Readers must observe this cell with
66
+ * `Atomics.load` before reading the descriptor to avoid torn descriptor reads.
67
+ */
68
+ export function sharedDescriptorStateCell(buffer, stateByteOffset) {
69
+ return sharedInt32Cell(buffer, stateByteOffset, "shared descriptor state");
70
+ }
71
+ /**
72
+ * Publish a descriptor with an atomic ready flag.
73
+ *
74
+ * JavaScript Atomics are sequentially consistent, so writes sequenced before
75
+ * this store in the writer happen-before a reader that observes the value with
76
+ * `isSharedDescriptorPublished(...)`. The ready cell is a host-native control
77
+ * word and is not part of the portable Zeno binary ABI.
78
+ */
79
+ export function publishSharedDescriptor(state, readyValue = 1) {
80
+ assertSharedStateCell(state);
81
+ assertSharedStateValue(readyValue);
82
+ Atomics.store(state, 0, readyValue);
83
+ }
84
+ export function resetSharedDescriptor(state) {
85
+ assertSharedStateCell(state);
86
+ Atomics.store(state, 0, 0);
87
+ }
88
+ export function isSharedDescriptorPublished(state, readyValue = 1) {
89
+ assertSharedStateCell(state);
90
+ assertSharedStateValue(readyValue);
91
+ return Atomics.load(state, 0) === readyValue;
92
+ }
4
93
  export class DynamicLayoutArena {
5
94
  view;
6
95
  baseOffset;
@@ -15,32 +104,93 @@ export class DynamicLayoutArena {
15
104
  this.cursor = tailOffset;
16
105
  }
17
106
  get tailOffset() {
18
- return this.cursor;
107
+ return this.readCursor();
19
108
  }
20
109
  align(alignment) {
21
- const next = alignOffset(this.cursor, alignment);
110
+ const next = alignOffset(this.readCursor(), alignment);
22
111
  assertDataViewRange(this.view, this.baseOffset + next, 0);
23
- this.cursor = next;
112
+ this.writeCursor(next);
24
113
  return this;
25
114
  }
26
115
  reserve(byteLength, alignment = 1) {
27
116
  this.align(alignment);
28
- const offset = this.cursor;
117
+ const offset = this.readCursor();
29
118
  assertDataViewRange(this.view, this.baseOffset + offset, byteLength);
30
- this.cursor += byteLength;
119
+ this.writeCursor(offset + byteLength);
31
120
  return offset;
32
121
  }
33
122
  appendBytes(bytes, alignment = 1) {
123
+ return this.appendBytesAtBase(this.baseOffset, bytes, alignment);
124
+ }
125
+ appendBytesAtBase(descriptorBaseOffset, bytes, alignment = 1) {
34
126
  const byteLength = bytes.length;
35
- const relOffset = this.reserve(byteLength, alignment);
36
- new Uint8Array(this.view.buffer, this.view.byteOffset + this.baseOffset + relOffset, byteLength).set(bytes);
127
+ const payloadOffset = this.reserve(byteLength, alignment);
128
+ const payloadAbsoluteOffset = this.baseOffset + payloadOffset;
129
+ const relOffset = this.relativeOffsetFromBase(descriptorBaseOffset, payloadAbsoluteOffset, "Span32.relOffset");
130
+ new Uint8Array(this.view.buffer, this.view.byteOffset + payloadAbsoluteOffset, byteLength).set(bytes);
37
131
  return { relOffset, byteLength };
38
132
  }
39
133
  appendUtf8(text, encoder = UTF8_ENCODER) {
40
- return this.appendBytes(encoder.encode(text));
134
+ return this.appendUtf8AtBase(this.baseOffset, text, encoder);
135
+ }
136
+ appendUtf8AtBase(descriptorBaseOffset, text, encoder = UTF8_ENCODER) {
137
+ return this.appendBytesAtBase(descriptorBaseOffset, encoder.encode(text));
41
138
  }
42
139
  appendText(text, encoding = "utf8") {
43
- return this.appendBytes(encodeText(text, encoding));
140
+ return this.appendTextAtBase(this.baseOffset, text, encoding);
141
+ }
142
+ appendTextAtBase(descriptorBaseOffset, text, encoding = "utf8") {
143
+ return this.appendBytesAtBase(descriptorBaseOffset, encodeText(text, encoding));
144
+ }
145
+ readCursor() {
146
+ return this.cursor;
147
+ }
148
+ writeCursor(value) {
149
+ this.cursor = value;
150
+ }
151
+ relativeOffsetFromBase(descriptorBaseOffset, absoluteOffset, label) {
152
+ assertDataViewRange(this.view, descriptorBaseOffset, 0);
153
+ assertDataViewRange(this.view, absoluteOffset, 0);
154
+ const relOffset = absoluteOffset - descriptorBaseOffset;
155
+ assertUint32(relOffset, label);
156
+ return relOffset;
157
+ }
158
+ }
159
+ function assertSharedStateCell(state) {
160
+ if (state.length < 1) {
161
+ throw new RangeError("Shared descriptor state cell must contain at least one i32 slot.");
162
+ }
163
+ }
164
+ function assertSharedStateValue(value) {
165
+ if (!Number.isInteger(value) || value <= 0 || value > 0x7fffffff) {
166
+ throw new RangeError(`Shared descriptor ready value must be a positive i32: ${value}`);
167
+ }
168
+ }
169
+ function assertShardOptions(buffer, options) {
170
+ if (!Number.isInteger(options.shardCount) || options.shardCount <= 0) {
171
+ throw new RangeError(`Invalid shared arena shard count: ${options.shardCount}`);
172
+ }
173
+ if (!Number.isInteger(options.shardIndex) ||
174
+ options.shardIndex < 0 ||
175
+ options.shardIndex >= options.shardCount) {
176
+ throw new RangeError(`Invalid shared arena shard index: ${options.shardIndex}`);
177
+ }
178
+ if (!Number.isInteger(options.payloadByteOffset) || options.payloadByteOffset < 0) {
179
+ throw new RangeError(`Invalid shared arena payload byte offset: ${options.payloadByteOffset}`);
180
+ }
181
+ if (!Number.isInteger(options.payloadByteLength) || options.payloadByteLength <= 0) {
182
+ throw new RangeError(`Invalid shared arena payload byte length: ${options.payloadByteLength}`);
183
+ }
184
+ if (options.payloadByteLength < options.shardCount) {
185
+ throw new RangeError("Shared arena payload must provide at least one byte per shard.");
186
+ }
187
+ if (options.payloadByteOffset + options.payloadByteLength > buffer.byteLength) {
188
+ throw new RangeError(`Shared arena payload exceeds SharedArrayBuffer length ${buffer.byteLength}.`);
189
+ }
190
+ const cursorTableByteLength = options.shardCount * Int32Array.BYTES_PER_ELEMENT;
191
+ sharedInt32Cell(buffer, options.cursorTableByteOffset, "shared arena cursor table");
192
+ if (options.cursorTableByteOffset + cursorTableByteLength > buffer.byteLength) {
193
+ throw new RangeError(`Shared arena cursor table exceeds SharedArrayBuffer length ${buffer.byteLength}.`);
44
194
  }
45
195
  }
46
196
  //# sourceMappingURL=writer-arena.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"writer-arena.js","sourceRoot":"","sources":["../src/writer-arena.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAqB,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,OAAO,kBAAkB;IAIR;IAEA;IACA;IANb,MAAM,CAAS;IAEvB,YACqB,IAAc,EACjC,UAAkB,EACC,aAAa,CAAC,EACd,eAAe,IAAI;QAHnB,SAAI,GAAJ,IAAI,CAAU;QAEd,eAAU,GAAV,UAAU,CAAI;QACd,iBAAY,GAAZ,YAAY,CAAO;QAEtC,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QACzC,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,SAAiB;QACrB,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACjD,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,UAAkB,EAAE,SAAS,GAAG,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,KAAqC,EAAE,SAAS,GAAG,CAAC;QAC9D,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,UAAU,CACZ,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,SAAS,EAClD,UAAU,CACX,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACb,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;IACnC,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,OAAO,GAAG,YAAY;QAC7C,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,WAAyB,MAAM;QACtD,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtD,CAAC;CACF"}
1
+ {"version":3,"file":"writer-arena.js","sourceRoot":"","sources":["../src/writer-arena.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAqB,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAmB5E;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAyB,EACzB,UAAkC,EAAE;IAEpC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;IAC3C,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,MAAyB,EACzB,UAAkB,EAClB,KAAK,GAAG,iBAAiB;IAEzB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,UAAU,CAAC,WAAW,KAAK,iBAAiB,UAAU,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,UAAU,GAAG,UAAU,CAAC,iBAAiB,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,UAAU,CAClB,GAAG,KAAK,wBAAwB,UAAU,CAAC,iBAAiB,kBAAkB,UAAU,EAAE,CAC3F,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,GAAG,UAAU,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAClE,MAAM,IAAI,UAAU,CAClB,GAAG,KAAK,gBAAgB,UAAU,qCAAqC,MAAM,CAAC,UAAU,EAAE,CAC3F,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAyB,EACzB,gBAAwB;IAExB,OAAO,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAyB,EACzB,OAAgC;IAEhC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEpC,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACnF,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC,UAAU,GAAG,eAAe,CAAC;IACpF,MAAM,OAAO,GACX,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,GAAG,CAAC;QAC3C,CAAC,CAAC,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB;QACvD,CAAC,CAAC,UAAU,GAAG,eAAe,CAAC;IACnC,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;IACxC,MAAM,gBAAgB,GACpB,OAAO,CAAC,qBAAqB,GAAG,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,iBAAiB,CAAC;IAEpF,eAAe,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;IACpD,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAChD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAyB,EACzB,OAAgC,EAChC,UAAU,GAAG,CAAC;IAEd,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,KAAK,CAAC,UAAW,EAAE,CAAC;QACtF,MAAM,IAAI,UAAU,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IACpF,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAyB,EACzB,eAAuB;IAEvB,OAAO,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,yBAAyB,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAiB,EAAE,UAAU,GAAG,CAAC;IACvE,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC7B,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACnC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAiB;IACrD,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAiB,EAAE,UAAU,GAAG,CAAC;IAC3E,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC7B,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC;AAC/C,CAAC;AAED,MAAM,OAAO,kBAAkB;IAIR;IAEA;IACA;IANb,MAAM,CAAS;IAEvB,YACqB,IAAc,EACjC,UAAkB,EACC,aAAa,CAAC,EACd,eAAe,IAAI;QAHnB,SAAI,GAAJ,IAAI,CAAU;QAEd,eAAU,GAAV,UAAU,CAAI;QACd,iBAAY,GAAZ,YAAY,CAAO;QAEtC,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QACzC,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,SAAiB;QACrB,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC;QACvD,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,UAAkB,EAAE,SAAS,GAAG,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU,CAAC,CAAC;QACrE,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,KAAqC,EAAE,SAAS,GAAG,CAAC;QAC9D,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACnE,CAAC;IAED,iBAAiB,CACf,oBAA4B,EAC5B,KAAqC,EACrC,SAAS,GAAG,CAAC;QAEb,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC1D,MAAM,qBAAqB,GAAG,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAC3C,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,CACnB,CAAC;QACF,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,qBAAqB,EAAE,UAAU,CAAC,CAAC,GAAG,CAC5F,KAAK,CACN,CAAC;QACF,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;IACnC,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,OAAO,GAAG,YAAY;QAC7C,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,gBAAgB,CACd,oBAA4B,EAC5B,IAAY,EACZ,OAAO,GAAG,YAAY;QAEtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,WAAyB,MAAM;QACtD,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED,gBAAgB,CACd,oBAA4B,EAC5B,IAAY,EACZ,WAAyB,MAAM;QAE/B,OAAO,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClF,CAAC;IAES,UAAU;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAES,WAAW,CAAC,KAAa;QACjC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAES,sBAAsB,CAC9B,oBAA4B,EAC5B,cAAsB,EACtB,KAAa;QAEb,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC;QACxD,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;QAElD,MAAM,SAAS,GAAG,cAAc,GAAG,oBAAoB,CAAC;QACxD,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAED,SAAS,qBAAqB,CAAC,KAAiB;IAC9C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,UAAU,CAAC,kEAAkE,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC3C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,UAAU,EAAE,CAAC;QACjE,MAAM,IAAI,UAAU,CAAC,yDAAyD,KAAK,EAAE,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAyB,EAAE,OAAgC;IACrF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,UAAU,CAAC,qCAAqC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC;QACrC,OAAO,CAAC,UAAU,GAAG,CAAC;QACtB,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,EACxC,CAAC;QACD,MAAM,IAAI,UAAU,CAAC,qCAAqC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC;QAClF,MAAM,IAAI,UAAU,CAAC,6CAA6C,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,iBAAiB,IAAI,CAAC,EAAE,CAAC;QACnF,MAAM,IAAI,UAAU,CAAC,6CAA6C,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACnD,MAAM,IAAI,UAAU,CAAC,gEAAgE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAC9E,MAAM,IAAI,UAAU,CAClB,yDAAyD,MAAM,CAAC,UAAU,GAAG,CAC9E,CAAC;IACJ,CAAC;IAED,MAAM,qBAAqB,GAAG,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,iBAAiB,CAAC;IAChF,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,qBAAqB,EAAE,2BAA2B,CAAC,CAAC;IACpF,IAAI,OAAO,CAAC,qBAAqB,GAAG,qBAAqB,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAC9E,MAAM,IAAI,UAAU,CAClB,8DAA8D,MAAM,CAAC,UAAU,GAAG,CACnF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -3,10 +3,16 @@ import { type TextEncoding } from "./fixed.js";
3
3
  import { SpanLayoutWriter } from "./writer-spans.js";
4
4
  export declare class ByteVectorLayoutWriter extends SpanLayoutWriter {
5
5
  writeBytesVector(descriptorOffset: number, values: readonly (ArrayLike<number> | Uint8Array)[]): Vector32Descriptor;
6
+ writeBytesVectorAtBase(descriptorBaseOffset: number, descriptorOffset: number, values: readonly (ArrayLike<number> | Uint8Array)[]): Vector32Descriptor;
6
7
  writeUtf8Vector(descriptorOffset: number, values: readonly string[], encoder?: TextEncoder): Vector32Descriptor;
8
+ writeUtf8VectorAtBase(descriptorBaseOffset: number, descriptorOffset: number, values: readonly string[], encoder?: TextEncoder): Vector32Descriptor;
7
9
  writeTextVector(descriptorOffset: number, values: readonly string[], encoding?: TextEncoding): Vector32Descriptor;
10
+ writeTextVectorAtBase(descriptorBaseOffset: number, descriptorOffset: number, values: readonly string[], encoding?: TextEncoding): Vector32Descriptor;
8
11
  writeFixedBytesVector(descriptorOffset: number, values: readonly (ArrayLike<number> | Uint8Array)[], elementByteLength: number): Vector32Descriptor;
12
+ writeFixedBytesVectorAtBase(descriptorBaseOffset: number, descriptorOffset: number, values: readonly (ArrayLike<number> | Uint8Array)[], elementByteLength: number): Vector32Descriptor;
9
13
  writeFixedUtf8Vector(descriptorOffset: number, values: readonly string[], elementByteLength: number, encoder?: TextEncoder): Vector32Descriptor;
14
+ writeFixedUtf8VectorAtBase(descriptorBaseOffset: number, descriptorOffset: number, values: readonly string[], elementByteLength: number, encoder?: TextEncoder): Vector32Descriptor;
10
15
  writeFixedTextVector(descriptorOffset: number, values: readonly string[], elementByteLength: number, encoding?: TextEncoding): Vector32Descriptor;
16
+ writeFixedTextVectorAtBase(descriptorBaseOffset: number, descriptorOffset: number, values: readonly string[], elementByteLength: number, encoding?: TextEncoding): Vector32Descriptor;
11
17
  }
12
18
  //# sourceMappingURL=writer-byte-vectors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"writer-byte-vectors.d.ts","sourceRoot":"","sources":["../src/writer-byte-vectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAA6E,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1H,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,qBAAa,sBAAuB,SAAQ,gBAAgB;IAC1D,gBAAgB,CACd,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,EAAE,GAClD,kBAAkB;IA0BrB,eAAe,CACb,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,OAAO,cAAe,GACrB,kBAAkB;IAOrB,eAAe,CACb,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,QAAQ,GAAE,YAAqB,GAC9B,kBAAkB;IAOrB,qBAAqB,CACnB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,EAAE,EACnD,iBAAiB,EAAE,MAAM,GACxB,kBAAkB;IAyBrB,oBAAoB,CAClB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,iBAAiB,EAAE,MAAM,EACzB,OAAO,cAAe,GACrB,kBAAkB;IA0BrB,oBAAoB,CAClB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,iBAAiB,EAAE,MAAM,EACzB,QAAQ,GAAE,YAAqB,GAC9B,kBAAkB;CAyBtB"}
1
+ {"version":3,"file":"writer-byte-vectors.d.ts","sourceRoot":"","sources":["../src/writer-byte-vectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,qBAAa,sBAAuB,SAAQ,gBAAgB;IAC1D,gBAAgB,CACd,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,EAAE,GAClD,kBAAkB;IAIrB,sBAAsB,CACpB,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,EAAE,GAClD,kBAAkB;IA+BrB,eAAe,CACb,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,OAAO,cAAe,GACrB,kBAAkB;IAIrB,qBAAqB,CACnB,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,OAAO,cAAe,GACrB,kBAAkB;IAQrB,eAAe,CACb,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,QAAQ,GAAE,YAAqB,GAC9B,kBAAkB;IAIrB,qBAAqB,CACnB,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,QAAQ,GAAE,YAAqB,GAC9B,kBAAkB;IAQrB,qBAAqB,CACnB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,EAAE,EACnD,iBAAiB,EAAE,MAAM,GACxB,kBAAkB;IASrB,2BAA2B,CACzB,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,EAAE,EACnD,iBAAiB,EAAE,MAAM,GACxB,kBAAkB;IA8BrB,oBAAoB,CAClB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,iBAAiB,EAAE,MAAM,EACzB,OAAO,cAAe,GACrB,kBAAkB;IAUrB,0BAA0B,CACxB,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,iBAAiB,EAAE,MAAM,EACzB,OAAO,cAAe,GACrB,kBAAkB;IA+BrB,oBAAoB,CAClB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,iBAAiB,EAAE,MAAM,EACzB,QAAQ,GAAE,YAAqB,GAC9B,kBAAkB;IAUrB,0BAA0B,CACxB,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,iBAAiB,EAAE,MAAM,EACzB,QAAQ,GAAE,YAAqB,GAC9B,kBAAkB;CA8BtB"}
@@ -1,59 +1,81 @@
1
1
  import { SPAN32_BYTE_LENGTH, writeSpan32Descriptor, writeVector32Descriptor, } from "./descriptor32.js";
2
- import { UTF8_ENCODER, encodeText, writeFixedBytes, writeFixedText, writeFixedUtf8 } from "./fixed.js";
2
+ import { UTF8_ENCODER, encodeText, writeFixedBytes, writeFixedText, writeFixedUtf8, } from "./fixed.js";
3
3
  import { SpanLayoutWriter } from "./writer-spans.js";
4
4
  export class ByteVectorLayoutWriter extends SpanLayoutWriter {
5
5
  writeBytesVector(descriptorOffset, values) {
6
+ return this.writeBytesVectorAtBase(this.baseOffset, descriptorOffset, values);
7
+ }
8
+ writeBytesVectorAtBase(descriptorBaseOffset, descriptorOffset, values) {
6
9
  const tableOffset = this.reserve(values.length * SPAN32_BYTE_LENGTH, 4);
10
+ const tableAbsoluteOffset = this.baseOffset + tableOffset;
7
11
  const descriptor = {
8
- relOffset: tableOffset,
12
+ relOffset: this.relativeOffsetFromBase(descriptorBaseOffset, tableAbsoluteOffset, "Vector32.relOffset"),
9
13
  count: values.length,
10
14
  };
11
- writeVector32Descriptor(this.view, this.baseOffset + descriptorOffset, descriptor, this.littleEndian);
15
+ writeVector32Descriptor(this.view, descriptorBaseOffset + descriptorOffset, descriptor, this.littleEndian);
12
16
  values.forEach((value, index) => {
13
- const span = this.appendBytes(value);
14
- writeSpan32Descriptor(this.view, this.baseOffset + tableOffset + index * SPAN32_BYTE_LENGTH, span, this.littleEndian);
17
+ const span = this.appendBytesAtBase(descriptorBaseOffset, value);
18
+ writeSpan32Descriptor(this.view, tableAbsoluteOffset + index * SPAN32_BYTE_LENGTH, span, this.littleEndian);
15
19
  });
16
20
  return descriptor;
17
21
  }
18
22
  writeUtf8Vector(descriptorOffset, values, encoder = UTF8_ENCODER) {
19
- return this.writeBytesVector(descriptorOffset, values.map((value) => encoder.encode(value)));
23
+ return this.writeUtf8VectorAtBase(this.baseOffset, descriptorOffset, values, encoder);
24
+ }
25
+ writeUtf8VectorAtBase(descriptorBaseOffset, descriptorOffset, values, encoder = UTF8_ENCODER) {
26
+ return this.writeBytesVectorAtBase(descriptorBaseOffset, descriptorOffset, values.map((value) => encoder.encode(value)));
20
27
  }
21
28
  writeTextVector(descriptorOffset, values, encoding = "utf8") {
22
- return this.writeBytesVector(descriptorOffset, values.map((value) => encodeText(value, encoding)));
29
+ return this.writeTextVectorAtBase(this.baseOffset, descriptorOffset, values, encoding);
30
+ }
31
+ writeTextVectorAtBase(descriptorBaseOffset, descriptorOffset, values, encoding = "utf8") {
32
+ return this.writeBytesVectorAtBase(descriptorBaseOffset, descriptorOffset, values.map((value) => encodeText(value, encoding)));
23
33
  }
24
34
  writeFixedBytesVector(descriptorOffset, values, elementByteLength) {
35
+ return this.writeFixedBytesVectorAtBase(this.baseOffset, descriptorOffset, values, elementByteLength);
36
+ }
37
+ writeFixedBytesVectorAtBase(descriptorBaseOffset, descriptorOffset, values, elementByteLength) {
25
38
  const payloadOffset = this.reserve(values.length * elementByteLength, 1);
39
+ const payloadAbsoluteOffset = this.baseOffset + payloadOffset;
26
40
  const descriptor = {
27
- relOffset: payloadOffset,
41
+ relOffset: this.relativeOffsetFromBase(descriptorBaseOffset, payloadAbsoluteOffset, "Vector32.relOffset"),
28
42
  count: values.length,
29
43
  };
30
- writeVector32Descriptor(this.view, this.baseOffset + descriptorOffset, descriptor, this.littleEndian);
44
+ writeVector32Descriptor(this.view, descriptorBaseOffset + descriptorOffset, descriptor, this.littleEndian);
31
45
  values.forEach((value, index) => {
32
- writeFixedBytes(this.view.buffer, this.view.byteOffset + this.baseOffset + payloadOffset + index * elementByteLength, elementByteLength, value);
46
+ writeFixedBytes(this.view.buffer, this.view.byteOffset + payloadAbsoluteOffset + index * elementByteLength, elementByteLength, value);
33
47
  });
34
48
  return descriptor;
35
49
  }
36
50
  writeFixedUtf8Vector(descriptorOffset, values, elementByteLength, encoder = UTF8_ENCODER) {
51
+ return this.writeFixedUtf8VectorAtBase(this.baseOffset, descriptorOffset, values, elementByteLength, encoder);
52
+ }
53
+ writeFixedUtf8VectorAtBase(descriptorBaseOffset, descriptorOffset, values, elementByteLength, encoder = UTF8_ENCODER) {
37
54
  const payloadOffset = this.reserve(values.length * elementByteLength, 1);
55
+ const payloadAbsoluteOffset = this.baseOffset + payloadOffset;
38
56
  const descriptor = {
39
- relOffset: payloadOffset,
57
+ relOffset: this.relativeOffsetFromBase(descriptorBaseOffset, payloadAbsoluteOffset, "Vector32.relOffset"),
40
58
  count: values.length,
41
59
  };
42
- writeVector32Descriptor(this.view, this.baseOffset + descriptorOffset, descriptor, this.littleEndian);
60
+ writeVector32Descriptor(this.view, descriptorBaseOffset + descriptorOffset, descriptor, this.littleEndian);
43
61
  values.forEach((value, index) => {
44
- writeFixedUtf8(this.view.buffer, this.view.byteOffset + this.baseOffset + payloadOffset + index * elementByteLength, elementByteLength, value, encoder);
62
+ writeFixedUtf8(this.view.buffer, this.view.byteOffset + payloadAbsoluteOffset + index * elementByteLength, elementByteLength, value, encoder);
45
63
  });
46
64
  return descriptor;
47
65
  }
48
66
  writeFixedTextVector(descriptorOffset, values, elementByteLength, encoding = "utf8") {
67
+ return this.writeFixedTextVectorAtBase(this.baseOffset, descriptorOffset, values, elementByteLength, encoding);
68
+ }
69
+ writeFixedTextVectorAtBase(descriptorBaseOffset, descriptorOffset, values, elementByteLength, encoding = "utf8") {
49
70
  const payloadOffset = this.reserve(values.length * elementByteLength, 1);
71
+ const payloadAbsoluteOffset = this.baseOffset + payloadOffset;
50
72
  const descriptor = {
51
- relOffset: payloadOffset,
73
+ relOffset: this.relativeOffsetFromBase(descriptorBaseOffset, payloadAbsoluteOffset, "Vector32.relOffset"),
52
74
  count: values.length,
53
75
  };
54
- writeVector32Descriptor(this.view, this.baseOffset + descriptorOffset, descriptor, this.littleEndian);
76
+ writeVector32Descriptor(this.view, descriptorBaseOffset + descriptorOffset, descriptor, this.littleEndian);
55
77
  values.forEach((value, index) => {
56
- writeFixedText(this.view.buffer, this.view.byteOffset + this.baseOffset + payloadOffset + index * elementByteLength, elementByteLength, value, encoding);
78
+ writeFixedText(this.view.buffer, this.view.byteOffset + payloadAbsoluteOffset + index * elementByteLength, elementByteLength, value, encoding);
57
79
  });
58
80
  return descriptor;
59
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"writer-byte-vectors.js","sourceRoot":"","sources":["../src/writer-byte-vectors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writer-byte-vectors.js","sourceRoot":"","sources":["../src/writer-byte-vectors.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,GAExB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,UAAU,EACV,eAAe,EACf,cAAc,EACd,cAAc,GAEf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,OAAO,sBAAuB,SAAQ,gBAAgB;IAC1D,gBAAgB,CACd,gBAAwB,EACxB,MAAmD;QAEnD,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAChF,CAAC;IAED,sBAAsB,CACpB,oBAA4B,EAC5B,gBAAwB,EACxB,MAAmD;QAEnD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACxE,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;QAC1D,MAAM,UAAU,GAAG;YACjB,SAAS,EAAE,IAAI,CAAC,sBAAsB,CACpC,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,CACrB;YACD,KAAK,EAAE,MAAM,CAAC,MAAM;SACrB,CAAC;QACF,uBAAuB,CACrB,IAAI,CAAC,IAAI,EACT,oBAAoB,GAAG,gBAAgB,EACvC,UAAU,EACV,IAAI,CAAC,YAAY,CAClB,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;YACjE,qBAAqB,CACnB,IAAI,CAAC,IAAI,EACT,mBAAmB,GAAG,KAAK,GAAG,kBAAkB,EAChD,IAAI,EACJ,IAAI,CAAC,YAAY,CAClB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,eAAe,CACb,gBAAwB,EACxB,MAAyB,EACzB,OAAO,GAAG,YAAY;QAEtB,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACxF,CAAC;IAED,qBAAqB,CACnB,oBAA4B,EAC5B,gBAAwB,EACxB,MAAyB,EACzB,OAAO,GAAG,YAAY;QAEtB,OAAO,IAAI,CAAC,sBAAsB,CAChC,oBAAoB,EACpB,gBAAgB,EAChB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC7C,CAAC;IACJ,CAAC;IAED,eAAe,CACb,gBAAwB,EACxB,MAAyB,EACzB,WAAyB,MAAM;QAE/B,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzF,CAAC;IAED,qBAAqB,CACnB,oBAA4B,EAC5B,gBAAwB,EACxB,MAAyB,EACzB,WAAyB,MAAM;QAE/B,OAAO,IAAI,CAAC,sBAAsB,CAChC,oBAAoB,EACpB,gBAAgB,EAChB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CACnD,CAAC;IACJ,CAAC;IAED,qBAAqB,CACnB,gBAAwB,EACxB,MAAmD,EACnD,iBAAyB;QAEzB,OAAO,IAAI,CAAC,2BAA2B,CACrC,IAAI,CAAC,UAAU,EACf,gBAAgB,EAChB,MAAM,EACN,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAED,2BAA2B,CACzB,oBAA4B,EAC5B,gBAAwB,EACxB,MAAmD,EACnD,iBAAyB;QAEzB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACzE,MAAM,qBAAqB,GAAG,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;QAC9D,MAAM,UAAU,GAAG;YACjB,SAAS,EAAE,IAAI,CAAC,sBAAsB,CACpC,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,CACrB;YACD,KAAK,EAAE,MAAM,CAAC,MAAM;SACrB,CAAC;QACF,uBAAuB,CACrB,IAAI,CAAC,IAAI,EACT,oBAAoB,GAAG,gBAAgB,EACvC,UAAU,EACV,IAAI,CAAC,YAAY,CAClB,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9B,eAAe,CACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,qBAAqB,GAAG,KAAK,GAAG,iBAAiB,EACxE,iBAAiB,EACjB,KAAK,CACN,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,oBAAoB,CAClB,gBAAwB,EACxB,MAAyB,EACzB,iBAAyB,EACzB,OAAO,GAAG,YAAY;QAEtB,OAAO,IAAI,CAAC,0BAA0B,CACpC,IAAI,CAAC,UAAU,EACf,gBAAgB,EAChB,MAAM,EACN,iBAAiB,EACjB,OAAO,CACR,CAAC;IACJ,CAAC;IAED,0BAA0B,CACxB,oBAA4B,EAC5B,gBAAwB,EACxB,MAAyB,EACzB,iBAAyB,EACzB,OAAO,GAAG,YAAY;QAEtB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACzE,MAAM,qBAAqB,GAAG,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;QAC9D,MAAM,UAAU,GAAG;YACjB,SAAS,EAAE,IAAI,CAAC,sBAAsB,CACpC,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,CACrB;YACD,KAAK,EAAE,MAAM,CAAC,MAAM;SACrB,CAAC;QACF,uBAAuB,CACrB,IAAI,CAAC,IAAI,EACT,oBAAoB,GAAG,gBAAgB,EACvC,UAAU,EACV,IAAI,CAAC,YAAY,CAClB,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9B,cAAc,CACZ,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,qBAAqB,GAAG,KAAK,GAAG,iBAAiB,EACxE,iBAAiB,EACjB,KAAK,EACL,OAAO,CACR,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,oBAAoB,CAClB,gBAAwB,EACxB,MAAyB,EACzB,iBAAyB,EACzB,WAAyB,MAAM;QAE/B,OAAO,IAAI,CAAC,0BAA0B,CACpC,IAAI,CAAC,UAAU,EACf,gBAAgB,EAChB,MAAM,EACN,iBAAiB,EACjB,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,0BAA0B,CACxB,oBAA4B,EAC5B,gBAAwB,EACxB,MAAyB,EACzB,iBAAyB,EACzB,WAAyB,MAAM;QAE/B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACzE,MAAM,qBAAqB,GAAG,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;QAC9D,MAAM,UAAU,GAAG;YACjB,SAAS,EAAE,IAAI,CAAC,sBAAsB,CACpC,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,CACrB;YACD,KAAK,EAAE,MAAM,CAAC,MAAM;SACrB,CAAC;QACF,uBAAuB,CACrB,IAAI,CAAC,IAAI,EACT,oBAAoB,GAAG,gBAAgB,EACvC,UAAU,EACV,IAAI,CAAC,YAAY,CAClB,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9B,cAAc,CACZ,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,qBAAqB,GAAG,KAAK,GAAG,iBAAiB,EACxE,iBAAiB,EACjB,KAAK,EACL,QAAQ,CACT,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
@@ -2,5 +2,6 @@ import { type Vector32Descriptor } from "./descriptor32.js";
2
2
  import { StructVectorLayoutWriter } from "./writer-struct-vectors.js";
3
3
  export declare class PointerVectorLayoutWriter extends StructVectorLayoutWriter {
4
4
  writePointerVector(descriptorOffset: number, targetOffsets: readonly (number | null)[], targetByteLength: number): Vector32Descriptor;
5
+ writePointerVectorAtBase(descriptorBaseOffset: number, descriptorOffset: number, targetOffsets: readonly (number | null)[], targetByteLength: number): Vector32Descriptor;
5
6
  }
6
7
  //# sourceMappingURL=writer-pointer-vectors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"writer-pointer-vectors.d.ts","sourceRoot":"","sources":["../src/writer-pointer-vectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAOrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,qBAAa,yBAA0B,SAAQ,wBAAwB;IACrE,kBAAkB,CAChB,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EACzC,gBAAgB,EAAE,MAAM,GACvB,kBAAkB;CAkCtB"}
1
+ {"version":3,"file":"writer-pointer-vectors.d.ts","sourceRoot":"","sources":["../src/writer-pointer-vectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAOrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,qBAAa,yBAA0B,SAAQ,wBAAwB;IACrE,kBAAkB,CAChB,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EACzC,gBAAgB,EAAE,MAAM,GACvB,kBAAkB;IASrB,wBAAwB,CACtB,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EACzC,gBAAgB,EAAE,MAAM,GACvB,kBAAkB;CAsCtB"}
@@ -4,16 +4,19 @@ import { assertDataViewRange, assertNonNegativeInteger } from "./range.js";
4
4
  import { StructVectorLayoutWriter } from "./writer-struct-vectors.js";
5
5
  export class PointerVectorLayoutWriter extends StructVectorLayoutWriter {
6
6
  writePointerVector(descriptorOffset, targetOffsets, targetByteLength) {
7
+ return this.writePointerVectorAtBase(this.baseOffset, descriptorOffset, targetOffsets, targetByteLength);
8
+ }
9
+ writePointerVectorAtBase(descriptorBaseOffset, descriptorOffset, targetOffsets, targetByteLength) {
7
10
  assertNonNegativeInteger(targetByteLength, "targetByteLength");
8
11
  const payloadOffset = this.reserve(targetOffsets.length * POINTER32_BYTE_LENGTH, 4);
12
+ const payloadAbsoluteOffset = this.baseOffset + payloadOffset;
9
13
  const descriptor = {
10
- relOffset: payloadOffset,
14
+ relOffset: this.relativeOffsetFromBase(descriptorBaseOffset, payloadAbsoluteOffset, "Vector32.relOffset"),
11
15
  count: targetOffsets.length,
12
16
  };
13
- writeVector32Descriptor(this.view, this.baseOffset + descriptorOffset, descriptor, this.littleEndian);
17
+ writeVector32Descriptor(this.view, descriptorBaseOffset + descriptorOffset, descriptor, this.littleEndian);
14
18
  targetOffsets.forEach((targetOffset, index) => {
15
- const pointerOffset = payloadOffset + index * POINTER32_BYTE_LENGTH;
16
- const absolutePointerOffset = this.baseOffset + pointerOffset;
19
+ const absolutePointerOffset = payloadAbsoluteOffset + index * POINTER32_BYTE_LENGTH;
17
20
  if (targetOffset !== null) {
18
21
  assertDataViewRange(this.view, targetOffset, targetByteLength);
19
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"writer-pointer-vectors.js","sourceRoot":"","sources":["../src/writer-pointer-vectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAA2B,MAAM,mBAAmB,CAAC;AACrF,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,MAAM,OAAO,yBAA0B,SAAQ,wBAAwB;IACrE,kBAAkB,CAChB,gBAAwB,EACxB,aAAyC,EACzC,gBAAwB;QAExB,wBAAwB,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;QAE/D,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,qBAAqB,EAAE,CAAC,CAAC,CAAC;QACpF,MAAM,UAAU,GAAG;YACjB,SAAS,EAAE,aAAa;YACxB,KAAK,EAAE,aAAa,CAAC,MAAM;SAC5B,CAAC;QACF,uBAAuB,CACrB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,UAAU,GAAG,gBAAgB,EAClC,UAAU,EACV,IAAI,CAAC,YAAY,CAClB,CAAC;QAEF,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE;YAC5C,MAAM,aAAa,GAAG,aAAa,GAAG,KAAK,GAAG,qBAAqB,CAAC;YACpE,MAAM,qBAAqB,GAAG,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;YAC9D,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;gBAC1B,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,KAAK,GACT,YAAY,KAAK,IAAI;gBACnB,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,uBAAuB,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;YACnE,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;gBAC7B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACtE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
1
+ {"version":3,"file":"writer-pointer-vectors.js","sourceRoot":"","sources":["../src/writer-pointer-vectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAA2B,MAAM,mBAAmB,CAAC;AACrF,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,MAAM,OAAO,yBAA0B,SAAQ,wBAAwB;IACrE,kBAAkB,CAChB,gBAAwB,EACxB,aAAyC,EACzC,gBAAwB;QAExB,OAAO,IAAI,CAAC,wBAAwB,CAClC,IAAI,CAAC,UAAU,EACf,gBAAgB,EAChB,aAAa,EACb,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAED,wBAAwB,CACtB,oBAA4B,EAC5B,gBAAwB,EACxB,aAAyC,EACzC,gBAAwB;QAExB,wBAAwB,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;QAE/D,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,qBAAqB,EAAE,CAAC,CAAC,CAAC;QACpF,MAAM,qBAAqB,GAAG,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;QAC9D,MAAM,UAAU,GAAG;YACjB,SAAS,EAAE,IAAI,CAAC,sBAAsB,CACpC,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,CACrB;YACD,KAAK,EAAE,aAAa,CAAC,MAAM;SAC5B,CAAC;QACF,uBAAuB,CACrB,IAAI,CAAC,IAAI,EACT,oBAAoB,GAAG,gBAAgB,EACvC,UAAU,EACV,IAAI,CAAC,YAAY,CAClB,CAAC;QAEF,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE;YAC5C,MAAM,qBAAqB,GAAG,qBAAqB,GAAG,KAAK,GAAG,qBAAqB,CAAC;YACpF,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;gBAC1B,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,KAAK,GACT,YAAY,KAAK,IAAI;gBACnB,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,uBAAuB,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;YACnE,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;gBAC7B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACtE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
@@ -3,5 +3,6 @@ import { type ScalarKind } from "./scalar.js";
3
3
  import { ByteVectorLayoutWriter } from "./writer-byte-vectors.js";
4
4
  export declare class ScalarVectorLayoutWriter extends ByteVectorLayoutWriter {
5
5
  writeScalarVector<T extends number | bigint | boolean>(descriptorOffset: number, scalarKind: ScalarKind, values: readonly T[]): Vector32Descriptor;
6
+ writeScalarVectorAtBase<T extends number | bigint | boolean>(descriptorBaseOffset: number, descriptorOffset: number, scalarKind: ScalarKind, values: readonly T[]): Vector32Descriptor;
6
7
  }
7
8
  //# sourceMappingURL=writer-scalar-vectors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"writer-scalar-vectors.d.ts","sourceRoot":"","sources":["../src/writer-scalar-vectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAiC,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,qBAAa,wBAAyB,SAAQ,sBAAsB;IAClE,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,EACnD,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,SAAS,CAAC,EAAE,GACnB,kBAAkB;CA0BtB"}
1
+ {"version":3,"file":"writer-scalar-vectors.d.ts","sourceRoot":"","sources":["../src/writer-scalar-vectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAiC,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,qBAAa,wBAAyB,SAAQ,sBAAsB;IAClE,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,EACnD,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,SAAS,CAAC,EAAE,GACnB,kBAAkB;IAIrB,uBAAuB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,EACzD,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,SAAS,CAAC,EAAE,GACnB,kBAAkB;CA+BtB"}
@@ -3,15 +3,19 @@ import { scalarByteLength, writeScalar } from "./scalar.js";
3
3
  import { ByteVectorLayoutWriter } from "./writer-byte-vectors.js";
4
4
  export class ScalarVectorLayoutWriter extends ByteVectorLayoutWriter {
5
5
  writeScalarVector(descriptorOffset, scalarKind, values) {
6
+ return this.writeScalarVectorAtBase(this.baseOffset, descriptorOffset, scalarKind, values);
7
+ }
8
+ writeScalarVectorAtBase(descriptorBaseOffset, descriptorOffset, scalarKind, values) {
6
9
  const stride = scalarByteLength(scalarKind);
7
10
  const payloadOffset = this.reserve(values.length * stride, stride);
11
+ const payloadAbsoluteOffset = this.baseOffset + payloadOffset;
8
12
  const descriptor = {
9
- relOffset: payloadOffset,
13
+ relOffset: this.relativeOffsetFromBase(descriptorBaseOffset, payloadAbsoluteOffset, "Vector32.relOffset"),
10
14
  count: values.length,
11
15
  };
12
- writeVector32Descriptor(this.view, this.baseOffset + descriptorOffset, descriptor, this.littleEndian);
16
+ writeVector32Descriptor(this.view, descriptorBaseOffset + descriptorOffset, descriptor, this.littleEndian);
13
17
  values.forEach((value, index) => {
14
- writeScalar(this.view, scalarKind, this.baseOffset + payloadOffset + index * stride, value, this.littleEndian);
18
+ writeScalar(this.view, scalarKind, payloadAbsoluteOffset + index * stride, value, this.littleEndian);
15
19
  });
16
20
  return descriptor;
17
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"writer-scalar-vectors.js","sourceRoot":"","sources":["../src/writer-scalar-vectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAA2B,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAmB,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,OAAO,wBAAyB,SAAQ,sBAAsB;IAClE,iBAAiB,CACf,gBAAwB,EACxB,UAAsB,EACtB,MAAoB;QAEpB,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG;YACjB,SAAS,EAAE,aAAa;YACxB,KAAK,EAAE,MAAM,CAAC,MAAM;SACrB,CAAC;QACF,uBAAuB,CACrB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,UAAU,GAAG,gBAAgB,EAClC,UAAU,EACV,IAAI,CAAC,YAAY,CAClB,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9B,WAAW,CACT,IAAI,CAAC,IAAI,EACT,UAAU,EACV,IAAI,CAAC,UAAU,GAAG,aAAa,GAAG,KAAK,GAAG,MAAM,EAChD,KAAK,EACL,IAAI,CAAC,YAAY,CAClB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
1
+ {"version":3,"file":"writer-scalar-vectors.js","sourceRoot":"","sources":["../src/writer-scalar-vectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAA2B,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAmB,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,OAAO,wBAAyB,SAAQ,sBAAsB;IAClE,iBAAiB,CACf,gBAAwB,EACxB,UAAsB,EACtB,MAAoB;QAEpB,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7F,CAAC;IAED,uBAAuB,CACrB,oBAA4B,EAC5B,gBAAwB,EACxB,UAAsB,EACtB,MAAoB;QAEpB,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;QACnE,MAAM,qBAAqB,GAAG,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;QAC9D,MAAM,UAAU,GAAG;YACjB,SAAS,EAAE,IAAI,CAAC,sBAAsB,CACpC,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,CACrB;YACD,KAAK,EAAE,MAAM,CAAC,MAAM;SACrB,CAAC;QACF,uBAAuB,CACrB,IAAI,CAAC,IAAI,EACT,oBAAoB,GAAG,gBAAgB,EACvC,UAAU,EACV,IAAI,CAAC,YAAY,CAClB,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9B,WAAW,CACT,IAAI,CAAC,IAAI,EACT,UAAU,EACV,qBAAqB,GAAG,KAAK,GAAG,MAAM,EACtC,KAAK,EACL,IAAI,CAAC,YAAY,CAClB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
@@ -3,7 +3,10 @@ import { type TextEncoding } from "./fixed.js";
3
3
  import { DynamicLayoutArena } from "./writer-arena.js";
4
4
  export declare class SpanLayoutWriter extends DynamicLayoutArena {
5
5
  writeBytes(descriptorOffset: number, bytes: ArrayLike<number> | Uint8Array): Span32Descriptor;
6
+ writeBytesAtBase(descriptorBaseOffset: number, descriptorOffset: number, bytes: ArrayLike<number> | Uint8Array): Span32Descriptor;
6
7
  writeUtf8(descriptorOffset: number, text: string, encoder?: TextEncoder): Span32Descriptor;
8
+ writeUtf8AtBase(descriptorBaseOffset: number, descriptorOffset: number, text: string, encoder?: TextEncoder): Span32Descriptor;
7
9
  writeText(descriptorOffset: number, text: string, encoding?: TextEncoding): Span32Descriptor;
10
+ writeTextAtBase(descriptorBaseOffset: number, descriptorOffset: number, text: string, encoding?: TextEncoding): Span32Descriptor;
8
11
  }
9
12
  //# sourceMappingURL=writer-spans.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"writer-spans.d.ts","sourceRoot":"","sources":["../src/writer-spans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,qBAAa,gBAAiB,SAAQ,kBAAkB;IACtD,UAAU,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG,gBAAgB;IAW7F,SAAS,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,cAAe,GAAG,gBAAgB;IAW3F,SAAS,CACP,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,YAAqB,GAC9B,gBAAgB;CAUpB"}
1
+ {"version":3,"file":"writer-spans.d.ts","sourceRoot":"","sources":["../src/writer-spans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,qBAAa,gBAAiB,SAAQ,kBAAkB;IACtD,UAAU,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG,gBAAgB;IAI7F,gBAAgB,CACd,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,GACpC,gBAAgB;IAWnB,SAAS,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,cAAe,GAAG,gBAAgB;IAI3F,eAAe,CACb,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,OAAO,cAAe,GACrB,gBAAgB;IAWnB,SAAS,CACP,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,YAAqB,GAC9B,gBAAgB;IAInB,eAAe,CACb,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,YAAqB,GAC9B,gBAAgB;CAUpB"}