@azure/storage-blob 12.28.0-alpha.20250516.2 → 12.28.0-beta.2

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 (154) hide show
  1. package/dist/browser/generated/src/storageClient.js +1 -1
  2. package/dist/browser/generated/src/storageClient.js.map +1 -1
  3. package/dist/browser/internal-avro/AvroConstants.d.ts +5 -0
  4. package/dist/browser/internal-avro/AvroConstants.d.ts.map +1 -0
  5. package/dist/browser/internal-avro/AvroConstants.js +7 -0
  6. package/dist/browser/internal-avro/AvroConstants.js.map +1 -0
  7. package/dist/browser/internal-avro/AvroParser.d.ts +57 -0
  8. package/dist/browser/internal-avro/AvroParser.d.ts.map +1 -0
  9. package/dist/browser/internal-avro/AvroParser.js +317 -0
  10. package/dist/browser/internal-avro/AvroParser.js.map +1 -0
  11. package/dist/browser/internal-avro/AvroReadable.d.ts +16 -0
  12. package/dist/browser/internal-avro/AvroReadable.d.ts.map +1 -0
  13. package/dist/browser/internal-avro/AvroReadable.js +5 -0
  14. package/dist/browser/internal-avro/AvroReadable.js.map +1 -0
  15. package/dist/browser/internal-avro/AvroReadableFromBlob.d.ts +10 -0
  16. package/dist/browser/internal-avro/AvroReadableFromBlob.d.ts.map +1 -0
  17. package/dist/browser/internal-avro/AvroReadableFromBlob.js +47 -0
  18. package/dist/browser/internal-avro/AvroReadableFromBlob.js.map +1 -0
  19. package/dist/browser/internal-avro/AvroReadableFromStream.d.ts +11 -0
  20. package/dist/browser/internal-avro/AvroReadableFromStream.d.ts.map +1 -0
  21. package/dist/browser/internal-avro/AvroReadableFromStream.js +85 -0
  22. package/dist/browser/internal-avro/AvroReadableFromStream.js.map +1 -0
  23. package/dist/browser/internal-avro/AvroReader.d.ts +32 -0
  24. package/dist/browser/internal-avro/AvroReader.d.ts.map +1 -0
  25. package/dist/browser/internal-avro/AvroReader.js +106 -0
  26. package/dist/browser/internal-avro/AvroReader.js.map +1 -0
  27. package/dist/browser/internal-avro/index-browser.d.mts.map +1 -0
  28. package/dist/browser/internal-avro/index-browser.mjs.map +1 -0
  29. package/dist/browser/internal-avro/index.d.ts +4 -0
  30. package/dist/browser/internal-avro/index.js +6 -0
  31. package/dist/browser/internal-avro/utils/utils.common.d.ts +6 -0
  32. package/dist/browser/internal-avro/utils/utils.common.d.ts.map +1 -0
  33. package/dist/browser/internal-avro/utils/utils.common.js +16 -0
  34. package/dist/browser/internal-avro/utils/utils.common.js.map +1 -0
  35. package/dist/browser/utils/BlobQuickQueryStream.js +1 -1
  36. package/dist/browser/utils/BlobQuickQueryStream.js.map +1 -1
  37. package/dist/browser/utils/constants.js +1 -1
  38. package/dist/browser/utils/constants.js.map +1 -1
  39. package/dist/commonjs/generated/src/storageClient.js +1 -1
  40. package/dist/commonjs/generated/src/storageClient.js.map +1 -1
  41. package/dist/commonjs/internal-avro/AvroConstants.d.ts +5 -0
  42. package/dist/commonjs/internal-avro/AvroConstants.d.ts.map +1 -0
  43. package/dist/commonjs/internal-avro/AvroConstants.js +10 -0
  44. package/dist/commonjs/internal-avro/AvroConstants.js.map +1 -0
  45. package/dist/commonjs/internal-avro/AvroParser.d.ts +57 -0
  46. package/dist/commonjs/internal-avro/AvroParser.d.ts.map +1 -0
  47. package/dist/commonjs/internal-avro/AvroParser.js +322 -0
  48. package/dist/commonjs/internal-avro/AvroParser.js.map +1 -0
  49. package/dist/commonjs/internal-avro/AvroReadable.d.ts +16 -0
  50. package/dist/commonjs/internal-avro/AvroReadable.d.ts.map +1 -0
  51. package/dist/commonjs/internal-avro/AvroReadable.js +9 -0
  52. package/dist/commonjs/internal-avro/AvroReadable.js.map +1 -0
  53. package/dist/commonjs/internal-avro/AvroReadableFromBlob.d.ts +10 -0
  54. package/dist/commonjs/internal-avro/AvroReadableFromBlob.d.ts.map +1 -0
  55. package/dist/commonjs/internal-avro/AvroReadableFromBlob.js +51 -0
  56. package/dist/commonjs/internal-avro/AvroReadableFromBlob.js.map +1 -0
  57. package/dist/commonjs/internal-avro/AvroReadableFromStream.d.ts +11 -0
  58. package/dist/commonjs/internal-avro/AvroReadableFromStream.d.ts.map +1 -0
  59. package/dist/commonjs/internal-avro/AvroReadableFromStream.js +89 -0
  60. package/dist/commonjs/internal-avro/AvroReadableFromStream.js.map +1 -0
  61. package/dist/commonjs/internal-avro/AvroReader.d.ts +32 -0
  62. package/dist/commonjs/internal-avro/AvroReader.d.ts.map +1 -0
  63. package/dist/commonjs/internal-avro/AvroReader.js +110 -0
  64. package/dist/commonjs/internal-avro/AvroReader.js.map +1 -0
  65. package/dist/commonjs/internal-avro/index.d.ts +4 -0
  66. package/dist/commonjs/internal-avro/index.d.ts.map +1 -0
  67. package/dist/commonjs/internal-avro/index.js +12 -0
  68. package/dist/commonjs/internal-avro/index.js.map +1 -0
  69. package/dist/commonjs/internal-avro/utils/utils.common.d.ts +6 -0
  70. package/dist/commonjs/internal-avro/utils/utils.common.d.ts.map +1 -0
  71. package/dist/commonjs/internal-avro/utils/utils.common.js +19 -0
  72. package/dist/commonjs/internal-avro/utils/utils.common.js.map +1 -0
  73. package/dist/commonjs/tsdoc-metadata.json +1 -1
  74. package/dist/commonjs/utils/BlobQuickQueryStream.js +2 -2
  75. package/dist/commonjs/utils/BlobQuickQueryStream.js.map +1 -1
  76. package/dist/commonjs/utils/constants.js +1 -1
  77. package/dist/commonjs/utils/constants.js.map +1 -1
  78. package/dist/esm/generated/src/storageClient.js +1 -1
  79. package/dist/esm/generated/src/storageClient.js.map +1 -1
  80. package/dist/esm/internal-avro/AvroConstants.d.ts +5 -0
  81. package/dist/esm/internal-avro/AvroConstants.d.ts.map +1 -0
  82. package/dist/esm/internal-avro/AvroConstants.js +7 -0
  83. package/dist/esm/internal-avro/AvroConstants.js.map +1 -0
  84. package/dist/esm/internal-avro/AvroParser.d.ts +57 -0
  85. package/dist/esm/internal-avro/AvroParser.d.ts.map +1 -0
  86. package/dist/esm/internal-avro/AvroParser.js +317 -0
  87. package/dist/esm/internal-avro/AvroParser.js.map +1 -0
  88. package/dist/esm/internal-avro/AvroReadable.d.ts +16 -0
  89. package/dist/esm/internal-avro/AvroReadable.d.ts.map +1 -0
  90. package/dist/esm/internal-avro/AvroReadable.js +5 -0
  91. package/dist/esm/internal-avro/AvroReadable.js.map +1 -0
  92. package/dist/esm/internal-avro/AvroReadableFromBlob.d.ts +10 -0
  93. package/dist/esm/internal-avro/AvroReadableFromBlob.d.ts.map +1 -0
  94. package/dist/esm/internal-avro/AvroReadableFromBlob.js +47 -0
  95. package/dist/esm/internal-avro/AvroReadableFromBlob.js.map +1 -0
  96. package/dist/esm/internal-avro/AvroReadableFromStream.d.ts +11 -0
  97. package/dist/esm/internal-avro/AvroReadableFromStream.d.ts.map +1 -0
  98. package/dist/esm/internal-avro/AvroReadableFromStream.js +85 -0
  99. package/dist/esm/internal-avro/AvroReadableFromStream.js.map +1 -0
  100. package/dist/esm/internal-avro/AvroReader.d.ts +32 -0
  101. package/dist/esm/internal-avro/AvroReader.d.ts.map +1 -0
  102. package/dist/esm/internal-avro/AvroReader.js +106 -0
  103. package/dist/esm/internal-avro/AvroReader.js.map +1 -0
  104. package/dist/esm/internal-avro/index.d.ts +4 -0
  105. package/dist/esm/internal-avro/index.d.ts.map +1 -0
  106. package/dist/esm/internal-avro/index.js +6 -0
  107. package/dist/esm/internal-avro/index.js.map +1 -0
  108. package/dist/esm/internal-avro/utils/utils.common.d.ts +6 -0
  109. package/dist/esm/internal-avro/utils/utils.common.d.ts.map +1 -0
  110. package/dist/esm/internal-avro/utils/utils.common.js +16 -0
  111. package/dist/esm/internal-avro/utils/utils.common.js.map +1 -0
  112. package/dist/esm/utils/BlobQuickQueryStream.js +1 -1
  113. package/dist/esm/utils/BlobQuickQueryStream.js.map +1 -1
  114. package/dist/esm/utils/constants.js +1 -1
  115. package/dist/esm/utils/constants.js.map +1 -1
  116. package/dist/react-native/generated/src/storageClient.js +1 -1
  117. package/dist/react-native/generated/src/storageClient.js.map +1 -1
  118. package/dist/react-native/internal-avro/AvroConstants.d.ts +5 -0
  119. package/dist/react-native/internal-avro/AvroConstants.d.ts.map +1 -0
  120. package/dist/react-native/internal-avro/AvroConstants.js +7 -0
  121. package/dist/react-native/internal-avro/AvroConstants.js.map +1 -0
  122. package/dist/react-native/internal-avro/AvroParser.d.ts +57 -0
  123. package/dist/react-native/internal-avro/AvroParser.d.ts.map +1 -0
  124. package/dist/react-native/internal-avro/AvroParser.js +317 -0
  125. package/dist/react-native/internal-avro/AvroParser.js.map +1 -0
  126. package/dist/react-native/internal-avro/AvroReadable.d.ts +16 -0
  127. package/dist/react-native/internal-avro/AvroReadable.d.ts.map +1 -0
  128. package/dist/react-native/internal-avro/AvroReadable.js +5 -0
  129. package/dist/react-native/internal-avro/AvroReadable.js.map +1 -0
  130. package/dist/react-native/internal-avro/AvroReadableFromBlob.d.ts +10 -0
  131. package/dist/react-native/internal-avro/AvroReadableFromBlob.d.ts.map +1 -0
  132. package/dist/react-native/internal-avro/AvroReadableFromBlob.js +47 -0
  133. package/dist/react-native/internal-avro/AvroReadableFromBlob.js.map +1 -0
  134. package/dist/react-native/internal-avro/AvroReadableFromStream.d.ts +11 -0
  135. package/dist/react-native/internal-avro/AvroReadableFromStream.d.ts.map +1 -0
  136. package/dist/react-native/internal-avro/AvroReadableFromStream.js +85 -0
  137. package/dist/react-native/internal-avro/AvroReadableFromStream.js.map +1 -0
  138. package/dist/react-native/internal-avro/AvroReader.d.ts +32 -0
  139. package/dist/react-native/internal-avro/AvroReader.d.ts.map +1 -0
  140. package/dist/react-native/internal-avro/AvroReader.js +106 -0
  141. package/dist/react-native/internal-avro/AvroReader.js.map +1 -0
  142. package/dist/react-native/internal-avro/index.d.ts +4 -0
  143. package/dist/react-native/internal-avro/index.d.ts.map +1 -0
  144. package/dist/react-native/internal-avro/index.js +6 -0
  145. package/dist/react-native/internal-avro/index.js.map +1 -0
  146. package/dist/react-native/internal-avro/utils/utils.common.d.ts +6 -0
  147. package/dist/react-native/internal-avro/utils/utils.common.d.ts.map +1 -0
  148. package/dist/react-native/internal-avro/utils/utils.common.js +16 -0
  149. package/dist/react-native/internal-avro/utils/utils.common.js.map +1 -0
  150. package/dist/react-native/utils/BlobQuickQueryStream.js +1 -1
  151. package/dist/react-native/utils/BlobQuickQueryStream.js.map +1 -1
  152. package/dist/react-native/utils/constants.js +1 -1
  153. package/dist/react-native/utils/constants.js.map +1 -1
  154. package/package.json +6 -7
