@sachitv/avro-typescript 0.4.2 → 0.5.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 (122) hide show
  1. package/esm/avro_reader_sync.d.ts +48 -0
  2. package/esm/avro_reader_sync.js +79 -0
  3. package/esm/avro_writer_sync.d.ts +28 -0
  4. package/esm/avro_writer_sync.js +63 -0
  5. package/esm/internal/collections/circular_buffer.d.ts +4 -3
  6. package/esm/internal/collections/circular_buffer.js +8 -6
  7. package/esm/mod.d.ts +17 -0
  8. package/esm/mod.js +11 -0
  9. package/esm/schemas/base_type.d.ts +8 -0
  10. package/esm/schemas/base_type.js +21 -0
  11. package/esm/schemas/complex/array_type.d.ts +31 -10
  12. package/esm/schemas/complex/array_type.js +129 -39
  13. package/esm/schemas/complex/enum_type.d.ts +24 -7
  14. package/esm/schemas/complex/enum_type.js +61 -15
  15. package/esm/schemas/complex/fixed_type.d.ts +27 -12
  16. package/esm/schemas/complex/fixed_type.js +40 -27
  17. package/esm/schemas/complex/map_type.d.ts +31 -10
  18. package/esm/schemas/complex/map_type.js +88 -47
  19. package/esm/schemas/complex/named_type.d.ts +1 -1
  20. package/esm/schemas/complex/named_type.js +2 -2
  21. package/esm/schemas/complex/record_field.d.ts +62 -0
  22. package/esm/schemas/complex/record_field.js +112 -0
  23. package/esm/schemas/complex/record_resolver.d.ts +45 -0
  24. package/esm/schemas/complex/record_resolver.js +92 -0
  25. package/esm/schemas/complex/record_type.d.ts +45 -70
  26. package/esm/schemas/complex/record_type.js +158 -213
  27. package/esm/schemas/complex/record_writer_cache.d.ts +44 -0
  28. package/esm/schemas/complex/record_writer_cache.js +141 -0
  29. package/esm/schemas/complex/record_writer_strategy.d.ts +123 -0
  30. package/esm/schemas/complex/record_writer_strategy.js +309 -0
  31. package/esm/schemas/complex/union_type.d.ts +23 -11
  32. package/esm/schemas/complex/union_type.js +77 -29
  33. package/esm/schemas/logical/decimal_logical_type.d.ts +1 -1
  34. package/esm/schemas/logical/decimal_logical_type.js +2 -2
  35. package/esm/schemas/logical/duration_logical_type.d.ts +1 -1
  36. package/esm/schemas/logical/duration_logical_type.js +2 -2
  37. package/esm/schemas/logical/logical_type.d.ts +27 -9
  38. package/esm/schemas/logical/logical_type.js +50 -17
  39. package/esm/schemas/logical/temporal_logical_types.d.ts +9 -9
  40. package/esm/schemas/logical/temporal_logical_types.js +18 -18
  41. package/esm/schemas/logical/uuid_logical_type.d.ts +1 -1
  42. package/esm/schemas/logical/uuid_logical_type.js +2 -2
  43. package/esm/schemas/primitive/boolean_type.d.ts +15 -4
  44. package/esm/schemas/primitive/boolean_type.js +22 -7
  45. package/esm/schemas/primitive/bytes_type.d.ts +16 -5
  46. package/esm/schemas/primitive/bytes_type.js +31 -16
  47. package/esm/schemas/primitive/double_type.d.ts +13 -2
  48. package/esm/schemas/primitive/double_type.js +34 -5
  49. package/esm/schemas/primitive/fixed_size_base_type.d.ts +11 -7
  50. package/esm/schemas/primitive/fixed_size_base_type.js +14 -14
  51. package/esm/schemas/primitive/float_type.d.ts +11 -2
  52. package/esm/schemas/primitive/float_type.js +26 -5
  53. package/esm/schemas/primitive/int_type.d.ts +17 -6
  54. package/esm/schemas/primitive/int_type.js +26 -17
  55. package/esm/schemas/primitive/long_type.d.ts +16 -5
  56. package/esm/schemas/primitive/long_type.js +30 -16
  57. package/esm/schemas/primitive/null_type.d.ts +15 -4
  58. package/esm/schemas/primitive/null_type.js +20 -7
  59. package/esm/schemas/primitive/primitive_type.d.ts +2 -0
  60. package/esm/schemas/primitive/primitive_type.js +4 -0
  61. package/esm/schemas/primitive/string_type.d.ts +17 -6
  62. package/esm/schemas/primitive/string_type.js +33 -18
  63. package/esm/schemas/resolver.d.ts +6 -0
  64. package/esm/schemas/type.d.ts +64 -4
  65. package/esm/schemas/type.js +97 -0
  66. package/esm/serialization/avro_file_parser_sync.d.ts +34 -0
  67. package/esm/serialization/avro_file_parser_sync.js +160 -0
  68. package/esm/serialization/avro_file_writer_sync.d.ts +47 -0
  69. package/esm/serialization/avro_file_writer_sync.js +211 -0
  70. package/esm/serialization/buffers/blob_readable_buffer.d.ts +4 -3
  71. package/esm/serialization/buffers/blob_readable_buffer.js +20 -6
  72. package/esm/serialization/buffers/buffer.d.ts +6 -1
  73. package/esm/serialization/buffers/buffer.js +3 -0
  74. package/esm/serialization/buffers/buffer_error.d.ts +28 -0
  75. package/esm/serialization/buffers/buffer_error.js +70 -0
  76. package/esm/serialization/buffers/buffer_sync.d.ts +51 -0
  77. package/esm/serialization/buffers/buffer_sync.js +4 -0
  78. package/esm/serialization/buffers/in_memory_buffer.d.ts +1 -0
  79. package/esm/serialization/buffers/in_memory_buffer.js +7 -5
  80. package/esm/serialization/buffers/in_memory_buffer_sync.d.ts +133 -0
  81. package/esm/serialization/buffers/in_memory_buffer_sync.js +259 -0
  82. package/esm/serialization/counting_writable_tap.d.ts +45 -0
  83. package/esm/serialization/counting_writable_tap.js +90 -0
  84. package/esm/serialization/counting_writable_tap_sync.d.ts +46 -0
  85. package/esm/serialization/counting_writable_tap_sync.js +87 -0
  86. package/esm/serialization/decoders/decoder_null_sync.d.ts +12 -0
  87. package/esm/serialization/decoders/decoder_null_sync.js +13 -0
  88. package/esm/serialization/decoders/decoder_sync.d.ts +15 -0
  89. package/esm/serialization/decoders/decoder_sync.js +1 -0
  90. package/esm/serialization/encoders/encoder_null_sync.d.ts +12 -0
  91. package/esm/serialization/encoders/encoder_null_sync.js +13 -0
  92. package/esm/serialization/encoders/encoder_sync.d.ts +15 -0
  93. package/esm/serialization/encoders/encoder_sync.js +1 -0
  94. package/esm/serialization/streams/fixed_size_stream_readable_buffer_adapter.d.ts +3 -2
  95. package/esm/serialization/streams/fixed_size_stream_readable_buffer_adapter.js +19 -9
  96. package/esm/serialization/streams/fixed_size_stream_reader_sync.d.ts +25 -0
  97. package/esm/serialization/streams/fixed_size_stream_reader_sync.js +63 -0
  98. package/esm/serialization/streams/fixed_size_stream_writer_sync.d.ts +45 -0
  99. package/esm/serialization/streams/fixed_size_stream_writer_sync.js +98 -0
  100. package/esm/serialization/streams/forward_only_stream_readable_buffer_adapter.d.ts +5 -3
  101. package/esm/serialization/streams/forward_only_stream_readable_buffer_adapter.js +18 -8
  102. package/esm/serialization/streams/stream_readable_buffer_adapter.d.ts +3 -2
  103. package/esm/serialization/streams/stream_readable_buffer_adapter.js +19 -6
  104. package/esm/serialization/streams/stream_readable_buffer_adapter_sync.d.ts +36 -0
  105. package/esm/serialization/streams/stream_readable_buffer_adapter_sync.js +93 -0
  106. package/esm/serialization/streams/stream_writable_buffer_adapter_sync.d.ts +45 -0
  107. package/esm/serialization/streams/stream_writable_buffer_adapter_sync.js +78 -0
  108. package/esm/serialization/streams/streams_sync.d.ts +36 -0
  109. package/esm/serialization/streams/streams_sync.js +4 -0
  110. package/esm/serialization/tap.d.ts +15 -32
  111. package/esm/serialization/tap.js +45 -134
  112. package/esm/serialization/tap_sync.d.ts +240 -0
  113. package/esm/serialization/tap_sync.js +545 -0
  114. package/esm/serialization/text_encoding.d.ts +16 -0
  115. package/esm/serialization/text_encoding.js +48 -1
  116. package/esm/type/create_type.d.ts +20 -0
  117. package/esm/type/create_type.js +49 -28
  118. package/package.json +1 -1
  119. package/esm/serialization/manipulate_bytes.d.ts +0 -6
  120. package/esm/serialization/manipulate_bytes.js +0 -13
  121. package/esm/serialization/read_uint_le.d.ts +0 -4
  122. package/esm/serialization/read_uint_le.js +0 -14
