@loaders.gl/loader-utils 3.1.0-alpha.4 → 4.0.0-alpha.1

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 (121) hide show
  1. package/dist/{esm/index.js → index.js} +0 -0
  2. package/dist/index.js.map +1 -0
  3. package/dist/{esm/json-loader.js → json-loader.js} +1 -1
  4. package/dist/json-loader.js.map +1 -0
  5. package/dist/{esm/lib → lib}/binary-utils/array-buffer-utils.js +0 -0
  6. package/dist/lib/binary-utils/array-buffer-utils.js.map +1 -0
  7. package/dist/{esm/lib → lib}/binary-utils/binary-copy-utils.js +0 -0
  8. package/dist/lib/binary-utils/binary-copy-utils.js.map +1 -0
  9. package/dist/{esm/lib → lib}/binary-utils/buffer-utils.js +0 -0
  10. package/dist/lib/binary-utils/buffer-utils.js.map +1 -0
  11. package/dist/{esm/lib → lib}/binary-utils/encode-utils.js +0 -0
  12. package/dist/lib/binary-utils/encode-utils.js.map +1 -0
  13. package/dist/{esm/lib → lib}/binary-utils/get-first-characters.js +0 -0
  14. package/dist/lib/binary-utils/get-first-characters.js.map +1 -0
  15. package/dist/{esm/lib → lib}/binary-utils/memory-copy-utils.js +0 -0
  16. package/dist/lib/binary-utils/memory-copy-utils.js.map +1 -0
  17. package/dist/{esm/lib → lib}/env-utils/assert.js +0 -0
  18. package/dist/lib/env-utils/assert.js.map +1 -0
  19. package/dist/{esm/lib → lib}/env-utils/globals.js +0 -0
  20. package/dist/lib/env-utils/globals.js.map +1 -0
  21. package/dist/{esm/lib → lib}/filesystems/node-filesystem.js +0 -0
  22. package/dist/lib/filesystems/node-filesystem.js.map +1 -0
  23. package/dist/{esm/lib → lib}/iterators/async-iteration.js +0 -0
  24. package/dist/lib/iterators/async-iteration.js.map +1 -0
  25. package/dist/{esm/lib → lib}/iterators/text-iterators.js +0 -0
  26. package/dist/lib/iterators/text-iterators.js.map +1 -0
  27. package/dist/{esm/lib → lib}/node/buffer.js +0 -0
  28. package/dist/lib/node/buffer.js.map +1 -0
  29. package/dist/{esm/lib → lib}/node/fs.js +0 -0
  30. package/dist/lib/node/fs.js.map +1 -0
  31. package/dist/{esm/lib → lib}/node/util.js +0 -0
  32. package/dist/lib/node/util.js.map +1 -0
  33. package/dist/{esm/lib → lib}/parser-utils/parse-json.js +1 -1
  34. package/dist/lib/parser-utils/parse-json.js.map +1 -0
  35. package/dist/{esm/lib → lib}/path-utils/file-aliases.js +1 -1
  36. package/dist/lib/path-utils/file-aliases.js.map +1 -0
  37. package/dist/{esm/lib → lib}/path-utils/path.js +2 -2
  38. package/dist/lib/path-utils/path.js.map +1 -0
  39. package/dist/{esm/lib → lib}/request-utils/request-scheduler.js +0 -0
  40. package/dist/lib/request-utils/request-scheduler.js.map +1 -0
  41. package/dist/{esm/lib → lib}/worker-loader-utils/create-loader-worker.js +1 -1
  42. package/dist/lib/worker-loader-utils/create-loader-worker.js.map +1 -0
  43. package/dist/{esm/lib → lib}/worker-loader-utils/parse-with-worker.js +2 -2
  44. package/dist/lib/worker-loader-utils/parse-with-worker.js.map +1 -0
  45. package/dist/{esm/types.js → types.js} +0 -0
  46. package/dist/{es5/types.js.map → types.js.map} +0 -0
  47. package/dist/{esm/workers → workers}/json-worker.js +0 -0
  48. package/dist/workers/json-worker.js.map +1 -0
  49. package/package.json +5 -5
  50. package/src/lib/worker-loader-utils/parse-with-worker.ts +6 -5
  51. package/dist/es5/index.js +0 -325
  52. package/dist/es5/index.js.map +0 -1
  53. package/dist/es5/json-loader.js +0 -57
  54. package/dist/es5/json-loader.js.map +0 -1
  55. package/dist/es5/lib/binary-utils/array-buffer-utils.js +0 -137
  56. package/dist/es5/lib/binary-utils/array-buffer-utils.js.map +0 -1
  57. package/dist/es5/lib/binary-utils/binary-copy-utils.js +0 -35
  58. package/dist/es5/lib/binary-utils/binary-copy-utils.js.map +0 -1
  59. package/dist/es5/lib/binary-utils/buffer-utils.js +0 -38
  60. package/dist/es5/lib/binary-utils/buffer-utils.js.map +0 -1
  61. package/dist/es5/lib/binary-utils/encode-utils.js +0 -42
  62. package/dist/es5/lib/binary-utils/encode-utils.js.map +0 -1
  63. package/dist/es5/lib/binary-utils/get-first-characters.js +0 -38
  64. package/dist/es5/lib/binary-utils/get-first-characters.js.map +0 -1
  65. package/dist/es5/lib/binary-utils/memory-copy-utils.js +0 -40
  66. package/dist/es5/lib/binary-utils/memory-copy-utils.js.map +0 -1
  67. package/dist/es5/lib/env-utils/assert.js +0 -13
  68. package/dist/es5/lib/env-utils/assert.js.map +0 -1
  69. package/dist/es5/lib/env-utils/globals.js +0 -33
  70. package/dist/es5/lib/env-utils/globals.js.map +0 -1
  71. package/dist/es5/lib/filesystems/node-filesystem.js +0 -267
  72. package/dist/es5/lib/filesystems/node-filesystem.js.map +0 -1
  73. package/dist/es5/lib/iterators/async-iteration.js +0 -266
  74. package/dist/es5/lib/iterators/async-iteration.js.map +0 -1
  75. package/dist/es5/lib/iterators/text-iterators.js +0 -434
  76. package/dist/es5/lib/iterators/text-iterators.js.map +0 -1
  77. package/dist/es5/lib/node/buffer.js +0 -38
  78. package/dist/es5/lib/node/buffer.js.map +0 -1
  79. package/dist/es5/lib/node/fs.js +0 -83
  80. package/dist/es5/lib/node/fs.js.map +0 -1
  81. package/dist/es5/lib/node/util.js +0 -18
  82. package/dist/es5/lib/node/util.js.map +0 -1
  83. package/dist/es5/lib/parser-utils/parse-json.js +0 -17
  84. package/dist/es5/lib/parser-utils/parse-json.js.map +0 -1
  85. package/dist/es5/lib/path-utils/file-aliases.js +0 -39
  86. package/dist/es5/lib/path-utils/file-aliases.js.map +0 -1
  87. package/dist/es5/lib/path-utils/path.js +0 -39
  88. package/dist/es5/lib/path-utils/path.js.map +0 -1
  89. package/dist/es5/lib/request-utils/request-scheduler.js +0 -182
  90. package/dist/es5/lib/request-utils/request-scheduler.js.map +0 -1
  91. package/dist/es5/lib/worker-loader-utils/create-loader-worker.js +0 -186
  92. package/dist/es5/lib/worker-loader-utils/create-loader-worker.js.map +0 -1
  93. package/dist/es5/lib/worker-loader-utils/parse-with-worker.js +0 -136
  94. package/dist/es5/lib/worker-loader-utils/parse-with-worker.js.map +0 -1
  95. package/dist/es5/types.js +0 -2
  96. package/dist/es5/workers/json-worker.js +0 -8
  97. package/dist/es5/workers/json-worker.js.map +0 -1
  98. package/dist/esm/index.js.map +0 -1
  99. package/dist/esm/json-loader.js.map +0 -1
  100. package/dist/esm/lib/binary-utils/array-buffer-utils.js.map +0 -1
  101. package/dist/esm/lib/binary-utils/binary-copy-utils.js.map +0 -1
  102. package/dist/esm/lib/binary-utils/buffer-utils.js.map +0 -1
  103. package/dist/esm/lib/binary-utils/encode-utils.js.map +0 -1
  104. package/dist/esm/lib/binary-utils/get-first-characters.js.map +0 -1
  105. package/dist/esm/lib/binary-utils/memory-copy-utils.js.map +0 -1
  106. package/dist/esm/lib/env-utils/assert.js.map +0 -1
  107. package/dist/esm/lib/env-utils/globals.js.map +0 -1
  108. package/dist/esm/lib/filesystems/node-filesystem.js.map +0 -1
  109. package/dist/esm/lib/iterators/async-iteration.js.map +0 -1
  110. package/dist/esm/lib/iterators/text-iterators.js.map +0 -1
  111. package/dist/esm/lib/node/buffer.js.map +0 -1
  112. package/dist/esm/lib/node/fs.js.map +0 -1
  113. package/dist/esm/lib/node/util.js.map +0 -1
  114. package/dist/esm/lib/parser-utils/parse-json.js.map +0 -1
  115. package/dist/esm/lib/path-utils/file-aliases.js.map +0 -1
  116. package/dist/esm/lib/path-utils/path.js.map +0 -1
  117. package/dist/esm/lib/request-utils/request-scheduler.js.map +0 -1
  118. package/dist/esm/lib/worker-loader-utils/create-loader-worker.js.map +0 -1
  119. package/dist/esm/lib/worker-loader-utils/parse-with-worker.js.map +0 -1
  120. package/dist/esm/types.js.map +0 -1
  121. package/dist/esm/workers/json-worker.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/iterators/text-iterators.ts"],"names":["makeTextDecoderIterator","arrayBufferIterator","options","textDecoder","TextDecoder","undefined","arrayBuffer","decode","stream","makeTextEncoderIterator","textIterator","textEncoder","TextEncoder","text","encode","makeLineIterator","previous","textChunk","eolIndex","indexOf","line","slice","length","makeNumberedLineIterator","lineIterator","counter"],"mappings":"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","sourcesContent":["// TextDecoder iterators\n// TextDecoder will keep any partial undecoded bytes between calls to `decode`\n\nexport async function* makeTextDecoderIterator(\n arrayBufferIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n options: TextDecoderOptions = {}\n): AsyncIterable<string> {\n const textDecoder = new TextDecoder(undefined, options);\n for await (const arrayBuffer of arrayBufferIterator) {\n yield typeof arrayBuffer === 'string'\n ? arrayBuffer\n : textDecoder.decode(arrayBuffer, {stream: true});\n }\n}\n\n// TextEncoder iterator\n// TODO - this is not useful unless min chunk size is given\n// TextEncoder will keep any partial undecoded bytes between calls to `encode`\n// If iterator does not yield strings, assume arrayBuffer and return unencoded\n\nexport async function* makeTextEncoderIterator(\n textIterator: AsyncIterable<string> | Iterable<ArrayBuffer>\n): AsyncIterable<ArrayBuffer> {\n const textEncoder = new TextEncoder();\n for await (const text of textIterator) {\n yield typeof text === 'string' ? textEncoder.encode(text) : text;\n }\n}\n\n/**\n * @param textIterator async iterable yielding strings\n * @returns an async iterable over lines\n * See http://2ality.com/2018/04/async-iter-nodejs.html\n */\n\nexport async function* makeLineIterator(\n textIterator: AsyncIterable<string>\n): AsyncIterable<string> {\n let previous = '';\n for await (const textChunk of textIterator) {\n previous += textChunk;\n let eolIndex;\n while ((eolIndex = previous.indexOf('\\n')) >= 0) {\n // line includes the EOL\n const line = previous.slice(0, eolIndex + 1);\n previous = previous.slice(eolIndex + 1);\n yield line;\n }\n }\n\n if (previous.length > 0) {\n yield previous;\n }\n}\n\n/**\n * @param lineIterator async iterable yielding lines\n * @returns async iterable yielding numbered lines\n *\n * See http://2ality.com/2018/04/async-iter-nodejs.html\n */\nexport async function* makeNumberedLineIterator(\n lineIterator: AsyncIterable<string>\n): AsyncIterable<{counter: number; line: string}> {\n let counter = 1;\n for await (const line of lineIterator) {\n yield {counter, line};\n counter++;\n }\n}\n"],"file":"text-iterators.js"}
