@sachitv/avro-typescript 0.4.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 (163) hide show
  1. package/esm/_dnt.polyfills.d.ts +11 -0
  2. package/esm/_dnt.polyfills.js +15 -0
  3. package/esm/avro_reader.d.ts +156 -0
  4. package/esm/avro_reader.js +201 -0
  5. package/esm/avro_writer.d.ts +75 -0
  6. package/esm/avro_writer.js +105 -0
  7. package/esm/internal/collections/array_utils.d.ts +4 -0
  8. package/esm/internal/collections/array_utils.js +18 -0
  9. package/esm/internal/collections/circular_buffer.d.ts +48 -0
  10. package/esm/internal/collections/circular_buffer.js +129 -0
  11. package/esm/internal/crypto/md5.d.ts +12 -0
  12. package/esm/internal/crypto/md5.js +158 -0
  13. package/esm/internal/varint.d.ts +6 -0
  14. package/esm/internal/varint.js +30 -0
  15. package/esm/mod.d.ts +77 -0
  16. package/esm/mod.js +73 -0
  17. package/esm/package.json +3 -0
  18. package/esm/rpc/definitions/message_definition.d.ts +34 -0
  19. package/esm/rpc/definitions/message_definition.js +105 -0
  20. package/esm/rpc/definitions/protocol_definitions.d.ts +197 -0
  21. package/esm/rpc/definitions/protocol_definitions.js +1 -0
  22. package/esm/rpc/message_endpoint/base.d.ts +43 -0
  23. package/esm/rpc/message_endpoint/base.js +81 -0
  24. package/esm/rpc/message_endpoint/emitter.d.ts +96 -0
  25. package/esm/rpc/message_endpoint/emitter.js +245 -0
  26. package/esm/rpc/message_endpoint/helpers.d.ts +37 -0
  27. package/esm/rpc/message_endpoint/helpers.js +68 -0
  28. package/esm/rpc/message_endpoint/listener.d.ts +37 -0
  29. package/esm/rpc/message_endpoint/listener.js +212 -0
  30. package/esm/rpc/protocol/frame_assembler.d.ts +11 -0
  31. package/esm/rpc/protocol/frame_assembler.js +77 -0
  32. package/esm/rpc/protocol/protocol_helpers.d.ts +59 -0
  33. package/esm/rpc/protocol/protocol_helpers.js +123 -0
  34. package/esm/rpc/protocol/transports/fetch.d.ts +9 -0
  35. package/esm/rpc/protocol/transports/fetch.js +30 -0
  36. package/esm/rpc/protocol/transports/in_memory.d.ts +27 -0
  37. package/esm/rpc/protocol/transports/in_memory.js +125 -0
  38. package/esm/rpc/protocol/transports/transport_helpers.d.ts +118 -0
  39. package/esm/rpc/protocol/transports/transport_helpers.js +112 -0
  40. package/esm/rpc/protocol/transports/websocket.d.ts +9 -0
  41. package/esm/rpc/protocol/transports/websocket.js +102 -0
  42. package/esm/rpc/protocol/wire_format/framing.d.ts +44 -0
  43. package/esm/rpc/protocol/wire_format/framing.js +74 -0
  44. package/esm/rpc/protocol/wire_format/handshake.d.ts +110 -0
  45. package/esm/rpc/protocol/wire_format/handshake.js +239 -0
  46. package/esm/rpc/protocol/wire_format/messages.d.ts +192 -0
  47. package/esm/rpc/protocol/wire_format/messages.js +175 -0
  48. package/esm/rpc/protocol/wire_format/metadata.d.ts +44 -0
  49. package/esm/rpc/protocol/wire_format/metadata.js +74 -0
  50. package/esm/rpc/protocol_core.d.ts +121 -0
  51. package/esm/rpc/protocol_core.js +285 -0
  52. package/esm/schemas/base_type.d.ts +41 -0
  53. package/esm/schemas/base_type.js +49 -0
  54. package/esm/schemas/complex/array_type.d.ts +100 -0
  55. package/esm/schemas/complex/array_type.js +299 -0
  56. package/esm/schemas/complex/enum_type.d.ts +81 -0
  57. package/esm/schemas/complex/enum_type.js +217 -0
  58. package/esm/schemas/complex/fixed_type.d.ts +99 -0
  59. package/esm/schemas/complex/fixed_type.js +208 -0
  60. package/esm/schemas/complex/map_type.d.ts +97 -0
  61. package/esm/schemas/complex/map_type.js +290 -0
  62. package/esm/schemas/complex/named_type.d.ts +30 -0
  63. package/esm/schemas/complex/named_type.js +57 -0
  64. package/esm/schemas/complex/record_type.d.ts +165 -0
  65. package/esm/schemas/complex/record_type.js +547 -0
  66. package/esm/schemas/complex/resolve_names.d.ts +32 -0
  67. package/esm/schemas/complex/resolve_names.js +85 -0
  68. package/esm/schemas/complex/union_type.d.ts +116 -0
  69. package/esm/schemas/complex/union_type.js +392 -0
  70. package/esm/schemas/error.d.ts +31 -0
  71. package/esm/schemas/error.js +67 -0
  72. package/esm/schemas/json.d.ts +6 -0
  73. package/esm/schemas/json.js +35 -0
  74. package/esm/schemas/logical/decimal_logical_type.d.ts +49 -0
  75. package/esm/schemas/logical/decimal_logical_type.js +145 -0
  76. package/esm/schemas/logical/duration_logical_type.d.ts +66 -0
  77. package/esm/schemas/logical/duration_logical_type.js +112 -0
  78. package/esm/schemas/logical/logical_type.d.ts +138 -0
  79. package/esm/schemas/logical/logical_type.js +240 -0
  80. package/esm/schemas/logical/temporal_logical_types.d.ts +215 -0
  81. package/esm/schemas/logical/temporal_logical_types.js +364 -0
  82. package/esm/schemas/logical/uuid_logical_type.d.ts +63 -0
  83. package/esm/schemas/logical/uuid_logical_type.js +146 -0
  84. package/esm/schemas/primitive/boolean_type.d.ts +49 -0
  85. package/esm/schemas/primitive/boolean_type.js +75 -0
  86. package/esm/schemas/primitive/bytes_type.d.ts +49 -0
  87. package/esm/schemas/primitive/bytes_type.js +136 -0
  88. package/esm/schemas/primitive/double_type.d.ts +38 -0
  89. package/esm/schemas/primitive/double_type.js +98 -0
  90. package/esm/schemas/primitive/fixed_size_base_type.d.ts +28 -0
  91. package/esm/schemas/primitive/fixed_size_base_type.js +33 -0
  92. package/esm/schemas/primitive/float_type.d.ts +38 -0
  93. package/esm/schemas/primitive/float_type.js +88 -0
  94. package/esm/schemas/primitive/int_type.d.ts +31 -0
  95. package/esm/schemas/primitive/int_type.js +63 -0
  96. package/esm/schemas/primitive/long_type.d.ts +36 -0
  97. package/esm/schemas/primitive/long_type.js +95 -0
  98. package/esm/schemas/primitive/null_type.d.ts +45 -0
  99. package/esm/schemas/primitive/null_type.js +71 -0
  100. package/esm/schemas/primitive/primitive_type.d.ts +17 -0
  101. package/esm/schemas/primitive/primitive_type.js +27 -0
  102. package/esm/schemas/primitive/string_type.d.ts +34 -0
  103. package/esm/schemas/primitive/string_type.js +81 -0
  104. package/esm/schemas/resolver.d.ts +25 -0
  105. package/esm/schemas/resolver.js +25 -0
  106. package/esm/schemas/type.d.ts +101 -0
  107. package/esm/schemas/type.js +6 -0
  108. package/esm/serialization/avro_constants.d.ts +13 -0
  109. package/esm/serialization/avro_constants.js +29 -0
  110. package/esm/serialization/avro_file_parser.d.ts +68 -0
  111. package/esm/serialization/avro_file_parser.js +191 -0
  112. package/esm/serialization/avro_file_writer.d.ts +63 -0
  113. package/esm/serialization/avro_file_writer.js +235 -0
  114. package/esm/serialization/buffers/blob_readable_buffer.d.ts +53 -0
  115. package/esm/serialization/buffers/blob_readable_buffer.js +80 -0
  116. package/esm/serialization/buffers/buffer.d.ts +37 -0
  117. package/esm/serialization/buffers/buffer.js +1 -0
  118. package/esm/serialization/buffers/in_memory_buffer.d.ts +121 -0
  119. package/esm/serialization/buffers/in_memory_buffer.js +206 -0
  120. package/esm/serialization/clamp.d.ts +10 -0
  121. package/esm/serialization/clamp.js +19 -0
  122. package/esm/serialization/compare_bytes.d.ts +9 -0
  123. package/esm/serialization/compare_bytes.js +45 -0
  124. package/esm/serialization/conversion.d.ts +8 -0
  125. package/esm/serialization/conversion.js +15 -0
  126. package/esm/serialization/decoders/decoder.d.ts +16 -0
  127. package/esm/serialization/decoders/decoder.js +1 -0
  128. package/esm/serialization/decoders/deflate_decoder.d.ts +15 -0
  129. package/esm/serialization/decoders/deflate_decoder.js +26 -0
  130. package/esm/serialization/decoders/null_decoder.d.ts +12 -0
  131. package/esm/serialization/decoders/null_decoder.js +13 -0
  132. package/esm/serialization/encoders/deflate_encoder.d.ts +15 -0
  133. package/esm/serialization/encoders/deflate_encoder.js +26 -0
  134. package/esm/serialization/encoders/encoder.d.ts +16 -0
  135. package/esm/serialization/encoders/encoder.js +1 -0
  136. package/esm/serialization/encoders/null_encoder.d.ts +12 -0
  137. package/esm/serialization/encoders/null_encoder.js +13 -0
  138. package/esm/serialization/manipulate_bytes.d.ts +6 -0
  139. package/esm/serialization/manipulate_bytes.js +13 -0
  140. package/esm/serialization/read_uint_le.d.ts +4 -0
  141. package/esm/serialization/read_uint_le.js +14 -0
  142. package/esm/serialization/streams/fixed_size_stream_readable_buffer_adapter.d.ts +52 -0
  143. package/esm/serialization/streams/fixed_size_stream_readable_buffer_adapter.js +129 -0
  144. package/esm/serialization/streams/forward_only_stream_readable_buffer_adapter.d.ts +36 -0
  145. package/esm/serialization/streams/forward_only_stream_readable_buffer_adapter.js +114 -0
  146. package/esm/serialization/streams/stream_readable_buffer.d.ts +41 -0
  147. package/esm/serialization/streams/stream_readable_buffer.js +64 -0
  148. package/esm/serialization/streams/stream_readable_buffer_adapter.d.ts +38 -0
  149. package/esm/serialization/streams/stream_readable_buffer_adapter.js +105 -0
  150. package/esm/serialization/streams/stream_writable_buffer.d.ts +42 -0
  151. package/esm/serialization/streams/stream_writable_buffer.js +64 -0
  152. package/esm/serialization/streams/stream_writable_buffer_adapter.d.ts +36 -0
  153. package/esm/serialization/streams/stream_writable_buffer_adapter.js +65 -0
  154. package/esm/serialization/streams/streams.d.ts +29 -0
  155. package/esm/serialization/streams/streams.js +1 -0
  156. package/esm/serialization/tap.d.ts +427 -0
  157. package/esm/serialization/tap.js +605 -0
  158. package/esm/serialization/text_encoding.d.ts +12 -0
  159. package/esm/serialization/text_encoding.js +14 -0
  160. package/esm/type/create_type.d.ts +54 -0
  161. package/esm/type/create_type.js +401 -0
  162. package/package.json +33 -0
  163. package/sachitv-avro-typescript-0.4.0.tgz +0 -0