@@ -22,15 +22,17 @@ export declare class ForwardOnlyStreamReadableBufferAdapter implements IReadable
22
22
  *
23
23
  * @param offset The byte offset to start reading from (must be current position).
24
24
  * @param size The number of bytes to read.
25
- * @returns A Promise that resolves to a new Uint8Array containing the read bytes, or undefined if the read would exceed buffer bounds.
26
- * @throws Error if attempting to read backwards or seek forward.
25
+ * @returns A Promise that resolves to a new Uint8Array containing the read bytes.
26
+ * @throws ReadBufferError when the requested range is invalid or exceeds buffered bounds.
27
+ * @throws ReadBufferError if attempting to read backwards or seek forward.
27
28
  */
28
- read(offset: number, size: number): Promise<Uint8Array | undefined>;
29
+ read(offset: number, size: number): Promise<Uint8Array>;
29
30
  /**
30
31
  * Checks if more data can be read at the specified offset.
31
32
  * Only allows reading at the current position; throws errors for backward or forward seeking.
32
33
  * @param offset - The offset to check for readability
33
34
  * @returns Promise resolving to true if data is available at the current position, false otherwise
35
+ * @throws ReadBufferError if attempting to read backwards or seek forward
34
36
  */
35
37
  canReadMore(offset: number): Promise<boolean>;
36
38
  }