@@ -0,0 +1,322 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.AvroType = exports.AvroParser = void 0;
6
+ class AvroParser {
7
+ /**
8
+ * Reads a fixed number of bytes from the stream.
9
+ *
10
+ * @param stream -
11
+ * @param length -
12
+ * @param options -
13
+ */
14
+ static async readFixedBytes(stream, length, options = {}) {
15
+ const bytes = await stream.read(length, { abortSignal: options.abortSignal });
16
+ if (bytes.length !== length) {
17
+ throw new Error("Hit stream end.");
18
+ }
19
+ return bytes;
20
+ }
21
+ /**
22
+ * Reads a single byte from the stream.
23
+ *
24
+ * @param stream -
25
+ * @param options -
26
+ */
27
+ static async readByte(stream, options = {}) {
28
+ const buf = await AvroParser.readFixedBytes(stream, 1, options);
29
+ return buf[0];
30
+ }
31
+ // int and long are stored in variable-length zig-zag coding.
32
+ // variable-length: https://lucene.apache.org/core/3_5_0/fileformats.html#VInt
33
+ // zig-zag: https://developers.google.com/protocol-buffers/docs/encoding?csw=1#types
34
+ static async readZigZagLong(stream, options = {}) {
35
+ let zigZagEncoded = 0;
36
+ let significanceInBit = 0;
37
+ let byte, haveMoreByte, significanceInFloat;
38
+ do {
39
+ byte = await AvroParser.readByte(stream, options);
40
+ haveMoreByte = byte & 0x80;
41
+ zigZagEncoded |= (byte & 0x7f) << significanceInBit;
42
+ significanceInBit += 7;
43
+ } while (haveMoreByte && significanceInBit < 28); // bitwise operation only works for 32-bit integers
44
+ if (haveMoreByte) {
45
+ // Switch to float arithmetic
46
+ // eslint-disable-next-line no-self-assign
47
+ zigZagEncoded = zigZagEncoded;
48
+ significanceInFloat = 268435456; // 2 ** 28.
49
+ do {
50
+ byte = await AvroParser.readByte(stream, options);
51
+ zigZagEncoded += (byte & 0x7f) * significanceInFloat;
52
+ significanceInFloat *= 128; // 2 ** 7
53
+ } while (byte & 0x80);
54
+ const res = (zigZagEncoded % 2 ? -(zigZagEncoded + 1) : zigZagEncoded) / 2;
55
+ if (res < Number.MIN_SAFE_INTEGER || res > Number.MAX_SAFE_INTEGER) {
56
+ throw new Error("Integer overflow.");
57
+ }
58
+ return res;
59
+ }
60
+ return (zigZagEncoded >> 1) ^ -(zigZagEncoded & 1);
61
+ }
62
+ static async readLong(stream, options = {}) {
63
+ return AvroParser.readZigZagLong(stream, options);
64
+ }
65
+ static async readInt(stream, options = {}) {
66
+ return AvroParser.readZigZagLong(stream, options);
67
+ }
68
+ static async readNull() {
69
+ return null;
70
+ }
71
+ static async readBoolean(stream, options = {}) {
72
+ const b = await AvroParser.readByte(stream, options);
73
+ if (b === 1) {
74
+ return true;
75
+ }
76
+ else if (b === 0) {
77
+ return false;
78
+ }
79
+ else {
80
+ throw new Error("Byte was not a boolean.");
81
+ }
82
+ }
83
+ static async readFloat(stream, options = {}) {
84
+ const u8arr = await AvroParser.readFixedBytes(stream, 4, options);
85
+ const view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
86
+ return view.getFloat32(0, true); // littleEndian = true
87
+ }
88
+ static async readDouble(stream, options = {}) {
89
+ const u8arr = await AvroParser.readFixedBytes(stream, 8, options);
90
+ const view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
91
+ return view.getFloat64(0, true); // littleEndian = true
92
+ }
93
+ static async readBytes(stream, options = {}) {
94
+ const size = await AvroParser.readLong(stream, options);
95
+ if (size < 0) {
96
+ throw new Error("Bytes size was negative.");
97
+ }
98
+ return stream.read(size, { abortSignal: options.abortSignal });
99
+ }
100
+ static async readString(stream, options = {}) {
101
+ const u8arr = await AvroParser.readBytes(stream, options);
102
+ const utf8decoder = new TextDecoder();
103
+ return utf8decoder.decode(u8arr);
104
+ }
105
+ static async readMapPair(stream, readItemMethod, options = {}) {
106
+ const key = await AvroParser.readString(stream, options);
107
+ // FUTURE: this won't work with readFixed (currently not supported) which needs a length as the parameter.
108
+ const value = await readItemMethod(stream, options);
109
+ return { key, value };
110
+ }
111
+ static async readMap(stream, readItemMethod, options = {}) {
112
+ const readPairMethod = (s, opts = {}) => {
113
+ return AvroParser.readMapPair(s, readItemMethod, opts);
114
+ };
115
+ const pairs = await AvroParser.readArray(stream, readPairMethod, options);
116
+ const dict = {};
117
+ for (const pair of pairs) {
118
+ dict[pair.key] = pair.value;
119
+ }
120
+ return dict;
121
+ }
122
+ static async readArray(stream, readItemMethod, options = {}) {
123
+ const items = [];
124
+ for (let count = await AvroParser.readLong(stream, options); count !== 0; count = await AvroParser.readLong(stream, options)) {
125
+ if (count < 0) {
126
+ // Ignore block sizes
127
+ await AvroParser.readLong(stream, options);
128
+ count = -count;
129
+ }
130
+ while (count--) {
131
+ const item = await readItemMethod(stream, options);
132
+ items.push(item);
133
+ }
134
+ }
135
+ return items;
136
+ }
137
+ }
138
+ exports.AvroParser = AvroParser;
139
+ var AvroComplex;
140
+ (function (AvroComplex) {
141
+ AvroComplex["RECORD"] = "record";
142
+ AvroComplex["ENUM"] = "enum";
143
+ AvroComplex["ARRAY"] = "array";
144
+ AvroComplex["MAP"] = "map";
145
+ AvroComplex["UNION"] = "union";
146
+ AvroComplex["FIXED"] = "fixed";
147
+ })(AvroComplex || (AvroComplex = {}));
148
+ var AvroPrimitive;
149
+ (function (AvroPrimitive) {
150
+ AvroPrimitive["NULL"] = "null";
151
+ AvroPrimitive["BOOLEAN"] = "boolean";
152
+ AvroPrimitive["INT"] = "int";
153
+ AvroPrimitive["LONG"] = "long";
154
+ AvroPrimitive["FLOAT"] = "float";
155
+ AvroPrimitive["DOUBLE"] = "double";
156
+ AvroPrimitive["BYTES"] = "bytes";
157
+ AvroPrimitive["STRING"] = "string";
158
+ })(AvroPrimitive || (AvroPrimitive = {}));
159
+ class AvroType {
160
+ /**
161
+ * Determines the AvroType from the Avro Schema.
162
+ */
163
+ // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types
164
+ static fromSchema(schema) {
165
+ if (typeof schema === "string") {
166
+ return AvroType.fromStringSchema(schema);
167
+ }
168
+ else if (Array.isArray(schema)) {
169
+ return AvroType.fromArraySchema(schema);
170
+ }
171
+ else {
172
+ return AvroType.fromObjectSchema(schema);
173
+ }
174
+ }
175
+ static fromStringSchema(schema) {
176
+ switch (schema) {
177
+ case AvroPrimitive.NULL:
178
+ case AvroPrimitive.BOOLEAN:
179
+ case AvroPrimitive.INT:
180
+ case AvroPrimitive.LONG:
181
+ case AvroPrimitive.FLOAT:
182
+ case AvroPrimitive.DOUBLE:
183
+ case AvroPrimitive.BYTES:
184
+ case AvroPrimitive.STRING:
185
+ return new AvroPrimitiveType(schema);
186
+ default:
187
+ throw new Error(`Unexpected Avro type ${schema}`);
188
+ }
189
+ }
190
+ static fromArraySchema(schema) {
191
+ return new AvroUnionType(schema.map(AvroType.fromSchema));
192
+ }
193
+ static fromObjectSchema(schema) {
194
+ const type = schema.type;
195
+ // Primitives can be defined as strings or objects
196
+ try {
197
+ return AvroType.fromStringSchema(type);
198
+ }
199
+ catch (_a) {
200
+ // no-op
201
+ }
202
+ switch (type) {
203
+ case AvroComplex.RECORD:
204
+ if (schema.aliases) {
205
+ throw new Error(`aliases currently is not supported, schema: ${schema}`);
206
+ }
207
+ if (!schema.name) {
208
+ throw new Error(`Required attribute 'name' doesn't exist on schema: ${schema}`);
209
+ }
210
+ // eslint-disable-next-line no-case-declarations
211
+ const fields = {};
212
+ if (!schema.fields) {
213
+ throw new Error(`Required attribute 'fields' doesn't exist on schema: ${schema}`);
214
+ }
215
+ for (const field of schema.fields) {
216
+ fields[field.name] = AvroType.fromSchema(field.type);
217
+ }
218
+ return new AvroRecordType(fields, schema.name);
219
+ case AvroComplex.ENUM:
220
+ if (schema.aliases) {
221
+ throw new Error(`aliases currently is not supported, schema: ${schema}`);
222
+ }
223
+ if (!schema.symbols) {
224
+ throw new Error(`Required attribute 'symbols' doesn't exist on schema: ${schema}`);
225
+ }
226
+ return new AvroEnumType(schema.symbols);
227
+ case AvroComplex.MAP:
228
+ if (!schema.values) {
229
+ throw new Error(`Required attribute 'values' doesn't exist on schema: ${schema}`);
230
+ }
231
+ return new AvroMapType(AvroType.fromSchema(schema.values));
232
+ case AvroComplex.ARRAY: // Unused today
233
+ case AvroComplex.FIXED: // Unused today
234
+ default:
235
+ throw new Error(`Unexpected Avro type ${type} in ${schema}`);
236
+ }
237
+ }
238
+ }
239
+ exports.AvroType = AvroType;
240
+ class AvroPrimitiveType extends AvroType {
241
+ constructor(primitive) {
242
+ super();
243
+ this._primitive = primitive;
244
+ }
245
+ // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types
246
+ read(stream, options = {}) {
247
+ switch (this._primitive) {
248
+ case AvroPrimitive.NULL:
249
+ return AvroParser.readNull();
250
+ case AvroPrimitive.BOOLEAN:
251
+ return AvroParser.readBoolean(stream, options);
252
+ case AvroPrimitive.INT:
253
+ return AvroParser.readInt(stream, options);
254
+ case AvroPrimitive.LONG:
255
+ return AvroParser.readLong(stream, options);
256
+ case AvroPrimitive.FLOAT:
257
+ return AvroParser.readFloat(stream, options);
258
+ case AvroPrimitive.DOUBLE:
259
+ return AvroParser.readDouble(stream, options);
260
+ case AvroPrimitive.BYTES:
261
+ return AvroParser.readBytes(stream, options);
262
+ case AvroPrimitive.STRING:
263
+ return AvroParser.readString(stream, options);
264
+ default:
265
+ throw new Error("Unknown Avro Primitive");
266
+ }
267
+ }
268
+ }
269
+ class AvroEnumType extends AvroType {
270
+ constructor(symbols) {
271
+ super();
272
+ this._symbols = symbols;
273
+ }
274
+ // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types
275
+ async read(stream, options = {}) {
276
+ const value = await AvroParser.readInt(stream, options);
277
+ return this._symbols[value];
278
+ }
279
+ }
280
+ class AvroUnionType extends AvroType {
281
+ constructor(types) {
282
+ super();
283
+ this._types = types;
284
+ }
285
+ async read(stream, options = {}) {
286
+ const typeIndex = await AvroParser.readInt(stream, options);
287
+ return this._types[typeIndex].read(stream, options);
288
+ }
289
+ }
290
+ class AvroMapType extends AvroType {
291
+ constructor(itemType) {
292
+ super();
293
+ this._itemType = itemType;
294
+ }
295
+ // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types
296
+ read(stream, options = {}) {
297
+ const readItemMethod = (s, opts) => {
298
+ return this._itemType.read(s, opts);
299
+ };
300
+ return AvroParser.readMap(stream, readItemMethod, options);
301
+ }
302
+ }
303
+ class AvroRecordType extends AvroType {
304
+ constructor(fields, name) {
305
+ super();
306
+ this._fields = fields;
307
+ this._name = name;
308
+ }
309
+ // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types
310
+ async read(stream, options = {}) {
311
+ // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types
312
+ const record = {};
313
+ record["$schema"] = this._name;
314
+ for (const key in this._fields) {
315
+ if (Object.prototype.hasOwnProperty.call(this._fields, key)) {
316
+ record[key] = await this._fields[key].read(stream, options);
317
+ }
318
+ }
319
+ return record;
320
+ }
321
+ }
322
+ //# sourceMappingURL=AvroParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvroParser.js","sourceRoot":"","sources":["../../../src/internal-avro/AvroParser.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// TODO: Do a review of the Object usage and non-interfaces\n/* eslint-disable @azure/azure-sdk/ts-use-interface-parameters */\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport type { AvroReadable } from \"./AvroReadable.js\";\nimport type { KeyValuePair } from \"./utils/utils.common.js\";\n\n/**\n * Options to configure the AvroParser read methods.\n * See {@link AvroParser.readFixedBytes}, {@link AvroParser.readMap} and etc.\n */\ninterface AvroParserReadOptions {\n /**\n * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.\n * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.\n */\n abortSignal?: AbortSignalLike;\n}\n\nexport class AvroParser {\n /**\n * Reads a fixed number of bytes from the stream.\n *\n * @param stream -\n * @param length -\n * @param options -\n */\n public static async readFixedBytes(\n stream: AvroReadable,\n length: number,\n options: AvroParserReadOptions = {},\n ): Promise<Uint8Array> {\n const bytes = await stream.read(length, { abortSignal: options.abortSignal });\n if (bytes.length !== length) {\n throw new Error(\"Hit stream end.\");\n }\n return bytes;\n }\n\n /**\n * Reads a single byte from the stream.\n *\n * @param stream -\n * @param options -\n */\n private static async readByte(\n stream: AvroReadable,\n options: AvroParserReadOptions = {},\n ): Promise<number> {\n const buf = await AvroParser.readFixedBytes(stream, 1, options);\n return buf[0];\n }\n\n // int and long are stored in variable-length zig-zag coding.\n // variable-length: https://lucene.apache.org/core/3_5_0/fileformats.html#VInt\n // zig-zag: https://developers.google.com/protocol-buffers/docs/encoding?csw=1#types\n private static async readZigZagLong(\n stream: AvroReadable,\n options: AvroParserReadOptions = {},\n ): Promise<number> {\n let zigZagEncoded = 0;\n let significanceInBit = 0;\n let byte, haveMoreByte, significanceInFloat;\n\n do {\n byte = await AvroParser.readByte(stream, options);\n haveMoreByte = byte & 0x80;\n zigZagEncoded |= (byte & 0x7f) << significanceInBit;\n significanceInBit += 7;\n } while (haveMoreByte && significanceInBit < 28); // bitwise operation only works for 32-bit integers\n\n if (haveMoreByte) {\n // Switch to float arithmetic\n // eslint-disable-next-line no-self-assign\n zigZagEncoded = zigZagEncoded;\n significanceInFloat = 268435456; // 2 ** 28.\n do {\n byte = await AvroParser.readByte(stream, options);\n zigZagEncoded += (byte & 0x7f) * significanceInFloat;\n significanceInFloat *= 128; // 2 ** 7\n } while (byte & 0x80);\n\n const res = (zigZagEncoded % 2 ? -(zigZagEncoded + 1) : zigZagEncoded) / 2;\n if (res < Number.MIN_SAFE_INTEGER || res > Number.MAX_SAFE_INTEGER) {\n throw new Error(\"Integer overflow.\");\n }\n return res;\n }\n\n return (zigZagEncoded >> 1) ^ -(zigZagEncoded & 1);\n }\n\n public static async readLong(\n stream: AvroReadable,\n options: AvroParserReadOptions = {},\n ): Promise<number> {\n return AvroParser.readZigZagLong(stream, options);\n }\n\n public static async readInt(\n stream: AvroReadable,\n options: AvroParserReadOptions = {},\n ): Promise<number> {\n return AvroParser.readZigZagLong(stream, options);\n }\n\n public static async readNull(): Promise<null> {\n return null;\n }\n\n public static async readBoolean(\n stream: AvroReadable,\n options: AvroParserReadOptions = {},\n ): Promise<boolean> {\n const b = await AvroParser.readByte(stream, options);\n if (b === 1) {\n return true;\n } else if (b === 0) {\n return false;\n } else {\n throw new Error(\"Byte was not a boolean.\");\n }\n }\n\n public static async readFloat(\n stream: AvroReadable,\n options: AvroParserReadOptions = {},\n ): Promise<number> {\n const u8arr = await AvroParser.readFixedBytes(stream, 4, options);\n const view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);\n return view.getFloat32(0, true); // littleEndian = true\n }\n\n public static async readDouble(\n stream: AvroReadable,\n options: AvroParserReadOptions = {},\n ): Promise<number> {\n const u8arr = await AvroParser.readFixedBytes(stream, 8, options);\n const view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);\n return view.getFloat64(0, true); // littleEndian = true\n }\n\n public static async readBytes(\n stream: AvroReadable,\n options: AvroParserReadOptions = {},\n ): Promise<Uint8Array> {\n const size = await AvroParser.readLong(stream, options);\n if (size < 0) {\n throw new Error(\"Bytes size was negative.\");\n }\n\n return stream.read(size, { abortSignal: options.abortSignal });\n }\n\n public static async readString(\n stream: AvroReadable,\n options: AvroParserReadOptions = {},\n ): Promise<string> {\n const u8arr = await AvroParser.readBytes(stream, options);\n const utf8decoder = new TextDecoder();\n return utf8decoder.decode(u8arr);\n }\n\n private static async readMapPair<T>(\n stream: AvroReadable,\n readItemMethod: (s: AvroReadable, options?: AvroParserReadOptions) => Promise<T>,\n options: AvroParserReadOptions = {},\n ): Promise<KeyValuePair<T>> {\n const key = await AvroParser.readString(stream, options);\n // FUTURE: this won't work with readFixed (currently not supported) which needs a length as the parameter.\n const value = await readItemMethod(stream, options);\n return { key, value };\n }\n\n public static async readMap<T>(\n stream: AvroReadable,\n readItemMethod: (s: AvroReadable, options?: AvroParserReadOptions) => Promise<T>,\n options: AvroParserReadOptions = {},\n ): Promise<Record<string, T>> {\n const readPairMethod = (\n s: AvroReadable,\n opts: AvroParserReadOptions = {},\n ): Promise<KeyValuePair<T>> => {\n return AvroParser.readMapPair(s, readItemMethod, opts);\n };\n\n const pairs: KeyValuePair<T>[] = await AvroParser.readArray(stream, readPairMethod, options);\n\n const dict: Record<string, T> = {};\n for (const pair of pairs) {\n dict[pair.key] = pair.value;\n }\n return dict;\n }\n\n private static async readArray<T>(\n stream: AvroReadable,\n readItemMethod: (s: AvroReadable, options?: AvroParserReadOptions) => Promise<T>,\n options: AvroParserReadOptions = {},\n ): Promise<T[]> {\n const items: T[] = [];\n for (\n let count = await AvroParser.readLong(stream, options);\n count !== 0;\n count = await AvroParser.readLong(stream, options)\n ) {\n if (count < 0) {\n // Ignore block sizes\n await AvroParser.readLong(stream, options);\n count = -count;\n }\n\n while (count--) {\n const item: T = await readItemMethod(stream, options);\n items.push(item);\n }\n }\n return items;\n }\n}\n\ninterface RecordField {\n name: string;\n type: string | ObjectSchema | (string | ObjectSchema)[]; // Unions may not immediately contain other unions.\n}\n\nenum AvroComplex {\n RECORD = \"record\",\n ENUM = \"enum\",\n ARRAY = \"array\",\n MAP = \"map\",\n UNION = \"union\",\n FIXED = \"fixed\",\n}\n\ninterface ObjectSchema {\n type: Exclude<AvroComplex, AvroComplex.UNION>;\n name?: string;\n aliases?: string;\n fields?: RecordField[];\n symbols?: string[];\n values?: string;\n size?: number;\n}\n\nenum AvroPrimitive {\n NULL = \"null\",\n BOOLEAN = \"boolean\",\n INT = \"int\",\n LONG = \"long\",\n FLOAT = \"float\",\n DOUBLE = \"double\",\n BYTES = \"bytes\",\n STRING = \"string\",\n}\n\nexport abstract class AvroType {\n /**\n * Reads an object from the stream.\n */\n public abstract read(\n stream: AvroReadable,\n options?: AvroParserReadOptions,\n ): Promise<Object | null>; // eslint-disable-line @typescript-eslint/no-wrapper-object-types\n\n /**\n * Determines the AvroType from the Avro Schema.\n */\n // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\n public static fromSchema(schema: string | Object): AvroType {\n if (typeof schema === \"string\") {\n return AvroType.fromStringSchema(schema);\n } else if (Array.isArray(schema)) {\n return AvroType.fromArraySchema(schema);\n } else {\n return AvroType.fromObjectSchema(schema as ObjectSchema);\n }\n }\n\n private static fromStringSchema(schema: string): AvroType {\n switch (schema) {\n case AvroPrimitive.NULL:\n case AvroPrimitive.BOOLEAN:\n case AvroPrimitive.INT:\n case AvroPrimitive.LONG:\n case AvroPrimitive.FLOAT:\n case AvroPrimitive.DOUBLE:\n case AvroPrimitive.BYTES:\n case AvroPrimitive.STRING:\n return new AvroPrimitiveType(schema as AvroPrimitive);\n default:\n throw new Error(`Unexpected Avro type ${schema}`);\n }\n }\n\n private static fromArraySchema(schema: any[]): AvroType {\n return new AvroUnionType(schema.map(AvroType.fromSchema));\n }\n\n private static fromObjectSchema(schema: ObjectSchema): AvroType {\n const type = schema.type;\n // Primitives can be defined as strings or objects\n try {\n return AvroType.fromStringSchema(type);\n } catch {\n // no-op\n }\n\n switch (type) {\n case AvroComplex.RECORD:\n if (schema.aliases) {\n throw new Error(`aliases currently is not supported, schema: ${schema}`);\n }\n if (!schema.name) {\n throw new Error(`Required attribute 'name' doesn't exist on schema: ${schema}`);\n }\n\n // eslint-disable-next-line no-case-declarations\n const fields: Record<string, AvroType> = {};\n if (!schema.fields) {\n throw new Error(`Required attribute 'fields' doesn't exist on schema: ${schema}`);\n }\n for (const field of schema.fields) {\n fields[field.name] = AvroType.fromSchema(field.type);\n }\n return new AvroRecordType(fields, schema.name);\n case AvroComplex.ENUM:\n if (schema.aliases) {\n throw new Error(`aliases currently is not supported, schema: ${schema}`);\n }\n if (!schema.symbols) {\n throw new Error(`Required attribute 'symbols' doesn't exist on schema: ${schema}`);\n }\n return new AvroEnumType(schema.symbols);\n case AvroComplex.MAP:\n if (!schema.values) {\n throw new Error(`Required attribute 'values' doesn't exist on schema: ${schema}`);\n }\n return new AvroMapType(AvroType.fromSchema(schema.values));\n case AvroComplex.ARRAY: // Unused today\n case AvroComplex.FIXED: // Unused today\n default:\n throw new Error(`Unexpected Avro type ${type} in ${schema}`);\n }\n }\n}\n\nclass AvroPrimitiveType extends AvroType {\n private _primitive: AvroPrimitive;\n\n constructor(primitive: AvroPrimitive) {\n super();\n this._primitive = primitive;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\n public read(stream: AvroReadable, options: AvroParserReadOptions = {}): Promise<Object | null> {\n switch (this._primitive) {\n case AvroPrimitive.NULL:\n return AvroParser.readNull();\n case AvroPrimitive.BOOLEAN:\n return AvroParser.readBoolean(stream, options);\n case AvroPrimitive.INT:\n return AvroParser.readInt(stream, options);\n case AvroPrimitive.LONG:\n return AvroParser.readLong(stream, options);\n case AvroPrimitive.FLOAT:\n return AvroParser.readFloat(stream, options);\n case AvroPrimitive.DOUBLE:\n return AvroParser.readDouble(stream, options);\n case AvroPrimitive.BYTES:\n return AvroParser.readBytes(stream, options);\n case AvroPrimitive.STRING:\n return AvroParser.readString(stream, options);\n default:\n throw new Error(\"Unknown Avro Primitive\");\n }\n }\n}\n\nclass AvroEnumType extends AvroType {\n private readonly _symbols: string[];\n\n constructor(symbols: string[]) {\n super();\n this._symbols = symbols;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\n public async read(stream: AvroReadable, options: AvroParserReadOptions = {}): Promise<Object> {\n const value = await AvroParser.readInt(stream, options);\n return this._symbols[value];\n }\n}\n\nclass AvroUnionType extends AvroType {\n private readonly _types: AvroType[];\n\n constructor(types: AvroType[]) {\n super();\n this._types = types;\n }\n\n public async read(\n stream: AvroReadable,\n options: AvroParserReadOptions = {},\n // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\n ): Promise<Object | null> {\n const typeIndex = await AvroParser.readInt(stream, options);\n return this._types[typeIndex].read(stream, options);\n }\n}\n\nclass AvroMapType extends AvroType {\n private readonly _itemType: AvroType;\n\n constructor(itemType: AvroType) {\n super();\n this._itemType = itemType;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\n public read(stream: AvroReadable, options: AvroParserReadOptions = {}): Promise<Object> {\n const readItemMethod = (\n s: AvroReadable,\n opts?: AvroParserReadOptions,\n // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\n ): Promise<Object | null> => {\n return this._itemType.read(s, opts);\n };\n return AvroParser.readMap(stream, readItemMethod, options);\n }\n}\n\nclass AvroRecordType extends AvroType {\n private readonly _name: string;\n private readonly _fields: Record<string, AvroType>;\n\n constructor(fields: Record<string, AvroType>, name: string) {\n super();\n this._fields = fields;\n this._name = name;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\n public async read(stream: AvroReadable, options: AvroParserReadOptions = {}): Promise<Object> {\n // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\n const record: Record<string, Object | null> = {};\n record[\"$schema\"] = this._name;\n for (const key in this._fields) {\n if (Object.prototype.hasOwnProperty.call(this._fields, key)) {\n record[key] = await this._fields[key].read(stream, options);\n }\n }\n return record;\n }\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import type { AbortSignalLike } from "@azure/abort-controller";
2
+ /**
3
+ * Options to configure the {@link AvroReadable.read} operation.
4
+ */
5
+ export interface AvroReadableReadOptions {
6
+ /**
7
+ * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
8
+ * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
9
+ */
10
+ abortSignal?: AbortSignalLike;
11
+ }
12
+ export declare abstract class AvroReadable {
13
+ abstract get position(): number;
14
+ abstract read(size: number, options?: AvroReadableReadOptions): Promise<Uint8Array>;
15
+ }
16
+ //# sourceMappingURL=AvroReadable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvroReadable.d.ts","sourceRoot":"","sources":["../../../src/internal-avro/AvroReadable.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,8BAAsB,YAAY;IAChC,aAAoB,QAAQ,IAAI,MAAM,CAAC;aACvB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;CAC3F"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.AvroReadable = void 0;
6
+ class AvroReadable {
7
+ }
8
+ exports.AvroReadable = AvroReadable;
9
+ //# sourceMappingURL=AvroReadable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvroReadable.js","sourceRoot":"","sources":["../../../src/internal-avro/AvroReadable.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAelC,MAAsB,YAAY;CAGjC;AAHD,oCAGC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\n\n/**\n * Options to configure the {@link AvroReadable.read} operation.\n */\nexport interface AvroReadableReadOptions {\n /**\n * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.\n * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.\n */\n abortSignal?: AbortSignalLike;\n}\n\nexport abstract class AvroReadable {\n public abstract get position(): number;\n public abstract read(size: number, options?: AvroReadableReadOptions): Promise<Uint8Array>;\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import type { AvroReadableReadOptions } from "./AvroReadable.js";
2
+ import { AvroReadable } from "./AvroReadable.js";
3
+ export declare class AvroReadableFromBlob extends AvroReadable {
4
+ private _position;
5
+ private _blob;
6
+ constructor(blob: Blob);
7
+ get position(): number;
8
+ read(size: number, options?: AvroReadableReadOptions): Promise<Uint8Array>;
9
+ }
10
+ //# sourceMappingURL=AvroReadableFromBlob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvroReadableFromBlob.d.ts","sourceRoot":"","sources":["../../../src/internal-avro/AvroReadableFromBlob.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,qBAAa,oBAAqB,SAAQ,YAAY;IACpD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAO;gBAER,IAAI,EAAE,IAAI;IAMtB,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAEY,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,UAAU,CAAC;CAqC5F"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.AvroReadableFromBlob = void 0;
6
+ const AvroReadable_js_1 = require("./AvroReadable.js");
7
+ const abort_controller_1 = require("@azure/abort-controller");
8
+ const ABORT_ERROR = new abort_controller_1.AbortError("Reading from the avro blob was aborted.");
9
+ class AvroReadableFromBlob extends AvroReadable_js_1.AvroReadable {
10
+ constructor(blob) {
11
+ super();
12
+ this._blob = blob;
13
+ this._position = 0;
14
+ }
15
+ get position() {
16
+ return this._position;
17
+ }
18
+ async read(size, options = {}) {
19
+ size = Math.min(size, this._blob.size - this._position);
20
+ if (size <= 0) {
21
+ return new Uint8Array();
22
+ }
23
+ const fileReader = new FileReader();
24
+ return new Promise((resolve, reject) => {
25
+ function cleanUp() {
26
+ if (options.abortSignal) {
27
+ options.abortSignal.removeEventListener("abort", abortHandler);
28
+ }
29
+ }
30
+ function abortHandler() {
31
+ fileReader.abort();
32
+ cleanUp();
33
+ reject(ABORT_ERROR);
34
+ }
35
+ if (options.abortSignal) {
36
+ options.abortSignal.addEventListener("abort", abortHandler);
37
+ }
38
+ fileReader.onloadend = (ev) => {
39
+ cleanUp();
40
+ resolve(new Uint8Array(ev.target.result));
41
+ };
42
+ fileReader.onerror = () => {
43
+ cleanUp();
44
+ reject();
45
+ };
46
+ fileReader.readAsArrayBuffer(this._blob.slice(this._position, (this._position += size)));
47
+ });
48
+ }
49
+ }
50
+ exports.AvroReadableFromBlob = AvroReadableFromBlob;
51
+ //# sourceMappingURL=AvroReadableFromBlob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvroReadableFromBlob.js","sourceRoot":"","sources":["../../../src/internal-avro/AvroReadableFromBlob.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAGlC,uDAAiD;AACjD,8DAAqD;AAErD,MAAM,WAAW,GAAG,IAAI,6BAAU,CAAC,yCAAyC,CAAC,CAAC;AAE9E,MAAa,oBAAqB,SAAQ,8BAAY;IAIpD,YAAY,IAAU;QACpB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,UAAmC,EAAE;QACnE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACd,OAAO,IAAI,UAAU,EAAE,CAAC;QAC1B,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QACpC,OAAO,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACjD,SAAS,OAAO;gBACd,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;oBACxB,OAAO,CAAC,WAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YAED,SAAS,YAAY;gBACnB,UAAU,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,WAAW,CAAC,CAAC;YACtB,CAAC;YAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC9D,CAAC;YAED,UAAU,CAAC,SAAS,GAAG,CAAC,EAAO,EAAE,EAAE;gBACjC,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,MAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC;YAEF,UAAU,CAAC,OAAO,GAAG,GAAG,EAAE;gBACxB,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,CAAC;YACX,CAAC,CAAC;YAEF,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAnDD,oDAmDC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AvroReadableReadOptions } from \"./AvroReadable.js\";\nimport { AvroReadable } from \"./AvroReadable.js\";\nimport { AbortError } from \"@azure/abort-controller\";\n\nconst ABORT_ERROR = new AbortError(\"Reading from the avro blob was aborted.\");\n\nexport class AvroReadableFromBlob extends AvroReadable {\n private _position: number;\n private _blob: Blob;\n\n constructor(blob: Blob) {\n super();\n this._blob = blob;\n this._position = 0;\n }\n\n public get position(): number {\n return this._position;\n }\n\n public async read(size: number, options: AvroReadableReadOptions = {}): Promise<Uint8Array> {\n size = Math.min(size, this._blob.size - this._position);\n if (size <= 0) {\n return new Uint8Array();\n }\n\n const fileReader = new FileReader();\n return new Promise<Uint8Array>((resolve, reject) => {\n function cleanUp(): void {\n if (options.abortSignal) {\n options.abortSignal!.removeEventListener(\"abort\", abortHandler);\n }\n }\n\n function abortHandler(): void {\n fileReader.abort();\n cleanUp();\n reject(ABORT_ERROR);\n }\n\n if (options.abortSignal) {\n options.abortSignal.addEventListener(\"abort\", abortHandler);\n }\n\n fileReader.onloadend = (ev: any) => {\n cleanUp();\n resolve(new Uint8Array(ev.target!.result));\n };\n\n fileReader.onerror = () => {\n cleanUp();\n reject();\n };\n\n fileReader.readAsArrayBuffer(this._blob.slice(this._position, (this._position += size)));\n });\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import type { AvroReadableReadOptions } from "./AvroReadable.js";
2
+ import { AvroReadable } from "./AvroReadable.js";
3
+ export declare class AvroReadableFromStream extends AvroReadable {
4
+ private _position;
5
+ private _readable;
6
+ private toUint8Array;
7
+ constructor(readable: NodeJS.ReadableStream);
8
+ get position(): number;
9
+ read(size: number, options?: AvroReadableReadOptions): Promise<Uint8Array>;
10
+ }
11
+ //# sourceMappingURL=AvroReadableFromStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvroReadableFromStream.d.ts","sourceRoot":"","sources":["../../../src/internal-avro/AvroReadableFromStream.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMjD,qBAAa,sBAAuB,SAAQ,YAAY;IACtD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAwB;IAEzC,OAAO,CAAC,YAAY;gBAOR,QAAQ,EAAE,MAAM,CAAC,cAAc;IAK3C,IAAW,QAAQ,IAAI,MAAM,CAE5B;IACY,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,UAAU,CAAC;CAoE5F"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.AvroReadableFromStream = void 0;
6
+ const AvroReadable_js_1 = require("./AvroReadable.js");
7
+ const abort_controller_1 = require("@azure/abort-controller");
8
+ const buffer_1 = require("buffer");
9
+ const ABORT_ERROR = new abort_controller_1.AbortError("Reading from the avro stream was aborted.");
10
+ class AvroReadableFromStream extends AvroReadable_js_1.AvroReadable {
11
+ toUint8Array(data) {
12
+ if (typeof data === "string") {
13
+ return buffer_1.Buffer.from(data);
14
+ }
15
+ return data;
16
+ }
17
+ constructor(readable) {
18
+ super();
19
+ this._readable = readable;
20
+ this._position = 0;
21
+ }
22
+ get position() {
23
+ return this._position;
24
+ }
25
+ async read(size, options = {}) {
26
+ var _a;
27
+ if ((_a = options.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {
28
+ throw ABORT_ERROR;
29
+ }
30
+ if (size < 0) {
31
+ throw new Error(`size parameter should be positive: ${size}`);
32
+ }
33
+ if (size === 0) {
34
+ return new Uint8Array();
35
+ }
36
+ if (!this._readable.readable) {
37
+ throw new Error("Stream no longer readable.");
38
+ }
39
+ // See if there is already enough data.
40
+ const chunk = this._readable.read(size);
41
+ if (chunk) {
42
+ this._position += chunk.length;
43
+ // chunk.length maybe less than desired size if the stream ends.
44
+ return this.toUint8Array(chunk);
45
+ }
46
+ else {
47
+ // register callback to wait for enough data to read
48
+ return new Promise((resolve, reject) => {
49
+ /* eslint-disable @typescript-eslint/no-use-before-define */
50
+ const cleanUp = () => {
51
+ this._readable.removeListener("readable", readableCallback);
52
+ this._readable.removeListener("error", rejectCallback);
53
+ this._readable.removeListener("end", rejectCallback);
54
+ this._readable.removeListener("close", rejectCallback);
55
+ if (options.abortSignal) {
56
+ options.abortSignal.removeEventListener("abort", abortHandler);
57
+ }
58
+ };
59
+ const readableCallback = () => {
60
+ const callbackChunk = this._readable.read(size);
61
+ if (callbackChunk) {
62
+ this._position += callbackChunk.length;
63
+ cleanUp();
64
+ // callbackChunk.length maybe less than desired size if the stream ends.
65
+ resolve(this.toUint8Array(callbackChunk));
66
+ }
67
+ };
68
+ const rejectCallback = () => {
69
+ cleanUp();
70
+ reject();
71
+ };
72
+ const abortHandler = () => {
73
+ cleanUp();
74
+ reject(ABORT_ERROR);
75
+ };
76
+ this._readable.on("readable", readableCallback);
77
+ this._readable.once("error", rejectCallback);
78
+ this._readable.once("end", rejectCallback);
79
+ this._readable.once("close", rejectCallback);
80
+ if (options.abortSignal) {
81
+ options.abortSignal.addEventListener("abort", abortHandler);
82
+ }
83
+ /* eslint-enable @typescript-eslint/no-use-before-define */
84
+ });
85
+ }
86
+ }
87
+ }
88
+ exports.AvroReadableFromStream = AvroReadableFromStream;
89
+ //# sourceMappingURL=AvroReadableFromStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvroReadableFromStream.js","sourceRoot":"","sources":["../../../src/internal-avro/AvroReadableFromStream.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AvroReadableReadOptions } from \"./AvroReadable.js\";\nimport { AvroReadable } from \"./AvroReadable.js\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport { Buffer } from \"buffer\";\n\nconst ABORT_ERROR = new AbortError(\"Reading from the avro stream was aborted.\");\n\nexport class AvroReadableFromStream extends AvroReadable {\n private _position: number;\n private _readable: NodeJS.ReadableStream;\n\n private toUint8Array(data: string | Buffer): Uint8Array {\n if (typeof data === \"string\") {\n return Buffer.from(data);\n }\n return data;\n }\n\n constructor(readable: NodeJS.ReadableStream) {\n super();\n this._readable = readable;\n this._position = 0;\n }\n public get position(): number {\n return this._position;\n }\n public async read(size: number, options: AvroReadableReadOptions = {}): Promise<Uint8Array> {\n if (options.abortSignal?.aborted) {\n throw ABORT_ERROR;\n }\n\n if (size < 0) {\n throw new Error(`size parameter should be positive: ${size}`);\n }\n\n if (size === 0) {\n return new Uint8Array();\n }\n\n if (!this._readable.readable) {\n throw new Error(\"Stream no longer readable.\");\n }\n // See if there is already enough data.\n const chunk = this._readable.read(size);\n if (chunk) {\n this._position += chunk.length;\n // chunk.length maybe less than desired size if the stream ends.\n return this.toUint8Array(chunk);\n } else {\n // register callback to wait for enough data to read\n return new Promise((resolve, reject) => {\n /* eslint-disable @typescript-eslint/no-use-before-define */\n const cleanUp: () => void = () => {\n this._readable.removeListener(\"readable\", readableCallback);\n this._readable.removeListener(\"error\", rejectCallback);\n this._readable.removeListener(\"end\", rejectCallback);\n this._readable.removeListener(\"close\", rejectCallback);\n\n if (options.abortSignal) {\n options.abortSignal!.removeEventListener(\"abort\", abortHandler);\n }\n };\n\n const readableCallback: () => void = () => {\n const callbackChunk = this._readable.read(size);\n if (callbackChunk) {\n this._position += callbackChunk.length;\n cleanUp();\n // callbackChunk.length maybe less than desired size if the stream ends.\n resolve(this.toUint8Array(callbackChunk));\n }\n };\n\n const rejectCallback: () => void = () => {\n cleanUp();\n reject();\n };\n\n const abortHandler: () => void = () => {\n cleanUp();\n reject(ABORT_ERROR);\n };\n\n this._readable.on(\"readable\", readableCallback);\n this._readable.once(\"error\", rejectCallback);\n this._readable.once(\"end\", rejectCallback);\n this._readable.once(\"close\", rejectCallback);\n if (options.abortSignal) {\n options.abortSignal!.addEventListener(\"abort\", abortHandler);\n }\n /* eslint-enable @typescript-eslint/no-use-before-define */\n });\n }\n }\n}\n"]}
@@ -0,0 +1,32 @@
1
+ import type { AbortSignalLike } from "@azure/abort-controller";
2
+ import type { AvroReadable } from "./AvroReadable.js";
3
+ /**
4
+ * Options to configure the {@link AvroReader.parseObjects} operation.
5
+ */
6
+ export interface AvroParseOptions {
7
+ /**
8
+ * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
9
+ * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
10
+ */
11
+ abortSignal?: AbortSignalLike;
12
+ }
13
+ export declare class AvroReader {
14
+ private readonly _dataStream;
15
+ private readonly _headerStream;
16
+ private _syncMarker?;
17
+ private _metadata?;
18
+ private _itemType?;
19
+ private _itemsRemainingInBlock?;
20
+ private readonly _initialBlockOffset;
21
+ private _blockOffset;
22
+ get blockOffset(): number;
23
+ private _objectIndex;
24
+ get objectIndex(): number;
25
+ private _initialized;
26
+ constructor(dataStream: AvroReadable);
27
+ constructor(dataStream: AvroReadable, headerStream: AvroReadable, currentBlockOffset: number, indexWithinCurrentBlock: number);
28
+ private initialize;
29
+ hasNext(): boolean;
30
+ parseObjects(options?: AvroParseOptions): AsyncIterableIterator<Record<string, any> | null>;
31
+ }
32
+ //# sourceMappingURL=AvroReader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvroReader.d.ts","sourceRoot":"","sources":["../../../src/internal-avro/AvroReader.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAE3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAE7C,OAAO,CAAC,WAAW,CAAC,CAAa;IAEjC,OAAO,CAAC,SAAS,CAAC,CAAyB;IAE3C,OAAO,CAAC,SAAS,CAAC,CAAW;IAE7B,OAAO,CAAC,sBAAsB,CAAC,CAAS;IAGxC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAI7C,OAAO,CAAC,YAAY,CAAS;IAC7B,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,OAAO,CAAC,YAAY,CAAS;IAC7B,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,OAAO,CAAC,YAAY,CAAU;gBAElB,UAAU,EAAE,YAAY;gBAGlC,UAAU,EAAE,YAAY,EACxB,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,MAAM,EAC1B,uBAAuB,EAAE,MAAM;YAiBnB,UAAU;IAgDjB,OAAO,IAAI,OAAO;IAIX,YAAY,CACxB,OAAO,GAAE,gBAAqB,GAC7B,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;CA0CrD"}