@loaders.gl/polyfills 4.0.0-alpha.4 → 4.0.0-alpha.6

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 (208) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +2 -2
  4. package/dist/dist.min.js +4207 -0
  5. package/dist/es5/bundle.js +6 -0
  6. package/dist/es5/bundle.js.map +1 -0
  7. package/dist/es5/index.js +103 -0
  8. package/dist/es5/index.js.map +1 -0
  9. package/dist/es5/lib/encoding-indexes.js +37 -0
  10. package/dist/es5/lib/encoding-indexes.js.map +1 -0
  11. package/dist/es5/lib/encoding.js +1214 -0
  12. package/dist/es5/lib/encoding.js.map +1 -0
  13. package/{src/libs/encoding-indexes.js → dist/es5/libs/encoding-indexes-asian.js} +2 -40
  14. package/dist/es5/node/buffer/btoa.node.js +14 -0
  15. package/dist/es5/node/buffer/btoa.node.js.map +1 -0
  16. package/dist/es5/node/buffer/to-array-buffer.node.js +14 -0
  17. package/dist/es5/node/buffer/to-array-buffer.node.js.map +1 -0
  18. package/dist/es5/node/fetch/fetch-file.node.js +83 -0
  19. package/dist/es5/node/fetch/fetch-file.node.js.map +1 -0
  20. package/dist/es5/node/fetch/fetch.node.js +194 -0
  21. package/dist/es5/node/fetch/fetch.node.js.map +1 -0
  22. package/dist/es5/node/fetch/headers.node.js +151 -0
  23. package/dist/es5/node/fetch/headers.node.js.map +1 -0
  24. package/dist/es5/node/fetch/response.node.js +182 -0
  25. package/dist/es5/node/fetch/response.node.js.map +1 -0
  26. package/dist/es5/node/fetch/utils/decode-data-uri.node.js +58 -0
  27. package/dist/es5/node/fetch/utils/decode-data-uri.node.js.map +1 -0
  28. package/dist/es5/node/fetch/utils/stream-utils.node.js +92 -0
  29. package/dist/es5/node/fetch/utils/stream-utils.node.js.map +1 -0
  30. package/dist/es5/node/file/blob-stream-controller.js +90 -0
  31. package/dist/es5/node/file/blob-stream-controller.js.map +1 -0
  32. package/dist/es5/node/file/blob-stream.js +64 -0
  33. package/dist/es5/node/file/blob-stream.js.map +1 -0
  34. package/dist/es5/node/file/blob.js +212 -0
  35. package/dist/es5/node/file/blob.js.map +1 -0
  36. package/dist/es5/node/file/file-reader.js +153 -0
  37. package/dist/es5/node/file/file-reader.js.map +1 -0
  38. package/dist/es5/node/file/file.js +44 -0
  39. package/dist/es5/node/file/file.js.map +1 -0
  40. package/dist/es5/node/file/install-file-polyfills.js +25 -0
  41. package/dist/es5/node/file/install-file-polyfills.js.map +1 -0
  42. package/dist/es5/node/file/readable-stream.js +27 -0
  43. package/dist/es5/node/file/readable-stream.js.map +1 -0
  44. package/dist/es5/node/images/encode-image.node.js +30 -0
  45. package/dist/es5/node/images/encode-image.node.js.map +1 -0
  46. package/dist/es5/node/images/parse-image.node.js +64 -0
  47. package/dist/es5/node/images/parse-image.node.js.map +1 -0
  48. package/dist/es5/promise/all-settled.js +28 -0
  49. package/dist/es5/promise/all-settled.js.map +1 -0
  50. package/dist/es5/utils/assert.js +12 -0
  51. package/dist/es5/utils/assert.js.map +1 -0
  52. package/dist/es5/utils/globals.js +18 -0
  53. package/dist/es5/utils/globals.js.map +1 -0
  54. package/dist/esm/bundle.js +4 -0
  55. package/dist/esm/bundle.js.map +1 -0
  56. package/dist/esm/index.js +54 -0
  57. package/dist/esm/index.js.map +1 -0
  58. package/dist/esm/lib/encoding-indexes.js +30 -0
  59. package/dist/esm/lib/encoding-indexes.js.map +1 -0
  60. package/dist/esm/lib/encoding.js +1206 -0
  61. package/dist/esm/lib/encoding.js.map +1 -0
  62. package/dist/{libs/encoding-indexes.js → esm/libs/encoding-indexes-asian.js} +2 -40
  63. package/dist/esm/node/buffer/btoa.node.js +7 -0
  64. package/dist/esm/node/buffer/btoa.node.js.map +1 -0
  65. package/dist/esm/node/buffer/to-array-buffer.node.js +8 -0
  66. package/dist/esm/node/buffer/to-array-buffer.node.js.map +1 -0
  67. package/dist/esm/node/fetch/fetch-file.node.js +50 -0
  68. package/dist/esm/node/fetch/fetch-file.node.js.map +1 -0
  69. package/dist/esm/node/fetch/fetch.node.js +126 -0
  70. package/dist/esm/node/fetch/fetch.node.js.map +1 -0
  71. package/dist/esm/node/fetch/headers.node.js +102 -0
  72. package/dist/esm/node/fetch/headers.node.js.map +1 -0
  73. package/dist/esm/node/fetch/response.node.js +67 -0
  74. package/dist/esm/node/fetch/response.node.js.map +1 -0
  75. package/dist/esm/node/fetch/utils/decode-data-uri.node.js +45 -0
  76. package/dist/esm/node/fetch/utils/decode-data-uri.node.js.map +1 -0
  77. package/dist/esm/node/fetch/utils/stream-utils.node.js +43 -0
  78. package/dist/esm/node/fetch/utils/stream-utils.node.js.map +1 -0
  79. package/dist/esm/node/file/blob-stream-controller.js +44 -0
  80. package/dist/esm/node/file/blob-stream-controller.js.map +1 -0
  81. package/dist/esm/node/file/blob-stream.js +20 -0
  82. package/dist/esm/node/file/blob-stream.js.map +1 -0
  83. package/dist/esm/node/file/blob.js +120 -0
  84. package/dist/esm/node/file/blob.js.map +1 -0
  85. package/dist/esm/node/file/file-reader.js +60 -0
  86. package/dist/esm/node/file/file-reader.js.map +1 -0
  87. package/dist/esm/node/file/file.js +19 -0
  88. package/dist/esm/node/file/file.js.map +1 -0
  89. package/dist/esm/node/file/install-file-polyfills.js +19 -0
  90. package/dist/esm/node/file/install-file-polyfills.js.map +1 -0
  91. package/dist/esm/node/file/readable-stream.js +4 -0
  92. package/dist/esm/node/file/readable-stream.js.map +1 -0
  93. package/dist/esm/node/images/encode-image.node.js +20 -0
  94. package/dist/esm/node/images/encode-image.node.js.map +1 -0
  95. package/dist/esm/node/images/parse-image.node.js +29 -0
  96. package/dist/esm/node/images/parse-image.node.js.map +1 -0
  97. package/dist/esm/promise/all-settled.js +19 -0
  98. package/dist/esm/promise/all-settled.js.map +1 -0
  99. package/dist/esm/utils/assert.js +6 -0
  100. package/dist/esm/utils/assert.js.map +1 -0
  101. package/dist/esm/utils/globals.js +9 -0
  102. package/dist/esm/utils/globals.js.map +1 -0
  103. package/dist/index.d.ts +8 -0
  104. package/dist/index.d.ts.map +1 -0
  105. package/dist/index.js +90 -49
  106. package/dist/lib/encoding-indexes.d.ts +31 -0
  107. package/dist/lib/encoding-indexes.d.ts.map +1 -0
  108. package/dist/lib/encoding-indexes.js +35 -0
  109. package/dist/lib/encoding.d.ts +15 -0
  110. package/dist/lib/encoding.d.ts.map +1 -0
  111. package/dist/lib/encoding.js +2779 -0
  112. package/dist/libs/encoding-indexes-asian.d.ts +10 -0
  113. package/dist/libs/encoding-indexes-asian.d.ts.map +1 -0
  114. package/dist/libs/encoding-indexes-asian.js +14 -0
  115. package/dist/node/buffer/btoa.node.d.ts +3 -0
  116. package/dist/node/buffer/btoa.node.d.ts.map +1 -0
  117. package/dist/node/buffer/btoa.node.js +12 -5
  118. package/dist/node/buffer/to-array-buffer.node.d.ts +2 -0
  119. package/dist/node/buffer/to-array-buffer.node.d.ts.map +1 -0
  120. package/dist/node/buffer/to-array-buffer.node.js +11 -8
  121. package/dist/node/fetch/fetch-file.node.d.ts +4 -0
  122. package/dist/node/fetch/fetch-file.node.d.ts.map +1 -0
  123. package/dist/node/fetch/fetch-file.node.js +51 -0
  124. package/dist/node/fetch/fetch.node.d.ts +12 -0
  125. package/dist/node/fetch/fetch.node.d.ts.map +1 -0
  126. package/dist/node/fetch/fetch.node.js +128 -111
  127. package/dist/node/fetch/headers.node.d.ts +34 -0
  128. package/dist/node/fetch/headers.node.d.ts.map +1 -0
  129. package/dist/node/fetch/headers.node.js +95 -114
  130. package/dist/node/fetch/response.node.d.ts +22 -0
  131. package/dist/node/fetch/response.node.d.ts.map +1 -0
  132. package/dist/node/fetch/response.node.js +72 -84
  133. package/dist/node/fetch/utils/decode-data-uri.node.d.ts +16 -0
  134. package/dist/node/fetch/utils/decode-data-uri.node.d.ts.map +1 -0
  135. package/dist/node/fetch/utils/decode-data-uri.node.js +63 -55
  136. package/dist/node/fetch/utils/stream-utils.node.d.ts +17 -0
  137. package/dist/node/fetch/utils/stream-utils.node.d.ts.map +1 -0
  138. package/dist/node/fetch/utils/stream-utils.node.js +69 -85
  139. package/dist/node/file/blob-stream-controller.d.ts +29 -0
  140. package/dist/node/file/blob-stream-controller.d.ts.map +1 -0
  141. package/dist/node/file/blob-stream-controller.js +59 -52
  142. package/dist/node/file/blob-stream.d.ts +25 -0
  143. package/dist/node/file/blob-stream.d.ts.map +1 -0
  144. package/dist/node/file/blob-stream.js +36 -25
  145. package/dist/node/file/blob.d.ts +58 -0
  146. package/dist/node/file/blob.d.ts.map +1 -0
  147. package/dist/node/file/blob.js +151 -131
  148. package/dist/node/file/file-reader.d.ts +24 -0
  149. package/dist/node/file/file-reader.d.ts.map +1 -0
  150. package/dist/node/file/file-reader.js +28 -77
  151. package/dist/node/file/file.d.ts +25 -0
  152. package/dist/node/file/file.d.ts.map +1 -0
  153. package/dist/node/file/file.js +36 -25
  154. package/dist/node/file/install-file-polyfills.d.ts +2 -0
  155. package/dist/node/file/install-file-polyfills.d.ts.map +1 -0
  156. package/dist/node/file/install-file-polyfills.js +26 -21
  157. package/dist/node/file/readable-stream.d.ts +4 -0
  158. package/dist/node/file/readable-stream.d.ts.map +1 -0
  159. package/dist/node/file/readable-stream.js +10 -3
  160. package/dist/node/images/encode-image.node.d.ts +20 -0
  161. package/dist/node/images/encode-image.node.d.ts.map +1 -0
  162. package/dist/node/images/encode-image.node.js +38 -17
  163. package/dist/node/images/parse-image.node.d.ts +13 -0
  164. package/dist/node/images/parse-image.node.d.ts.map +1 -0
  165. package/dist/node/images/parse-image.node.js +40 -19
  166. package/dist/promise/all-settled.d.ts +10 -0
  167. package/dist/promise/all-settled.d.ts.map +1 -0
  168. package/dist/promise/all-settled.js +22 -17
  169. package/dist/utils/assert.d.ts +2 -0
  170. package/dist/utils/assert.d.ts.map +1 -0
  171. package/dist/utils/assert.js +8 -5
  172. package/dist/utils/globals.d.ts +4 -0
  173. package/dist/utils/globals.d.ts.map +1 -0
  174. package/dist/utils/globals.js +34 -7
  175. package/package.json +9 -8
  176. package/src/index.ts +9 -6
  177. package/src/lib/encoding-indexes.ts +34 -0
  178. package/src/{libs/encoding.js → lib/encoding.ts} +78 -78
  179. package/src/libs/encoding-indexes-asian.js +13 -0
  180. package/src/node/fetch/fetch-file.node.ts +51 -0
  181. package/src/node/fetch/fetch.node.ts +64 -30
  182. package/src/node/fetch/headers.node.ts +1 -1
  183. package/src/node/fetch/response.node.ts +4 -2
  184. package/src/node/fetch/utils/decode-data-uri.node.ts +7 -6
  185. package/src/node/fetch/utils/stream-utils.node.ts +39 -64
  186. package/src/node/images/parse-image.node.ts +35 -20
  187. package/dist/bundle.js.map +0 -1
  188. package/dist/index.js.map +0 -1
  189. package/dist/libs/encoding.js +0 -3084
  190. package/dist/node/buffer/btoa.node.js.map +0 -1
  191. package/dist/node/buffer/to-array-buffer.node.js.map +0 -1
  192. package/dist/node/fetch/fetch.node.js.map +0 -1
  193. package/dist/node/fetch/headers.node.js.map +0 -1
  194. package/dist/node/fetch/response.node.js.map +0 -1
  195. package/dist/node/fetch/utils/decode-data-uri.node.js.map +0 -1
  196. package/dist/node/fetch/utils/stream-utils.node.js.map +0 -1
  197. package/dist/node/file/blob-stream-controller.js.map +0 -1
  198. package/dist/node/file/blob-stream.js.map +0 -1
  199. package/dist/node/file/blob.js.map +0 -1
  200. package/dist/node/file/file-reader.js.map +0 -1
  201. package/dist/node/file/file.js.map +0 -1
  202. package/dist/node/file/install-file-polyfills.js.map +0 -1
  203. package/dist/node/file/readable-stream.js.map +0 -1
  204. package/dist/node/images/encode-image.node.js.map +0 -1
  205. package/dist/node/images/parse-image.node.js.map +0 -1
  206. package/dist/promise/all-settled.js.map +0 -1
  207. package/dist/utils/assert.js.map +0 -1
  208. package/dist/utils/globals.js.map +0 -1
