@loaders.gl/polyfills 4.0.0-alpha.9 → 4.0.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 (67) hide show
  1. package/dist/dist.min.js +10 -1818
  2. package/dist/es5/filesystems/node-filesystem.js +214 -0
  3. package/dist/es5/filesystems/node-filesystem.js.map +1 -0
  4. package/dist/es5/index.browser.js +15 -0
  5. package/dist/es5/index.browser.js.map +1 -0
  6. package/dist/es5/index.js +32 -49
  7. package/dist/es5/index.js.map +1 -1
  8. package/dist/es5/node/fetch/fetch.node.js +2 -3
  9. package/dist/es5/node/fetch/fetch.node.js.map +1 -1
  10. package/dist/es5/node/file/install-file-polyfills.js +1 -4
  11. package/dist/es5/node/file/install-file-polyfills.js.map +1 -1
  12. package/dist/esm/filesystems/node-filesystem.js +56 -0
  13. package/dist/esm/filesystems/node-filesystem.js.map +1 -0
  14. package/dist/esm/index.browser.js +7 -0
  15. package/dist/esm/index.browser.js.map +1 -0
  16. package/dist/esm/index.js +32 -31
  17. package/dist/esm/index.js.map +1 -1
  18. package/dist/esm/node/fetch/fetch.node.js +2 -3
  19. package/dist/esm/node/fetch/fetch.node.js.map +1 -1
  20. package/dist/esm/node/file/install-file-polyfills.js +1 -4
  21. package/dist/esm/node/file/install-file-polyfills.js.map +1 -1
  22. package/dist/filesystems/node-filesystem.d.ts +39 -0
  23. package/dist/filesystems/node-filesystem.d.ts.map +1 -0
  24. package/dist/index.browser.d.ts +3 -0
  25. package/dist/index.browser.d.ts.map +1 -0
  26. package/dist/index.d.ts +1 -4
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/node/fetch/fetch.node.d.ts +1 -1
  29. package/dist/node/fetch/fetch.node.d.ts.map +1 -1
  30. package/package.json +6 -66
  31. package/src/filesystems/node-filesystem.ts +87 -0
  32. package/src/index.browser.ts +14 -0
  33. package/src/index.ts +54 -38
  34. package/src/node/fetch/fetch.node.ts +6 -5
  35. package/src/node/file/install-file-polyfills.ts +2 -2
  36. package/dist/bundle.js +0 -5
  37. package/dist/es5/node/fetch/fetch-file.node.js +0 -83
  38. package/dist/es5/node/fetch/fetch-file.node.js.map +0 -1
  39. package/dist/esm/node/fetch/fetch-file.node.js +0 -50
  40. package/dist/esm/node/fetch/fetch-file.node.js.map +0 -1
  41. package/dist/index.js +0 -97
  42. package/dist/lib/encoding-indexes.js +0 -35
  43. package/dist/lib/encoding.js +0 -2779
  44. package/dist/libs/encoding-indexes-asian.js +0 -14
  45. package/dist/node/buffer/btoa.node.js +0 -14
  46. package/dist/node/buffer/to-array-buffer.node.js +0 -12
  47. package/dist/node/fetch/fetch-file.node.d.ts +0 -4
  48. package/dist/node/fetch/fetch-file.node.d.ts.map +0 -1
  49. package/dist/node/fetch/fetch-file.node.js +0 -51
  50. package/dist/node/fetch/fetch.node.js +0 -143
  51. package/dist/node/fetch/headers.node.js +0 -106
  52. package/dist/node/fetch/response.node.js +0 -76
  53. package/dist/node/fetch/utils/decode-data-uri.node.js +0 -65
  54. package/dist/node/fetch/utils/stream-utils.node.js +0 -73
  55. package/dist/node/file/blob-stream-controller.js +0 -63
  56. package/dist/node/file/blob-stream.js +0 -37
  57. package/dist/node/file/blob.js +0 -160
  58. package/dist/node/file/file-reader.js +0 -35
  59. package/dist/node/file/file.js +0 -37
  60. package/dist/node/file/install-file-polyfills.js +0 -27
  61. package/dist/node/file/readable-stream.js +0 -11
  62. package/dist/node/images/encode-image.node.js +0 -41
  63. package/dist/node/images/parse-image.node.js +0 -41
  64. package/dist/promise/all-settled.js +0 -24
  65. package/dist/utils/assert.js +0 -9
  66. package/dist/utils/globals.js +0 -36
  67. package/src/node/fetch/fetch-file.node.ts +0 -51
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.NodeFileSystem = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+ var _fs = _interopRequireDefault(require("fs"));
13
+ var _promises = _interopRequireDefault(require("fs/promises"));
14
+ var NodeFileSystem = function () {
15
+ function NodeFileSystem(options) {
16
+ (0, _classCallCheck2.default)(this, NodeFileSystem);
17
+ this.fetch = options._fetch;
18
+ }
19
+ (0, _createClass2.default)(NodeFileSystem, [{
20
+ key: "readdir",
21
+ value: function () {
22
+ var _readdir = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee() {
23
+ var dirname,
24
+ options,
25
+ _args = arguments;
26
+ return _regenerator.default.wrap(function _callee$(_context) {
27
+ while (1) switch (_context.prev = _context.next) {
28
+ case 0:
29
+ dirname = _args.length > 0 && _args[0] !== undefined ? _args[0] : '.';
30
+ options = _args.length > 1 ? _args[1] : undefined;
31
+ _context.next = 4;
32
+ return _promises.default.readdir(dirname, options);
33
+ case 4:
34
+ return _context.abrupt("return", _context.sent);
35
+ case 5:
36
+ case "end":
37
+ return _context.stop();
38
+ }
39
+ }, _callee);
40
+ }));
41
+ function readdir() {
42
+ return _readdir.apply(this, arguments);
43
+ }
44
+ return readdir;
45
+ }()
46
+ }, {
47
+ key: "stat",
48
+ value: function () {
49
+ var _stat = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(path, options) {
50
+ var info;
51
+ return _regenerator.default.wrap(function _callee2$(_context2) {
52
+ while (1) switch (_context2.prev = _context2.next) {
53
+ case 0:
54
+ _context2.next = 2;
55
+ return _promises.default.stat(path, options);
56
+ case 2:
57
+ info = _context2.sent;
58
+ return _context2.abrupt("return", {
59
+ size: Number(info.size),
60
+ isDirectory: function isDirectory() {
61
+ return false;
62
+ },
63
+ info: info
64
+ });
65
+ case 4:
66
+ case "end":
67
+ return _context2.stop();
68
+ }
69
+ }, _callee2);
70
+ }));
71
+ function stat(_x, _x2) {
72
+ return _stat.apply(this, arguments);
73
+ }
74
+ return stat;
75
+ }()
76
+ }, {
77
+ key: "fetch",
78
+ value: function () {
79
+ var _fetch = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(path, options) {
80
+ var fallbackFetch;
81
+ return _regenerator.default.wrap(function _callee3$(_context3) {
82
+ while (1) switch (_context3.prev = _context3.next) {
83
+ case 0:
84
+ fallbackFetch = options.fetch || this.fetch;
85
+ return _context3.abrupt("return", fallbackFetch(path, options));
86
+ case 2:
87
+ case "end":
88
+ return _context3.stop();
89
+ }
90
+ }, _callee3, this);
91
+ }));
92
+ function fetch(_x3, _x4) {
93
+ return _fetch.apply(this, arguments);
94
+ }
95
+ return fetch;
96
+ }()
97
+ }, {
98
+ key: "open",
99
+ value: function () {
100
+ var _open = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(path, flags, mode) {
101
+ return _regenerator.default.wrap(function _callee4$(_context4) {
102
+ while (1) switch (_context4.prev = _context4.next) {
103
+ case 0:
104
+ _context4.next = 2;
105
+ return _promises.default.open(path, flags);
106
+ case 2:
107
+ return _context4.abrupt("return", _context4.sent);
108
+ case 3:
109
+ case "end":
110
+ return _context4.stop();
111
+ }
112
+ }, _callee4);
113
+ }));
114
+ function open(_x5, _x6, _x7) {
115
+ return _open.apply(this, arguments);
116
+ }
117
+ return open;
118
+ }()
119
+ }, {
120
+ key: "close",
121
+ value: function () {
122
+ var _close = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(fd) {
123
+ return _regenerator.default.wrap(function _callee5$(_context5) {
124
+ while (1) switch (_context5.prev = _context5.next) {
125
+ case 0:
126
+ _fs.default.close(fd);
127
+ case 1:
128
+ case "end":
129
+ return _context5.stop();
130
+ }
131
+ }, _callee5);
132
+ }));
133
+ function close(_x8) {
134
+ return _close.apply(this, arguments);
135
+ }
136
+ return close;
137
+ }()
138
+ }, {
139
+ key: "fstat",
140
+ value: function () {
141
+ var _fstat = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6(fd) {
142
+ return _regenerator.default.wrap(function _callee6$(_context6) {
143
+ while (1) switch (_context6.prev = _context6.next) {
144
+ case 0:
145
+ _context6.next = 2;
146
+ return new Promise(function (resolve, reject) {
147
+ return _fs.default.fstat(fd, function (err, info) {
148
+ return err ? reject(err) : resolve(info);
149
+ });
150
+ });
151
+ case 2:
152
+ return _context6.abrupt("return", _context6.sent);
153
+ case 3:
154
+ case "end":
155
+ return _context6.stop();
156
+ }
157
+ }, _callee6);
158
+ }));
159
+ function fstat(_x9) {
160
+ return _fstat.apply(this, arguments);
161
+ }
162
+ return fstat;
163
+ }()
164
+ }, {
165
+ key: "read",
166
+ value: function () {
167
+ var _read = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee7(fd, _ref) {
168
+ var _ref$buffer, buffer, _ref$offset, offset, _ref$length, length, _ref$position, position, totalBytesRead, _yield$Promise, bytesRead;
169
+ return _regenerator.default.wrap(function _callee7$(_context7) {
170
+ while (1) switch (_context7.prev = _context7.next) {
171
+ case 0:
172
+ _ref$buffer = _ref.buffer, buffer = _ref$buffer === void 0 ? null : _ref$buffer, _ref$offset = _ref.offset, offset = _ref$offset === void 0 ? 0 : _ref$offset, _ref$length = _ref.length, length = _ref$length === void 0 ? buffer.byteLength : _ref$length, _ref$position = _ref.position, position = _ref$position === void 0 ? null : _ref$position;
173
+ totalBytesRead = 0;
174
+ case 2:
175
+ if (!(totalBytesRead < length)) {
176
+ _context7.next = 10;
177
+ break;
178
+ }
179
+ _context7.next = 5;
180
+ return new Promise(function (resolve, reject) {
181
+ return _fs.default.read(fd, buffer, offset + totalBytesRead, length - totalBytesRead, position + totalBytesRead, function (err, bytesRead, buffer) {
182
+ return err ? reject(err) : resolve({
183
+ bytesRead: bytesRead,
184
+ buffer: buffer
185
+ });
186
+ });
187
+ });
188
+ case 5:
189
+ _yield$Promise = _context7.sent;
190
+ bytesRead = _yield$Promise.bytesRead;
191
+ totalBytesRead += bytesRead;
192
+ _context7.next = 2;
193
+ break;
194
+ case 10:
195
+ return _context7.abrupt("return", {
196
+ bytesRead: totalBytesRead,
197
+ buffer: buffer
198
+ });
199
+ case 11:
200
+ case "end":
201
+ return _context7.stop();
202
+ }
203
+ }, _callee7);
204
+ }));
205
+ function read(_x10, _x11) {
206
+ return _read.apply(this, arguments);
207
+ }
208
+ return read;
209
+ }()
210
+ }]);
211
+ return NodeFileSystem;
212
+ }();
213
+ exports.NodeFileSystem = NodeFileSystem;
214
+ //# sourceMappingURL=node-filesystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-filesystem.js","names":["_fs","_interopRequireDefault","require","_promises","NodeFileSystem","options","_classCallCheck2","default","fetch","_fetch","_createClass2","key","value","_readdir","_asyncToGenerator2","_regenerator","mark","_callee","dirname","_args","arguments","wrap","_callee$","_context","prev","next","length","undefined","fsPromise","readdir","abrupt","sent","stop","apply","_stat","_callee2","path","info","_callee2$","_context2","stat","size","Number","isDirectory","_x","_x2","_callee3","fallbackFetch","_callee3$","_context3","_x3","_x4","_open","_callee4","flags","mode","_callee4$","_context4","open","_x5","_x6","_x7","_close","_callee5","fd","_callee5$","_context5","fs","close","_x8","_fstat","_callee6","_callee6$","_context6","Promise","resolve","reject","fstat","err","_x9","_read","_callee7","_ref","_ref$buffer","buffer","_ref$offset","offset","_ref$length","_ref$position","position","totalBytesRead","_yield$Promise","bytesRead","_callee7$","_context7","byteLength","read","_x10","_x11","exports"],"sources":["../../../src/filesystems/node-filesystem.ts"],"sourcesContent":["import {FileSystem, RandomAccessReadFileSystem} from '@loaders.gl/loader-utils';\nimport fs from 'fs';\nimport fsPromise from 'fs/promises';\n\n// import {fetchFile} from \"../fetch/fetch-file\"\n// import {selectLoader} from \"../api/select-loader\";\n\ntype Stat = {\n size: number;\n isDirectory: () => boolean;\n info?: fs.Stats;\n};\n\ntype ReadOptions = {\n buffer?: Buffer;\n offset?: number;\n length?: number;\n position?: number;\n};\n\n/**\n * FileSystem pass-through for Node.js\n * Compatible with BrowserFileSystem.\n * @param options\n */\nexport class NodeFileSystem implements FileSystem, RandomAccessReadFileSystem {\n // implements FileSystem\n constructor(options: {[key: string]: any}) {\n this.fetch = options._fetch;\n }\n\n async readdir(dirname = '.', options?: {}): Promise<any[]> {\n return await fsPromise.readdir(dirname, options);\n }\n\n async stat(path: string, options?: {}): Promise<Stat> {\n const info = await fsPromise.stat(path, options);\n return {size: Number(info.size), isDirectory: () => false, info};\n }\n\n async fetch(path: string, options: {[key: string]: any}) {\n // Falls back to handle https:/http:/data: etc fetches\n // eslint-disable-next-line\n const fallbackFetch = options.fetch || this.fetch;\n return fallbackFetch(path, options);\n }\n\n // implements IRandomAccessFileSystem\n async open(path: string, flags: string | number, mode?: any): Promise<number> {\n return (await fsPromise.open(path, flags)) as unknown as number;\n }\n\n async close(fd: number): Promise<void> {\n fs.close(fd);\n }\n\n async fstat(fd: number): Promise<Stat> {\n return await new Promise((resolve, reject) =>\n fs.fstat(fd, (err, info) => (err ? reject(err) : resolve(info)))\n );\n }\n\n async read(\n fd: number,\n // @ts-ignore Possibly null\n {buffer = null, offset = 0, length = buffer.byteLength, position = null}: ReadOptions\n ): Promise<{bytesRead: number; buffer: Uint8Array}> {\n let totalBytesRead = 0;\n // Read in loop until we get required number of bytes\n while (totalBytesRead < length) {\n const {bytesRead} = await new Promise<{bytesRead: number; buffer: Buffer}>(\n // eslint-disable-next-line no-loop-func\n (resolve, reject) =>\n fs.read(\n fd,\n buffer,\n offset + totalBytesRead,\n length - totalBytesRead,\n position + totalBytesRead,\n (err, bytesRead, buffer) => (err ? reject(err) : resolve({bytesRead, buffer}))\n )\n );\n totalBytesRead += bytesRead;\n }\n return {bytesRead: totalBytesRead, buffer};\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NodeFileSystem = void 0;
7
+ exports.installFilePolyfills = installFilePolyfills;
8
+ var _allSettled = require("./promise/all-settled");
9
+ if (!('allSettled' in Promise)) {
10
+ Promise.allSettled = _allSettled.allSettled;
11
+ }
12
+ function installFilePolyfills() {}
13
+ var NodeFileSystem = null;
14
+ exports.NodeFileSystem = NodeFileSystem;
15
+ //# sourceMappingURL=index.browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.browser.js","names":["_allSettled","require","Promise","allSettled","installFilePolyfills","NodeFileSystem","exports"],"sources":["../../src/index.browser.ts"],"sourcesContent":["// loaders.gl, MIT License\n\nimport {allSettled} from './promise/all-settled';\n\nif (!('allSettled' in Promise)) {\n // @ts-ignore\n Promise.allSettled = allSettled;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function installFilePolyfills() {}\n\n// Dummy export to avoid import errors in browser tests\nexport const NodeFileSystem = null;\n"],"mappings":";;;;;;;AAEA,IAAAA,WAAA,GAAAC,OAAA;AAEA,IAAI,EAAE,YAAY,IAAIC,OAAO,CAAC,EAAE;EAE9BA,OAAO,CAACC,UAAU,GAAGA,sBAAU;AACjC;AAGO,SAASC,oBAAoBA,CAAA,EAAG,CAAC;AAGjC,IAAMC,cAAc,GAAG,IAAI;AAACC,OAAA,CAAAD,cAAA,GAAAA,cAAA"}
package/dist/es5/index.js CHANGED
@@ -4,12 +4,6 @@ var _typeof = require("@babel/runtime/helpers/typeof");
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- Object.defineProperty(exports, "BlobPolyfill", {
8
- enumerable: true,
9
- get: function get() {
10
- return _blob.BlobPolyfill;
11
- }
12
- });
13
7
  Object.defineProperty(exports, "FilePolyfill", {
14
8
  enumerable: true,
15
9
  get: function get() {
@@ -22,22 +16,10 @@ Object.defineProperty(exports, "FileReaderPolyfill", {
22
16
  return _fileReader.FileReaderPolyfill;
23
17
  }
24
18
  });
25
- Object.defineProperty(exports, "ReadableStreamPolyfill", {
26
- enumerable: true,
27
- get: function get() {
28
- return _readableStream.ReadableStreamPolyfill;
29
- }
30
- });
31
- Object.defineProperty(exports, "_fetchFileNode", {
32
- enumerable: true,
33
- get: function get() {
34
- return _fetchFile.fetchFileNode;
35
- }
36
- });
37
- Object.defineProperty(exports, "_fetchNode", {
19
+ Object.defineProperty(exports, "NodeFileSystem", {
38
20
  enumerable: true,
39
21
  get: function get() {
40
- return _fetch.fetchNode;
22
+ return _nodeFilesystem.NodeFileSystem;
41
23
  }
42
24
  });
43
25
  Object.defineProperty(exports, "installFilePolyfills", {
@@ -50,50 +32,51 @@ var _globals = require("./utils/globals");
50
32
  var _encoding = require("./lib/encoding");
51
33
  var _allSettled = require("./promise/all-settled");
52
34
  var base64 = _interopRequireWildcard(require("./node/buffer/btoa.node"));
53
- var _headers = require("./node/fetch/headers.node");
54
- var _response = require("./node/fetch/response.node");
55
- var _fetch = require("./node/fetch/fetch.node");
56
35
  var _encodeImage = require("./node/images/encode-image.node");
57
36
  var _parseImage = require("./node/images/parse-image.node");
58
- var _readableStream = require("./node/file/readable-stream");
59
- var _blob = require("./node/file/blob");
60
37
  var _fileReader = require("./node/file/file-reader");
61
38
  var _file = require("./node/file/file");
62
39
  var _installFilePolyfills = require("./node/file/install-file-polyfills");
63
- var _fetchFile = require("./node/fetch/fetch-file.node");
40
+ var _nodeFilesystem = require("./filesystems/node-filesystem");
41
+ var _headers = require("./node/fetch/headers.node");
42
+ var _response = require("./node/fetch/response.node");
43
+ var _fetch = require("./node/fetch/fetch.node");
64
44
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
65
45
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
66
- var installTextEncoder = !_globals.isBrowser || !('TextEncoder' in _globals.global);
67
- if (installTextEncoder) {
68
- _globals.global['TextEncoder'] = _encoding.TextEncoder;
46
+ if (_globals.isBrowser) {
47
+ console.error('loaders.gl: The @loaders.gl/polyfills should only be used in Node.js environments');
69
48
  }
70
- var installTextDecoder = !_globals.isBrowser || !('TextDecoder' in _globals.global);
71
- if (installTextDecoder) {
72
- _globals.global['TextDecoder'] = _encoding.TextDecoder;
49
+ if (!globalThis.TextEncoder) {
50
+ globalThis.TextEncoder = _encoding.TextEncoder;
73
51
  }
74
- if (!_globals.isBrowser && !('atob' in _globals.global) && base64.atob) {
75
- _globals.global['atob'] = base64.atob;
52
+ if (!globalThis.TextDecoder) {
53
+ globalThis.TextDecoder = _encoding.TextDecoder;
76
54
  }
77
- if (!_globals.isBrowser && !('btoa' in _globals.global) && base64.btoa) {
78
- _globals.global['btoa'] = base64.btoa;
55
+ if (!_globals.isBrowser && !('atob' in globalThis) && base64.atob) {
56
+ globalThis['atob'] = base64.atob;
79
57
  }
80
- if (!_globals.isBrowser && !('Headers' in _globals.global) && _headers.Headers) {
81
- _globals.global['Headers'] = _headers.Headers;
58
+ if (!_globals.isBrowser && !('btoa' in globalThis) && base64.btoa) {
59
+ globalThis['btoa'] = base64.btoa;
82
60
  }
83
- if (!_globals.isBrowser && !('Response' in _globals.global) && _response.Response) {
84
- _globals.global['Response'] = _response.Response;
61
+ globalThis.loaders = globalThis.loaders || {};
62
+ globalThis.loaders.NodeFileSystem = _nodeFilesystem.NodeFileSystem;
63
+ if (!_globals.isBrowser && !('_encodeImageNode' in globalThis) && _encodeImage.encodeImageNode) {
64
+ globalThis['_encodeImageNode'] = _encodeImage.encodeImageNode;
85
65
  }
86
- if (!_globals.isBrowser && !('fetch' in _globals.global) && _fetch.fetchNode) {
87
- _globals.global['fetch'] = _fetch.fetchNode;
88
- }
89
- if (!_globals.isBrowser && !('_encodeImageNode' in _globals.global) && _encodeImage.encodeImageNode) {
90
- _globals.global['_encodeImageNode'] = _encodeImage.encodeImageNode;
91
- }
92
- if (!_globals.isBrowser && !('_parseImageNode' in _globals.global) && _parseImage.parseImageNode) {
93
- _globals.global['_parseImageNode'] = _parseImage.parseImageNode;
94
- _globals.global['_imageFormatsNode'] = _parseImage.NODE_FORMAT_SUPPORT;
66
+ if (!_globals.isBrowser && !('_parseImageNode' in globalThis) && _parseImage.parseImageNode) {
67
+ globalThis['_parseImageNode'] = _parseImage.parseImageNode;
68
+ globalThis['_imageFormatsNode'] = _parseImage.NODE_FORMAT_SUPPORT;
95
69
  }
96
70
  if (!('allSettled' in Promise)) {
97
71
  Promise.allSettled = _allSettled.allSettled;
98
72
  }
73
+ if (!_globals.isBrowser && !('Headers' in globalThis) && _headers.Headers) {
74
+ globalThis.Headers = _headers.Headers;
75
+ }
76
+ if (!_globals.isBrowser && !('Response' in globalThis) && _response.Response) {
77
+ globalThis.Response = _response.Response;
78
+ }
79
+ if (!_globals.isBrowser && !('fetch' in globalThis) && _fetch.fetchNode) {
80
+ globalThis.fetch = _fetch.fetchNode;
81
+ }
99
82
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_globals","require","_encoding","_allSettled","base64","_interopRequireWildcard","_headers","_response","_fetch","_encodeImage","_parseImage","_readableStream","_blob","_fileReader","_file","_installFilePolyfills","_fetchFile","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","installTextEncoder","isBrowser","global","TextEncoder","installTextDecoder","TextDecoder","atob","btoa","HeadersNode","ResponseNode","fetchNode","encodeImageNode","parseImageNode","NODE_FORMAT_SUPPORT","Promise","allSettled"],"sources":["../../src/index.ts"],"sourcesContent":["/* eslint-disable dot-notation */\nimport {isBrowser, global} from './utils/globals';\n\nimport {TextDecoder, TextEncoder} from './lib/encoding';\nimport {allSettled} from './promise/all-settled';\n\n// Node specific\nimport * as base64 from './node/buffer/btoa.node';\n\nimport {Headers as HeadersNode} from './node/fetch/headers.node';\nimport {Response as ResponseNode} from './node/fetch/response.node';\nimport {fetchNode as fetchNode} from './node/fetch/fetch.node';\n\nimport {encodeImageNode} from './node/images/encode-image.node';\nimport {parseImageNode, NODE_FORMAT_SUPPORT} from './node/images/parse-image.node';\n\nexport {ReadableStreamPolyfill} from './node/file/readable-stream';\nexport {BlobPolyfill} from './node/file/blob';\nexport {FileReaderPolyfill} from './node/file/file-reader';\nexport {FilePolyfill} from './node/file/file';\nexport {installFilePolyfills} from './node/file/install-file-polyfills';\nexport {fetchNode as _fetchNode} from './node/fetch/fetch.node';\nexport {fetchFileNode as _fetchFileNode} from './node/fetch/fetch-file.node';\n\n// POLYFILLS: TextEncoder, TextDecoder\n// - Recent Node versions have these classes but virtually no encodings unless special build.\n// - Browser: Edge, IE11 do not have these\n\nconst installTextEncoder = !isBrowser || !('TextEncoder' in global);\nif (installTextEncoder) {\n global['TextEncoder'] = TextEncoder;\n}\n\nconst installTextDecoder = !isBrowser || !('TextDecoder' in global);\nif (installTextDecoder) {\n global['TextDecoder'] = TextDecoder;\n}\n\n// POLYFILLS: btoa, atob\n// - Node: Yes\n// - Browser: No\n\nif (!isBrowser && !('atob' in global) && base64.atob) {\n global['atob'] = base64.atob;\n}\nif (!isBrowser && !('btoa' in global) && base64.btoa) {\n global['btoa'] = base64.btoa;\n}\n\n// POLYFILL: fetch\n// - Node: Yes\n// - Browser: No. For This polyfill is node only, IE11 etc, install external polyfill\n\nif (!isBrowser && !('Headers' in global) && HeadersNode) {\n global['Headers'] = HeadersNode;\n}\n\nif (!isBrowser && !('Response' in global) && ResponseNode) {\n global['Response'] = ResponseNode;\n}\n\nif (!isBrowser && !('fetch' in global) && fetchNode) {\n global['fetch'] = fetchNode;\n}\n\n// NODE IMAGE FUNCTIONS:\n// These are not official polyfills but used by the @loaders.gl/images module if installed\n// TODO - is there an appropriate Image API we could polyfill using an adapter?\n\nif (!isBrowser && !('_encodeImageNode' in global) && encodeImageNode) {\n global['_encodeImageNode'] = encodeImageNode;\n}\n\nif (!isBrowser && !('_parseImageNode' in global) && parseImageNode) {\n global['_parseImageNode'] = parseImageNode;\n global['_imageFormatsNode'] = NODE_FORMAT_SUPPORT;\n}\n\nif (!('allSettled' in Promise)) {\n // @ts-ignore\n Promise.allSettled = allSettled;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["_globals","require","_encoding","_allSettled","base64","_interopRequireWildcard","_encodeImage","_parseImage","_fileReader","_file","_installFilePolyfills","_nodeFilesystem","_headers","_response","_fetch","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","isBrowser","console","error","globalThis","TextEncoder","TextDecoder","atob","btoa","loaders","NodeFileSystem","encodeImageNode","parseImageNode","NODE_FORMAT_SUPPORT","Promise","allSettled","HeadersNode","Headers","ResponseNode","Response","fetchNode","fetch"],"sources":["../../src/index.ts"],"sourcesContent":["/* eslint-disable dot-notation */\nimport {isBrowser} from './utils/globals';\n\nimport {TextDecoder, TextEncoder} from './lib/encoding';\nimport {allSettled} from './promise/all-settled';\n\n// Node specific\nimport * as base64 from './node/buffer/btoa.node';\n\nimport {encodeImageNode} from './node/images/encode-image.node';\nimport {parseImageNode, NODE_FORMAT_SUPPORT} from './node/images/parse-image.node';\n\n// export {ReadableStreamPolyfill} from './node/file/readable-stream';\n// export {BlobPolyfill} from './node/file/blob';\nexport {FileReaderPolyfill} from './node/file/file-reader';\nexport {FilePolyfill} from './node/file/file';\nexport {installFilePolyfills} from './node/file/install-file-polyfills';\n\nif (isBrowser) {\n // eslint-disable-next-line no-console\n console.error(\n 'loaders.gl: The @loaders.gl/polyfills should only be used in Node.js environments'\n );\n}\n\n// POLYFILLS: TextEncoder, TextDecoder\n// - Recent Node versions have these classes but virtually no encodings unless special build.\n// - Browser: Edge, IE11 do not have these\n\nif (!globalThis.TextEncoder) {\n // @ts-expect-error\n globalThis.TextEncoder = TextEncoder;\n}\n\nif (!globalThis.TextDecoder) {\n // @ts-expect-error\n globalThis.TextDecoder = TextDecoder;\n}\n\n// POLYFILLS: btoa, atob\n// - Node: Yes\n// - Browser: No\n\nif (!isBrowser && !('atob' in globalThis) && base64.atob) {\n globalThis['atob'] = base64.atob;\n}\nif (!isBrowser && !('btoa' in globalThis) && base64.btoa) {\n globalThis['btoa'] = base64.btoa;\n}\n\nglobalThis.loaders = globalThis.loaders || {};\n\n// FILESYSTEM POLYFILLS:\nexport {NodeFileSystem} from './filesystems/node-filesystem';\nimport {NodeFileSystem} from './filesystems/node-filesystem';\nglobalThis.loaders.NodeFileSystem = NodeFileSystem;\n\n// NODE IMAGE FUNCTIONS:\n// These are not official polyfills but used by the @loaders.gl/images module if installed\n// TODO - is there an appropriate Image API we could polyfill using an adapter?\n\nif (!isBrowser && !('_encodeImageNode' in globalThis) && encodeImageNode) {\n globalThis['_encodeImageNode'] = encodeImageNode;\n}\n\nif (!isBrowser && !('_parseImageNode' in globalThis) && parseImageNode) {\n globalThis['_parseImageNode'] = parseImageNode;\n globalThis['_imageFormatsNode'] = NODE_FORMAT_SUPPORT;\n}\n\nif (!('allSettled' in Promise)) {\n // @ts-ignore\n Promise.allSettled = allSettled;\n}\n\n// DEPRECATED POLYFILL:\n// - Node v18+: No, not needed\n// - Node v16 and lower: Yes\n// - Browsers (evergreen): Not needed.\n// - IE11: No. This polyfill is node only, install external polyfill\nimport {Headers as HeadersNode} from './node/fetch/headers.node';\nimport {Response as ResponseNode} from './node/fetch/response.node';\nimport {fetchNode as fetchNode} from './node/fetch/fetch.node';\n\nif (!isBrowser && !('Headers' in globalThis) && HeadersNode) {\n // @ts-expect-error\n globalThis.Headers = HeadersNode;\n}\n\nif (!isBrowser && !('Response' in globalThis) && ResponseNode) {\n // @ts-expect-error\n globalThis.Response = ResponseNode;\n}\n\nif (!isBrowser && !('fetch' in globalThis) && fetchNode) {\n // @ts-expect-error\n globalThis.fetch = fetchNode;\n}\n"],"mappings":"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"}
@@ -14,7 +14,6 @@ var _https = _interopRequireDefault(require("https"));
14
14
  var _response = require("./response.node");
15
15
  var _headers = require("./headers.node");
16
16
  var _decodeDataUri2 = require("./utils/decode-data-uri.node");
17
- var _fetchFile = require("./fetch-file.node");
18
17
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
19
18
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
20
19
  var isDataURL = function isDataURL(url) {
@@ -33,12 +32,12 @@ function _fetchNode() {
33
32
  while (1) switch (_context.prev = _context.next) {
34
33
  case 0:
35
34
  _context.prev = 0;
36
- if (!(!isRequestURL(url) && !isDataURL(url))) {
35
+ if (!(globalThis.fetch !== fetchNode && (isRequestURL(url) || isDataURL(url)))) {
37
36
  _context.next = 5;
38
37
  break;
39
38
  }
40
39
  _context.next = 4;
41
- return (0, _fetchFile.fetchFileNode)(url, options);
40
+ return fetch(url, options);
42
41
  case 4:
43
42
  return _context.abrupt("return", _context.sent);
44
43
  case 5:
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.node.js","names":["_http","_interopRequireDefault","require","_https","_response","_headers","_decodeDataUri2","_fetchFile","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","isDataURL","url","startsWith","isRequestURL","fetchNode","_x","_x2","_fetchNode","_asyncToGenerator2","_regenerator","mark","_callee","options","_decodeDataUri","arrayBuffer","mimeType","response","syntheticResponseHeaders","originalUrl","body","headers","_getStatus","status","statusText","followRedirect","redirectUrl","wrap","_callee$","_context","prev","next","fetchFileNode","abrupt","sent","decodeDataUri","Response","endsWith","slice","createHTTPRequestReadStream","getHeaders","getStatus","undefined","has","generateRedirectUrl","get","t0","String","stop","_x3","_x4","_createHTTPRequestReadStream","_callee2","_callee2$","_context2","Promise","resolve","reject","requestOptions","getRequestOptions","req","https","request","res","http","on","error","end","location","URL","pathname","href","originalHeaders","_i","_Object$keys","toLowerCase","urlObject","hostname","path","method","fetch","port","httpResponse","statusCode","statusMessage","additionalHeaders","httpHeaders","header","contentLength","getContentLength","Number","isFinite","assign","Headers"],"sources":["../../../../src/node/fetch/fetch.node.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport http from 'http';\nimport https from 'https';\nimport {Response} from './response.node';\nimport {Headers} from './headers.node';\nimport {decodeDataUri} from './utils/decode-data-uri.node';\n\nimport {fetchFileNode} from './fetch-file.node';\n\nconst isDataURL = (url: string): boolean => url.startsWith('data:');\nconst isRequestURL = (url: string): boolean => url.startsWith('http:') || url.startsWith('https:');\n\n/**\n * Emulation of Browser fetch for Node.js\n * @param url\n * @param options\n */\n// eslint-disable-next-line complexity\nexport async function fetchNode(url: string, options): Promise<Response> {\n try {\n // Handle file streams in node\n if (!isRequestURL(url) && !isDataURL(url)) {\n return await fetchFileNode(url, options);\n }\n\n // Handle data urls in node, to match `fetch``\n // Note - this loses the MIME type, data URIs are handled directly in fetch\n if (isDataURL(url)) {\n const {arrayBuffer, mimeType} = decodeDataUri(url);\n const response = new Response(arrayBuffer, {\n headers: {'content-type': mimeType},\n url\n });\n return response;\n }\n\n // Automatically decompress gzipped files with .gz extension\n const syntheticResponseHeaders = {};\n const originalUrl = url;\n if (url.endsWith('.gz')) {\n url = url.slice(0, -3);\n syntheticResponseHeaders['content-encoding'] = 'gzip';\n }\n\n // Need to create the stream in advance since Response constructor needs to be sync\n const body = await createHTTPRequestReadStream(originalUrl, options);\n const headers = getHeaders(url, body, syntheticResponseHeaders);\n const {status, statusText} = getStatus(body);\n\n const followRedirect =\n !options || options.followRedirect || options.followRedirect === undefined;\n\n if (status >= 300 && status < 400 && headers.has('location') && followRedirect) {\n const redirectUrl = generateRedirectUrl(url, headers.get('location'));\n\n // Redirect\n return await fetchNode(redirectUrl, options);\n }\n return new Response(body, {headers, status, statusText, url});\n } catch (error) {\n // TODO - what error code to use here?\n return new Response(null, {status: 400, statusText: String(error), url});\n }\n}\n\n/** Returns a promise that resolves to a readable stream */\nexport async function createHTTPRequestReadStream(\n url: string,\n options\n): Promise<http.IncomingMessage> {\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 requestOptions = getRequestOptions(url, options);\n const req = url.startsWith('https:')\n ? https.request(requestOptions, (res) => resolve(res))\n : http.request(requestOptions, (res) => resolve(res));\n req.on('error', (error) => reject(error));\n req.end();\n });\n}\n\n/**\n * Generate redirect url from location without origin and protocol.\n * @param originalUrl\n * @param redirectUrl\n */\nfunction generateRedirectUrl(originalUrl: string, location: string): string {\n if (location.startsWith('http')) {\n return location;\n }\n // If url doesn't have origin and protocol just extend current url origin with location.\n const url = new URL(originalUrl);\n url.pathname = location;\n\n return url.href;\n}\n\n// HELPER FUNCTIONS\n\nfunction getRequestOptions(url: string, 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 port: urlObject.port\n };\n}\n\nfunction getStatus(httpResponse: http.IncomingMessage): {status: number; statusText: string} {\n if (httpResponse.statusCode) {\n return {status: httpResponse.statusCode, statusText: httpResponse.statusMessage || 'NA'};\n }\n return {status: 200, statusText: 'OK'};\n}\n\nfunction getHeaders(url, httpResponse, additionalHeaders = {}) {\n const headers = {};\n\n if (httpResponse && httpResponse.headers) {\n const httpHeaders = httpResponse.headers;\n for (const key in httpHeaders) {\n const header = httpHeaders[key];\n headers[key.toLowerCase()] = String(header);\n }\n }\n\n // Fix up content length if we can for best progress experience\n if (!headers['content-length']) {\n const contentLength = getContentLength(url);\n if (Number.isFinite(contentLength)) {\n headers['content-length'] = contentLength;\n }\n }\n\n Object.assign(headers, additionalHeaders);\n\n return new Headers(headers);\n}\n\n/** Needs to be read from actual headers */\nfunction getContentLength(url: string): number | null {\n // TODO - remove media type etc\n return isDataURL(url) ? url.length - 'data:'.length : null;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"fetch.node.js","names":["_http","_interopRequireDefault","require","_https","_response","_headers","_decodeDataUri2","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","isDataURL","url","startsWith","isRequestURL","fetchNode","_x","_x2","_fetchNode","_asyncToGenerator2","_regenerator","mark","_callee","options","_decodeDataUri","arrayBuffer","mimeType","response","syntheticResponseHeaders","originalUrl","body","headers","_getStatus","status","statusText","followRedirect","redirectUrl","wrap","_callee$","_context","prev","next","globalThis","fetch","abrupt","sent","decodeDataUri","Response","endsWith","slice","createHTTPRequestReadStream","getHeaders","getStatus","undefined","has","generateRedirectUrl","get","t0","String","stop","_x3","_x4","_createHTTPRequestReadStream","_callee2","_callee2$","_context2","Promise","resolve","reject","requestOptions","getRequestOptions","req","https","request","res","http","on","error","end","location","URL","pathname","href","originalHeaders","_i","_Object$keys","toLowerCase","urlObject","hostname","path","method","port","httpResponse","statusCode","statusMessage","additionalHeaders","httpHeaders","header","contentLength","getContentLength","Number","isFinite","assign","Headers"],"sources":["../../../../src/node/fetch/fetch.node.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport http from 'http';\nimport https from 'https';\nimport {Response} from './response.node';\nimport {Headers} from './headers.node';\nimport {decodeDataUri} from './utils/decode-data-uri.node';\n\nconst isDataURL = (url: string): boolean => url.startsWith('data:');\nconst isRequestURL = (url: string): boolean => url.startsWith('http:') || url.startsWith('https:');\n\n/**\n * Emulation of Browser fetch for Node.js\n * @param url\n * @param options\n */\n// eslint-disable-next-line complexity\nexport async function fetchNode(url: string, options: RequestInit): Promise<Response> {\n try {\n // Handle file streams in node\n // @ts-expect-error\n if (globalThis.fetch !== fetchNode && (isRequestURL(url) || isDataURL(url))) {\n // @ts-expect-error\n return await fetch(url, options);\n }\n\n // Handle data urls in node, to match `fetch``\n // Note - this loses the MIME type, data URIs are handled directly in fetch\n if (isDataURL(url)) {\n const {arrayBuffer, mimeType} = decodeDataUri(url);\n const response = new Response(arrayBuffer, {\n headers: {'content-type': mimeType},\n url\n });\n return response;\n }\n\n // Automatically decompress gzipped files with .gz extension\n const syntheticResponseHeaders = {};\n const originalUrl = url;\n if (url.endsWith('.gz')) {\n url = url.slice(0, -3);\n syntheticResponseHeaders['content-encoding'] = 'gzip';\n }\n\n // Need to create the stream in advance since Response constructor needs to be sync\n const body = await createHTTPRequestReadStream(originalUrl, options);\n const headers = getHeaders(url, body, syntheticResponseHeaders);\n const {status, statusText} = getStatus(body);\n\n const followRedirect =\n // @ts-expect-error\n !options || options.followRedirect || options.followRedirect === undefined;\n\n if (status >= 300 && status < 400 && headers.has('location') && followRedirect) {\n const redirectUrl = generateRedirectUrl(url, headers.get('location'));\n\n // Redirect\n return await fetchNode(redirectUrl, options);\n }\n return new Response(body, {headers, status, statusText, url});\n } catch (error) {\n // TODO - what error code to use here?\n return new Response(null, {status: 400, statusText: String(error), url});\n }\n}\n\n/** Returns a promise that resolves to a readable stream */\nexport async function createHTTPRequestReadStream(\n url: string,\n options\n): Promise<http.IncomingMessage> {\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 requestOptions = getRequestOptions(url, options);\n const req = url.startsWith('https:')\n ? https.request(requestOptions, (res) => resolve(res))\n : http.request(requestOptions, (res) => resolve(res));\n req.on('error', (error) => reject(error));\n req.end();\n });\n}\n\n/**\n * Generate redirect url from location without origin and protocol.\n * @param originalUrl\n * @param redirectUrl\n */\nfunction generateRedirectUrl(originalUrl: string, location: string): string {\n if (location.startsWith('http')) {\n return location;\n }\n // If url doesn't have origin and protocol just extend current url origin with location.\n const url = new URL(originalUrl);\n url.pathname = location;\n\n return url.href;\n}\n\n// HELPER FUNCTIONS\n\nfunction getRequestOptions(url: string, 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 port: urlObject.port\n };\n}\n\nfunction getStatus(httpResponse: http.IncomingMessage): {status: number; statusText: string} {\n if (httpResponse.statusCode) {\n return {status: httpResponse.statusCode, statusText: httpResponse.statusMessage || 'NA'};\n }\n return {status: 200, statusText: 'OK'};\n}\n\nfunction getHeaders(url, httpResponse, additionalHeaders = {}) {\n const headers = {};\n\n if (httpResponse && httpResponse.headers) {\n const httpHeaders = httpResponse.headers;\n for (const key in httpHeaders) {\n const header = httpHeaders[key];\n headers[key.toLowerCase()] = String(header);\n }\n }\n\n // Fix up content length if we can for best progress experience\n if (!headers['content-length']) {\n const contentLength = getContentLength(url);\n if (Number.isFinite(contentLength)) {\n headers['content-length'] = contentLength;\n }\n }\n\n Object.assign(headers, additionalHeaders);\n\n return new Headers(headers);\n}\n\n/** Needs to be read from actual headers */\nfunction getContentLength(url: string): number | null {\n // TODO - remove media type etc\n return isDataURL(url) ? url.length - 'data:'.length : null;\n}\n"],"mappings":"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"}
@@ -4,14 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.installFilePolyfills = installFilePolyfills;
7
- var _readableStream = require("./readable-stream");
8
7
  var _blob = require("./blob");
9
8
  var _fileReader = require("./file-reader");
10
9
  var _file = require("./file");
11
10
  function installFilePolyfills() {
12
- if (typeof ReadableStream === 'undefined' && global) {
13
- global.ReadableStream = _readableStream.ReadableStreamPolyfill;
14
- }
11
+ if (typeof ReadableStream === 'undefined' && global) {}
15
12
  if (typeof Blob === 'undefined' && global) {
16
13
  global.Blob = _blob.BlobPolyfill;
17
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"install-file-polyfills.js","names":["_readableStream","require","_blob","_fileReader","_file","installFilePolyfills","ReadableStream","global","ReadableStreamPolyfill","Blob","BlobPolyfill","FileReader","FileReaderPolyfill","File","FilePolyfill"],"sources":["../../../../src/node/file/install-file-polyfills.ts"],"sourcesContent":["import {ReadableStreamPolyfill} from './readable-stream';\nimport {BlobPolyfill} from './blob';\nimport {FileReaderPolyfill} from './file-reader';\nimport {FilePolyfill} from './file';\n\nexport function installFilePolyfills() {\n if (typeof ReadableStream === 'undefined' && global) {\n // @ts-ignore;\n global.ReadableStream = ReadableStreamPolyfill;\n }\n\n if (typeof Blob === 'undefined' && global) {\n // @ts-ignore;\n global.Blob = BlobPolyfill;\n }\n\n if (typeof FileReader === 'undefined' && global) {\n // @ts-ignore;\n global.FileReader = FileReaderPolyfill;\n }\n\n // Install minimal Node.js File polyfill\n if (typeof File === 'undefined' && global) {\n // @ts-ignore;\n global.File = FilePolyfill;\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAEO,SAASI,oBAAoBA,CAAA,EAAG;EACrC,IAAI,OAAOC,cAAc,KAAK,WAAW,IAAIC,MAAM,EAAE;IAEnDA,MAAM,CAACD,cAAc,GAAGE,sCAAsB;EAChD;EAEA,IAAI,OAAOC,IAAI,KAAK,WAAW,IAAIF,MAAM,EAAE;IAEzCA,MAAM,CAACE,IAAI,GAAGC,kBAAY;EAC5B;EAEA,IAAI,OAAOC,UAAU,KAAK,WAAW,IAAIJ,MAAM,EAAE;IAE/CA,MAAM,CAACI,UAAU,GAAGC,8BAAkB;EACxC;EAGA,IAAI,OAAOC,IAAI,KAAK,WAAW,IAAIN,MAAM,EAAE;IAEzCA,MAAM,CAACM,IAAI,GAAGC,kBAAY;EAC5B;AACF"}
1
+ {"version":3,"file":"install-file-polyfills.js","names":["_blob","require","_fileReader","_file","installFilePolyfills","ReadableStream","global","Blob","BlobPolyfill","FileReader","FileReaderPolyfill","File","FilePolyfill"],"sources":["../../../../src/node/file/install-file-polyfills.ts"],"sourcesContent":["// import {ReadableStreamPolyfill} from './readable-stream';\nimport {BlobPolyfill} from './blob';\nimport {FileReaderPolyfill} from './file-reader';\nimport {FilePolyfill} from './file';\n\nexport function installFilePolyfills() {\n if (typeof ReadableStream === 'undefined' && global) {\n // @ts-ignore;\n // global.ReadableStream = ReadableStreamPolyfill;\n }\n\n if (typeof Blob === 'undefined' && global) {\n // @ts-ignore;\n global.Blob = BlobPolyfill;\n }\n\n if (typeof FileReader === 'undefined' && global) {\n // @ts-ignore;\n global.FileReader = FileReaderPolyfill;\n }\n\n // Install minimal Node.js File polyfill\n if (typeof File === 'undefined' && global) {\n // @ts-ignore;\n global.File = FilePolyfill;\n }\n}\n"],"mappings":";;;;;;AACA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAEO,SAASG,oBAAoBA,CAAA,EAAG;EACrC,IAAI,OAAOC,cAAc,KAAK,WAAW,IAAIC,MAAM,EAAE,CAGrD;EAEA,IAAI,OAAOC,IAAI,KAAK,WAAW,IAAID,MAAM,EAAE;IAEzCA,MAAM,CAACC,IAAI,GAAGC,kBAAY;EAC5B;EAEA,IAAI,OAAOC,UAAU,KAAK,WAAW,IAAIH,MAAM,EAAE;IAE/CA,MAAM,CAACG,UAAU,GAAGC,8BAAkB;EACxC;EAGA,IAAI,OAAOC,IAAI,KAAK,WAAW,IAAIL,MAAM,EAAE;IAEzCA,MAAM,CAACK,IAAI,GAAGC,kBAAY;EAC5B;AACF"}
@@ -0,0 +1,56 @@
1
+ import fs from 'fs';
2
+ import fsPromise from 'fs/promises';
3
+ export class NodeFileSystem {
4
+ constructor(options) {
5
+ this.fetch = options._fetch;
6
+ }
7
+ async readdir() {
8
+ let dirname = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '.';
9
+ let options = arguments.length > 1 ? arguments[1] : undefined;
10
+ return await fsPromise.readdir(dirname, options);
11
+ }
12
+ async stat(path, options) {
13
+ const info = await fsPromise.stat(path, options);
14
+ return {
15
+ size: Number(info.size),
16
+ isDirectory: () => false,
17
+ info
18
+ };
19
+ }
20
+ async fetch(path, options) {
21
+ const fallbackFetch = options.fetch || this.fetch;
22
+ return fallbackFetch(path, options);
23
+ }
24
+ async open(path, flags, mode) {
25
+ return await fsPromise.open(path, flags);
26
+ }
27
+ async close(fd) {
28
+ fs.close(fd);
29
+ }
30
+ async fstat(fd) {
31
+ return await new Promise((resolve, reject) => fs.fstat(fd, (err, info) => err ? reject(err) : resolve(info)));
32
+ }
33
+ async read(fd, _ref) {
34
+ let {
35
+ buffer = null,
36
+ offset = 0,
37
+ length = buffer.byteLength,
38
+ position = null
39
+ } = _ref;
40
+ let totalBytesRead = 0;
41
+ while (totalBytesRead < length) {
42
+ const {
43
+ bytesRead
44
+ } = await new Promise((resolve, reject) => fs.read(fd, buffer, offset + totalBytesRead, length - totalBytesRead, position + totalBytesRead, (err, bytesRead, buffer) => err ? reject(err) : resolve({
45
+ bytesRead,
46
+ buffer
47
+ })));
48
+ totalBytesRead += bytesRead;
49
+ }
50
+ return {
51
+ bytesRead: totalBytesRead,
52
+ buffer
53
+ };
54
+ }
55
+ }
56
+ //# sourceMappingURL=node-filesystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-filesystem.js","names":["fs","fsPromise","NodeFileSystem","constructor","options","fetch","_fetch","readdir","dirname","arguments","length","undefined","stat","path","info","size","Number","isDirectory","fallbackFetch","open","flags","mode","close","fd","fstat","Promise","resolve","reject","err","read","_ref","buffer","offset","byteLength","position","totalBytesRead","bytesRead"],"sources":["../../../src/filesystems/node-filesystem.ts"],"sourcesContent":["import {FileSystem, RandomAccessReadFileSystem} from '@loaders.gl/loader-utils';\nimport fs from 'fs';\nimport fsPromise from 'fs/promises';\n\n// import {fetchFile} from \"../fetch/fetch-file\"\n// import {selectLoader} from \"../api/select-loader\";\n\ntype Stat = {\n size: number;\n isDirectory: () => boolean;\n info?: fs.Stats;\n};\n\ntype ReadOptions = {\n buffer?: Buffer;\n offset?: number;\n length?: number;\n position?: number;\n};\n\n/**\n * FileSystem pass-through for Node.js\n * Compatible with BrowserFileSystem.\n * @param options\n */\nexport class NodeFileSystem implements FileSystem, RandomAccessReadFileSystem {\n // implements FileSystem\n constructor(options: {[key: string]: any}) {\n this.fetch = options._fetch;\n }\n\n async readdir(dirname = '.', options?: {}): Promise<any[]> {\n return await fsPromise.readdir(dirname, options);\n }\n\n async stat(path: string, options?: {}): Promise<Stat> {\n const info = await fsPromise.stat(path, options);\n return {size: Number(info.size), isDirectory: () => false, info};\n }\n\n async fetch(path: string, options: {[key: string]: any}) {\n // Falls back to handle https:/http:/data: etc fetches\n // eslint-disable-next-line\n const fallbackFetch = options.fetch || this.fetch;\n return fallbackFetch(path, options);\n }\n\n // implements IRandomAccessFileSystem\n async open(path: string, flags: string | number, mode?: any): Promise<number> {\n return (await fsPromise.open(path, flags)) as unknown as number;\n }\n\n async close(fd: number): Promise<void> {\n fs.close(fd);\n }\n\n async fstat(fd: number): Promise<Stat> {\n return await new Promise((resolve, reject) =>\n fs.fstat(fd, (err, info) => (err ? reject(err) : resolve(info)))\n );\n }\n\n async read(\n fd: number,\n // @ts-ignore Possibly null\n {buffer = null, offset = 0, length = buffer.byteLength, position = null}: ReadOptions\n ): Promise<{bytesRead: number; buffer: Uint8Array}> {\n let totalBytesRead = 0;\n // Read in loop until we get required number of bytes\n while (totalBytesRead < length) {\n const {bytesRead} = await new Promise<{bytesRead: number; buffer: Buffer}>(\n // eslint-disable-next-line no-loop-func\n (resolve, reject) =>\n fs.read(\n fd,\n buffer,\n offset + totalBytesRead,\n length - totalBytesRead,\n position + totalBytesRead,\n (err, bytesRead, buffer) => (err ? reject(err) : resolve({bytesRead, buffer}))\n )\n );\n totalBytesRead += bytesRead;\n }\n return {bytesRead: totalBytesRead, buffer};\n }\n}\n"],"mappings":"AACA,OAAOA,EAAE,MAAM,IAAI;AACnB,OAAOC,SAAS,MAAM,aAAa;AAuBnC,OAAO,MAAMC,cAAc,CAAmD;EAE5EC,WAAWA,CAACC,OAA6B,EAAE;IACzC,IAAI,CAACC,KAAK,GAAGD,OAAO,CAACE,MAAM;EAC7B;EAEA,MAAMC,OAAOA,CAAA,EAA8C;IAAA,IAA7CC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,GAAG;IAAA,IAAEL,OAAY,GAAAK,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;IACvC,OAAO,MAAMV,SAAS,CAACM,OAAO,CAACC,OAAO,EAAEJ,OAAO,CAAC;EAClD;EAEA,MAAMQ,IAAIA,CAACC,IAAY,EAAET,OAAY,EAAiB;IACpD,MAAMU,IAAI,GAAG,MAAMb,SAAS,CAACW,IAAI,CAACC,IAAI,EAAET,OAAO,CAAC;IAChD,OAAO;MAACW,IAAI,EAAEC,MAAM,CAACF,IAAI,CAACC,IAAI,CAAC;MAAEE,WAAW,EAAEA,CAAA,KAAM,KAAK;MAAEH;IAAI,CAAC;EAClE;EAEA,MAAMT,KAAKA,CAACQ,IAAY,EAAET,OAA6B,EAAE;IAGvD,MAAMc,aAAa,GAAGd,OAAO,CAACC,KAAK,IAAI,IAAI,CAACA,KAAK;IACjD,OAAOa,aAAa,CAACL,IAAI,EAAET,OAAO,CAAC;EACrC;EAGA,MAAMe,IAAIA,CAACN,IAAY,EAAEO,KAAsB,EAAEC,IAAU,EAAmB;IAC5E,OAAQ,MAAMpB,SAAS,CAACkB,IAAI,CAACN,IAAI,EAAEO,KAAK,CAAC;EAC3C;EAEA,MAAME,KAAKA,CAACC,EAAU,EAAiB;IACrCvB,EAAE,CAACsB,KAAK,CAACC,EAAE,CAAC;EACd;EAEA,MAAMC,KAAKA,CAACD,EAAU,EAAiB;IACrC,OAAO,MAAM,IAAIE,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KACvC3B,EAAE,CAACwB,KAAK,CAACD,EAAE,EAAE,CAACK,GAAG,EAAEd,IAAI,KAAMc,GAAG,GAAGD,MAAM,CAACC,GAAG,CAAC,GAAGF,OAAO,CAACZ,IAAI,CAAE,CACjE,CAAC;EACH;EAEA,MAAMe,IAAIA,CACRN,EAAU,EAAAO,IAAA,EAGwC;IAAA,IADlD;MAACC,MAAM,GAAG,IAAI;MAAEC,MAAM,GAAG,CAAC;MAAEtB,MAAM,GAAGqB,MAAM,CAACE,UAAU;MAAEC,QAAQ,GAAG;IAAiB,CAAC,GAAAJ,IAAA;IAErF,IAAIK,cAAc,GAAG,CAAC;IAEtB,OAAOA,cAAc,GAAGzB,MAAM,EAAE;MAC9B,MAAM;QAAC0B;MAAS,CAAC,GAAG,MAAM,IAAIX,OAAO,CAEnC,CAACC,OAAO,EAAEC,MAAM,KACd3B,EAAE,CAAC6B,IAAI,CACLN,EAAE,EACFQ,MAAM,EACNC,MAAM,GAAGG,cAAc,EACvBzB,MAAM,GAAGyB,cAAc,EACvBD,QAAQ,GAAGC,cAAc,EACzB,CAACP,GAAG,EAAEQ,SAAS,EAAEL,MAAM,KAAMH,GAAG,GAAGD,MAAM,CAACC,GAAG,CAAC,GAAGF,OAAO,CAAC;QAACU,SAAS;QAAEL;MAAM,CAAC,CAC9E,CACJ,CAAC;MACDI,cAAc,IAAIC,SAAS;IAC7B;IACA,OAAO;MAACA,SAAS,EAAED,cAAc;MAAEJ;IAAM,CAAC;EAC5C;AACF"}