@@ -10,6 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
12
  var _ForwardOnlyStreamReadableBufferAdapter_instances, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, _ForwardOnlyStreamReadableBufferAdapter_streamBuffer, _ForwardOnlyStreamReadableBufferAdapter_eof, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, _ForwardOnlyStreamReadableBufferAdapter_ensureBufferedUpTo;
13
+ import { ReadBufferError } from "../buffers/buffer_error.js";
13
14
  /**
14
15
  * Adapter that wraps an IStreamReadableBuffer to provide forward-only reading.
15
16
  * This adapter only allows forward sequential reads. Attempting to read backwards
@@ -38,23 +39,28 @@ export class ForwardOnlyStreamReadableBufferAdapter {
38
39
  *
39
40
  * @param offset The byte offset to start reading from (must be current position).
40
41
  * @param size The number of bytes to read.
41
- * @returns A Promise that resolves to a new Uint8Array containing the read bytes, or undefined if the read would exceed buffer bounds.
42
- * @throws Error if attempting to read backwards or seek forward.
42
+ * @returns A Promise that resolves to a new Uint8Array containing the read bytes.
43
+ * @throws ReadBufferError when the requested range is invalid or exceeds buffered bounds.
44
+ * @throws ReadBufferError if attempting to read backwards or seek forward.
43
45
  */
44
46
  async read(offset, size) {
47
+ // Validate parameters
45
48
  if (offset < 0 || size < 0) {
46
- return undefined;
49
+ throw new ReadBufferError("Offset and size must be non-negative", offset, size, __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f") + (__classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, "f")?.length ?? 0));
47
50
  }
51
+ const bufferedLength = __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, "f")?.length ?? 0;
48
52
  if (offset < __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f")) {
49
- throw new Error("Cannot read backwards from current position");
53
+ const bufferEnd = __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f") + bufferedLength;
54
+ throw new ReadBufferError("Cannot read backwards from current position", offset, size, bufferEnd);
50
55
  }
51
56
  if (offset > __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f")) {
52
- throw new Error("Cannot seek forward; reads must be sequential");
57
+ const bufferEnd = __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f") + bufferedLength;
58
+ throw new ReadBufferError("Cannot seek forward; reads must be sequential", offset, size, bufferEnd);
53
59
  }
54
60
  // At this point, offset must equal currentPosition due to the checks above
55
61
  await __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_instances, "m", _ForwardOnlyStreamReadableBufferAdapter_ensureBufferedUpTo).call(this, __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f") + size);
56
62
  if (__classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, "f") === null || size > __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, "f").length) {
57
- return undefined;
63
+ throw new ReadBufferError("Operation exceeds buffer bounds", offset, size, __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f") + (__classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, "f")?.length ?? 0));
58
64
  }
59
65
  const result = __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, "f").slice(0, size);
60
66
  // Advance position