@@ -0,0 +1,22 @@
1
+ import { Headers } from './headers.node';
2
+ export declare class Response {
3
+ readonly ok: boolean;
4
+ readonly status: number;
5
+ readonly statusText: string;
6
+ readonly headers: Headers;
7
+ readonly url: string;
8
+ bodyUsed: boolean;
9
+ private readonly _body;
10
+ constructor(body: any, options: {
11
+ headers?: any;
12
+ status?: number;
13
+ statusText?: string;
14
+ url: string;
15
+ });
16
+ get body(): any;
17
+ arrayBuffer(): Promise<any>;
18
+ text(): Promise<string>;
19
+ json(): Promise<any>;
20
+ blob(): Promise<Blob>;
21
+ }
22
+ //# sourceMappingURL=response.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.node.d.ts","sourceRoot":"","sources":["../../../src/node/fetch/response.node.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAC,MAAM,gBAAgB,CAAC;AAoBvC,qBAAa,QAAQ;IACnB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAIrB,IAAI,KAAA,EACJ,OAAO,EAAE;QACP,OAAO,CAAC,MAAC;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,GAAG,EAAE,MAAM,CAAC;KACb;IAuBH,IAAI,IAAI,QAKP;IAIK,WAAW;IAQX,IAAI;IAMJ,IAAI;IAKJ,IAAI;CAMX"}
@@ -1,88 +1,76 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { assert } from '../../utils/assert';
3
- import { decompressReadStream, concatenateReadStream } from './utils/stream-utils.node';
4
- import Headers from './headers.node';
5
-
6
- const isBoolean = x => typeof x === 'boolean';
7
-
8
- const isFunction = x => typeof x === 'function';
9
-
10
- const isObject = x => x !== null && typeof x === 'object';
11
-
12
- const isReadableNodeStream = x => isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);
13
-
14
- import { Readable } from 'stream';
15
- export default class Response {
16
- constructor(body, options) {
17
- _defineProperty(this, "ok", void 0);
18
-
19
- _defineProperty(this, "status", void 0);
20
-
21
- _defineProperty(this, "statusText", void 0);
22
-
23
- _defineProperty(this, "headers", void 0);
24
-
25
- _defineProperty(this, "url", void 0);
26
-
27
- _defineProperty(this, "bodyUsed", false);
28
-
29
- _defineProperty(this, "_body", void 0);
30
-
31
- const {
32
- headers,
33
- status = 200,
34
- statusText = 'OK',
35
- url
36
- } = options || {};
37
- this.url = url;
38
- this.ok = status === 200;
39
- this.status = status;
40
- this.statusText = statusText;
41
- this.headers = new Headers((options === null || options === void 0 ? void 0 : options.headers) || {});
42
-
43
- if (isReadableNodeStream(body)) {
44
- this._body = decompressReadStream(body, headers);
45
- } else if (typeof body === 'string') {
46
- this._body = Readable.from([new TextEncoder().encode(body)]);
47
- } else {
48
- this._body = Readable.from([body || new ArrayBuffer(0)]);
1
+ "use strict";
2
+ // loaders.gl, MIT license
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Response = void 0;
5
+ const assert_1 = require("../../utils/assert");
6
+ const stream_utils_node_1 = require("./utils/stream-utils.node");
7
+ const headers_node_1 = require("./headers.node");
8
+ const isBoolean = (x) => typeof x === 'boolean';
9
+ const isFunction = (x) => typeof x === 'function';
10
+ const isObject = (x) => x !== null && typeof x === 'object';
11
+ const isReadableNodeStream = (x) => isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);
12
+ /**
13
+ * Polyfill for Browser Response
14
+ *
15
+ * Under Node.js we return a mock "fetch response object"
16
+ * so that apps can use the same API as in the browser.
17
+ *
18
+ * Note: This is intended to be a "lightweight" implementation and will have limitations.
19
+ *
20
+ * See https://developer.mozilla.org/en-US/docs/Web/API/Response
21
+ */
22
+ const stream_1 = require("stream");
23
+ class Response {
24
+ // TODO - handle ArrayBuffer, ArrayBufferView, Buffer
25
+ constructor(body, options) {
26
+ this.bodyUsed = false;
27
+ const { headers, status = 200, statusText = 'OK', url } = options || {};
28
+ this.url = url;
29
+ this.ok = status === 200;
30
+ this.status = status; // TODO - handle errors and set status
31
+ this.statusText = statusText;
32
+ this.headers = new headers_node_1.Headers(options?.headers || {});
33
+ // Check for content-encoding and create a decompression stream
34
+ if (isReadableNodeStream(body)) {
35
+ this._body = (0, stream_utils_node_1.decompressReadStream)(body, headers);
36
+ }
37
+ else if (typeof body === 'string') {
38
+ this._body = stream_1.Readable.from([new TextEncoder().encode(body)]);
39
+ }
40
+ else {
41
+ this._body = stream_1.Readable.from([body || new ArrayBuffer(0)]);
42
+ }
49
43
  }
50
- }
51
-
52
- get body() {
53
- assert(!this.bodyUsed);
54
- assert(isReadableNodeStream(this._body));
55
- this.bodyUsed = true;
56
- return this._body;
57
- }
58
-
59
- async arrayBuffer() {
60
- if (!isReadableNodeStream(this._body)) {
61
- return this._body || new ArrayBuffer(0);
44
+ // Subset of Properties
45
+ // Returns a readable stream to the "body" of the response (or file)
46
+ get body() {
47
+ (0, assert_1.assert)(!this.bodyUsed);
48
+ (0, assert_1.assert)(isReadableNodeStream(this._body)); // Not implemented: conversion of ArrayBuffer etc to stream
49
+ this.bodyUsed = true;
50
+ return this._body;
62
51
  }
63
-
64
- const data = await concatenateReadStream(this._body);
65
- return data;
66
- }
67
-
68
- async text() {
69
- const arrayBuffer = await this.arrayBuffer();
70
- const textDecoder = new TextDecoder();
71
- return textDecoder.decode(arrayBuffer);
72
- }
73
-
74
- async json() {
75
- const text = await this.text();
76
- return JSON.parse(text);
77
- }
78
-
79
- async blob() {
80
- if (typeof Blob === 'undefined') {
81
- throw new Error('Blob polyfill not installed');
52
+ // Subset of Methods
53
+ async arrayBuffer() {
54
+ if (!isReadableNodeStream(this._body)) {
55
+ return this._body || new ArrayBuffer(0);
56
+ }
57
+ const data = await (0, stream_utils_node_1.concatenateReadStream)(this._body);
58
+ return data;
59
+ }
60
+ async text() {
61
+ const arrayBuffer = await this.arrayBuffer();
62
+ const textDecoder = new TextDecoder();
63
+ return textDecoder.decode(arrayBuffer);
64
+ }
65
+ async json() {
66
+ const text = await this.text();
67
+ return JSON.parse(text);
68
+ }
69
+ async blob() {
70
+ if (typeof Blob === 'undefined') {
71
+ throw new Error('Blob polyfill not installed');
72
+ }
73
+ return new Blob([await this.arrayBuffer()]);
82
74
  }
83
-
84
- return new Blob([await this.arrayBuffer()]);
85
- }
86
-
87
75
  }
88
- //# sourceMappingURL=response.node.js.map
76
+ exports.Response = Response;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Parses a data URI into a buffer, as well as retrieving its declared MIME type.
3
+ *
4
+ * @param {string} uri - a data URI (assumed to be valid)
5
+ * @returns {Object} { buffer, mimeType }
6
+ */
7
+ export declare function decodeDataUri(uri: string): {
8
+ arrayBuffer: ArrayBuffer;
9
+ mimeType: string;
10
+ };
11
+ /**
12
+ * @param data
13
+ * @todo Duplicate of core
14
+ */
15
+ export declare function toArrayBuffer(data: unknown): ArrayBuffer;
16
+ //# sourceMappingURL=decode-data-uri.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-data-uri.node.d.ts","sourceRoot":"","sources":["../../../../src/node/fetch/utils/decode-data-uri.node.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG;IAAC,WAAW,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,CAoBvF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CA+BxD"}
@@ -1,57 +1,65 @@
1
- import { assert } from '../../../utils/assert';
2
-
3
- const isArrayBuffer = x => x && x instanceof ArrayBuffer;
4
-
5
- const isBuffer = x => x && x instanceof Buffer;
6
-
7
- export function decodeDataUri(uri) {
8
- const dataIndex = uri.indexOf(',');
9
- let buffer;
10
- let mimeType;
11
-
12
- if (uri.slice(dataIndex - 7, dataIndex) === ';base64') {
13
- buffer = Buffer.from(uri.slice(dataIndex + 1), 'base64');
14
- mimeType = uri.slice(5, dataIndex - 7).trim();
15
- } else {
16
- buffer = Buffer.from(decodeURIComponent(uri.slice(dataIndex + 1)));
17
- mimeType = uri.slice(5, dataIndex).trim();
18
- }
19
-
20
- if (!mimeType) {
21
- mimeType = 'text/plain;charset=US-ASCII';
22
- } else if (mimeType.startsWith(';')) {
23
- mimeType = "text/plain".concat(mimeType);
24
- }
25
-
26
- return {
27
- arrayBuffer: toArrayBuffer(buffer),
28
- mimeType
29
- };
1
+ "use strict";
2
+ // Based on binary-gltf-utils under MIT license: Copyright (c) 2016-17 Karl Cheng
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.toArrayBuffer = exports.decodeDataUri = void 0;
5
+ const isArrayBuffer = (x) => x && x instanceof ArrayBuffer;
6
+ const isBuffer = (x) => x && x instanceof Buffer;
7
+ /**
8
+ * Parses a data URI into a buffer, as well as retrieving its declared MIME type.
9
+ *
10
+ * @param {string} uri - a data URI (assumed to be valid)
11
+ * @returns {Object} { buffer, mimeType }
12
+ */
13
+ function decodeDataUri(uri) {
14
+ const dataIndex = uri.indexOf(',');
15
+ let buffer;
16
+ let mimeType;
17
+ if (uri.slice(dataIndex - 7, dataIndex) === ';base64') {
18
+ buffer = Buffer.from(uri.slice(dataIndex + 1), 'base64');
19
+ mimeType = uri.slice(5, dataIndex - 7).trim();
20
+ }
21
+ else {
22
+ buffer = Buffer.from(decodeURIComponent(uri.slice(dataIndex + 1)));
23
+ mimeType = uri.slice(5, dataIndex).trim();
24
+ }
25
+ if (!mimeType) {
26
+ mimeType = 'text/plain;charset=US-ASCII';
27
+ }
28
+ else if (mimeType.startsWith(';')) {
29
+ mimeType = `text/plain${mimeType}`;
30
+ }
31
+ return { arrayBuffer: toArrayBuffer(buffer), mimeType };
30
32
  }
31
- export function toArrayBuffer(data) {
32
- if (isArrayBuffer(data)) {
33
- return data;
34
- }
35
-
36
- if (isBuffer(data)) {
37
- const typedArray = new Uint8Array(data);
38
- return typedArray.buffer;
39
- }
40
-
41
- if (ArrayBuffer.isView(data)) {
42
- return data.buffer;
43
- }
44
-
45
- if (typeof data === 'string') {
46
- const text = data;
47
- const uint8Array = new TextEncoder().encode(text);
48
- return uint8Array.buffer;
49
- }
50
-
51
- if (data && typeof data === 'object' && data._toArrayBuffer) {
52
- return data._toArrayBuffer();
53
- }
54
-
55
- return assert(false, "toArrayBuffer(".concat(JSON.stringify(data, null, 2).slice(10), ")"));
33
+ exports.decodeDataUri = decodeDataUri;
34
+ /**
35
+ * @param data
36
+ * @todo Duplicate of core
37
+ */
38
+ function toArrayBuffer(data) {
39
+ if (isArrayBuffer(data)) {
40
+ return data;
41
+ }
42
+ // TODO - per docs we should just be able to call buffer.buffer, but there are issues
43
+ if (isBuffer(data)) {
44
+ // @ts-expect-error
45
+ const typedArray = new Uint8Array(data);
46
+ return typedArray.buffer;
47
+ }
48
+ // Careful - Node Buffers will look like ArrayBuffers (keep after isBuffer)
49
+ if (ArrayBuffer.isView(data)) {
50
+ return data.buffer;
51
+ }
52
+ if (typeof data === 'string') {
53
+ const text = data;
54
+ const uint8Array = new TextEncoder().encode(text);
55
+ return uint8Array.buffer;
56
+ }
57
+ // HACK to support Blob polyfill
58
+ // @ts-expect-error
59
+ if (data && typeof data === 'object' && data._toArrayBuffer) {
60
+ // @ts-expect-error
61
+ return data._toArrayBuffer();
62
+ }
63
+ throw new Error(`toArrayBuffer(${JSON.stringify(data, null, 2).slice(10)})`);
56
64
  }
57
- //# sourceMappingURL=decode-data-uri.node.js.map
65
+ exports.toArrayBuffer = toArrayBuffer;
@@ -0,0 +1,17 @@
1
+ /**
2
+ *
3
+ */
4
+ export declare function decompressReadStream(readStream: any, headers: any): any;
5
+ /**
6
+ *
7
+ * @param readStream
8
+ * @returns
9
+ */
10
+ export declare function concatenateReadStream(readStream: any): Promise<ArrayBuffer>;
11
+ /**
12
+ * Concatenate a sequence of ArrayBuffers
13
+ * @return A concatenated ArrayBuffer
14
+ * @note duplicates loader-utils since polyfills should be independent
15
+ */
16
+ export declare function concatenateArrayBuffers(sources: (ArrayBuffer | Uint8Array)[]): ArrayBuffer;
17
+ //# sourceMappingURL=stream-utils.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-utils.node.d.ts","sourceRoot":"","sources":["../../../../src/node/fetch/utils/stream-utils.node.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,KAAA,EAAE,OAAO,KAAA,OAYvD;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,UAAU,KAAA,GAAG,OAAO,CAAC,WAAW,CAAC,CAsB5E;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,CAAC,WAAW,GAAG,UAAU,CAAC,EAAE,GAAG,WAAW,CAqB1F"}
@@ -1,89 +1,73 @@
1
- import fs from 'fs';
2
- import http from 'http';
3
- import https from 'https';
4
- import zlib from 'zlib';
5
- import { toArrayBuffer } from './decode-data-uri.node';
6
-
7
- const isRequestURL = url => url.startsWith('http:') || url.startsWith('https:');
8
-
9
- export async function createReadStream(url, options) {
10
- if (!isRequestURL(url)) {
11
- const noqueryUrl = url.split('?')[0];
12
- return await new Promise((resolve, reject) => {
13
- const stream = fs.createReadStream(noqueryUrl, {
14
- encoding: null
15
- });
16
- stream.once('readable', () => resolve(stream));
17
- stream.on('error', error => reject(error));
18
- });
19
- }
20
-
21
- return await new Promise((resolve, reject) => {
22
- const requestFunction = url.startsWith('https:') ? https.request : http.request;
23
- const requestOptions = getRequestOptions(url, options);
24
- const req = requestFunction(requestOptions, res => resolve(res));
25
- req.on('error', error => reject(error));
26
- req.end();
27
- });
28
- }
29
- export function decompressReadStream(readStream, headers) {
30
- switch (headers.get('content-encoding')) {
31
- case 'br':
32
- return readStream.pipe(zlib.createBrotliDecompress());
33
-
34
- case 'gzip':
35
- return readStream.pipe(zlib.createGunzip());
36
-
37
- case 'deflate':
38
- return readStream.pipe(zlib.createDeflate());
39
-
40
- default:
41
- return readStream;
42
- }
1
+ "use strict";
2
+ // loaders.gl, MIT license
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.concatenateArrayBuffers = exports.concatenateReadStream = exports.decompressReadStream = void 0;
8
+ const zlib_1 = __importDefault(require("zlib"));
9
+ const decode_data_uri_node_1 = require("./decode-data-uri.node");
10
+ /**
11
+ *
12
+ */
13
+ function decompressReadStream(readStream, headers) {
14
+ switch (headers.get('content-encoding')) {
15
+ case 'br':
16
+ return readStream.pipe(zlib_1.default.createBrotliDecompress());
17
+ case 'gzip':
18
+ return readStream.pipe(zlib_1.default.createGunzip());
19
+ case 'deflate':
20
+ return readStream.pipe(zlib_1.default.createDeflate());
21
+ default:
22
+ // No compression or an unknown one, just return it as is
23
+ return readStream;
24
+ }
43
25
  }
44
- export async function concatenateReadStream(readStream) {
45
- let arrayBuffer = new ArrayBuffer(0);
46
- return await new Promise((resolve, reject) => {
47
- readStream.on('error', error => reject(error));
48
- readStream.on('readable', () => readStream.read());
49
- readStream.on('data', chunk => {
50
- if (typeof chunk === 'string') {
51
- reject(new Error('Read stream not binary'));
52
- }
53
-
54
- const chunkAsArrayBuffer = toArrayBuffer(chunk);
55
- arrayBuffer = concatenateArrayBuffers(arrayBuffer, chunkAsArrayBuffer);
26
+ exports.decompressReadStream = decompressReadStream;
27
+ /**
28
+ *
29
+ * @param readStream
30
+ * @returns
31
+ */
32
+ async function concatenateReadStream(readStream) {
33
+ const arrayBufferChunks = [];
34
+ return await new Promise((resolve, reject) => {
35
+ readStream.on('error', (error) => reject(error));
36
+ // Once the readable callback has been added, stream switches to "flowing mode"
37
+ // In Node 10 (but not 12 and 14) this causes `data` and `end` to never be called unless we read data here
38
+ readStream.on('readable', () => readStream.read());
39
+ readStream.on('data', (chunk) => {
40
+ if (typeof chunk === 'string') {
41
+ reject(new Error('Read stream not binary'));
42
+ }
43
+ arrayBufferChunks.push((0, decode_data_uri_node_1.toArrayBuffer)(chunk));
44
+ });
45
+ readStream.on('end', () => {
46
+ const arrayBuffer = concatenateArrayBuffers(arrayBufferChunks);
47
+ resolve(arrayBuffer);
48
+ });
56
49
  });
57
- readStream.on('end', () => resolve(arrayBuffer));
58
- });
59
- }
60
-
61
- function getRequestOptions(url, options) {
62
- const originalHeaders = (options === null || options === void 0 ? void 0 : options.headers) || {};
63
- const headers = {};
64
-
65
- for (const key of Object.keys(originalHeaders)) {
66
- headers[key.toLowerCase()] = originalHeaders[key];
67
- }
68
-
69
- headers['accept-encoding'] = headers['accept-encoding'] || 'gzip,br,deflate';
70
- const urlObject = new URL(url);
71
- return {
72
- hostname: urlObject.hostname,
73
- path: urlObject.pathname,
74
- method: 'GET',
75
- ...options,
76
- ...(options === null || options === void 0 ? void 0 : options.fetch),
77
- headers
78
- };
79
50
  }
80
-
81
- function concatenateArrayBuffers(source1, source2) {
82
- const sourceArray1 = source1 instanceof ArrayBuffer ? new Uint8Array(source1) : source1;
83
- const sourceArray2 = source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2;
84
- const temp = new Uint8Array(sourceArray1.byteLength + sourceArray2.byteLength);
85
- temp.set(sourceArray1, 0);
86
- temp.set(sourceArray2, sourceArray1.byteLength);
87
- return temp.buffer;
51
+ exports.concatenateReadStream = concatenateReadStream;
52
+ /**
53
+ * Concatenate a sequence of ArrayBuffers
54
+ * @return A concatenated ArrayBuffer
55
+ * @note duplicates loader-utils since polyfills should be independent
56
+ */
57
+ function concatenateArrayBuffers(sources) {
58
+ // Make sure all inputs are wrapped in typed arrays
59
+ const sourceArrays = sources.map((source2) => source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2);
60
+ // Get length of all inputs
61
+ const byteLength = sourceArrays.reduce((length, typedArray) => length + typedArray.byteLength, 0);
62
+ // Allocate array with space for all inputs
63
+ const result = new Uint8Array(byteLength);
64
+ // Copy the subarrays
65
+ let offset = 0;
66
+ for (const sourceArray of sourceArrays) {
67
+ result.set(sourceArray, offset);
68
+ offset += sourceArray.byteLength;
69
+ }
70
+ // We work with ArrayBuffers, discard the typed array wrapper
71
+ return result.buffer;
88
72
  }
89
- //# sourceMappingURL=stream-utils.node.js.map
73
+ exports.concatenateArrayBuffers = concatenateArrayBuffers;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Forked from @gozala's web-blob under MIT license
3
+ * @see https://github.com/Gozala/web-blob
4
+ */
5
+ export declare class BlobStreamController {
6
+ private chunks;
7
+ private isWorking;
8
+ private isCancelled;
9
+ /**
10
+ * @param chunks
11
+ */
12
+ constructor(chunks: Iterator<Uint8Array>);
13
+ /**
14
+ * @param controller
15
+ */
16
+ start(controller: ReadableStreamDefaultController): void;
17
+ /**
18
+ *
19
+ * @param controller
20
+ */
21
+ work(controller: ReadableStreamDefaultController): Promise<void>;
22
+ /**
23
+ *
24
+ * @param {ReadableStreamDefaultController} controller
25
+ */
26
+ pull(controller: any): void;
27
+ cancel(): void;
28
+ }
29
+ //# sourceMappingURL=blob-stream-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blob-stream-controller.d.ts","sourceRoot":"","sources":["../../../src/node/file/blob-stream-controller.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,WAAW,CAAkB;IAErC;;OAEG;gBACS,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC;IAIxC;;OAEG;IACH,KAAK,CAAC,UAAU,EAAE,+BAA+B;IAIjD;;;OAGG;IACG,IAAI,CAAC,UAAU,EAAE,+BAA+B;IAyBtD;;;OAGG;IACH,IAAI,CAAC,UAAU,KAAA;IAKf,MAAM;CAGP"}