@@ -1,38 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.toArrayBuffer = toArrayBuffer;
7
- exports.toBuffer = toBuffer;
8
-
9
- var _assert = require("../env-utils/assert");
10
-
11
- function toArrayBuffer(buffer) {
12
- if (Buffer.isBuffer(buffer)) {
13
- var typedArray = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.length);
14
- return typedArray.slice().buffer;
15
- }
16
-
17
- return buffer;
18
- }
19
-
20
- function toBuffer(binaryData) {
21
- if (ArrayBuffer.isView(binaryData)) {
22
- binaryData = binaryData.buffer;
23
- }
24
-
25
- if (typeof Buffer !== 'undefined' && binaryData instanceof ArrayBuffer) {
26
- var buffer = new Buffer(binaryData.byteLength);
27
- var view = new Uint8Array(binaryData);
28
-
29
- for (var i = 0; i < buffer.length; ++i) {
30
- buffer[i] = view[i];
31
- }
32
-
33
- return buffer;
34
- }
35
-
36
- return (0, _assert.assert)(false);
37
- }
38
- //# sourceMappingURL=buffer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/node/buffer.ts"],"names":["toArrayBuffer","buffer","Buffer","isBuffer","typedArray","Uint8Array","byteOffset","length","slice","toBuffer","binaryData","ArrayBuffer","isView","byteLength","view","i"],"mappings":";;;;;;;;AAGA;;AAKO,SAASA,aAAT,CAAuBC,MAAvB,EAA+B;AAEpC,MAAIC,MAAM,CAACC,QAAP,CAAgBF,MAAhB,CAAJ,EAA6B;AAC3B,QAAMG,UAAU,GAAG,IAAIC,UAAJ,CAAeJ,MAAM,CAACA,MAAtB,EAA8BA,MAAM,CAACK,UAArC,EAAiDL,MAAM,CAACM,MAAxD,CAAnB;AACA,WAAOH,UAAU,CAACI,KAAX,GAAmBP,MAA1B;AACD;;AACD,SAAOA,MAAP;AACD;;AAKM,SAASQ,QAAT,CAAkBC,UAAlB,EAA8B;AACnC,MAAIC,WAAW,CAACC,MAAZ,CAAmBF,UAAnB,CAAJ,EAAoC;AAClCA,IAAAA,UAAU,GAAGA,UAAU,CAACT,MAAxB;AACD;;AAED,MAAI,OAAOC,MAAP,KAAkB,WAAlB,IAAiCQ,UAAU,YAAYC,WAA3D,EAAwE;AACtE,QAAMV,MAAM,GAAG,IAAIC,MAAJ,CAAWQ,UAAU,CAACG,UAAtB,CAAf;AACA,QAAMC,IAAI,GAAG,IAAIT,UAAJ,CAAeK,UAAf,CAAb;;AACA,SAAK,IAAIK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGd,MAAM,CAACM,MAA3B,EAAmC,EAAEQ,CAArC,EAAwC;AACtCd,MAAAA,MAAM,CAACc,CAAD,CAAN,GAAYD,IAAI,CAACC,CAAD,CAAhB;AACD;;AACD,WAAOd,MAAP;AACD;;AAED,SAAO,oBAAO,KAAP,CAAP;AACD","sourcesContent":["// Isolates Buffer references to ensure they are only bundled under Node.js (avoids big webpack polyfill)\n// this file is not visible to webpack (it is excluded in the package.json \"browser\" field).\n\nimport {assert} from '../env-utils/assert';\n\n/**\n * Convert Buffer to ArrayBuffer\n */\nexport function toArrayBuffer(buffer) {\n // TODO - per docs we should just be able to call buffer.buffer, but there are issues\n if (Buffer.isBuffer(buffer)) {\n const typedArray = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.length);\n return typedArray.slice().buffer;\n }\n return buffer;\n}\n\n/**\n * Convert (copy) ArrayBuffer to Buffer\n */\nexport function toBuffer(binaryData) {\n if (ArrayBuffer.isView(binaryData)) {\n binaryData = binaryData.buffer;\n }\n\n if (typeof Buffer !== 'undefined' && binaryData instanceof ArrayBuffer) {\n const buffer = new Buffer(binaryData.byteLength);\n const view = new Uint8Array(binaryData);\n for (let i = 0; i < buffer.length; ++i) {\n buffer[i] = view[i];\n }\n return buffer;\n }\n\n return assert(false);\n}\n"],"file":"buffer.js"}
@@ -1,83 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports._readToArrayBuffer = _readToArrayBuffer;
9
- exports.isSupported = exports.fstat = exports.read = exports.close = exports.open = exports.writeFileSync = exports.writeFile = exports.readFileSync = exports.readFile = exports.stat = exports.readdir = void 0;
10
-
11
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
12
-
13
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
14
-
15
- var _fs = _interopRequireDefault(require("fs"));
16
-
17
- var _buffer = require("./buffer");
18
-
19
- var _util = require("./util");
20
-
21
- var readdir = (0, _util.promisify)(_fs.default.readdir);
22
- exports.readdir = readdir;
23
- var stat = (0, _util.promisify)(_fs.default.stat);
24
- exports.stat = stat;
25
- var readFile = (0, _util.promisify)(_fs.default.readFile);
26
- exports.readFile = readFile;
27
- var readFileSync = _fs.default.readFileSync;
28
- exports.readFileSync = readFileSync;
29
- var writeFile = (0, _util.promisify)(_fs.default.writeFile);
30
- exports.writeFile = writeFile;
31
- var writeFileSync = _fs.default.writeFileSync;
32
- exports.writeFileSync = writeFileSync;
33
- var open = (0, _util.promisify)(_fs.default.open);
34
- exports.open = open;
35
- var close = (0, _util.promisify)(_fs.default.close);
36
- exports.close = close;
37
- var read = (0, _util.promisify)(_fs.default.read);
38
- exports.read = read;
39
- var fstat = (0, _util.promisify)(_fs.default.fstat);
40
- exports.fstat = fstat;
41
- var isSupported = Boolean(_fs.default);
42
- exports.isSupported = isSupported;
43
-
44
- function _readToArrayBuffer(_x, _x2, _x3) {
45
- return _readToArrayBuffer2.apply(this, arguments);
46
- }
47
-
48
- function _readToArrayBuffer2() {
49
- _readToArrayBuffer2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(fd, start, length) {
50
- var buffer, _yield$read, bytesRead;
51
-
52
- return _regenerator.default.wrap(function _callee$(_context) {
53
- while (1) {
54
- switch (_context.prev = _context.next) {
55
- case 0:
56
- buffer = Buffer.alloc(length);
57
- _context.next = 3;
58
- return read(fd, buffer, 0, length, start);
59
-
60
- case 3:
61
- _yield$read = _context.sent;
62
- bytesRead = _yield$read.bytesRead;
63
-
64
- if (!(bytesRead !== length)) {
65
- _context.next = 7;
66
- break;
67
- }
68
-
69
- throw new Error('fs.read failed');
70
-
71
- case 7:
72
- return _context.abrupt("return", (0, _buffer.toArrayBuffer)(buffer));
73
-
74
- case 8:
75
- case "end":
76
- return _context.stop();
77
- }
78
- }
79
- }, _callee);
80
- }));
81
- return _readToArrayBuffer2.apply(this, arguments);
82
- }
83
- //# sourceMappingURL=fs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/node/fs.ts"],"names":["readdir","fs","stat","readFile","readFileSync","writeFile","writeFileSync","open","close","read","fstat","isSupported","Boolean","_readToArrayBuffer","fd","start","length","buffer","Buffer","alloc","bytesRead","Error"],"mappings":";;;;;;;;;;;;;;AACA;;AACA;;AACA;;AAOO,IAAMA,OAAO,GAAG,qBAAUC,YAAGD,OAAb,CAAhB;;AAEA,IAAME,IAAI,GAAG,qBAAUD,YAAGC,IAAb,CAAb;;AAGA,IAAMC,QAAQ,GAAG,qBAAUF,YAAGE,QAAb,CAAjB;;AAEA,IAAMC,YAAY,GAAGH,YAAGG,YAAxB;;AAEA,IAAMC,SAAS,GAAG,qBAAUJ,YAAGI,SAAb,CAAlB;;AAEA,IAAMC,aAAa,GAAGL,YAAGK,aAAzB;;AAKA,IAAMC,IAAI,GAAG,qBAAUN,YAAGM,IAAb,CAAb;;AAEA,IAAMC,KAAK,GAAG,qBAAUP,YAAGO,KAAb,CAAd;;AAEA,IAAMC,IAAI,GAAG,qBAAUR,YAAGQ,IAAb,CAAb;;AAEA,IAAMC,KAAK,GAAG,qBAAUT,YAAGS,KAAb,CAAd;;AAEA,IAAMC,WAAW,GAAGC,OAAO,CAACX,WAAD,CAA3B;;;SAEeY,kB;;;;;kFAAf,iBAAkCC,EAAlC,EAA8CC,KAA9C,EAA6DC,MAA7D;AAAA;;AAAA;AAAA;AAAA;AAAA;AACCC,YAAAA,MADD,GACUC,MAAM,CAACC,KAAP,CAAaH,MAAb,CADV;AAAA;AAAA,mBAEqBP,IAAI,CAACK,EAAD,EAAKG,MAAL,EAAa,CAAb,EAAgBD,MAAhB,EAAwBD,KAAxB,CAFzB;;AAAA;AAAA;AAEEK,YAAAA,SAFF,eAEEA,SAFF;;AAAA,kBAGDA,SAAS,KAAKJ,MAHb;AAAA;AAAA;AAAA;;AAAA,kBAIG,IAAIK,KAAJ,CAAU,gBAAV,CAJH;;AAAA;AAAA,6CAME,2BAAcJ,MAAd,CANF;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","sourcesContent":["// fs wrapper (promisified fs + avoids bundling fs in browsers)\nimport fs from 'fs';\nimport {toArrayBuffer} from './buffer';\nimport {promisify} from './util';\n\nexport type {Stats} from 'fs';\n\n// paths\n\n/** Wrapper for Node.js fs method */\nexport const readdir = promisify(fs.readdir);\n/** Wrapper for Node.js fs method */\nexport const stat = promisify(fs.stat);\n\n/** Wrapper for Node.js fs method */\nexport const readFile = promisify(fs.readFile);\n/** Wrapper for Node.js fs method */\nexport const readFileSync = fs.readFileSync;\n/** Wrapper for Node.js fs method */\nexport const writeFile = promisify(fs.writeFile);\n/** Wrapper for Node.js fs method */\nexport const writeFileSync = fs.writeFileSync;\n\n// file descriptors\n\n/** Wrapper for Node.js fs method */\nexport const open = promisify(fs.open);\n/** Wrapper for Node.js fs method */\nexport const close = promisify(fs.close);\n/** Wrapper for Node.js fs method */\nexport const read = promisify(fs.read);\n/** Wrapper for Node.js fs method */\nexport const fstat = promisify(fs.fstat);\n\nexport const isSupported = Boolean(fs);\n\nexport async function _readToArrayBuffer(fd: number, start: number, length: number) {\n const buffer = Buffer.alloc(length);\n const {bytesRead} = await read(fd, buffer, 0, length, start);\n if (bytesRead !== length) {\n throw new Error('fs.read failed');\n }\n return toArrayBuffer(buffer);\n}\n"],"file":"fs.js"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
-
3
- var _typeof = require("@babel/runtime/helpers/typeof");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.promisify = void 0;
9
-
10
- var util = _interopRequireWildcard(require("util"));
11
-
12
- 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); }
13
-
14
- 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; }
15
-
16
- var promisify = util.promisify;
17
- exports.promisify = promisify;
18
- //# sourceMappingURL=util.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/node/util.ts"],"names":["promisify","util"],"mappings":";;;;;;;;;AAAA;;;;;;AAGO,IAAMA,SAAS,GAAGC,IAAI,CAACD,SAAvB","sourcesContent":["import * as util from 'util';\n\n/** Wrapper for Node.js promisify */\nexport const promisify = util.promisify;\n"],"file":"util.js"}
@@ -1,17 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.parseJSON = parseJSON;
7
-
8
- var _getFirstCharacters = require("../binary-utils/get-first-characters");
9
-
10
- function parseJSON(string) {
11
- try {
12
- return JSON.parse(string);
13
- } catch (_) {
14
- throw new Error("Failed to parse JSON from data starting with \"".concat((0, _getFirstCharacters.getFirstCharacters)(string), "\""));
15
- }
16
- }
17
- //# sourceMappingURL=parse-json.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/parser-utils/parse-json.ts"],"names":["parseJSON","string","JSON","parse","_","Error"],"mappings":";;;;;;;AAAA;;AAKO,SAASA,SAAT,CAAmBC,MAAnB,EAAwC;AAC7C,MAAI;AACF,WAAOC,IAAI,CAACC,KAAL,CAAWF,MAAX,CAAP;AACD,GAFD,CAEE,OAAOG,CAAP,EAAU;AACV,UAAM,IAAIC,KAAJ,0DAA2D,4CAAmBJ,MAAnB,CAA3D,QAAN;AACD;AACF","sourcesContent":["import {getFirstCharacters} from '../binary-utils/get-first-characters';\n\n/**\n * Minimal JSON parser that throws more meaningful error messages\n */\nexport function parseJSON(string: string): any {\n try {\n return JSON.parse(string);\n } catch (_) {\n throw new Error(`Failed to parse JSON from data starting with \"${getFirstCharacters(string)}\"`);\n }\n}\n"],"file":"parse-json.js"}
@@ -1,39 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.setPathPrefix = setPathPrefix;
7
- exports.getPathPrefix = getPathPrefix;
8
- exports.addAliases = addAliases;
9
- exports.resolvePath = resolvePath;
10
- var pathPrefix = '';
11
- var fileAliases = {};
12
-
13
- function setPathPrefix(prefix) {
14
- pathPrefix = prefix;
15
- }
16
-
17
- function getPathPrefix() {
18
- return pathPrefix;
19
- }
20
-
21
- function addAliases(aliases) {
22
- Object.assign(fileAliases, aliases);
23
- }
24
-
25
- function resolvePath(filename) {
26
- for (var alias in fileAliases) {
27
- if (filename.startsWith(alias)) {
28
- var replacement = fileAliases[alias];
29
- filename = filename.replace(alias, replacement);
30
- }
31
- }
32
-
33
- if (!filename.startsWith('http://') && !filename.startsWith('https://')) {
34
- filename = "".concat(pathPrefix).concat(filename);
35
- }
36
-
37
- return filename;
38
- }
39
- //# sourceMappingURL=file-aliases.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/path-utils/file-aliases.ts"],"names":["pathPrefix","fileAliases","setPathPrefix","prefix","getPathPrefix","addAliases","aliases","Object","assign","resolvePath","filename","alias","startsWith","replacement","replace"],"mappings":";;;;;;;;;AAEA,IAAIA,UAAU,GAAG,EAAjB;AACA,IAAMC,WAA0C,GAAG,EAAnD;;AAKO,SAASC,aAAT,CAAuBC,MAAvB,EAA6C;AAClDH,EAAAA,UAAU,GAAGG,MAAb;AACD;;AAKM,SAASC,aAAT,GAAiC;AACtC,SAAOJ,UAAP;AACD;;AASM,SAASK,UAAT,CAAoBC,OAApB,EAAkE;AACvEC,EAAAA,MAAM,CAACC,MAAP,CAAcP,WAAd,EAA2BK,OAA3B;AACD;;AAKM,SAASG,WAAT,CAAqBC,QAArB,EAA+C;AACpD,OAAK,IAAMC,KAAX,IAAoBV,WAApB,EAAiC;AAC/B,QAAIS,QAAQ,CAACE,UAAT,CAAoBD,KAApB,CAAJ,EAAgC;AAC9B,UAAME,WAAW,GAAGZ,WAAW,CAACU,KAAD,CAA/B;AACAD,MAAAA,QAAQ,GAAGA,QAAQ,CAACI,OAAT,CAAiBH,KAAjB,EAAwBE,WAAxB,CAAX;AACD;AACF;;AACD,MAAI,CAACH,QAAQ,CAACE,UAAT,CAAoB,SAApB,CAAD,IAAmC,CAACF,QAAQ,CAACE,UAAT,CAAoB,UAApB,CAAxC,EAAyE;AACvEF,IAAAA,QAAQ,aAAMV,UAAN,SAAmBU,QAAnB,CAAR;AACD;;AACD,SAAOA,QAAP;AACD","sourcesContent":["// Simple file alias mechanisms for tests.\n\nlet pathPrefix = '';\nconst fileAliases: {[aliasPath: string]: string} = {};\n\n/*\n * Set a relative path prefix\n */\nexport function setPathPrefix(prefix: string): void {\n pathPrefix = prefix;\n}\n\n/*\n * Get the relative path prefix\n */\nexport function getPathPrefix(): string {\n return pathPrefix;\n}\n\n/**\n *\n * @param aliases\n *\n * Note: addAliases are an experimental export, they are only for testing of loaders.gl loaders\n * not intended as a generic aliasing mechanism\n */\nexport function addAliases(aliases: {[aliasPath: string]: string}): void {\n Object.assign(fileAliases, aliases);\n}\n\n/**\n * Resolves aliases and adds path-prefix to paths\n */\nexport function resolvePath(filename: string): string {\n for (const alias in fileAliases) {\n if (filename.startsWith(alias)) {\n const replacement = fileAliases[alias];\n filename = filename.replace(alias, replacement);\n }\n }\n if (!filename.startsWith('http://') && !filename.startsWith('https://')) {\n filename = `${pathPrefix}${filename}`;\n }\n return filename;\n}\n"],"file":"file-aliases.js"}
@@ -1,39 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.filename = filename;
7
- exports.dirname = dirname;
8
- exports.join = join;
9
-
10
- function filename(url) {
11
- var slashIndex = url && url.lastIndexOf('/');
12
- return slashIndex >= 0 ? url.substr(slashIndex + 1) : '';
13
- }
14
-
15
- function dirname(url) {
16
- var slashIndex = url && url.lastIndexOf('/');
17
- return slashIndex >= 0 ? url.substr(0, slashIndex) : '';
18
- }
19
-
20
- function join() {
21
- for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {
22
- parts[_key] = arguments[_key];
23
- }
24
-
25
- var separator = '/';
26
- parts = parts.map(function (part, index) {
27
- if (index) {
28
- part = part.replace(new RegExp("^".concat(separator)), '');
29
- }
30
-
31
- if (index !== parts.length - 1) {
32
- part = part.replace(new RegExp("".concat(separator, "$")), '');
33
- }
34
-
35
- return part;
36
- });
37
- return parts.join(separator);
38
- }
39
- //# sourceMappingURL=path.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/path-utils/path.ts"],"names":["filename","url","slashIndex","lastIndexOf","substr","dirname","join","parts","separator","map","part","index","replace","RegExp","length"],"mappings":";;;;;;;;;AAMO,SAASA,QAAT,CAAkBC,GAAlB,EAAuC;AAC5C,MAAMC,UAAU,GAAGD,GAAG,IAAIA,GAAG,CAACE,WAAJ,CAAgB,GAAhB,CAA1B;AACA,SAAOD,UAAU,IAAI,CAAd,GAAkBD,GAAG,CAACG,MAAJ,CAAYF,UAAD,GAAyB,CAApC,CAAlB,GAA2D,EAAlE;AACD;;AAMM,SAASG,OAAT,CAAiBJ,GAAjB,EAAsC;AAC3C,MAAMC,UAAU,GAAGD,GAAG,IAAIA,GAAG,CAACE,WAAJ,CAAgB,GAAhB,CAA1B;AACA,SAAOD,UAAU,IAAI,CAAd,GAAkBD,GAAG,CAACG,MAAJ,CAAW,CAAX,EAAcF,UAAd,CAAlB,GAAwD,EAA/D;AACD;;AAMM,SAASI,IAAT,GAA0C;AAAA,oCAAzBC,KAAyB;AAAzBA,IAAAA,KAAyB;AAAA;;AAC/C,MAAMC,SAAS,GAAG,GAAlB;AACAD,EAAAA,KAAK,GAAGA,KAAK,CAACE,GAAN,CAAU,UAACC,IAAD,EAAOC,KAAP,EAAiB;AACjC,QAAIA,KAAJ,EAAW;AACTD,MAAAA,IAAI,GAAGA,IAAI,CAACE,OAAL,CAAa,IAAIC,MAAJ,YAAeL,SAAf,EAAb,EAA0C,EAA1C,CAAP;AACD;;AACD,QAAIG,KAAK,KAAKJ,KAAK,CAACO,MAAN,GAAe,CAA7B,EAAgC;AAC9BJ,MAAAA,IAAI,GAAGA,IAAI,CAACE,OAAL,CAAa,IAAIC,MAAJ,WAAcL,SAAd,OAAb,EAA0C,EAA1C,CAAP;AACD;;AACD,WAAOE,IAAP;AACD,GARO,CAAR;AASA,SAAOH,KAAK,CAACD,IAAN,CAAWE,SAAX,CAAP;AACD","sourcesContent":["// Beginning of a minimal implementation of the Node.js path API, that doesn't pull in big polyfills.\n\n/**\n * Replacement for Node.js path.filename\n * @param url\n */\nexport function filename(url: string): string {\n const slashIndex = url && url.lastIndexOf('/');\n return slashIndex >= 0 ? url.substr((slashIndex as number) + 1) : '';\n}\n\n/**\n * Replacement for Node.js path.dirname\n * @param url\n */\nexport function dirname(url: string): string {\n const slashIndex = url && url.lastIndexOf('/');\n return slashIndex >= 0 ? url.substr(0, slashIndex as number) : '';\n}\n\n/**\n * Replacement for Node.js path.join\n * @param parts\n */\nexport function join(...parts: string[]): string {\n const separator = '/';\n parts = parts.map((part, index) => {\n if (index) {\n part = part.replace(new RegExp(`^${separator}`), '');\n }\n if (index !== parts.length - 1) {\n part = part.replace(new RegExp(`${separator}$`), '');\n }\n return part;\n });\n return parts.join(separator);\n}\n"],"file":"path.js"}
@@ -1,182 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
- var _stats = require("@probe.gl/stats");
17
-
18
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
19
-
20
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
21
-
22
- var STAT_QUEUED_REQUESTS = 'Queued Requests';
23
- var STAT_ACTIVE_REQUESTS = 'Active Requests';
24
- var STAT_CANCELLED_REQUESTS = 'Cancelled Requests';
25
- var STAT_QUEUED_REQUESTS_EVER = 'Queued Requests Ever';
26
- var STAT_ACTIVE_REQUESTS_EVER = 'Active Requests Ever';
27
- var DEFAULT_PROPS = {
28
- id: 'request-scheduler',
29
- throttleRequests: true,
30
- maxRequests: 6
31
- };
32
-
33
- var RequestScheduler = function () {
34
- function RequestScheduler() {
35
- var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
36
- (0, _classCallCheck2.default)(this, RequestScheduler);
37
- (0, _defineProperty2.default)(this, "props", void 0);
38
- (0, _defineProperty2.default)(this, "stats", void 0);
39
- (0, _defineProperty2.default)(this, "activeRequestCount", 0);
40
- (0, _defineProperty2.default)(this, "requestQueue", []);
41
- (0, _defineProperty2.default)(this, "requestMap", new Map());
42
- (0, _defineProperty2.default)(this, "deferredUpdate", null);
43
- this.props = _objectSpread(_objectSpread({}, DEFAULT_PROPS), props);
44
- this.stats = new _stats.Stats({
45
- id: this.props.id
46
- });
47
- this.stats.get(STAT_QUEUED_REQUESTS);
48
- this.stats.get(STAT_ACTIVE_REQUESTS);
49
- this.stats.get(STAT_CANCELLED_REQUESTS);
50
- this.stats.get(STAT_QUEUED_REQUESTS_EVER);
51
- this.stats.get(STAT_ACTIVE_REQUESTS_EVER);
52
- }
53
-
54
- (0, _createClass2.default)(RequestScheduler, [{
55
- key: "scheduleRequest",
56
- value: function scheduleRequest(handle) {
57
- var getPriority = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
58
- return 0;
59
- };
60
-
61
- if (!this.props.throttleRequests) {
62
- return Promise.resolve({
63
- done: function done() {}
64
- });
65
- }
66
-
67
- if (this.requestMap.has(handle)) {
68
- return this.requestMap.get(handle);
69
- }
70
-
71
- var request = {
72
- handle: handle,
73
- priority: 0,
74
- getPriority: getPriority
75
- };
76
- var promise = new Promise(function (resolve) {
77
- request.resolve = resolve;
78
- return request;
79
- });
80
- this.requestQueue.push(request);
81
- this.requestMap.set(handle, promise);
82
-
83
- this._issueNewRequests();
84
-
85
- return promise;
86
- }
87
- }, {
88
- key: "_issueRequest",
89
- value: function _issueRequest(request) {
90
- var _this = this;
91
-
92
- var handle = request.handle,
93
- resolve = request.resolve;
94
- var isDone = false;
95
-
96
- var done = function done() {
97
- if (!isDone) {
98
- isDone = true;
99
-
100
- _this.requestMap.delete(handle);
101
-
102
- _this.activeRequestCount--;
103
-
104
- _this._issueNewRequests();
105
- }
106
- };
107
-
108
- this.activeRequestCount++;
109
- return resolve ? resolve({
110
- done: done
111
- }) : Promise.resolve({
112
- done: done
113
- });
114
- }
115
- }, {
116
- key: "_issueNewRequests",
117
- value: function _issueNewRequests() {
118
- var _this2 = this;
119
-
120
- if (!this.deferredUpdate) {
121
- this.deferredUpdate = setTimeout(function () {
122
- return _this2._issueNewRequestsAsync();
123
- }, 0);
124
- }
125
- }
126
- }, {
127
- key: "_issueNewRequestsAsync",
128
- value: function _issueNewRequestsAsync() {
129
- this.deferredUpdate = null;
130
- var freeSlots = Math.max(this.props.maxRequests - this.activeRequestCount, 0);
131
-
132
- if (freeSlots === 0) {
133
- return;
134
- }
135
-
136
- this._updateAllRequests();
137
-
138
- for (var i = 0; i < freeSlots; ++i) {
139
- var request = this.requestQueue.shift();
140
-
141
- if (request) {
142
- this._issueRequest(request);
143
- }
144
- }
145
- }
146
- }, {
147
- key: "_updateAllRequests",
148
- value: function _updateAllRequests() {
149
- var requestQueue = this.requestQueue;
150
-
151
- for (var i = 0; i < requestQueue.length; ++i) {
152
- var request = requestQueue[i];
153
-
154
- if (!this._updateRequest(request)) {
155
- requestQueue.splice(i, 1);
156
- this.requestMap.delete(request.handle);
157
- i--;
158
- }
159
- }
160
-
161
- requestQueue.sort(function (a, b) {
162
- return a.priority - b.priority;
163
- });
164
- }
165
- }, {
166
- key: "_updateRequest",
167
- value: function _updateRequest(request) {
168
- request.priority = request.getPriority(request.handle);
169
-
170
- if (request.priority < 0) {
171
- request.resolve(null);
172
- return false;
173
- }
174
-
175
- return true;
176
- }
177
- }]);
178
- return RequestScheduler;
179
- }();
180
-
181
- exports.default = RequestScheduler;
182
- //# sourceMappingURL=request-scheduler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/request-utils/request-scheduler.ts"],"names":["STAT_QUEUED_REQUESTS","STAT_ACTIVE_REQUESTS","STAT_CANCELLED_REQUESTS","STAT_QUEUED_REQUESTS_EVER","STAT_ACTIVE_REQUESTS_EVER","DEFAULT_PROPS","id","throttleRequests","maxRequests","RequestScheduler","props","Map","stats","Stats","get","handle","getPriority","Promise","resolve","done","requestMap","has","request","priority","promise","requestQueue","push","set","_issueNewRequests","isDone","delete","activeRequestCount","deferredUpdate","setTimeout","_issueNewRequestsAsync","freeSlots","Math","max","_updateAllRequests","i","shift","_issueRequest","length","_updateRequest","splice","sort","a","b"],"mappings":"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","sourcesContent":["import {Stats} from '@probe.gl/stats';\n\ntype Handle = any;\ntype DoneFunction = () => any;\ntype GetPriorityFunction = () => number;\ntype RequestResult = {\n done: DoneFunction;\n} | null;\n\n/** RequestScheduler Options */\nexport type RequestSchedulerProps = {\n id?: string;\n throttleRequests?: boolean;\n maxRequests?: number;\n};\n\nconst STAT_QUEUED_REQUESTS = 'Queued Requests';\nconst STAT_ACTIVE_REQUESTS = 'Active Requests';\nconst STAT_CANCELLED_REQUESTS = 'Cancelled Requests';\nconst STAT_QUEUED_REQUESTS_EVER = 'Queued Requests Ever';\nconst STAT_ACTIVE_REQUESTS_EVER = 'Active Requests Ever';\n\nconst DEFAULT_PROPS: Required<RequestSchedulerProps> = {\n id: 'request-scheduler',\n // Specifies if the request scheduler should throttle incoming requests, mainly for comparative testing\n throttleRequests: true,\n // The maximum number of simultaneous active requests. Un-throttled requests do not observe this limit.\n maxRequests: 6\n};\n\n/** Tracks one request */\ntype Request = {\n handle: Handle;\n priority: number;\n getPriority: GetPriorityFunction;\n resolve?: (value: any) => any;\n};\n\n/**\n * Used to issue a request, without having them \"deeply queued\" by the browser.\n * @todo - Track requests globally, across multiple servers\n */\nexport default class RequestScheduler {\n readonly props: Required<RequestSchedulerProps>;\n readonly stats: Stats;\n activeRequestCount: number = 0;\n\n /** Tracks the number of active requests and prioritizes/cancels queued requests. */\n private requestQueue: Request[] = [];\n private requestMap: Map<Handle, Promise<RequestResult>> = new Map();\n private deferredUpdate: any = null;\n\n constructor(props: RequestSchedulerProps = {}) {\n this.props = {...DEFAULT_PROPS, ...props};\n\n // Returns the statistics used by the request scheduler.\n this.stats = new Stats({id: this.props.id});\n this.stats.get(STAT_QUEUED_REQUESTS);\n this.stats.get(STAT_ACTIVE_REQUESTS);\n this.stats.get(STAT_CANCELLED_REQUESTS);\n this.stats.get(STAT_QUEUED_REQUESTS_EVER);\n this.stats.get(STAT_ACTIVE_REQUESTS_EVER);\n }\n\n /**\n * Called by an application that wants to issue a request, without having it deeply queued by the browser\n *\n * When the returned promise resolved, it is OK for the application to issue a request.\n * The promise resolves to an object that contains a `done` method.\n * When the application's request has completed (or failed), the application must call the `done` function\n *\n * @param handle\n * @param getPriority will be called when request \"slots\" open up,\n * allowing the caller to update priority or cancel the request\n * Highest priority executes first, priority < 0 cancels the request\n * @returns a promise\n * - resolves to a object (with a `done` field) when the request can be issued without queueing,\n * - resolves to `null` if the request has been cancelled (by the callback return < 0).\n * In this case the application should not issue the request\n */\n scheduleRequest(\n handle: Handle,\n getPriority: GetPriorityFunction = () => 0\n ): Promise<RequestResult> {\n // Allows throttling to be disabled\n if (!this.props.throttleRequests) {\n return Promise.resolve({done: () => {}});\n }\n\n // dedupe\n if (this.requestMap.has(handle)) {\n return this.requestMap.get(handle) as Promise<any>;\n }\n\n const request: Request = {handle, priority: 0, getPriority};\n const promise = new Promise<RequestResult>((resolve) => {\n // @ts-ignore\n request.resolve = resolve;\n return request;\n });\n\n this.requestQueue.push(request);\n this.requestMap.set(handle, promise);\n this._issueNewRequests();\n return promise;\n }\n\n // PRIVATE\n\n _issueRequest(request: Request): Promise<any> {\n const {handle, resolve} = request;\n let isDone = false;\n\n const done = () => {\n // can only be called once\n if (!isDone) {\n isDone = true;\n\n // Stop tracking a request - it has completed, failed, cancelled etc\n this.requestMap.delete(handle);\n this.activeRequestCount--;\n // A slot just freed up, see if any queued requests are waiting\n this._issueNewRequests();\n }\n };\n\n // Track this request\n this.activeRequestCount++;\n\n return resolve ? resolve({done}) : Promise.resolve({done});\n }\n\n /** We check requests asynchronously, to prevent multiple updates */\n _issueNewRequests(): void {\n if (!this.deferredUpdate) {\n this.deferredUpdate = setTimeout(() => this._issueNewRequestsAsync(), 0);\n }\n }\n\n /** Refresh all requests */\n _issueNewRequestsAsync() {\n // TODO - shouldn't we clear the timeout?\n this.deferredUpdate = null;\n\n const freeSlots = Math.max(this.props.maxRequests - this.activeRequestCount, 0);\n\n if (freeSlots === 0) {\n return;\n }\n\n this._updateAllRequests();\n\n // Resolve pending promises for the top-priority requests\n for (let i = 0; i < freeSlots; ++i) {\n const request = this.requestQueue.shift();\n if (request) {\n this._issueRequest(request); // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n }\n\n // Uncomment to debug\n // console.log(`${freeSlots} free slots, ${this.requestQueue.length} queued requests`);\n }\n\n /** Ensure all requests have updated priorities, and that no longer valid requests are cancelled */\n _updateAllRequests() {\n const requestQueue = this.requestQueue;\n for (let i = 0; i < requestQueue.length; ++i) {\n const request = requestQueue[i];\n if (!this._updateRequest(request)) {\n // Remove the element and make sure to adjust the counter to account for shortened array\n requestQueue.splice(i, 1);\n this.requestMap.delete(request.handle);\n i--;\n }\n }\n\n // Sort the remaining requests based on priority\n requestQueue.sort((a, b) => a.priority - b.priority);\n }\n\n /** Update a single request by calling the callback */\n _updateRequest(request) {\n request.priority = request.getPriority(request.handle); // eslint-disable-line callback-return\n\n // by returning a negative priority, the callback cancels the request\n if (request.priority < 0) {\n request.resolve(null);\n return false;\n }\n return true;\n }\n}\n"],"file":"request-scheduler.js"}