@@ -69,13 +75,17 @@ export class ForwardOnlyStreamReadableBufferAdapter {
69
75
  * Only allows reading at the current position; throws errors for backward or forward seeking.
70
76
  * @param offset - The offset to check for readability
71
77
  * @returns Promise resolving to true if data is available at the current position, false otherwise
78
+ * @throws ReadBufferError if attempting to read backwards or seek forward
72
79
  */
73
80
  async canReadMore(offset) {
81
+ const bufferedLength = __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, "f")?.length ?? 0;
74
82
  if (offset < __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f")) {
75
- throw new Error("Cannot read backwards from current position");
83
+ const bufferEnd = __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f") + bufferedLength;
84
+ throw new ReadBufferError("Cannot read backwards from current position", offset, 1, bufferEnd);
76
85
  }
77
86
  if (offset > __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f")) {
78
- throw new Error("Cannot seek forward; reads must be sequential");
87
+ const bufferEnd = __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f") + bufferedLength;
88
+ throw new ReadBufferError("Cannot seek forward; reads must be sequential", offset, 1, bufferEnd);
79
89
  }
80
90
  await __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_instances, "m", _ForwardOnlyStreamReadableBufferAdapter_ensureBufferedUpTo).call(this, __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f") + 1);
81
91
  if (__classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, "f") === null) {
@@ -26,9 +26,10 @@ export declare class StreamReadableBufferAdapter implements IReadableBuffer {
26
26
  *
27
27
  * @param offset The byte offset to start reading from (0-based).
28
28
  * @param size The number of bytes to read.
29
- * @returns A Promise that resolves to a new Uint8Array containing the read bytes, or undefined if the read would exceed buffer bounds.
29
+ * @returns A Promise that resolves to a new Uint8Array containing the read bytes.
30
+ * @throws ReadBufferError if the requested range is out of bounds.
30
31
  */
31
- read(offset: number, size: number): Promise<Uint8Array | undefined>;
32
+ read(offset: number, size: number): Promise<Uint8Array>;
32
33
  /**
33
34
  * Checks if more data can be read starting at the given offset.
34
35
  * @param offset The byte offset to check.
@@ -10,6 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
12
  var _StreamReadableBufferAdapter_instances, _StreamReadableBufferAdapter_bufferedData, _StreamReadableBufferAdapter_streamBuffer, _StreamReadableBufferAdapter_eof, _StreamReadableBufferAdapter_ensureBuffered, _StreamReadableBufferAdapter_ensureBufferedUpTo;
13
+ import { ReadBufferError } from "../buffers/buffer_error.js";
13
14
  /**
14
15
  * Adapter that wraps an IStreamReadableBuffer to provide IReadableBuffer interface.
15
16
  * This buffers stream content progressively to enable random access reads.
@@ -44,11 +45,12 @@ export class StreamReadableBufferAdapter {
44
45
  *
45
46
  * @param offset The byte offset to start reading from (0-based).
46
47
  * @param size The number of bytes to read.
47
- * @returns A Promise that resolves to a new Uint8Array containing the read bytes, or undefined if the read would exceed buffer bounds.
48
+ * @returns A Promise that resolves to a new Uint8Array containing the read bytes.
49
+ * @throws ReadBufferError if the requested range is out of bounds.
48
50
  */
49
51
  async read(offset, size) {
50
52
  if (offset < 0 || size < 0) {
51
- return undefined;
53
+ throw new ReadBufferError(`Offset and size must be non-negative. Got offset=${offset}, size=${size}`, offset, size, __classPrivateFieldGet(this, _StreamReadableBufferAdapter_bufferedData, "f")?.length ?? 0);
52
54
  }
53
55
  // Check if the section is already cached
54
56
  if (__classPrivateFieldGet(this, _StreamReadableBufferAdapter_bufferedData, "f") !== null && offset + size <= __classPrivateFieldGet(this, _StreamReadableBufferAdapter_bufferedData, "f").length) {
@@ -56,9 +58,12 @@ export class StreamReadableBufferAdapter {
56
58
  }
57
59
  // Load chunks until the necessary data is available
58
60
  await __classPrivateFieldGet(this, _StreamReadableBufferAdapter_instances, "m", _StreamReadableBufferAdapter_ensureBufferedUpTo).call(this, offset + size);
61
+ // bufferData is guaranteed to be non-null after ensureBufferedUpTo
62
+ const bufLen = __classPrivateFieldGet(this, _StreamReadableBufferAdapter_bufferedData, "f").length;
59
63
  // Check if we have enough data after buffering
60
- if (__classPrivateFieldGet(this, _StreamReadableBufferAdapter_bufferedData, "f") === null || offset + size > __classPrivateFieldGet(this, _StreamReadableBufferAdapter_bufferedData, "f").length) {
61
- return undefined;
64
+ if (offset + size > bufLen) {
65
+ const msg = `Operation exceeds buffer bounds. offset=${offset}, size=${size}, bufferLength=${bufLen}`;
66
+ throw new ReadBufferError(msg, offset, size, bufLen);
62
67
  }
63
68
  return __classPrivateFieldGet(this, _StreamReadableBufferAdapter_bufferedData, "f").slice(offset, offset + size);
64
69
  }
@@ -68,8 +73,16 @@ export class StreamReadableBufferAdapter {
68
73
  * @returns True if at least one byte can be read from the offset.
69
74
  */
70
75
  async canReadMore(offset) {
71
- const result = await this.read(offset, 1);
72
- return result !== undefined;
76
+ try {
77
+ await this.read(offset, 1);
78
+ return true;
79
+ }
80
+ catch (err) {
81
+ if (err instanceof ReadBufferError) {
82
+ return false;
83
+ }
84
+ throw err;
85
+ }
73
86
  }
74
87
  }
75
88
  _StreamReadableBufferAdapter_bufferedData = new WeakMap(), _StreamReadableBufferAdapter_streamBuffer = new WeakMap(), _StreamReadableBufferAdapter_eof = new WeakMap(), _StreamReadableBufferAdapter_instances = new WeakSet(), _StreamReadableBufferAdapter_ensureBuffered =
@@ -0,0 +1,36 @@
1
+ import { type ISyncReadable } from "../buffers/buffer_sync.js";
2
+ import type { ISyncStreamReadableBuffer } from "./streams_sync.js";
3
+ /**
4
+ * Adapter that wraps an ISyncStreamReadableBuffer to provide the ISyncReadable interface.
5
+ * The adapter buffers stream content progressively to enable random-access reads.
6
+ */
7
+ export declare class SyncStreamReadableBufferAdapter implements ISyncReadable {
8
+ #private;
9
+ /**
10
+ * Creates a new adapter from a synchronous stream readable buffer.
11
+ *
12
+ * @param streamBuffer The stream buffer to adapt.
13
+ */
14
+ constructor(streamBuffer: ISyncStreamReadableBuffer);
15
+ /**
16
+ * Reads a sequence of bytes from the buffer starting at the specified offset.
17
+ * This buffers stream data as needed to satisfy the read request.
18
+ *
19
+ * @param offset The byte offset to start reading from (0-based).
20
+ * @param size The number of bytes to read.
21
+ * @returns A Uint8Array containing the requested bytes.
22
+ * @throws ReadBufferError If the requested range is invalid or exceeds available data.
23
+ */
24
+ read(offset: number, size: number): Uint8Array;
25
+ /**
26
+ * Checks if more data can be read starting at the given offset.
27
+ *
28
+ * @param offset The byte offset to check.
29
+ * @returns True if at least one byte can be read from the offset.
30
+ */
31
+ canReadMore(offset: number): boolean;
32
+ /**
33
+ * Closes the underlying stream buffer.
34
+ */
35
+ close(): void;
36
+ }
@@ -0,0 +1,93 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _SyncStreamReadableBufferAdapter_instances, _SyncStreamReadableBufferAdapter_streamBuffer, _SyncStreamReadableBufferAdapter_bufferedData, _SyncStreamReadableBufferAdapter_eof, _SyncStreamReadableBufferAdapter_validateParameters, _SyncStreamReadableBufferAdapter_ensureBufferedUpTo;
13
+ import { ReadBufferError } from "../buffers/buffer_sync.js";
14
+ /**
15
+ * Adapter that wraps an ISyncStreamReadableBuffer to provide the ISyncReadable interface.
16
+ * The adapter buffers stream content progressively to enable random-access reads.
17
+ */
18
+ export class SyncStreamReadableBufferAdapter {
19
+ /**
20
+ * Creates a new adapter from a synchronous stream readable buffer.
21
+ *
22
+ * @param streamBuffer The stream buffer to adapt.
23
+ */
24
+ constructor(streamBuffer) {
25
+ _SyncStreamReadableBufferAdapter_instances.add(this);
26
+ _SyncStreamReadableBufferAdapter_streamBuffer.set(this, void 0);
27
+ _SyncStreamReadableBufferAdapter_bufferedData.set(this, new Uint8Array(0));
28
+ _SyncStreamReadableBufferAdapter_eof.set(this, false);
29
+ __classPrivateFieldSet(this, _SyncStreamReadableBufferAdapter_streamBuffer, streamBuffer, "f");
30
+ }
31
+ /**
32
+ * Reads a sequence of bytes from the buffer starting at the specified offset.
33
+ * This buffers stream data as needed to satisfy the read request.
34
+ *
35
+ * @param offset The byte offset to start reading from (0-based).
36
+ * @param size The number of bytes to read.
37
+ * @returns A Uint8Array containing the requested bytes.
38
+ * @throws ReadBufferError If the requested range is invalid or exceeds available data.
39
+ */
40
+ read(offset, size) {
41
+ __classPrivateFieldGet(this, _SyncStreamReadableBufferAdapter_instances, "m", _SyncStreamReadableBufferAdapter_validateParameters).call(this, offset, size);
42
+ __classPrivateFieldGet(this, _SyncStreamReadableBufferAdapter_instances, "m", _SyncStreamReadableBufferAdapter_ensureBufferedUpTo).call(this, offset + size);
43
+ if (offset + size > __classPrivateFieldGet(this, _SyncStreamReadableBufferAdapter_bufferedData, "f").length) {
44
+ throw new ReadBufferError(`Requested range exceeds buffered data. offset=${offset}, size=${size}, bufferLength=${__classPrivateFieldGet(this, _SyncStreamReadableBufferAdapter_bufferedData, "f").length}`, offset, size, __classPrivateFieldGet(this, _SyncStreamReadableBufferAdapter_bufferedData, "f").length);
45
+ }
46
+ return __classPrivateFieldGet(this, _SyncStreamReadableBufferAdapter_bufferedData, "f").slice(offset, offset + size);
47
+ }
48
+ /**
49
+ * Checks if more data can be read starting at the given offset.
50
+ *
51
+ * @param offset The byte offset to check.
52
+ * @returns True if at least one byte can be read from the offset.
53
+ */
54
+ canReadMore(offset) {
55
+ try {
56
+ this.read(offset, 1);
57
+ return true;
58
+ }
59
+ catch (error) {
60
+ if (error instanceof ReadBufferError) {
61
+ return false;
62
+ }
63
+ throw error;
64
+ }
65
+ }
66
+ /**
67
+ * Closes the underlying stream buffer.
68
+ */
69
+ close() {
70
+ __classPrivateFieldGet(this, _SyncStreamReadableBufferAdapter_streamBuffer, "f").close();
71
+ }
72
+ }
73
+ _SyncStreamReadableBufferAdapter_streamBuffer = new WeakMap(), _SyncStreamReadableBufferAdapter_bufferedData = new WeakMap(), _SyncStreamReadableBufferAdapter_eof = new WeakMap(), _SyncStreamReadableBufferAdapter_instances = new WeakSet(), _SyncStreamReadableBufferAdapter_validateParameters = function _SyncStreamReadableBufferAdapter_validateParameters(offset, size) {
74
+ if (offset < 0 || size < 0) {
75
+ throw new ReadBufferError(`Offset and size must be non-negative. Got offset=${offset}, size=${size}`, offset, size, __classPrivateFieldGet(this, _SyncStreamReadableBufferAdapter_bufferedData, "f").length);
76
+ }
77
+ }, _SyncStreamReadableBufferAdapter_ensureBufferedUpTo = function _SyncStreamReadableBufferAdapter_ensureBufferedUpTo(targetOffset) {
78
+ while (!__classPrivateFieldGet(this, _SyncStreamReadableBufferAdapter_eof, "f") && __classPrivateFieldGet(this, _SyncStreamReadableBufferAdapter_bufferedData, "f").length < targetOffset) {
79
+ const chunk = __classPrivateFieldGet(this, _SyncStreamReadableBufferAdapter_streamBuffer, "f").readNext();
80
+ if (chunk === undefined) {
81
+ __classPrivateFieldSet(this, _SyncStreamReadableBufferAdapter_eof, true, "f");
82
+ break;
83
+ }
84
+ if (chunk.length === 0) {
85
+ continue;
86
+ }
87
+ const currentLength = __classPrivateFieldGet(this, _SyncStreamReadableBufferAdapter_bufferedData, "f").length;
88
+ const newBuffer = new Uint8Array(currentLength + chunk.length);
89
+ newBuffer.set(__classPrivateFieldGet(this, _SyncStreamReadableBufferAdapter_bufferedData, "f"));
90
+ newBuffer.set(chunk, currentLength);
91
+ __classPrivateFieldSet(this, _SyncStreamReadableBufferAdapter_bufferedData, newBuffer, "f");
92
+ }
93
+ };
@@ -0,0 +1,45 @@
1
+ import type { ISyncWritable } from "../buffers/buffer_sync.js";
2
+ import type { ISyncStreamWritableBuffer } from "./streams_sync.js";
3
+ /**
4
+ * Adapter that wraps an ISyncStreamWritableBuffer to provide the ISyncWritable interface.
5
+ * Writes are passed through to the underlying stream sink.
6
+ */
7
+ export declare class SyncStreamWritableBufferAdapter implements ISyncWritable {
8
+ #private;
9
+ /**
10
+ * Creates a new adapter from a synchronous stream writable buffer.
11
+ *
12
+ * @param streamBuffer The stream buffer to adapt.
13
+ */
14
+ constructor(streamBuffer: ISyncStreamWritableBuffer);
15
+ /**
16
+ * Appends bytes to the buffer, advancing its internal write cursor when the
17
+ * operation succeeds.
18
+ */
19
+ appendBytes(data: Uint8Array): void;
20
+ /**
21
+ * Appends a slice of bytes to the buffer.
22
+ *
23
+ * @param data The source bytes.
24
+ * @param offset The starting offset in data.
25
+ * @param length The number of bytes to write.
26
+ */
27
+ appendBytesFrom(data: Uint8Array, offset: number, length: number): void;
28
+ /**
29
+ * Returns whether the buffer can continue accepting writes.
30
+ * Stream buffers can always accept writes until explicitly closed.
31
+ */
32
+ isValid(): boolean;
33
+ /**
34
+ * Checks if the buffer can accept appending the given number of bytes.
35
+ *
36
+ * @param size The number of bytes to check.
37
+ * @returns True if the buffer can accept the append.
38
+ */
39
+ canAppendMore(_size: number): boolean;
40
+ /**
41
+ * Closes the underlying stream buffer.
42
+ * After calling this, further writes will be ignored.
43
+ */
44
+ close(): void;
45
+ }
@@ -0,0 +1,78 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _SyncStreamWritableBufferAdapter_streamBuffer, _SyncStreamWritableBufferAdapter_isClosed;
13
+ /**
14
+ * Adapter that wraps an ISyncStreamWritableBuffer to provide the ISyncWritable interface.
15
+ * Writes are passed through to the underlying stream sink.
16
+ */
17
+ export class SyncStreamWritableBufferAdapter {
18
+ /**
19
+ * Creates a new adapter from a synchronous stream writable buffer.
20
+ *
21
+ * @param streamBuffer The stream buffer to adapt.
22
+ */
23
+ constructor(streamBuffer) {
24
+ _SyncStreamWritableBufferAdapter_streamBuffer.set(this, void 0);
25
+ _SyncStreamWritableBufferAdapter_isClosed.set(this, false);
26
+ __classPrivateFieldSet(this, _SyncStreamWritableBufferAdapter_streamBuffer, streamBuffer, "f");
27
+ }
28
+ /**
29
+ * Appends bytes to the buffer, advancing its internal write cursor when the
30
+ * operation succeeds.
31
+ */
32
+ appendBytes(data) {
33
+ if (__classPrivateFieldGet(this, _SyncStreamWritableBufferAdapter_isClosed, "f") || data.length === 0) {
34
+ return;
35
+ }
36
+ __classPrivateFieldGet(this, _SyncStreamWritableBufferAdapter_streamBuffer, "f").writeBytes(data);
37
+ }
38
+ /**
39
+ * Appends a slice of bytes to the buffer.
40
+ *
41
+ * @param data The source bytes.
42
+ * @param offset The starting offset in data.
43
+ * @param length The number of bytes to write.
44
+ */
45
+ appendBytesFrom(data, offset, length) {
46
+ if (__classPrivateFieldGet(this, _SyncStreamWritableBufferAdapter_isClosed, "f") || length === 0) {
47
+ return;
48
+ }
49
+ __classPrivateFieldGet(this, _SyncStreamWritableBufferAdapter_streamBuffer, "f").writeBytesFrom(data, offset, length);
50
+ }
51
+ /**
52
+ * Returns whether the buffer can continue accepting writes.
53
+ * Stream buffers can always accept writes until explicitly closed.
54
+ */
55
+ isValid() {
56
+ return !__classPrivateFieldGet(this, _SyncStreamWritableBufferAdapter_isClosed, "f");
57
+ }
58
+ /**
59
+ * Checks if the buffer can accept appending the given number of bytes.
60
+ *
61
+ * @param size The number of bytes to check.
62
+ * @returns True if the buffer can accept the append.
63
+ */
64
+ canAppendMore(_size) {
65
+ return this.isValid();
66
+ }
67
+ /**
68
+ * Closes the underlying stream buffer.
69
+ * After calling this, further writes will be ignored.
70
+ */
71
+ close() {
72
+ if (!__classPrivateFieldGet(this, _SyncStreamWritableBufferAdapter_isClosed, "f")) {
73
+ __classPrivateFieldSet(this, _SyncStreamWritableBufferAdapter_isClosed, true, "f");
74
+ __classPrivateFieldGet(this, _SyncStreamWritableBufferAdapter_streamBuffer, "f").close();
75
+ }
76
+ }
77
+ }
78
+ _SyncStreamWritableBufferAdapter_streamBuffer = new WeakMap(), _SyncStreamWritableBufferAdapter_isClosed = new WeakMap();
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Interfaces describing synchronous stream-backed readable and writable buffers.
3
+ */
4
+ /**
5
+ * Interface describing a readable buffer backed by a synchronous stream-like source.
6
+ * This provides sequential access to byte chunks without relying on async primitives.
7
+ */
8
+ export interface ISyncStreamReadableBuffer {
9
+ /**
10
+ * Reads the next chunk of data from the stream.
11
+ * Returns undefined when the stream is exhausted.
12
+ */
13
+ readNext(): Uint8Array | undefined;
14
+ /**
15
+ * Closes the stream and releases any held resources.
16
+ */
17
+ close(): void;
18
+ }
19
+ /**
20
+ * Interface describing a writable buffer backed by a synchronous stream-like sink.
21
+ * This provides sequential writing capabilities.
22
+ */
23
+ export interface ISyncStreamWritableBuffer {
24
+ /**
25
+ * Writes bytes to the stream.
26
+ */
27
+ writeBytes(data: Uint8Array): void;
28
+ /**
29
+ * Writes a slice of bytes to the stream without requiring a subarray view.
30
+ */
31
+ writeBytesFrom(data: Uint8Array, offset: number, length: number): void;
32
+ /**
33
+ * Closes the stream and releases any held resources.
34
+ */
35
+ close(): void;
36
+ }
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Interfaces describing synchronous stream-backed readable and writable buffers.
3
+ */
4
+ export {};
@@ -13,7 +13,7 @@ export interface ReadableTapLike {
13
13
  canReadMore(): Promise<boolean>;
14
14
  /**
15
15
  * Returns the buffer contents from the start up to the current cursor.
16
- * @throws RangeError if the cursor has advanced past the buffer length.
16
+ * @throws ReadBufferError if the cursor has advanced past the buffer length.
17
17
  */
18
18
  getValue(): Promise<Uint8Array>;
19
19
  /**
@@ -42,7 +42,7 @@ export interface ReadableTapLike {
42
42
  skipLong(): Promise<void>;
43
43
  /**
44
44
  * Reads a 32-bit little-endian floating point number.
45
- * @throws RangeError if the read would exceed the buffer.
45
+ * @throws ReadBufferError if the read would exceed the buffer.
46
46
  */
47
47
  readFloat(): Promise<number>;
48
48
  /**
@@ -51,7 +51,7 @@ export interface ReadableTapLike {
51
51
  skipFloat(): void;
52
52
  /**
53
53
  * Reads a 64-bit little-endian floating point number.
54
- * @throws RangeError if the read would exceed the buffer.
54
+ * @throws ReadBufferError if the read would exceed the buffer.
55
55
  */
56
56
  readDouble(): Promise<number>;
57
57
  /**
@@ -61,7 +61,7 @@ export interface ReadableTapLike {
61
61
  /**
62
62
  * Reads a fixed-length byte sequence into a new buffer.
63
63
  * @param len Number of bytes to read.
64
- * @throws RangeError if the read exceeds the buffer.
64
+ * @throws ReadBufferError if the read exceeds the buffer.
65
65
  */
66
66
  readFixed(len: number): Promise<Uint8Array>;
67
67
  /**
@@ -71,7 +71,7 @@ export interface ReadableTapLike {
71
71
  skipFixed(len: number): void;
72
72
  /**
73
73
  * Reads a length-prefixed byte sequence.
74
- * @throws RangeError if insufficient data remains.
74
+ * @throws ReadBufferError if insufficient data remains.
75
75
  */
76
76
  readBytes(): Promise<Uint8Array>;
77
77
  /**
@@ -80,7 +80,7 @@ export interface ReadableTapLike {
80
80
  skipBytes(): Promise<void>;
81
81
  /**
82
82
  * Reads a length-prefixed UTF-8 string.
83
- * @throws RangeError when the buffer is exhausted prematurely.
83
+ * @throws ReadBufferError when the buffer is exhausted prematurely.
84
84
  */
85
85
  readString(): Promise<string>;
86
86
  /**
@@ -127,8 +127,6 @@ export interface ReadableTapLike {
127
127
  matchBytes(tap: ReadableTapLike): Promise<number>;
128
128
  /** Matches a string value. */
129
129
  matchString(tap: ReadableTapLike): Promise<number>;
130
- /** Unpacks a long-encoded byte array. */
131
- unpackLongBytes(): Promise<Uint8Array>;
132
130
  }
133
131
  /**
134
132
  * Interface for writable tap operations compatible with Avro binary serialization.
@@ -166,9 +164,8 @@ export interface WritableTapLike {
166
164
  /**
167
165
  * Writes a fixed-length byte sequence from the provided buffer.
168
166
  * @param buf Source buffer to copy from.
169
- * @param len Optional number of bytes to write; defaults to the buffer length.
170
167
  */
171
- writeFixed(buf: Uint8Array, len?: number): Promise<void>;
168
+ writeFixed(buf: Uint8Array): Promise<void>;
172
169
  /**
173
170
  * Writes a length-prefixed byte sequence backed by the provided buffer.
174
171
  * @param buf The bytes to write.
@@ -185,11 +182,6 @@ export interface WritableTapLike {
185
182
  * @param len Number of bytes from the string to write.
186
183
  */
187
184
  writeBinary(str: string, len: number): Promise<void>;
188
- /**
189
- * Encodes an 8-byte two's complement integer into zig-zag encoded varint bytes.
190
- * @param arr Buffer containing the 8-byte value to encode; reused during processing.
191
- */
192
- packLongBytes(arr: Uint8Array): Promise<void>;
193
185
  }
194
186
  /** Abstract base class for tap implementations that manage buffer position. */
195
187
  export declare abstract class TapBase {
@@ -229,7 +221,7 @@ export declare class ReadableTap extends TapBase implements ReadableTapLike {
229
221
  _testOnlyBuf(): Promise<Uint8Array>;
230
222
  /**
231
223
  * Returns the buffer contents from the start up to the current cursor.
232
- * @throws RangeError if the cursor has advanced past the buffer length.
224
+ * @throws ReadBufferError if the cursor has advanced past the buffer length.
233
225
  */
234
226
  getValue(): Promise<Uint8Array>;
235
227
  /** Retrieves the byte at the specified position in the buffer. */
@@ -260,7 +252,7 @@ export declare class ReadableTap extends TapBase implements ReadableTapLike {
260
252
  skipLong(): Promise<void>;
261
253
  /**
262
254
  * Reads a 32-bit little-endian floating point number.
263
- * @throws RangeError if the read would exceed the buffer.
255
+ * @throws ReadBufferError if the read would exceed the buffer.
264
256
  */
265
257
  readFloat(): Promise<number>;
266
258
  /**
@@ -269,7 +261,7 @@ export declare class ReadableTap extends TapBase implements ReadableTapLike {
269
261
  skipFloat(): void;
270
262
  /**
271
263
  * Reads a 64-bit little-endian floating point number.
272
- * @throws RangeError if the read would exceed the buffer.
264
+ * @throws ReadBufferError if the read would exceed the buffer.
273
265
  */
274
266
  readDouble(): Promise<number>;
275
267
  /**
@@ -279,7 +271,7 @@ export declare class ReadableTap extends TapBase implements ReadableTapLike {
279
271
  /**
280
272
  * Reads a fixed-length byte sequence into a new buffer.
281
273
  * @param len Number of bytes to read.
282
- * @throws RangeError if the read exceeds the buffer.
274
+ * @throws ReadBufferError if the read exceeds the buffer.
283
275
  */
284
276
  readFixed(len: number): Promise<Uint8Array>;
285
277
  /**
@@ -289,7 +281,7 @@ export declare class ReadableTap extends TapBase implements ReadableTapLike {
289
281
  skipFixed(len: number): void;
290
282
  /**
291
283
  * Reads a length-prefixed byte sequence.
292
- * @throws RangeError if insufficient data remains.
284
+ * @throws ReadBufferError if insufficient data remains.
293
285
  */
294
286
  readBytes(): Promise<Uint8Array>;
295
287
  /**
@@ -302,7 +294,7 @@ export declare class ReadableTap extends TapBase implements ReadableTapLike {
302
294
  skipString(): Promise<void>;
303
295
  /**
304
296
  * Reads a length-prefixed UTF-8 string.
305
- * @throws RangeError when the buffer is exhausted prematurely.
297
+ * @throws ReadBufferError when the buffer is exhausted prematurely.
306
298
  */
307
299
  readString(): Promise<string>;
308
300
  /**
@@ -348,10 +340,6 @@ export declare class ReadableTap extends TapBase implements ReadableTapLike {
348
340
  * @returns Comparison result using -1/0/1 semantics.
349
341
  */
350
342
  matchString(tap: ReadableTapLike): Promise<number>;
351
- /**
352
- * Decodes the next zig-zag encoded long into an 8-byte two's complement buffer.
353
- */
354
- unpackLongBytes(): Promise<Uint8Array>;
355
343
  }
356
344
  /**
357
345
  * Binary tap that exposes Avro-compatible write helpers on top of a writable buffer.
@@ -379,6 +367,7 @@ export declare class WritableTap extends TapBase implements WritableTapLike {
379
367
  writeBoolean(value: boolean): Promise<void>;
380
368
  /**
381
369
  * Writes a zig-zag encoded 32-bit signed integer.
370
+ * Uses a 32-bit zig-zag + varint path to avoid BigInt casts for performance.
382
371
  * @param n Integer value to write.
383
372
  */
384
373
  writeInt(n: number): Promise<void>;
@@ -400,9 +389,8 @@ export declare class WritableTap extends TapBase implements WritableTapLike {
400
389
  /**
401
390
  * Writes a fixed-length byte sequence from the provided buffer.
402
391
  * @param buf Source buffer to copy from.
403
- * @param len Optional number of bytes to write; defaults to the buffer length.
404
392
  */
405
- writeFixed(buf: Uint8Array, len?: number): Promise<void>;
393
+ writeFixed(buf: Uint8Array): Promise<void>;
406
394
  /**
407
395
  * Writes a length-prefixed byte sequence backed by the provided buffer.
408
396
  * @param buf Bytes to write.
@@ -419,9 +407,4 @@ export declare class WritableTap extends TapBase implements WritableTapLike {
419
407
  * @param len Number of bytes from the string to write.
420
408
  */
421
409
  writeBinary(str: string, len: number): Promise<void>;
422
- /**
423
- * Encodes an 8-byte two's complement integer into zig-zag encoded varint bytes.
424
- * @param arr Buffer containing the 8-byte value to encode; reused during processing.
425
- */
426
- packLongBytes(arr: Uint8Array): Promise<void>;
427
410
  }