@@ -0,0 +1,52 @@
1
+ import type { IReadableBuffer } from "../buffers/buffer.js";
2
+ import type { IStreamReadableBuffer } from "./streams.js";
3
+ import { CircularBuffer } from "../../internal/collections/circular_buffer.js";
4
+ /**
5
+ * A limited buffer adapter that maintains a rolling window of stream data.
6
+ * This provides memory-efficient random access within a sliding window,
7
+ * but cannot access data that has been discarded from the window.
8
+ *
9
+ * Key features:
10
+ * - Rolling window: Maintains only a limited amount of data in memory
11
+ * - Forward access: Can read data ahead in the stream
12
+ * - Limited backward access: Can only access data within the current window
13
+ * - Memory efficient: Suitable for large streams where full buffering is impractical
14
+ *
15
+ * Limitations:
16
+ * - Cannot access data before the current window start
17
+ * - Window size determines maximum backward seek distance
18
+ */
19
+ export declare class FixedSizeStreamReadableBufferAdapter implements IReadableBuffer {
20
+ #private;
21
+ /**
22
+ * Creates a new limited buffer adapter.
23
+ *
24
+ * @param streamBuffer The stream buffer to read from
25
+ * @param windowSize The size of the rolling window in bytes
26
+ * @param circularBuffer Optional circular buffer for testing
27
+ */
28
+ constructor(streamBuffer: IStreamReadableBuffer, windowSize: number, circularBuffer?: CircularBuffer);
29
+ /**
30
+ * Gets the total length of the buffer.
31
+ * For limited buffers, this returns the current buffer end position.
32
+ * Note: This may not represent the total stream length if not fully buffered.
33
+ *
34
+ * @returns The current buffer length in bytes
35
+ */
36
+ length(): Promise<number>;
37
+ /**
38
+ * Reads a sequence of bytes from the buffer starting at the specified offset.
39
+ * The offset is relative to the stream start.
40
+ *
41
+ * @param offset The byte offset to start reading from (0-based, stream-relative)
42
+ * @param size The number of bytes to read
43
+ * @returns A Promise that resolves to a new Uint8Array containing the read bytes, or undefined if the read would exceed buffer bounds
44
+ */
45
+ read(offset: number, size: number): Promise<Uint8Array | undefined>;
46
+ /**
47
+ * Checks if more data can be read starting at the given offset.
48
+ * @param offset The byte offset to check.
49
+ * @returns True if at least one byte can be read from the offset.
50
+ */
51
+ canReadMore(offset: number): Promise<boolean>;
52
+ }
@@ -0,0 +1,129 @@
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 _FixedSizeStreamReadableBufferAdapter_instances, _FixedSizeStreamReadableBufferAdapter_streamBuffer, _FixedSizeStreamReadableBufferAdapter_windowSize, _FixedSizeStreamReadableBufferAdapter_circularBuffer, _FixedSizeStreamReadableBufferAdapter_eof, _FixedSizeStreamReadableBufferAdapter_extractFromBuffer, _FixedSizeStreamReadableBufferAdapter_fillBuffer;
13
+ import { CircularBuffer } from "../../internal/collections/circular_buffer.js";
14
+ /**
15
+ * A limited buffer adapter that maintains a rolling window of stream data.
16
+ * This provides memory-efficient random access within a sliding window,
17
+ * but cannot access data that has been discarded from the window.
18
+ *
19
+ * Key features:
20
+ * - Rolling window: Maintains only a limited amount of data in memory
21
+ * - Forward access: Can read data ahead in the stream
22
+ * - Limited backward access: Can only access data within the current window
23
+ * - Memory efficient: Suitable for large streams where full buffering is impractical
24
+ *
25
+ * Limitations:
26
+ * - Cannot access data before the current window start
27
+ * - Window size determines maximum backward seek distance
28
+ */
29
+ export class FixedSizeStreamReadableBufferAdapter {
30
+ /**
31
+ * Creates a new limited buffer adapter.
32
+ *
33
+ * @param streamBuffer The stream buffer to read from
34
+ * @param windowSize The size of the rolling window in bytes
35
+ * @param circularBuffer Optional circular buffer for testing
36
+ */
37
+ constructor(streamBuffer, windowSize, circularBuffer) {
38
+ _FixedSizeStreamReadableBufferAdapter_instances.add(this);
39
+ _FixedSizeStreamReadableBufferAdapter_streamBuffer.set(this, void 0);
40
+ _FixedSizeStreamReadableBufferAdapter_windowSize.set(this, void 0);
41
+ _FixedSizeStreamReadableBufferAdapter_circularBuffer.set(this, void 0);
42
+ _FixedSizeStreamReadableBufferAdapter_eof.set(this, void 0);
43
+ if (windowSize <= 0) {
44
+ throw new RangeError("Window size must be positive");
45
+ }
46
+ __classPrivateFieldSet(this, _FixedSizeStreamReadableBufferAdapter_streamBuffer, streamBuffer, "f");
47
+ __classPrivateFieldSet(this, _FixedSizeStreamReadableBufferAdapter_windowSize, windowSize, "f");
48
+ __classPrivateFieldSet(this, _FixedSizeStreamReadableBufferAdapter_circularBuffer, circularBuffer ?? new CircularBuffer(windowSize), "f");
49
+ __classPrivateFieldSet(this, _FixedSizeStreamReadableBufferAdapter_eof, false, "f");
50
+ }
51
+ /**
52
+ * Gets the total length of the buffer.
53
+ * For limited buffers, this returns the current buffer end position.
54
+ * Note: This may not represent the total stream length if not fully buffered.
55
+ *
56
+ * @returns The current buffer length in bytes
57
+ */
58
+ // deno-lint-ignore require-await
59
+ async length() {
60
+ return __classPrivateFieldGet(this, _FixedSizeStreamReadableBufferAdapter_circularBuffer, "f").windowEnd();
61
+ }
62
+ /**
63
+ * Reads a sequence of bytes from the buffer starting at the specified offset.
64
+ * The offset is relative to the stream start.
65
+ *
66
+ * @param offset The byte offset to start reading from (0-based, stream-relative)
67
+ * @param size The number of bytes to read
68
+ * @returns A Promise that resolves to a new Uint8Array containing the read bytes, or undefined if the read would exceed buffer bounds
69
+ */
70
+ async read(offset, size) {
71
+ if (offset < 0 || size < 0) {
72
+ return undefined;
73
+ }
74
+ // Check if requested size exceeds window size - throw error immediately
75
+ if (size > __classPrivateFieldGet(this, _FixedSizeStreamReadableBufferAdapter_windowSize, "f")) {
76
+ throw new RangeError(`Requested size ${size} exceeds window size ${__classPrivateFieldGet(this, _FixedSizeStreamReadableBufferAdapter_windowSize, "f")}`);
77
+ }
78
+ // Check if offset is before the current window start - raise error
79
+ if (offset < __classPrivateFieldGet(this, _FixedSizeStreamReadableBufferAdapter_circularBuffer, "f").windowStart()) {
80
+ throw new RangeError(`Cannot read data before window start. Offset ${offset} is before window start ${__classPrivateFieldGet(this, _FixedSizeStreamReadableBufferAdapter_circularBuffer, "f").windowStart()}`);
81
+ }
82
+ // Check if data is already in cache
83
+ if (offset + size <= __classPrivateFieldGet(this, _FixedSizeStreamReadableBufferAdapter_circularBuffer, "f").windowEnd()) {
84
+ // Data is already cached, extract it directly
85
+ return __classPrivateFieldGet(this, _FixedSizeStreamReadableBufferAdapter_instances, "m", _FixedSizeStreamReadableBufferAdapter_extractFromBuffer).call(this, offset, size);
86
+ }
87
+ // Data is not in cache, wait until it's loaded
88
+ await __classPrivateFieldGet(this, _FixedSizeStreamReadableBufferAdapter_instances, "m", _FixedSizeStreamReadableBufferAdapter_fillBuffer).call(this, offset + size);
89
+ // Check if the requested range is available after filling
90
+ if (offset + size > __classPrivateFieldGet(this, _FixedSizeStreamReadableBufferAdapter_circularBuffer, "f").windowEnd()) {
91
+ return undefined;
92
+ }
93
+ // Extract data from buffer
94
+ return __classPrivateFieldGet(this, _FixedSizeStreamReadableBufferAdapter_instances, "m", _FixedSizeStreamReadableBufferAdapter_extractFromBuffer).call(this, offset, size);
95
+ }
96
+ /**
97
+ * Checks if more data can be read starting at the given offset.
98
+ * @param offset The byte offset to check.
99
+ * @returns True if at least one byte can be read from the offset.
100
+ */
101
+ async canReadMore(offset) {
102
+ const result = await this.read(offset, 1);
103
+ return result !== undefined;
104
+ }
105
+ }
106
+ _FixedSizeStreamReadableBufferAdapter_streamBuffer = new WeakMap(), _FixedSizeStreamReadableBufferAdapter_windowSize = new WeakMap(), _FixedSizeStreamReadableBufferAdapter_circularBuffer = new WeakMap(), _FixedSizeStreamReadableBufferAdapter_eof = new WeakMap(), _FixedSizeStreamReadableBufferAdapter_instances = new WeakSet(), _FixedSizeStreamReadableBufferAdapter_extractFromBuffer = function _FixedSizeStreamReadableBufferAdapter_extractFromBuffer(offset, size) {
107
+ return __classPrivateFieldGet(this, _FixedSizeStreamReadableBufferAdapter_circularBuffer, "f").get(offset, size);
108
+ }, _FixedSizeStreamReadableBufferAdapter_fillBuffer =
109
+ /**
110
+ * Fills the buffer with data from the stream until at least targetOffset is reached.
111
+ */
112
+ async function _FixedSizeStreamReadableBufferAdapter_fillBuffer(targetOffset) {
113
+ while (!__classPrivateFieldGet(this, _FixedSizeStreamReadableBufferAdapter_eof, "f") && __classPrivateFieldGet(this, _FixedSizeStreamReadableBufferAdapter_circularBuffer, "f").windowEnd() < targetOffset) {
114
+ const chunk = await __classPrivateFieldGet(this, _FixedSizeStreamReadableBufferAdapter_streamBuffer, "f").readNext();
115
+ if (chunk === undefined) {
116
+ __classPrivateFieldSet(this, _FixedSizeStreamReadableBufferAdapter_eof, true, "f");
117
+ break;
118
+ }
119
+ try {
120
+ __classPrivateFieldGet(this, _FixedSizeStreamReadableBufferAdapter_circularBuffer, "f").push(chunk);
121
+ }
122
+ catch (error) {
123
+ if (error instanceof RangeError) {
124
+ throw new RangeError(`Cannot buffer chunk of size ${chunk.length}: ${error.message}`);
125
+ }
126
+ throw error;
127
+ }
128
+ }
129
+ };
@@ -0,0 +1,36 @@
1
+ import type { IStreamReadableBuffer } from "./streams.js";
2
+ import type { IReadableBuffer } from "../buffers/buffer.js";
3
+ /**
4
+ * Adapter that wraps an IStreamReadableBuffer to provide forward-only reading.
5
+ * This adapter only allows forward sequential reads. Attempting to read backwards
6
+ * or seek forward will throw an error. The buffer grows as needed and shrinks
7
+ * by discarding consumed data to save memory.
8
+ */
9
+ export declare class ForwardOnlyStreamReadableBufferAdapter implements IReadableBuffer {
10
+ #private;
11
+ /**
12
+ * Creates a new forward-only adapter from a stream readable buffer.
13
+ * Reads must be sequential from the current position.
14
+ *
15
+ * @param streamBuffer The stream buffer to adapt.
16
+ */
17
+ constructor(streamBuffer: IStreamReadableBuffer);
18
+ /**
19
+ * Reads a sequence of bytes from the buffer starting at the current position.
20
+ * Only sequential reads are allowed; attempting to read backwards or seek
21
+ * forward will throw an error. The read advances the current position.
22
+ *
23
+ * @param offset The byte offset to start reading from (must be current position).
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.
27
+ */
28
+ read(offset: number, size: number): Promise<Uint8Array | undefined>;
29
+ /**
30
+ * Checks if more data can be read at the specified offset.
31
+ * Only allows reading at the current position; throws errors for backward or forward seeking.
32
+ * @param offset - The offset to check for readability
33
+ * @returns Promise resolving to true if data is available at the current position, false otherwise
34
+ */
35
+ canReadMore(offset: number): Promise<boolean>;
36
+ }
@@ -0,0 +1,114 @@
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 _ForwardOnlyStreamReadableBufferAdapter_instances, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, _ForwardOnlyStreamReadableBufferAdapter_streamBuffer, _ForwardOnlyStreamReadableBufferAdapter_eof, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, _ForwardOnlyStreamReadableBufferAdapter_ensureBufferedUpTo;
13
+ /**
14
+ * Adapter that wraps an IStreamReadableBuffer to provide forward-only reading.
15
+ * This adapter only allows forward sequential reads. Attempting to read backwards
16
+ * or seek forward will throw an error. The buffer grows as needed and shrinks
17
+ * by discarding consumed data to save memory.
18
+ */
19
+ export class ForwardOnlyStreamReadableBufferAdapter {
20
+ /**
21
+ * Creates a new forward-only adapter from a stream readable buffer.
22
+ * Reads must be sequential from the current position.
23
+ *
24
+ * @param streamBuffer The stream buffer to adapt.
25
+ */
26
+ constructor(streamBuffer) {
27
+ _ForwardOnlyStreamReadableBufferAdapter_instances.add(this);
28
+ _ForwardOnlyStreamReadableBufferAdapter_bufferedData.set(this, null);
29
+ _ForwardOnlyStreamReadableBufferAdapter_streamBuffer.set(this, void 0);
30
+ _ForwardOnlyStreamReadableBufferAdapter_eof.set(this, false);
31
+ _ForwardOnlyStreamReadableBufferAdapter_currentPosition.set(this, 0);
32
+ __classPrivateFieldSet(this, _ForwardOnlyStreamReadableBufferAdapter_streamBuffer, streamBuffer, "f");
33
+ }
34
+ /**
35
+ * Reads a sequence of bytes from the buffer starting at the current position.
36
+ * Only sequential reads are allowed; attempting to read backwards or seek
37
+ * forward will throw an error. The read advances the current position.
38
+ *
39
+ * @param offset The byte offset to start reading from (must be current position).
40
+ * @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.
43
+ */
44
+ async read(offset, size) {
45
+ if (offset < 0 || size < 0) {
46
+ return undefined;
47
+ }
48
+ if (offset < __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f")) {
49
+ throw new Error("Cannot read backwards from current position");
50
+ }
51
+ if (offset > __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f")) {
52
+ throw new Error("Cannot seek forward; reads must be sequential");
53
+ }
54
+ // At this point, offset must equal currentPosition due to the checks above
55
+ await __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_instances, "m", _ForwardOnlyStreamReadableBufferAdapter_ensureBufferedUpTo).call(this, __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f") + size);
56
+ if (__classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, "f") === null || size > __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, "f").length) {
57
+ return undefined;
58
+ }
59
+ const result = __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, "f").slice(0, size);
60
+ // Advance position
61
+ __classPrivateFieldSet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f") + size, "f");
62
+ // Trim buffer to discard consumed data
63
+ // Split from size position onwards
64
+ __classPrivateFieldSet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, "f").slice(size), "f");
65
+ return result;
66
+ }
67
+ /**
68
+ * Checks if more data can be read at the specified offset.
69
+ * Only allows reading at the current position; throws errors for backward or forward seeking.
70
+ * @param offset - The offset to check for readability
71
+ * @returns Promise resolving to true if data is available at the current position, false otherwise
72
+ */
73
+ async canReadMore(offset) {
74
+ if (offset < __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f")) {
75
+ throw new Error("Cannot read backwards from current position");
76
+ }
77
+ if (offset > __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f")) {
78
+ throw new Error("Cannot seek forward; reads must be sequential");
79
+ }
80
+ await __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_instances, "m", _ForwardOnlyStreamReadableBufferAdapter_ensureBufferedUpTo).call(this, __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f") + 1);
81
+ if (__classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, "f") === null) {
82
+ return false;
83
+ }
84
+ return __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, "f").length > 0;
85
+ }
86
+ }
87
+ _ForwardOnlyStreamReadableBufferAdapter_bufferedData = new WeakMap(), _ForwardOnlyStreamReadableBufferAdapter_streamBuffer = new WeakMap(), _ForwardOnlyStreamReadableBufferAdapter_eof = new WeakMap(), _ForwardOnlyStreamReadableBufferAdapter_currentPosition = new WeakMap(), _ForwardOnlyStreamReadableBufferAdapter_instances = new WeakSet(), _ForwardOnlyStreamReadableBufferAdapter_ensureBufferedUpTo =
88
+ /**
89
+ * Ensures data is buffered up to the specified target offset.
90
+ * Loads chunks progressively until the target is reached or EOF.
91
+ */
92
+ async function _ForwardOnlyStreamReadableBufferAdapter_ensureBufferedUpTo(targetOffset) {
93
+ // Load chunks until we have enough data or reach EOF
94
+ while (!__classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_eof, "f") &&
95
+ (__classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, "f") === null ||
96
+ __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, "f").length + __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_currentPosition, "f") < targetOffset)) {
97
+ const chunk = await __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_streamBuffer, "f").readNext();
98
+ if (chunk === undefined) {
99
+ __classPrivateFieldSet(this, _ForwardOnlyStreamReadableBufferAdapter_eof, true, "f");
100
+ break;
101
+ }
102
+ // Expand buffer to accommodate new chunk
103
+ if (__classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, "f") === null) {
104
+ __classPrivateFieldSet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, chunk, "f");
105
+ }
106
+ else {
107
+ const currentLength = __classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, "f").length;
108
+ const newBuffer = new Uint8Array(currentLength + chunk.length);
109
+ newBuffer.set(__classPrivateFieldGet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, "f"));
110
+ newBuffer.set(chunk, currentLength);
111
+ __classPrivateFieldSet(this, _ForwardOnlyStreamReadableBufferAdapter_bufferedData, newBuffer, "f");
112
+ }
113
+ }
114
+ };
@@ -0,0 +1,41 @@
1
+ import type { IStreamReadableBuffer } from "./streams.js";
2
+ /**
3
+ * A readable buffer implementation that reads data sequentially from a ReadableStream.
4
+ * This provides streaming read capabilities for large data sources.
5
+ *
6
+ * Key features:
7
+ * - Stream-backed: Reads data sequentially from a ReadableStream.
8
+ * - Memory efficient: Processes data in chunks without loading everything into memory.
9
+ * - Web standard: Uses the Web Streams API for broad compatibility.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const response = await fetch('large-file.avro');
14
+ * const stream = response.body!;
15
+ * const buffer = new StreamReadableBuffer(stream);
16
+ *
17
+ * let chunk;
18
+ * while ((chunk = await buffer.readNext()) !== undefined) {
19
+ * // Process chunk
20
+ * }
21
+ * ```
22
+ */
23
+ export declare class StreamReadableBuffer implements IStreamReadableBuffer {
24
+ #private;
25
+ /**
26
+ * Creates a new StreamReadableBuffer from the provided ReadableStream.
27
+ *
28
+ * @param stream The ReadableStream to read data from.
29
+ */
30
+ constructor(stream: ReadableStream<Uint8Array>);
31
+ /**
32
+ * Reads the next chunk of data from the stream.
33
+ *
34
+ * @returns A Promise that resolves to the next Uint8Array chunk, or undefined if the stream is exhausted.
35
+ */
36
+ readNext(): Promise<Uint8Array | undefined>;
37
+ /**
38
+ * Closes the stream and releases the reader lock.
39
+ */
40
+ close(): Promise<void>;
41
+ }
@@ -0,0 +1,64 @@
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 _StreamReadableBuffer_reader;
13
+ /**
14
+ * A readable buffer implementation that reads data sequentially from a ReadableStream.
15
+ * This provides streaming read capabilities for large data sources.
16
+ *
17
+ * Key features:
18
+ * - Stream-backed: Reads data sequentially from a ReadableStream.
19
+ * - Memory efficient: Processes data in chunks without loading everything into memory.
20
+ * - Web standard: Uses the Web Streams API for broad compatibility.
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const response = await fetch('large-file.avro');
25
+ * const stream = response.body!;
26
+ * const buffer = new StreamReadableBuffer(stream);
27
+ *
28
+ * let chunk;
29
+ * while ((chunk = await buffer.readNext()) !== undefined) {
30
+ * // Process chunk
31
+ * }
32
+ * ```
33
+ */
34
+ export class StreamReadableBuffer {
35
+ /**
36
+ * Creates a new StreamReadableBuffer from the provided ReadableStream.
37
+ *
38
+ * @param stream The ReadableStream to read data from.
39
+ */
40
+ constructor(stream) {
41
+ _StreamReadableBuffer_reader.set(this, void 0);
42
+ __classPrivateFieldSet(this, _StreamReadableBuffer_reader, stream.getReader(), "f");
43
+ }
44
+ /**
45
+ * Reads the next chunk of data from the stream.
46
+ *
47
+ * @returns A Promise that resolves to the next Uint8Array chunk, or undefined if the stream is exhausted.
48
+ */
49
+ async readNext() {
50
+ const { done, value } = await __classPrivateFieldGet(this, _StreamReadableBuffer_reader, "f").read();
51
+ if (done) {
52
+ return undefined;
53
+ }
54
+ return value;
55
+ }
56
+ /**
57
+ * Closes the stream and releases the reader lock.
58
+ */
59
+ // deno-lint-ignore require-await
60
+ async close() {
61
+ __classPrivateFieldGet(this, _StreamReadableBuffer_reader, "f").releaseLock();
62
+ }
63
+ }
64
+ _StreamReadableBuffer_reader = new WeakMap();
@@ -0,0 +1,38 @@
1
+ import type { IReadableBuffer } from "../buffers/buffer.js";
2
+ import type { IStreamReadableBuffer } from "./streams.js";
3
+ /**
4
+ * Adapter that wraps an IStreamReadableBuffer to provide IReadableBuffer interface.
5
+ * This buffers stream content progressively to enable random access reads.
6
+ */
7
+ export declare class StreamReadableBufferAdapter implements IReadableBuffer {
8
+ #private;
9
+ /**
10
+ * Creates a new adapter from a stream readable buffer.
11
+ * The entire stream will be buffered in memory for random access.
12
+ *
13
+ * @param streamBuffer The stream buffer to adapt.
14
+ */
15
+ constructor(streamBuffer: IStreamReadableBuffer);
16
+ /**
17
+ * Gets the total length of the buffer in bytes.
18
+ * This will buffer the entire stream if not already done.
19
+ *
20
+ * @returns The buffer length in bytes.
21
+ */
22
+ length(): Promise<number>;
23
+ /**
24
+ * Reads a sequence of bytes from the buffer starting at the specified offset.
25
+ * This will buffer data as needed to satisfy the read request.
26
+ *
27
+ * @param offset The byte offset to start reading from (0-based).
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.
30
+ */
31
+ read(offset: number, size: number): Promise<Uint8Array | undefined>;
32
+ /**
33
+ * Checks if more data can be read starting at the given offset.
34
+ * @param offset The byte offset to check.
35
+ * @returns True if at least one byte can be read from the offset.
36
+ */
37
+ canReadMore(offset: number): Promise<boolean>;
38
+ }
@@ -0,0 +1,105 @@
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 _StreamReadableBufferAdapter_instances, _StreamReadableBufferAdapter_bufferedData, _StreamReadableBufferAdapter_streamBuffer, _StreamReadableBufferAdapter_eof, _StreamReadableBufferAdapter_ensureBuffered, _StreamReadableBufferAdapter_ensureBufferedUpTo;
13
+ /**
14
+ * Adapter that wraps an IStreamReadableBuffer to provide IReadableBuffer interface.
15
+ * This buffers stream content progressively to enable random access reads.
16
+ */
17
+ export class StreamReadableBufferAdapter {
18
+ /**
19
+ * Creates a new adapter from a stream readable buffer.
20
+ * The entire stream will be buffered in memory for random access.
21
+ *
22
+ * @param streamBuffer The stream buffer to adapt.
23
+ */
24
+ constructor(streamBuffer) {
25
+ _StreamReadableBufferAdapter_instances.add(this);
26
+ _StreamReadableBufferAdapter_bufferedData.set(this, null);
27
+ _StreamReadableBufferAdapter_streamBuffer.set(this, void 0);
28
+ _StreamReadableBufferAdapter_eof.set(this, false);
29
+ __classPrivateFieldSet(this, _StreamReadableBufferAdapter_streamBuffer, streamBuffer, "f");
30
+ }
31
+ /**
32
+ * Gets the total length of the buffer in bytes.
33
+ * This will buffer the entire stream if not already done.
34
+ *
35
+ * @returns The buffer length in bytes.
36
+ */
37
+ async length() {
38
+ await __classPrivateFieldGet(this, _StreamReadableBufferAdapter_instances, "m", _StreamReadableBufferAdapter_ensureBuffered).call(this);
39
+ return __classPrivateFieldGet(this, _StreamReadableBufferAdapter_bufferedData, "f").length;
40
+ }
41
+ /**
42
+ * Reads a sequence of bytes from the buffer starting at the specified offset.
43
+ * This will buffer data as needed to satisfy the read request.
44
+ *
45
+ * @param offset The byte offset to start reading from (0-based).
46
+ * @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
+ */
49
+ async read(offset, size) {
50
+ if (offset < 0 || size < 0) {
51
+ return undefined;
52
+ }
53
+ // Check if the section is already cached
54
+ if (__classPrivateFieldGet(this, _StreamReadableBufferAdapter_bufferedData, "f") !== null && offset + size <= __classPrivateFieldGet(this, _StreamReadableBufferAdapter_bufferedData, "f").length) {
55
+ return __classPrivateFieldGet(this, _StreamReadableBufferAdapter_bufferedData, "f").slice(offset, offset + size);
56
+ }
57
+ // Load chunks until the necessary data is available
58
+ await __classPrivateFieldGet(this, _StreamReadableBufferAdapter_instances, "m", _StreamReadableBufferAdapter_ensureBufferedUpTo).call(this, offset + size);
59
+ // 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;
62
+ }
63
+ return __classPrivateFieldGet(this, _StreamReadableBufferAdapter_bufferedData, "f").slice(offset, offset + size);
64
+ }
65
+ /**
66
+ * Checks if more data can be read starting at the given offset.
67
+ * @param offset The byte offset to check.
68
+ * @returns True if at least one byte can be read from the offset.
69
+ */
70
+ async canReadMore(offset) {
71
+ const result = await this.read(offset, 1);
72
+ return result !== undefined;
73
+ }
74
+ }
75
+ _StreamReadableBufferAdapter_bufferedData = new WeakMap(), _StreamReadableBufferAdapter_streamBuffer = new WeakMap(), _StreamReadableBufferAdapter_eof = new WeakMap(), _StreamReadableBufferAdapter_instances = new WeakSet(), _StreamReadableBufferAdapter_ensureBuffered =
76
+ /**
77
+ * Ensures the entire stream is buffered in memory.
78
+ */
79
+ async function _StreamReadableBufferAdapter_ensureBuffered() {
80
+ await __classPrivateFieldGet(this, _StreamReadableBufferAdapter_instances, "m", _StreamReadableBufferAdapter_ensureBufferedUpTo).call(this, Infinity);
81
+ }, _StreamReadableBufferAdapter_ensureBufferedUpTo =
82
+ /**
83
+ * Ensures data is buffered up to the specified target offset.
84
+ * Loads chunks progressively until the target is reached or EOF.
85
+ */
86
+ async function _StreamReadableBufferAdapter_ensureBufferedUpTo(targetOffset) {
87
+ // Initialize buffer if needed
88
+ if (__classPrivateFieldGet(this, _StreamReadableBufferAdapter_bufferedData, "f") === null) {
89
+ __classPrivateFieldSet(this, _StreamReadableBufferAdapter_bufferedData, new Uint8Array(0), "f");
90
+ }
91
+ // Load chunks until we have enough data or reach EOF
92
+ while (!__classPrivateFieldGet(this, _StreamReadableBufferAdapter_eof, "f") && __classPrivateFieldGet(this, _StreamReadableBufferAdapter_bufferedData, "f").length < targetOffset) {
93
+ const chunk = await __classPrivateFieldGet(this, _StreamReadableBufferAdapter_streamBuffer, "f").readNext();
94
+ if (chunk === undefined) {
95
+ __classPrivateFieldSet(this, _StreamReadableBufferAdapter_eof, true, "f");
96
+ break;
97
+ }
98
+ // Expand buffer to accommodate new chunk
99
+ const currentLength = __classPrivateFieldGet(this, _StreamReadableBufferAdapter_bufferedData, "f").length;
100
+ const newBuffer = new Uint8Array(currentLength + chunk.length);
101
+ newBuffer.set(__classPrivateFieldGet(this, _StreamReadableBufferAdapter_bufferedData, "f"));
102
+ newBuffer.set(chunk, currentLength);
103
+ __classPrivateFieldSet(this, _StreamReadableBufferAdapter_bufferedData, newBuffer, "f");
104
+ }
105
+ };
@@ -0,0 +1,42 @@
1
+ import type { IStreamWritableBuffer } from "./streams.js";
2
+ /**
3
+ * A writable buffer implementation that writes data sequentially to a WritableStream.
4
+ * This provides streaming write capabilities for large data outputs.
5
+ *
6
+ * Key features:
7
+ * - Stream-backed: Writes data sequentially to a WritableStream.
8
+ * - Memory efficient: Processes data in chunks without buffering everything in memory.
9
+ * - Web standard: Uses the Web Streams API for broad compatibility.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const stream = new WritableStream({
14
+ * write(chunk) {
15
+ * // Handle chunk
16
+ * }
17
+ * });
18
+ * const buffer = new StreamWritableBuffer(stream);
19
+ *
20
+ * await buffer.writeBytes(new Uint8Array([1, 2, 3, 4]));
21
+ * await buffer.close();
22
+ * ```
23
+ */
24
+ export declare class StreamWritableBuffer implements IStreamWritableBuffer {
25
+ #private;
26
+ /**
27
+ * Creates a new StreamWritableBuffer from the provided WritableStream.
28
+ *
29
+ * @param stream The WritableStream to write data to.
30
+ */
31
+ constructor(stream: WritableStream<Uint8Array>);
32
+ /**
33
+ * Writes bytes to the stream.
34
+ *
35
+ * @param data The bytes to write.
36
+ */
37
+ writeBytes(data: Uint8Array): Promise<void>;
38
+ /**
39
+ * Closes the stream and releases the writer lock.
40
+ */
41
+ close(): Promise<void>;
42
+ }