@loaders.gl/polyfills 3.1.0-alpha.1 → 3.1.0-alpha.5

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 (139) hide show
  1. package/dist/bundle.d.ts +1 -0
  2. package/dist/dist.min.js +1 -1
  3. package/dist/dist.min.js.map +1 -1
  4. package/dist/es5/bundle.js +7 -0
  5. package/dist/es5/bundle.js.map +1 -0
  6. package/dist/es5/index.js +120 -0
  7. package/dist/es5/index.js.map +1 -0
  8. package/dist/{libs → es5/libs}/encoding-indexes.js +0 -0
  9. package/dist/{libs → es5/libs}/encoding.js +0 -0
  10. package/dist/es5/node/buffer/btoa.node.js +16 -0
  11. package/dist/es5/node/buffer/btoa.node.js.map +1 -0
  12. package/dist/es5/node/buffer/to-array-buffer.node.js +16 -0
  13. package/dist/es5/node/buffer/to-array-buffer.node.js.map +1 -0
  14. package/dist/es5/node/fetch/fetch.node.js +141 -0
  15. package/dist/es5/node/fetch/fetch.node.js.map +1 -0
  16. package/dist/es5/node/fetch/headers.node.js +136 -0
  17. package/dist/{node → es5/node}/fetch/headers.node.js.map +1 -1
  18. package/dist/es5/node/fetch/response.node.js +96 -0
  19. package/dist/es5/node/fetch/response.node.js.map +1 -0
  20. package/dist/es5/node/fetch/utils/decode-data-uri.node.js +66 -0
  21. package/dist/es5/node/fetch/utils/decode-data-uri.node.js.map +1 -0
  22. package/dist/es5/node/fetch/utils/stream-utils.node.js +107 -0
  23. package/dist/es5/node/fetch/utils/stream-utils.node.js.map +1 -0
  24. package/dist/es5/node/file/blob-stream-controller.js +65 -0
  25. package/dist/es5/node/file/blob-stream-controller.js.map +1 -0
  26. package/dist/es5/node/file/blob-stream.js +38 -0
  27. package/dist/es5/node/file/blob-stream.js.map +1 -0
  28. package/dist/es5/node/file/blob.js +150 -0
  29. package/dist/es5/node/file/blob.js.map +1 -0
  30. package/dist/es5/node/file/file-reader.js +82 -0
  31. package/dist/es5/node/file/file-reader.js.map +1 -0
  32. package/dist/es5/node/file/file.js +35 -0
  33. package/dist/es5/node/file/file.js.map +1 -0
  34. package/dist/es5/node/file/install-file-polyfills.js +33 -0
  35. package/dist/es5/node/file/install-file-polyfills.js.map +1 -0
  36. package/dist/es5/node/file/readable-stream.js +15 -0
  37. package/dist/es5/node/file/readable-stream.js.map +1 -0
  38. package/dist/es5/node/images/encode-image.node.js +34 -0
  39. package/dist/es5/node/images/encode-image.node.js.map +1 -0
  40. package/dist/es5/node/images/parse-image.node.js +34 -0
  41. package/dist/es5/node/images/parse-image.node.js.map +1 -0
  42. package/dist/es5/promise/all-settled.js +29 -0
  43. package/dist/es5/promise/all-settled.js.map +1 -0
  44. package/dist/es5/utils/assert.js +13 -0
  45. package/dist/es5/utils/assert.js.map +1 -0
  46. package/dist/es5/utils/globals.js +16 -0
  47. package/dist/es5/utils/globals.js.map +1 -0
  48. package/dist/esm/bundle.js +5 -0
  49. package/dist/esm/bundle.js.map +1 -0
  50. package/dist/{index.js → esm/index.js} +0 -0
  51. package/dist/esm/index.js.map +1 -0
  52. package/dist/esm/libs/encoding-indexes.js +51 -0
  53. package/dist/esm/libs/encoding.js +3084 -0
  54. package/dist/{node → esm/node}/buffer/btoa.node.js +0 -0
  55. package/dist/esm/node/buffer/btoa.node.js.map +1 -0
  56. package/dist/{node → esm/node}/buffer/to-array-buffer.node.js +0 -0
  57. package/dist/esm/node/buffer/to-array-buffer.node.js.map +1 -0
  58. package/dist/{node → esm/node}/fetch/fetch.node.js +12 -1
  59. package/dist/esm/node/fetch/fetch.node.js.map +1 -0
  60. package/dist/{node → esm/node}/fetch/headers.node.js +1 -1
  61. package/dist/esm/node/fetch/headers.node.js.map +1 -0
  62. package/dist/{node → esm/node}/fetch/response.node.js +0 -0
  63. package/dist/esm/node/fetch/response.node.js.map +1 -0
  64. package/dist/{node → esm/node}/fetch/utils/decode-data-uri.node.js +2 -2
  65. package/dist/esm/node/fetch/utils/decode-data-uri.node.js.map +1 -0
  66. package/dist/{node → esm/node}/fetch/utils/stream-utils.node.js +0 -0
  67. package/dist/esm/node/fetch/utils/stream-utils.node.js.map +1 -0
  68. package/dist/{node → esm/node}/file/blob-stream-controller.js +0 -0
  69. package/dist/esm/node/file/blob-stream-controller.js.map +1 -0
  70. package/dist/{node → esm/node}/file/blob-stream.js +0 -0
  71. package/dist/esm/node/file/blob-stream.js.map +1 -0
  72. package/dist/{node → esm/node}/file/blob.js +0 -0
  73. package/dist/esm/node/file/blob.js.map +1 -0
  74. package/dist/{node → esm/node}/file/file-reader.js +1 -1
  75. package/dist/esm/node/file/file-reader.js.map +1 -0
  76. package/dist/{node → esm/node}/file/file.js +0 -0
  77. package/dist/esm/node/file/file.js.map +1 -0
  78. package/dist/{node → esm/node}/file/install-file-polyfills.js +0 -0
  79. package/dist/esm/node/file/install-file-polyfills.js.map +1 -0
  80. package/dist/{node → esm/node}/file/readable-stream.js +0 -0
  81. package/dist/esm/node/file/readable-stream.js.map +1 -0
  82. package/dist/{node → esm/node}/images/encode-image.node.js +0 -0
  83. package/dist/esm/node/images/encode-image.node.js.map +1 -0
  84. package/dist/{node → esm/node}/images/parse-image.node.js +2 -2
  85. package/dist/esm/node/images/parse-image.node.js.map +1 -0
  86. package/dist/{promise → esm/promise}/all-settled.js +0 -0
  87. package/dist/esm/promise/all-settled.js.map +1 -0
  88. package/dist/esm/utils/assert.js +6 -0
  89. package/dist/esm/utils/assert.js.map +1 -0
  90. package/dist/{utils → esm/utils}/globals.js +0 -0
  91. package/dist/esm/utils/globals.js.map +1 -0
  92. package/dist/index.d.ts +5 -0
  93. package/dist/libs/encoding-indexes.d.ts +1 -0
  94. package/dist/libs/encoding.d.ts +66 -0
  95. package/dist/node/buffer/btoa.node.d.ts +2 -0
  96. package/dist/node/buffer/to-array-buffer.node.d.ts +1 -0
  97. package/dist/node/fetch/fetch.node.d.ts +6 -0
  98. package/dist/node/fetch/headers.node.d.ts +33 -0
  99. package/dist/node/fetch/response.node.d.ts +21 -0
  100. package/dist/node/fetch/utils/decode-data-uri.node.d.ts +15 -0
  101. package/dist/node/fetch/utils/stream-utils.node.d.ts +3 -0
  102. package/dist/node/file/blob-stream-controller.d.ts +28 -0
  103. package/dist/node/file/blob-stream.d.ts +24 -0
  104. package/dist/node/file/blob.d.ts +57 -0
  105. package/dist/node/file/file-reader.d.ts +23 -0
  106. package/dist/node/file/file.d.ts +24 -0
  107. package/dist/node/file/install-file-polyfills.d.ts +1 -0
  108. package/dist/node/file/readable-stream.d.ts +3 -0
  109. package/dist/node/images/encode-image.node.d.ts +19 -0
  110. package/dist/node/images/parse-image.node.d.ts +10 -0
  111. package/dist/promise/all-settled.d.ts +9 -0
  112. package/dist/utils/assert.d.ts +1 -0
  113. package/dist/utils/globals.d.ts +3 -0
  114. package/package.json +6 -5
  115. package/src/bundle.ts +2 -3
  116. package/src/node/fetch/fetch.node.ts +19 -2
  117. package/src/node/images/parse-image.node.ts +12 -2
  118. package/dist/bundle.js +0 -7
  119. package/dist/bundle.js.map +0 -1
  120. package/dist/index.js.map +0 -1
  121. package/dist/node/buffer/btoa.node.js.map +0 -1
  122. package/dist/node/buffer/to-array-buffer.node.js.map +0 -1
  123. package/dist/node/fetch/fetch.node.js.map +0 -1
  124. package/dist/node/fetch/response.node.js.map +0 -1
  125. package/dist/node/fetch/utils/decode-data-uri.node.js.map +0 -1
  126. package/dist/node/fetch/utils/stream-utils.node.js.map +0 -1
  127. package/dist/node/file/blob-stream-controller.js.map +0 -1
  128. package/dist/node/file/blob-stream.js.map +0 -1
  129. package/dist/node/file/blob.js.map +0 -1
  130. package/dist/node/file/file-reader.js.map +0 -1
  131. package/dist/node/file/file.js.map +0 -1
  132. package/dist/node/file/install-file-polyfills.js.map +0 -1
  133. package/dist/node/file/readable-stream.js.map +0 -1
  134. package/dist/node/images/encode-image.node.js.map +0 -1
  135. package/dist/node/images/parse-image.node.js.map +0 -1
  136. package/dist/promise/all-settled.js.map +0 -1
  137. package/dist/utils/assert.js +0 -6
  138. package/dist/utils/assert.js.map +0 -1
  139. package/dist/utils/globals.js.map +0 -1
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.decodeDataUri = decodeDataUri;
7
+ exports.toArrayBuffer = toArrayBuffer;
8
+
9
+ var _assert = require("../../../utils/assert");
10
+
11
+ const isArrayBuffer = x => x && x instanceof ArrayBuffer;
12
+
13
+ const isBuffer = x => x && x instanceof Buffer;
14
+
15
+ function decodeDataUri(uri) {
16
+ const dataIndex = uri.indexOf(',');
17
+ let buffer;
18
+ let mimeType;
19
+
20
+ if (uri.slice(dataIndex - 7, dataIndex) === ';base64') {
21
+ buffer = Buffer.from(uri.slice(dataIndex + 1), 'base64');
22
+ mimeType = uri.slice(5, dataIndex - 7).trim();
23
+ } else {
24
+ buffer = Buffer.from(decodeURIComponent(uri.slice(dataIndex + 1)));
25
+ mimeType = uri.slice(5, dataIndex).trim();
26
+ }
27
+
28
+ if (!mimeType) {
29
+ mimeType = 'text/plain;charset=US-ASCII';
30
+ } else if (mimeType.startsWith(';')) {
31
+ mimeType = "text/plain".concat(mimeType);
32
+ }
33
+
34
+ return {
35
+ arrayBuffer: toArrayBuffer(buffer),
36
+ mimeType
37
+ };
38
+ }
39
+
40
+ function toArrayBuffer(data) {
41
+ if (isArrayBuffer(data)) {
42
+ return data;
43
+ }
44
+
45
+ if (isBuffer(data)) {
46
+ const typedArray = new Uint8Array(data);
47
+ return typedArray.buffer;
48
+ }
49
+
50
+ if (ArrayBuffer.isView(data)) {
51
+ return data.buffer;
52
+ }
53
+
54
+ if (typeof data === 'string') {
55
+ const text = data;
56
+ const uint8Array = new TextEncoder().encode(text);
57
+ return uint8Array.buffer;
58
+ }
59
+
60
+ if (data && typeof data === 'object' && data._toArrayBuffer) {
61
+ return data._toArrayBuffer();
62
+ }
63
+
64
+ return (0, _assert.assert)(false, "toArrayBuffer(".concat(JSON.stringify(data, null, 2).slice(10), ")"));
65
+ }
66
+ //# sourceMappingURL=decode-data-uri.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/node/fetch/utils/decode-data-uri.node.ts"],"names":["isArrayBuffer","x","ArrayBuffer","isBuffer","Buffer","decodeDataUri","uri","dataIndex","indexOf","buffer","mimeType","slice","from","trim","decodeURIComponent","startsWith","arrayBuffer","toArrayBuffer","data","typedArray","Uint8Array","isView","text","uint8Array","TextEncoder","encode","_toArrayBuffer","JSON","stringify"],"mappings":";;;;;;;;AAEA;;AAEA,MAAMA,aAAa,GAAIC,CAAD,IAAOA,CAAC,IAAIA,CAAC,YAAYC,WAA/C;;AACA,MAAMC,QAAQ,GAAIF,CAAD,IAAOA,CAAC,IAAIA,CAAC,YAAYG,MAA1C;;AAQO,SAASC,aAAT,CAAuBC,GAAvB,EAA4B;AACjC,QAAMC,SAAS,GAAGD,GAAG,CAACE,OAAJ,CAAY,GAAZ,CAAlB;AAEA,MAAIC,MAAJ;AACA,MAAIC,QAAJ;;AACA,MAAIJ,GAAG,CAACK,KAAJ,CAAUJ,SAAS,GAAG,CAAtB,EAAyBA,SAAzB,MAAwC,SAA5C,EAAuD;AACrDE,IAAAA,MAAM,GAAGL,MAAM,CAACQ,IAAP,CAAYN,GAAG,CAACK,KAAJ,CAAUJ,SAAS,GAAG,CAAtB,CAAZ,EAAsC,QAAtC,CAAT;AACAG,IAAAA,QAAQ,GAAGJ,GAAG,CAACK,KAAJ,CAAU,CAAV,EAAaJ,SAAS,GAAG,CAAzB,EAA4BM,IAA5B,EAAX;AACD,GAHD,MAGO;AACLJ,IAAAA,MAAM,GAAGL,MAAM,CAACQ,IAAP,CAAYE,kBAAkB,CAACR,GAAG,CAACK,KAAJ,CAAUJ,SAAS,GAAG,CAAtB,CAAD,CAA9B,CAAT;AACAG,IAAAA,QAAQ,GAAGJ,GAAG,CAACK,KAAJ,CAAU,CAAV,EAAaJ,SAAb,EAAwBM,IAAxB,EAAX;AACD;;AAED,MAAI,CAACH,QAAL,EAAe;AACbA,IAAAA,QAAQ,GAAG,6BAAX;AACD,GAFD,MAEO,IAAIA,QAAQ,CAACK,UAAT,CAAoB,GAApB,CAAJ,EAA8B;AACnCL,IAAAA,QAAQ,uBAAgBA,QAAhB,CAAR;AACD;;AAED,SAAO;AAACM,IAAAA,WAAW,EAAEC,aAAa,CAACR,MAAD,CAA3B;AAAqCC,IAAAA;AAArC,GAAP;AACD;;AAMM,SAASO,aAAT,CAAuBC,IAAvB,EAA6B;AAClC,MAAIlB,aAAa,CAACkB,IAAD,CAAjB,EAAyB;AACvB,WAAOA,IAAP;AACD;;AAGD,MAAIf,QAAQ,CAACe,IAAD,CAAZ,EAAoB;AAClB,UAAMC,UAAU,GAAG,IAAIC,UAAJ,CAAeF,IAAf,CAAnB;AACA,WAAOC,UAAU,CAACV,MAAlB;AACD;;AAGD,MAAIP,WAAW,CAACmB,MAAZ,CAAmBH,IAAnB,CAAJ,EAA8B;AAC5B,WAAOA,IAAI,CAACT,MAAZ;AACD;;AAED,MAAI,OAAOS,IAAP,KAAgB,QAApB,EAA8B;AAC5B,UAAMI,IAAI,GAAGJ,IAAb;AACA,UAAMK,UAAU,GAAG,IAAIC,WAAJ,GAAkBC,MAAlB,CAAyBH,IAAzB,CAAnB;AACA,WAAOC,UAAU,CAACd,MAAlB;AACD;;AAGD,MAAIS,IAAI,IAAI,OAAOA,IAAP,KAAgB,QAAxB,IAAoCA,IAAI,CAACQ,cAA7C,EAA6D;AAC3D,WAAOR,IAAI,CAACQ,cAAL,EAAP;AACD;;AAED,SAAO,oBAAO,KAAP,0BAA+BC,IAAI,CAACC,SAAL,CAAeV,IAAf,EAAqB,IAArB,EAA2B,CAA3B,EAA8BP,KAA9B,CAAoC,EAApC,CAA/B,OAAP;AACD","sourcesContent":["// Based on binary-gltf-utils under MIT license: Copyright (c) 2016-17 Karl Cheng\n\nimport {assert} from '../../../utils/assert';\n\nconst isArrayBuffer = (x) => x && x instanceof ArrayBuffer;\nconst isBuffer = (x) => x && x instanceof Buffer;\n\n/**\n * Parses a data URI into a buffer, as well as retrieving its declared MIME type.\n *\n * @param {string} uri - a data URI (assumed to be valid)\n * @returns {Object} { buffer, mimeType }\n */\nexport function decodeDataUri(uri) {\n const dataIndex = uri.indexOf(',');\n\n let buffer;\n let mimeType;\n if (uri.slice(dataIndex - 7, dataIndex) === ';base64') {\n buffer = Buffer.from(uri.slice(dataIndex + 1), 'base64');\n mimeType = uri.slice(5, dataIndex - 7).trim();\n } else {\n buffer = Buffer.from(decodeURIComponent(uri.slice(dataIndex + 1)));\n mimeType = uri.slice(5, dataIndex).trim();\n }\n\n if (!mimeType) {\n mimeType = 'text/plain;charset=US-ASCII';\n } else if (mimeType.startsWith(';')) {\n mimeType = `text/plain${mimeType}`;\n }\n\n return {arrayBuffer: toArrayBuffer(buffer), mimeType};\n}\n\n/**\n * @param data\n * @todo Duplicate of core\n */\nexport function toArrayBuffer(data) {\n if (isArrayBuffer(data)) {\n return data;\n }\n\n // TODO - per docs we should just be able to call buffer.buffer, but there are issues\n if (isBuffer(data)) {\n const typedArray = new Uint8Array(data);\n return typedArray.buffer;\n }\n\n // Careful - Node Buffers will look like ArrayBuffers (keep after isBuffer)\n if (ArrayBuffer.isView(data)) {\n return data.buffer;\n }\n\n if (typeof data === 'string') {\n const text = data;\n const uint8Array = new TextEncoder().encode(text);\n return uint8Array.buffer;\n }\n\n // HACK to support Blob polyfill\n if (data && typeof data === 'object' && data._toArrayBuffer) {\n return data._toArrayBuffer();\n }\n\n return assert(false, `toArrayBuffer(${JSON.stringify(data, null, 2).slice(10)})`);\n}\n"],"file":"decode-data-uri.node.js"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.createReadStream = createReadStream;
9
+ exports.decompressReadStream = decompressReadStream;
10
+ exports.concatenateReadStream = concatenateReadStream;
11
+
12
+ var _fs = _interopRequireDefault(require("fs"));
13
+
14
+ var _http = _interopRequireDefault(require("http"));
15
+
16
+ var _https = _interopRequireDefault(require("https"));
17
+
18
+ var _zlib = _interopRequireDefault(require("zlib"));
19
+
20
+ var _decodeDataUri = require("./decode-data-uri.node");
21
+
22
+ const isRequestURL = url => url.startsWith('http:') || url.startsWith('https:');
23
+
24
+ async function createReadStream(url, options) {
25
+ if (!isRequestURL(url)) {
26
+ const noqueryUrl = url.split('?')[0];
27
+ return await new Promise((resolve, reject) => {
28
+ const stream = _fs.default.createReadStream(noqueryUrl, {
29
+ encoding: null
30
+ });
31
+
32
+ stream.once('readable', () => resolve(stream));
33
+ stream.on('error', error => reject(error));
34
+ });
35
+ }
36
+
37
+ return await new Promise((resolve, reject) => {
38
+ const requestFunction = url.startsWith('https:') ? _https.default.request : _http.default.request;
39
+ const requestOptions = getRequestOptions(url, options);
40
+ const req = requestFunction(requestOptions, res => resolve(res));
41
+ req.on('error', error => reject(error));
42
+ req.end();
43
+ });
44
+ }
45
+
46
+ function decompressReadStream(readStream, headers) {
47
+ switch (headers.get('content-encoding')) {
48
+ case 'br':
49
+ return readStream.pipe(_zlib.default.createBrotliDecompress());
50
+
51
+ case 'gzip':
52
+ return readStream.pipe(_zlib.default.createGunzip());
53
+
54
+ case 'deflate':
55
+ return readStream.pipe(_zlib.default.createDeflate());
56
+
57
+ default:
58
+ return readStream;
59
+ }
60
+ }
61
+
62
+ async function concatenateReadStream(readStream) {
63
+ let arrayBuffer = new ArrayBuffer(0);
64
+ return await new Promise((resolve, reject) => {
65
+ readStream.on('error', error => reject(error));
66
+ readStream.on('readable', () => readStream.read());
67
+ readStream.on('data', chunk => {
68
+ if (typeof chunk === 'string') {
69
+ reject(new Error('Read stream not binary'));
70
+ }
71
+
72
+ const chunkAsArrayBuffer = (0, _decodeDataUri.toArrayBuffer)(chunk);
73
+ arrayBuffer = concatenateArrayBuffers(arrayBuffer, chunkAsArrayBuffer);
74
+ });
75
+ readStream.on('end', () => resolve(arrayBuffer));
76
+ });
77
+ }
78
+
79
+ function getRequestOptions(url, options) {
80
+ const originalHeaders = (options === null || options === void 0 ? void 0 : options.headers) || {};
81
+ const headers = {};
82
+
83
+ for (const key of Object.keys(originalHeaders)) {
84
+ headers[key.toLowerCase()] = originalHeaders[key];
85
+ }
86
+
87
+ headers['accept-encoding'] = headers['accept-encoding'] || 'gzip,br,deflate';
88
+ const urlObject = new URL(url);
89
+ return {
90
+ hostname: urlObject.hostname,
91
+ path: urlObject.pathname,
92
+ method: 'GET',
93
+ ...options,
94
+ ...(options === null || options === void 0 ? void 0 : options.fetch),
95
+ headers
96
+ };
97
+ }
98
+
99
+ function concatenateArrayBuffers(source1, source2) {
100
+ const sourceArray1 = source1 instanceof ArrayBuffer ? new Uint8Array(source1) : source1;
101
+ const sourceArray2 = source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2;
102
+ const temp = new Uint8Array(sourceArray1.byteLength + sourceArray2.byteLength);
103
+ temp.set(sourceArray1, 0);
104
+ temp.set(sourceArray2, sourceArray1.byteLength);
105
+ return temp.buffer;
106
+ }
107
+ //# sourceMappingURL=stream-utils.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/node/fetch/utils/stream-utils.node.ts"],"names":["isRequestURL","url","startsWith","createReadStream","options","noqueryUrl","split","Promise","resolve","reject","stream","fs","encoding","once","on","error","requestFunction","https","request","http","requestOptions","getRequestOptions","req","res","end","decompressReadStream","readStream","headers","get","pipe","zlib","createBrotliDecompress","createGunzip","createDeflate","concatenateReadStream","arrayBuffer","ArrayBuffer","read","chunk","Error","chunkAsArrayBuffer","concatenateArrayBuffers","originalHeaders","key","Object","keys","toLowerCase","urlObject","URL","hostname","path","pathname","method","fetch","source1","source2","sourceArray1","Uint8Array","sourceArray2","temp","byteLength","set","buffer"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AAEA,MAAMA,YAAY,GAAIC,GAAD,IAASA,GAAG,CAACC,UAAJ,CAAe,OAAf,KAA2BD,GAAG,CAACC,UAAJ,CAAe,QAAf,CAAzD;;AAGO,eAAeC,gBAAf,CAAgCF,GAAhC,EAAqCG,OAArC,EAA8C;AAEnD,MAAI,CAACJ,YAAY,CAACC,GAAD,CAAjB,EAAwB;AACtB,UAAMI,UAAU,GAAGJ,GAAG,CAACK,KAAJ,CAAU,GAAV,EAAe,CAAf,CAAnB;AAEA,WAAO,MAAM,IAAIC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AAE5C,YAAMC,MAAM,GAAGC,YAAGR,gBAAH,CAAoBE,UAApB,EAAgC;AAACO,QAAAA,QAAQ,EAAE;AAAX,OAAhC,CAAf;;AACAF,MAAAA,MAAM,CAACG,IAAP,CAAY,UAAZ,EAAwB,MAAML,OAAO,CAACE,MAAD,CAArC;AACAA,MAAAA,MAAM,CAACI,EAAP,CAAU,OAAV,EAAoBC,KAAD,IAAWN,MAAM,CAACM,KAAD,CAApC;AACD,KALY,CAAb;AAMD;;AAID,SAAO,MAAM,IAAIR,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AAC5C,UAAMO,eAAe,GAAGf,GAAG,CAACC,UAAJ,CAAe,QAAf,IAA2Be,eAAMC,OAAjC,GAA2CC,cAAKD,OAAxE;AACA,UAAME,cAAc,GAAGC,iBAAiB,CAACpB,GAAD,EAAMG,OAAN,CAAxC;AACA,UAAMkB,GAAG,GAAGN,eAAe,CAACI,cAAD,EAAkBG,GAAD,IAASf,OAAO,CAACe,GAAD,CAAjC,CAA3B;AACAD,IAAAA,GAAG,CAACR,EAAJ,CAAO,OAAP,EAAiBC,KAAD,IAAWN,MAAM,CAACM,KAAD,CAAjC;AACAO,IAAAA,GAAG,CAACE,GAAJ;AACD,GANY,CAAb;AAOD;;AAEM,SAASC,oBAAT,CAA8BC,UAA9B,EAA0CC,OAA1C,EAAmD;AACxD,UAAQA,OAAO,CAACC,GAAR,CAAY,kBAAZ,CAAR;AACE,SAAK,IAAL;AACE,aAAOF,UAAU,CAACG,IAAX,CAAgBC,cAAKC,sBAAL,EAAhB,CAAP;;AACF,SAAK,MAAL;AACE,aAAOL,UAAU,CAACG,IAAX,CAAgBC,cAAKE,YAAL,EAAhB,CAAP;;AACF,SAAK,SAAL;AACE,aAAON,UAAU,CAACG,IAAX,CAAgBC,cAAKG,aAAL,EAAhB,CAAP;;AACF;AAEE,aAAOP,UAAP;AATJ;AAWD;;AAEM,eAAeQ,qBAAf,CAAqCR,UAArC,EAAiD;AACtD,MAAIS,WAAW,GAAG,IAAIC,WAAJ,CAAgB,CAAhB,CAAlB;AAEA,SAAO,MAAM,IAAI7B,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AAC5CiB,IAAAA,UAAU,CAACZ,EAAX,CAAc,OAAd,EAAwBC,KAAD,IAAWN,MAAM,CAACM,KAAD,CAAxC;AAIAW,IAAAA,UAAU,CAACZ,EAAX,CAAc,UAAd,EAA0B,MAAMY,UAAU,CAACW,IAAX,EAAhC;AAEAX,IAAAA,UAAU,CAACZ,EAAX,CAAc,MAAd,EAAuBwB,KAAD,IAAW;AAC/B,UAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7B7B,QAAAA,MAAM,CAAC,IAAI8B,KAAJ,CAAU,wBAAV,CAAD,CAAN;AACD;;AACD,YAAMC,kBAAkB,GAAG,kCAAcF,KAAd,CAA3B;AACAH,MAAAA,WAAW,GAAGM,uBAAuB,CAACN,WAAD,EAAcK,kBAAd,CAArC;AACD,KAND;AAQAd,IAAAA,UAAU,CAACZ,EAAX,CAAc,KAAd,EAAqB,MAAMN,OAAO,CAAC2B,WAAD,CAAlC;AACD,GAhBY,CAAb;AAiBD;;AAID,SAASd,iBAAT,CAA2BpB,GAA3B,EAAgCG,OAAhC,EAA4E;AAE1E,QAAMsC,eAAe,GAAG,CAAAtC,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEuB,OAAT,KAAoB,EAA5C;AACA,QAAMA,OAAO,GAAG,EAAhB;;AACA,OAAK,MAAMgB,GAAX,IAAkBC,MAAM,CAACC,IAAP,CAAYH,eAAZ,CAAlB,EAAgD;AAC9Cf,IAAAA,OAAO,CAACgB,GAAG,CAACG,WAAJ,EAAD,CAAP,GAA6BJ,eAAe,CAACC,GAAD,CAA5C;AACD;;AAGDhB,EAAAA,OAAO,CAAC,iBAAD,CAAP,GAA6BA,OAAO,CAAC,iBAAD,CAAP,IAA8B,iBAA3D;AAEA,QAAMoB,SAAS,GAAG,IAAIC,GAAJ,CAAQ/C,GAAR,CAAlB;AACA,SAAO;AACLgD,IAAAA,QAAQ,EAAEF,SAAS,CAACE,QADf;AAELC,IAAAA,IAAI,EAAEH,SAAS,CAACI,QAFX;AAGLC,IAAAA,MAAM,EAAE,KAHH;AAKL,OAAGhD,OALE;AAML,QAAGA,OAAH,aAAGA,OAAH,uBAAGA,OAAO,CAAEiD,KAAZ,CANK;AAQL1B,IAAAA;AARK,GAAP;AAUD;;AAED,SAASc,uBAAT,CAAiCa,OAAjC,EAA0CC,OAA1C,EAAmD;AACjD,QAAMC,YAAY,GAAGF,OAAO,YAAYlB,WAAnB,GAAiC,IAAIqB,UAAJ,CAAeH,OAAf,CAAjC,GAA2DA,OAAhF;AACA,QAAMI,YAAY,GAAGH,OAAO,YAAYnB,WAAnB,GAAiC,IAAIqB,UAAJ,CAAeF,OAAf,CAAjC,GAA2DA,OAAhF;AACA,QAAMI,IAAI,GAAG,IAAIF,UAAJ,CAAeD,YAAY,CAACI,UAAb,GAA0BF,YAAY,CAACE,UAAtD,CAAb;AACAD,EAAAA,IAAI,CAACE,GAAL,CAASL,YAAT,EAAuB,CAAvB;AACAG,EAAAA,IAAI,CAACE,GAAL,CAASH,YAAT,EAAuBF,YAAY,CAACI,UAApC;AACA,SAAOD,IAAI,CAACG,MAAZ;AACD","sourcesContent":["import fs from 'fs'; // `fs` will be empty object in browsers (see package.json \"browser\" field).\nimport http from 'http';\nimport https from 'https';\nimport zlib from 'zlib';\n\nimport {toArrayBuffer} from './decode-data-uri.node';\n\nconst isRequestURL = (url) => url.startsWith('http:') || url.startsWith('https:');\n\n// Returns a promise that resolves to a readable stream\nexport async function createReadStream(url, options) {\n // Handle file streams in node\n if (!isRequestURL(url)) {\n const noqueryUrl = url.split('?')[0];\n // Now open the stream\n return await new Promise((resolve, reject) => {\n // @ts-ignore\n const stream = fs.createReadStream(noqueryUrl, {encoding: null});\n stream.once('readable', () => resolve(stream));\n stream.on('error', (error) => reject(error));\n });\n }\n\n // HANDLE HTTP/HTTPS REQUESTS IN NODE\n // TODO: THIS IS BAD SINCE WE RETURN A PROMISE INSTEAD OF A STREAM\n return await new Promise((resolve, reject) => {\n const requestFunction = url.startsWith('https:') ? https.request : http.request;\n const requestOptions = getRequestOptions(url, options);\n const req = requestFunction(requestOptions, (res) => resolve(res));\n req.on('error', (error) => reject(error));\n req.end();\n });\n}\n\nexport function decompressReadStream(readStream, headers) {\n switch (headers.get('content-encoding')) {\n case 'br':\n return readStream.pipe(zlib.createBrotliDecompress());\n case 'gzip':\n return readStream.pipe(zlib.createGunzip());\n case 'deflate':\n return readStream.pipe(zlib.createDeflate());\n default:\n // No compression or an unknown one, just return it as is\n return readStream;\n }\n}\n\nexport async function concatenateReadStream(readStream) {\n let arrayBuffer = new ArrayBuffer(0);\n\n return await new Promise((resolve, reject) => {\n readStream.on('error', (error) => reject(error));\n\n // Once the readable callback has been added, stream switches to \"flowing mode\"\n // In Node 10 (but not 12 and 14) this causes `data` and `end` to never be called unless we read data here\n readStream.on('readable', () => readStream.read());\n\n readStream.on('data', (chunk) => {\n if (typeof chunk === 'string') {\n reject(new Error('Read stream not binary'));\n }\n const chunkAsArrayBuffer = toArrayBuffer(chunk);\n arrayBuffer = concatenateArrayBuffers(arrayBuffer, chunkAsArrayBuffer);\n });\n\n readStream.on('end', () => resolve(arrayBuffer));\n });\n}\n\n// HELPERS\n\nfunction getRequestOptions(url, options?: {fetch?: typeof fetch; headers?}) {\n // Ensure header keys are lower case so that we can merge without duplicates\n const originalHeaders = options?.headers || {};\n const headers = {};\n for (const key of Object.keys(originalHeaders)) {\n headers[key.toLowerCase()] = originalHeaders[key];\n }\n\n // Add default accept-encoding to headers\n headers['accept-encoding'] = headers['accept-encoding'] || 'gzip,br,deflate';\n\n const urlObject = new URL(url);\n return {\n hostname: urlObject.hostname,\n path: urlObject.pathname,\n method: 'GET',\n // Add options and user provided 'options.fetch' overrides if available\n ...options,\n ...options?.fetch,\n // Override with updated headers with accepted encodings:\n headers\n };\n}\n\nfunction concatenateArrayBuffers(source1, source2) {\n const sourceArray1 = source1 instanceof ArrayBuffer ? new Uint8Array(source1) : source1;\n const sourceArray2 = source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2;\n const temp = new Uint8Array(sourceArray1.byteLength + sourceArray2.byteLength);\n temp.set(sourceArray1, 0);\n temp.set(sourceArray2, sourceArray1.byteLength);\n return temp.buffer;\n}\n"],"file":"stream-utils.node.js"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.BlobStreamController = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ class BlobStreamController {
13
+ constructor(chunks) {
14
+ (0, _defineProperty2.default)(this, "chunks", void 0);
15
+ (0, _defineProperty2.default)(this, "isWorking", false);
16
+ (0, _defineProperty2.default)(this, "isCancelled", false);
17
+ this.chunks = chunks;
18
+ }
19
+
20
+ start(controller) {
21
+ this.work(controller);
22
+ }
23
+
24
+ async work(controller) {
25
+ const {
26
+ chunks
27
+ } = this;
28
+ this.isWorking = true;
29
+
30
+ while (!this.isCancelled && (controller.desiredSize || 0) > 0) {
31
+ let next;
32
+
33
+ try {
34
+ next = chunks.next();
35
+ } catch (error) {
36
+ controller.error(error);
37
+ break;
38
+ }
39
+
40
+ if (next) {
41
+ if (!next.done && !this.isCancelled) {
42
+ controller.enqueue(next.value);
43
+ } else {
44
+ controller.close();
45
+ }
46
+ }
47
+ }
48
+
49
+ this.isWorking = false;
50
+ }
51
+
52
+ pull(controller) {
53
+ if (!this.isWorking) {
54
+ this.work(controller);
55
+ }
56
+ }
57
+
58
+ cancel() {
59
+ this.isCancelled = true;
60
+ }
61
+
62
+ }
63
+
64
+ exports.BlobStreamController = BlobStreamController;
65
+ //# sourceMappingURL=blob-stream-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/node/file/blob-stream-controller.ts"],"names":["BlobStreamController","constructor","chunks","start","controller","work","isWorking","isCancelled","desiredSize","next","error","done","enqueue","value","close","pull","cancel"],"mappings":";;;;;;;;;;;AAIO,MAAMA,oBAAN,CAA2B;AAQhCC,EAAAA,WAAW,CAACC,MAAD,EAA+B;AAAA;AAAA,qDANb,KAMa;AAAA,uDALX,KAKW;AACxC,SAAKA,MAAL,GAAcA,MAAd;AACD;;AAKDC,EAAAA,KAAK,CAACC,UAAD,EAA8C;AACjD,SAAKC,IAAL,CAAUD,UAAV;AACD;;AAMS,QAAJC,IAAI,CAACD,UAAD,EAA8C;AACtD,UAAM;AAACF,MAAAA;AAAD,QAAW,IAAjB;AAEA,SAAKI,SAAL,GAAiB,IAAjB;;AACA,WAAO,CAAC,KAAKC,WAAN,IAAqB,CAACH,UAAU,CAACI,WAAX,IAA0B,CAA3B,IAAgC,CAA5D,EAA+D;AAC7D,UAAIC,IAAJ;;AACA,UAAI;AACFA,QAAAA,IAAI,GAAGP,MAAM,CAACO,IAAP,EAAP;AACD,OAFD,CAEE,OAAOC,KAAP,EAAc;AACdN,QAAAA,UAAU,CAACM,KAAX,CAAiBA,KAAjB;AACA;AACD;;AAED,UAAID,IAAJ,EAAU;AACR,YAAI,CAACA,IAAI,CAACE,IAAN,IAAc,CAAC,KAAKJ,WAAxB,EAAqC;AACnCH,UAAAA,UAAU,CAACQ,OAAX,CAAmBH,IAAI,CAACI,KAAxB;AACD,SAFD,MAEO;AACLT,UAAAA,UAAU,CAACU,KAAX;AACD;AACF;AACF;;AAED,SAAKR,SAAL,GAAiB,KAAjB;AACD;;AAMDS,EAAAA,IAAI,CAACX,UAAD,EAAa;AACf,QAAI,CAAC,KAAKE,SAAV,EAAqB;AACnB,WAAKD,IAAL,CAAUD,UAAV;AACD;AACF;;AACDY,EAAAA,MAAM,GAAG;AACP,SAAKT,WAAL,GAAmB,IAAnB;AACD;;AA3D+B","sourcesContent":["/**\n * Forked from @gozala's web-blob under MIT license\n * @see https://github.com/Gozala/web-blob\n */\nexport class BlobStreamController {\n private chunks: Iterator<Uint8Array>;\n private isWorking: boolean = false;\n private isCancelled: boolean = false;\n\n /**\n * @param chunks\n */\n constructor(chunks: Iterator<Uint8Array>) {\n this.chunks = chunks;\n }\n\n /**\n * @param controller\n */\n start(controller: ReadableStreamDefaultController) {\n this.work(controller); // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n\n /**\n *\n * @param controller\n */\n async work(controller: ReadableStreamDefaultController) {\n const {chunks} = this;\n\n this.isWorking = true;\n while (!this.isCancelled && (controller.desiredSize || 0) > 0) {\n let next: {done?: boolean; value?: Uint8Array} | undefined;\n try {\n next = chunks.next();\n } catch (error) {\n controller.error(error);\n break;\n }\n\n if (next) {\n if (!next.done && !this.isCancelled) {\n controller.enqueue(next.value);\n } else {\n controller.close();\n }\n }\n }\n\n this.isWorking = false;\n }\n\n /**\n *\n * @param {ReadableStreamDefaultController} controller\n */\n pull(controller) {\n if (!this.isWorking) {\n this.work(controller); // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n }\n cancel() {\n this.isCancelled = true;\n }\n}\n"],"file":"blob-stream-controller.js"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.BlobStream = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _readableStream = require("./readable-stream");
13
+
14
+ var _blobStreamController = require("./blob-stream-controller");
15
+
16
+ let _Symbol$asyncIterator;
17
+
18
+ _Symbol$asyncIterator = Symbol.asyncIterator;
19
+
20
+ class BlobStream extends _readableStream.ReadableStreamPolyfill {
21
+ constructor(chunks) {
22
+ super(new _blobStreamController.BlobStreamController(chunks.values()), {
23
+ type: 'bytes'
24
+ });
25
+ (0, _defineProperty2.default)(this, "_chunks", void 0);
26
+ this._chunks = chunks;
27
+ }
28
+
29
+ async *[_Symbol$asyncIterator](_options) {
30
+ const reader = this.getReader();
31
+ yield* this._chunks;
32
+ reader.releaseLock();
33
+ }
34
+
35
+ }
36
+
37
+ exports.BlobStream = BlobStream;
38
+ //# sourceMappingURL=blob-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/node/file/blob-stream.ts"],"names":["Symbol","asyncIterator","BlobStream","ReadableStreamPolyfill","constructor","chunks","BlobStreamController","values","type","_chunks","_options","reader","getReader","releaseLock"],"mappings":";;;;;;;;;;;AAIA;;AACA;;;;wBAyBUA,MAAM,CAACC,a;;AAhBV,MAAMC,UAAN,SAA4BC,sCAA5B,CAAsD;AAK3DC,EAAAA,WAAW,CAACC,MAAD,EAAS;AAElB,UAAM,IAAIC,0CAAJ,CAAyBD,MAAM,CAACE,MAAP,EAAzB,CAAN,EAAiD;AAACC,MAAAA,IAAI,EAAE;AAAP,KAAjD;AAFkB;AAIlB,SAAKC,OAAL,GAAeJ,MAAf;AACD;;AAMD,iCAA8BK,QAA9B,EAA+F;AAC7F,UAAMC,MAAM,GAAG,KAAKC,SAAL,EAAf;AACA,WAAO,KAAKH,OAAZ;AACAE,IAAAA,MAAM,CAACE,WAAP;AACD;;AApB0D","sourcesContent":["/**\n * Forked from @gozala's web-blob under MIT license\n * @see https://github.com/Gozala/web-blob\n */\nimport {ReadableStreamPolyfill} from './readable-stream';\nimport {BlobStreamController} from './blob-stream-controller';\n\n/**\n * Blob stream is a `ReadableStream` extension optimized to have minimal\n * overhead when consumed as `AsyncIterable<Uint8Array>`.\n * extends {ReadableStream<Uint8Array>}\n * implements {AsyncIterable<Uint8Array>}\n */\n// @ts-ignore\nexport class BlobStream<T> extends ReadableStreamPolyfill<T> {\n private readonly _chunks: Uint8Array[];\n /**\n * @param chunks\n */\n constructor(chunks) {\n // @ts-ignore\n super(new BlobStreamController(chunks.values()), {type: 'bytes'});\n /** @private */\n this._chunks = chunks;\n }\n\n /**\n * @property [_options.preventCancel]\n */\n // @ts-ignore\n async *[Symbol.asyncIterator](_options?: {preventCancel?: boolean}): AsyncIterable<Uint8Array> {\n const reader = this.getReader();\n yield* this._chunks;\n reader.releaseLock();\n }\n}\n"],"file":"blob-stream.js"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.BlobPolyfill = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _blobStream = require("./blob-stream");
13
+
14
+ let _Symbol$toStringTag;
15
+
16
+ _Symbol$toStringTag = Symbol.toStringTag;
17
+
18
+ class BlobPolyfill {
19
+ constructor(init = [], options = {}) {
20
+ (0, _defineProperty2.default)(this, "type", void 0);
21
+ (0, _defineProperty2.default)(this, "size", void 0);
22
+ (0, _defineProperty2.default)(this, "parts", void 0);
23
+ this.parts = [];
24
+ this.size = 0;
25
+
26
+ for (const part of init) {
27
+ if (typeof part === 'string') {
28
+ const bytes = new TextEncoder().encode(part);
29
+ this.parts.push(bytes);
30
+ this.size += bytes.byteLength;
31
+ } else if (part instanceof BlobPolyfill) {
32
+ this.size += part.size;
33
+ this.parts.push(...part.parts);
34
+ } else if (part instanceof ArrayBuffer) {
35
+ this.parts.push(new Uint8Array(part));
36
+ this.size += part.byteLength;
37
+ } else if (part instanceof Uint8Array) {
38
+ this.parts.push(part);
39
+ this.size += part.byteLength;
40
+ } else if (ArrayBuffer.isView(part)) {
41
+ const {
42
+ buffer,
43
+ byteOffset,
44
+ byteLength
45
+ } = part;
46
+ this.parts.push(new Uint8Array(buffer, byteOffset, byteLength));
47
+ this.size += byteLength;
48
+ } else {
49
+ const bytes = new TextEncoder().encode(String(part));
50
+ this.parts.push(bytes);
51
+ this.size += bytes.byteLength;
52
+ }
53
+ }
54
+
55
+ this.type = readType(options.type);
56
+ }
57
+
58
+ slice(start = 0, end = this.size, type = '') {
59
+ const {
60
+ size,
61
+ parts: parts
62
+ } = this;
63
+ let offset = start < 0 ? Math.max(size + start, 0) : Math.min(start, size);
64
+ let limit = end < 0 ? Math.max(size + end, 0) : Math.min(end, size);
65
+ const span = Math.max(limit - offset, 0);
66
+ const blob = new BlobPolyfill([], {
67
+ type
68
+ });
69
+
70
+ if (span === 0) {
71
+ return blob;
72
+ }
73
+
74
+ let blobSize = 0;
75
+ const blobParts = [];
76
+
77
+ for (const part of parts) {
78
+ const {
79
+ byteLength
80
+ } = part;
81
+
82
+ if (offset > 0 && byteLength <= offset) {
83
+ offset -= byteLength;
84
+ limit -= byteLength;
85
+ } else {
86
+ const chunk = part.subarray(offset, Math.min(byteLength, limit));
87
+ blobParts.push(chunk);
88
+ blobSize += chunk.byteLength;
89
+ offset = 0;
90
+
91
+ if (blobSize >= span) {
92
+ break;
93
+ }
94
+ }
95
+ }
96
+
97
+ blob.parts = blobParts;
98
+ blob.size = blobSize;
99
+ return blob;
100
+ }
101
+
102
+ async arrayBuffer() {
103
+ return this._toArrayBuffer();
104
+ }
105
+
106
+ async text() {
107
+ const decoder = new TextDecoder();
108
+ let text = '';
109
+
110
+ for (const part of this.parts) {
111
+ text += decoder.decode(part);
112
+ }
113
+
114
+ return text;
115
+ }
116
+
117
+ stream() {
118
+ return new _blobStream.BlobStream(this.parts);
119
+ }
120
+
121
+ toString() {
122
+ return '[object Blob]';
123
+ }
124
+
125
+ get [_Symbol$toStringTag]() {
126
+ return 'Blob';
127
+ }
128
+
129
+ _toArrayBuffer() {
130
+ const buffer = new ArrayBuffer(this.size);
131
+ const bytes = new Uint8Array(buffer);
132
+ let offset = 0;
133
+
134
+ for (const part of this.parts) {
135
+ bytes.set(part, offset);
136
+ offset += part.byteLength;
137
+ }
138
+
139
+ return buffer;
140
+ }
141
+
142
+ }
143
+
144
+ exports.BlobPolyfill = BlobPolyfill;
145
+
146
+ function readType(input = '') {
147
+ const type = String(input).toLowerCase();
148
+ return /[^\u0020-\u007E]/.test(type) ? '' : type;
149
+ }
150
+ //# sourceMappingURL=blob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/node/file/blob.ts"],"names":["Symbol","toStringTag","BlobPolyfill","constructor","init","options","parts","size","part","bytes","TextEncoder","encode","push","byteLength","ArrayBuffer","Uint8Array","isView","buffer","byteOffset","String","type","readType","slice","start","end","offset","Math","max","min","limit","span","blob","blobSize","blobParts","chunk","subarray","arrayBuffer","_toArrayBuffer","text","decoder","TextDecoder","decode","stream","BlobStream","toString","set","input","toLowerCase","test"],"mappings":"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","sourcesContent":["// Forked from @gozala's web-blob under MIT license https://github.com/Gozala/web-blob\nimport {BlobStream} from './blob-stream';\n\n/**\n * Forked from @gozala's web-blob under MIT license\n * @see https://github.com/Gozala/web-blob\n */\nexport class BlobPolyfill {\n // implements Blob {\n /** The MIME type of the data contained in the Blob. If type is unknown, string is empty. */\n readonly type: string;\n /** The size, in bytes, of the data contained in the Blob object. */\n size: number;\n private parts: Uint8Array[];\n /**\n * @param [init]\n * @param [options]\n */\n constructor(init: BlobPart[] = [], options: BlobPropertyBag = {}) {\n this.parts = [];\n\n this.size = 0;\n for (const part of init) {\n if (typeof part === 'string') {\n const bytes = new TextEncoder().encode(part);\n this.parts.push(bytes);\n this.size += bytes.byteLength;\n } else if (part instanceof BlobPolyfill) {\n this.size += part.size;\n // @ts-ignore - `parts` is marked private so TS will complain about\n // accessing it.\n this.parts.push(...part.parts);\n } else if (part instanceof ArrayBuffer) {\n this.parts.push(new Uint8Array(part));\n this.size += part.byteLength;\n } else if (part instanceof Uint8Array) {\n this.parts.push(part);\n this.size += part.byteLength;\n } else if (ArrayBuffer.isView(part)) {\n const {buffer, byteOffset, byteLength} = part;\n this.parts.push(new Uint8Array(buffer, byteOffset, byteLength));\n this.size += byteLength;\n } else {\n const bytes = new TextEncoder().encode(String(part));\n this.parts.push(bytes);\n this.size += bytes.byteLength;\n }\n }\n\n /** @private */\n this.type = readType(options.type);\n }\n\n /**\n * Returns a new Blob object containing the data in the specified range of\n * bytes of the blob on which it's called.\n * @param start=0 - An index into the Blob indicating the first\n * byte to include in the new Blob. If you specify a negative value, it's\n * treated as an offset from the end of the Blob toward the beginning. For\n * example, `-10` would be the 10th from last byte in the Blob. The default\n * value is `0`. If you specify a value for start that is larger than the\n * size of the source Blob, the returned Blob has size 0 and contains no\n * data.\n * @param end - An index into the `Blob` indicating the first byte\n * that will *not* be included in the new `Blob` (i.e. the byte exactly at\n * this index is not included). If you specify a negative value, it's treated\n * as an offset from the end of the Blob toward the beginning. For example,\n * `-10` would be the 10th from last byte in the `Blob`. The default value is\n * size.\n * @param type - The content type to assign to the new Blob;\n * this will be the value of its type property. The default value is an empty\n * string.\n */\n slice(start: number = 0, end: number = this.size, type: string = ''): Blob {\n const {size, parts: parts} = this;\n let offset = start < 0 ? Math.max(size + start, 0) : Math.min(start, size);\n\n let limit = end < 0 ? Math.max(size + end, 0) : Math.min(end, size);\n const span = Math.max(limit - offset, 0);\n const blob = new BlobPolyfill([], {type});\n\n if (span === 0) {\n // @ts-ignore\n return blob;\n }\n\n let blobSize = 0;\n const blobParts: Uint8Array[] = [];\n for (const part of parts) {\n const {byteLength} = part;\n if (offset > 0 && byteLength <= offset) {\n offset -= byteLength;\n limit -= byteLength;\n } else {\n const chunk = part.subarray(offset, Math.min(byteLength, limit));\n blobParts.push(chunk);\n blobSize += chunk.byteLength;\n // no longer need to take that into account\n offset = 0;\n\n // don't add the overflow to new blobParts\n if (blobSize >= span) {\n break;\n }\n }\n }\n\n blob.parts = blobParts;\n blob.size = blobSize;\n\n // @ts-ignore\n return blob;\n }\n\n /**\n * Returns a promise that resolves with an ArrayBuffer containing the entire\n * contents of the Blob as binary data.\n */\n // eslint-disable-next-line require-await\n async arrayBuffer(): Promise<ArrayBuffer> {\n return this._toArrayBuffer();\n }\n\n /**\n * Returns a promise that resolves with a USVString containing the entire\n * contents of the Blob interpreted as UTF-8 text.\n */\n // eslint-disable-next-line require-await\n async text(): Promise<string> {\n const decoder = new TextDecoder();\n let text = '';\n for (const part of this.parts) {\n text += decoder.decode(part);\n }\n return text;\n }\n\n /**\n */\n // @ts-ignore\n stream(): BlobStream<any> {\n return new BlobStream<any>(this.parts);\n }\n\n /**\n * @returns {string}\n */\n toString() {\n return '[object Blob]';\n }\n\n get [Symbol.toStringTag]() {\n return 'Blob';\n }\n\n _toArrayBuffer(): ArrayBuffer {\n const buffer = new ArrayBuffer(this.size);\n const bytes = new Uint8Array(buffer);\n let offset = 0;\n for (const part of this.parts) {\n bytes.set(part, offset);\n offset += part.byteLength;\n }\n return buffer;\n }\n}\n\n/**\n */\nfunction readType(input: string = ''): string {\n const type = String(input).toLowerCase();\n return /[^\\u0020-\\u007E]/.test(type) ? '' : type;\n}\n"],"file":"blob.js"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.FileReaderPolyfill = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _btoa = require("../buffer/btoa.node");
13
+
14
+ class FileReaderPolyfill {
15
+ constructor() {
16
+ (0, _defineProperty2.default)(this, "onload", void 0);
17
+ (0, _defineProperty2.default)(this, "onabort", void 0);
18
+ (0, _defineProperty2.default)(this, "onerror", void 0);
19
+ (0, _defineProperty2.default)(this, "error", void 0);
20
+ (0, _defineProperty2.default)(this, "onloadstart", void 0);
21
+ (0, _defineProperty2.default)(this, "onloadend", void 0);
22
+ (0, _defineProperty2.default)(this, "onprogress", void 0);
23
+ (0, _defineProperty2.default)(this, "readyState", void 0);
24
+ (0, _defineProperty2.default)(this, "result", void 0);
25
+ (0, _defineProperty2.default)(this, "DONE", void 0);
26
+ (0, _defineProperty2.default)(this, "EMPTY", void 0);
27
+ (0, _defineProperty2.default)(this, "LOADING", void 0);
28
+ (0, _defineProperty2.default)(this, "addEventListener", void 0);
29
+ (0, _defineProperty2.default)(this, "removeEventListener", void 0);
30
+ (0, _defineProperty2.default)(this, "dispatchEvent", void 0);
31
+ this.onload = null;
32
+ }
33
+
34
+ abort() {
35
+ return;
36
+ }
37
+
38
+ async readAsArrayBuffer(blob) {
39
+ const arrayBuffer = await blob.arrayBuffer();
40
+
41
+ if (this.onload) {
42
+ this.onload({
43
+ target: {
44
+ result: arrayBuffer
45
+ }
46
+ });
47
+ }
48
+ }
49
+
50
+ async readAsBinaryString(blob) {
51
+ throw Error('Not implemented');
52
+ }
53
+
54
+ async readAsDataURL(blob) {
55
+ const text = await blob.text();
56
+ const dataUrl = "data://;base64,".concat((0, _btoa.atob)(text));
57
+
58
+ if (this.onload) {
59
+ this.onload({
60
+ target: {
61
+ result: dataUrl
62
+ }
63
+ });
64
+ }
65
+ }
66
+
67
+ async readAsText(blob) {
68
+ const text = await blob.text();
69
+
70
+ if (this.onload) {
71
+ this.onload({
72
+ target: {
73
+ result: text
74
+ }
75
+ });
76
+ }
77
+ }
78
+
79
+ }
80
+
81
+ exports.FileReaderPolyfill = FileReaderPolyfill;
82
+ //# sourceMappingURL=file-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/node/file/file-reader.ts"],"names":["FileReaderPolyfill","constructor","onload","abort","readAsArrayBuffer","blob","arrayBuffer","target","result","readAsBinaryString","Error","readAsDataURL","text","dataUrl","readAsText"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,kBAAN,CAA+C;AAmBpDC,EAAAA,WAAW,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACZ,SAAKC,MAAL,GAAc,IAAd;AACD;;AAEDC,EAAAA,KAAK,GAAS;AACZ;AACD;;AAEsB,QAAjBC,iBAAiB,CAACC,IAAD,EAA4B;AACjD,UAAMC,WAAW,GAAG,MAAMD,IAAI,CAACC,WAAL,EAA1B;;AACA,QAAI,KAAKJ,MAAT,EAAiB;AACf,WAAKA,MAAL,CAAY;AAACK,QAAAA,MAAM,EAAE;AAACC,UAAAA,MAAM,EAAEF;AAAT;AAAT,OAAZ;AACD;AACF;;AAEuB,QAAlBG,kBAAkB,CAACJ,IAAD,EAAO;AAC7B,UAAMK,KAAK,CAAC,iBAAD,CAAX;AACD;;AAEkB,QAAbC,aAAa,CAACN,IAAD,EAAO;AACxB,UAAMO,IAAI,GAAG,MAAMP,IAAI,CAACO,IAAL,EAAnB;AACA,UAAMC,OAAO,4BAAqB,gBAAKD,IAAL,CAArB,CAAb;;AACA,QAAI,KAAKV,MAAT,EAAiB;AACf,WAAKA,MAAL,CAAY;AAACK,QAAAA,MAAM,EAAE;AAACC,UAAAA,MAAM,EAAEK;AAAT;AAAT,OAAZ;AACD;AACF;;AAEe,QAAVC,UAAU,CAACT,IAAD,EAAO;AACrB,UAAMO,IAAI,GAAG,MAAMP,IAAI,CAACO,IAAL,EAAnB;;AACA,QAAI,KAAKV,MAAT,EAAiB;AACf,WAAKA,MAAL,CAAY;AAACK,QAAAA,MAAM,EAAE;AAACC,UAAAA,MAAM,EAAEI;AAAT;AAAT,OAAZ;AACD;AACF;;AAnDmD","sourcesContent":["import {atob} from '../buffer/btoa.node';\n\nexport class FileReaderPolyfill implements FileReader {\n // onload: ({result: any}) => void;\n onload;\n onabort;\n onerror;\n error;\n onloadstart;\n onloadend;\n onprogress;\n\n readyState;\n result;\n DONE;\n EMPTY;\n LOADING;\n addEventListener;\n removeEventListener;\n dispatchEvent;\n\n constructor() {\n this.onload = null;\n }\n\n abort(): void {\n return;\n }\n\n async readAsArrayBuffer(blob: Blob): Promise<void> {\n const arrayBuffer = await blob.arrayBuffer();\n if (this.onload) {\n this.onload({target: {result: arrayBuffer}});\n }\n }\n\n async readAsBinaryString(blob) {\n throw Error('Not implemented');\n }\n\n async readAsDataURL(blob) {\n const text = await blob.text();\n const dataUrl = `data://;base64,${atob(text)}`;\n if (this.onload) {\n this.onload({target: {result: dataUrl}});\n }\n }\n\n async readAsText(blob) {\n const text = await blob.text();\n if (this.onload) {\n this.onload({target: {result: text}});\n }\n }\n}\n"],"file":"file-reader.js"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.FilePolyfill = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _blob = require("./blob");
13
+
14
+ let _Symbol$toStringTag;
15
+
16
+ _Symbol$toStringTag = Symbol.toStringTag;
17
+
18
+ class FilePolyfill extends _blob.BlobPolyfill {
19
+ constructor(init, name, options = {}) {
20
+ super(init, options);
21
+ (0, _defineProperty2.default)(this, "name", '');
22
+ (0, _defineProperty2.default)(this, "webkitRelativePath", '');
23
+ (0, _defineProperty2.default)(this, "lastModified", void 0);
24
+ this.name = String(name).replace(/\//g, ':');
25
+ this.lastModified = (options === null || options === void 0 ? void 0 : options.lastModified) || Date.now();
26
+ }
27
+
28
+ get [_Symbol$toStringTag]() {
29
+ return 'File';
30
+ }
31
+
32
+ }
33
+
34
+ exports.FilePolyfill = FilePolyfill;
35
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/node/file/file.ts"],"names":["Symbol","toStringTag","FilePolyfill","BlobPolyfill","constructor","init","name","options","String","replace","lastModified","Date","now"],"mappings":";;;;;;;;;;;AACA;;;;sBAqCOA,MAAM,CAACC,W;;AA9BP,MAAMC,YAAN,SAA2BC,kBAA3B,CAAwC;AAoB7CC,EAAAA,WAAW,CAACC,IAAD,EAAmBC,IAAnB,EAAiCC,OAAwB,GAAG,EAA5D,EAAgE;AACzE,UAAMF,IAAN,EAAYE,OAAZ;AADyE,gDAhB5D,EAgB4D;AAAA,8DAd9C,EAc8C;AAAA;AAKzE,SAAKD,IAAL,GAAYE,MAAM,CAACF,IAAD,CAAN,CAAaG,OAAb,CAAqB,KAArB,EAA4B,GAA5B,CAAZ;AAEA,SAAKC,YAAL,GAAoB,CAAAH,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEG,YAAT,KAAyBC,IAAI,CAACC,GAAL,EAA7C;AACD;;AAED,8BAA2B;AACzB,WAAO,MAAP;AACD;;AAhC4C","sourcesContent":["// Forked from @gozala's web-file under MIT license https://github.com/Gozala/web-file\nimport {BlobPolyfill} from './blob';\n\n/**\n * Forked from @gozala's web-file under MIT license\n * @see https://github.com/Gozala/web-file\n */\n// @ts-ignore\nexport class FilePolyfill extends BlobPolyfill {\n // implements File {\n // public API\n /** The name of the file referenced by the File object. */\n name: string = '';\n /** The path the URL of the File is relative to. */\n webkitRelativePath: string = '';\n\n /**\n * Returns the last modified time of the file, in millisecond since the UNIX\n * epoch (January 1st, 1970 at Midnight).\n */\n lastModified: number;\n\n /**\n * @param init\n * @param name - A USVString representing the file name or the path\n * to the file.\n * @param [options]\n */\n constructor(init: BlobPart[], name: string, options: FilePropertyBag = {}) {\n super(init, options);\n // Per File API spec https://w3c.github.io/FileAPI/#file-constructor\n // Every \"/\" character of file name must be replaced with a \":\".\n /** @private */\n this.name = String(name).replace(/\\//g, ':');\n /** @private */\n this.lastModified = options?.lastModified || Date.now();\n }\n\n get [Symbol.toStringTag]() {\n return 'File';\n }\n}\n"],"file":"file.js"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.installFilePolyfills = installFilePolyfills;
7
+
8
+ var _readableStream = require("./readable-stream");
9
+
10
+ var _blob = require("./blob");
11
+
12
+ var _fileReader = require("./file-reader");
13
+
14
+ var _file = require("./file");
15
+
16
+ function installFilePolyfills() {
17
+ if (typeof ReadableStream === 'undefined' && global) {
18
+ global.ReadableStream = _readableStream.ReadableStreamPolyfill;
19
+ }
20
+
21
+ if (typeof Blob === 'undefined' && global) {
22
+ global.Blob = _blob.BlobPolyfill;
23
+ }
24
+
25
+ if (typeof FileReader === 'undefined' && global) {
26
+ global.FileReader = _fileReader.FileReaderPolyfill;
27
+ }
28
+
29
+ if (typeof File === 'undefined' && global) {
30
+ global.File = _file.FilePolyfill;
31
+ }
32
+ }
33
+ //# sourceMappingURL=install-file-polyfills.js.map