@loaders.gl/loader-utils 3.1.0-alpha.4 → 3.1.0-beta.3

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 (126) hide show
  1. package/dist/es5/index.js +46 -48
  2. package/dist/es5/index.js.map +1 -1
  3. package/dist/es5/json-loader.js +5 -33
  4. package/dist/es5/json-loader.js.map +1 -1
  5. package/dist/es5/lib/binary-utils/array-buffer-utils.js +23 -58
  6. package/dist/es5/lib/binary-utils/array-buffer-utils.js.map +1 -1
  7. package/dist/es5/lib/binary-utils/binary-copy-utils.js +7 -7
  8. package/dist/es5/lib/binary-utils/binary-copy-utils.js.map +1 -1
  9. package/dist/es5/lib/binary-utils/buffer-utils.js +4 -10
  10. package/dist/es5/lib/binary-utils/buffer-utils.js.map +1 -1
  11. package/dist/es5/lib/binary-utils/encode-utils.js +7 -7
  12. package/dist/es5/lib/binary-utils/encode-utils.js.map +1 -1
  13. package/dist/es5/lib/binary-utils/get-first-characters.js +5 -7
  14. package/dist/es5/lib/binary-utils/get-first-characters.js.map +1 -1
  15. package/dist/es5/lib/binary-utils/memory-copy-utils.js +6 -7
  16. package/dist/es5/lib/binary-utils/memory-copy-utils.js.map +1 -1
  17. package/dist/es5/lib/env-utils/globals.js +9 -14
  18. package/dist/es5/lib/env-utils/globals.js.map +1 -1
  19. package/dist/es5/lib/filesystems/node-filesystem.js +50 -243
  20. package/dist/es5/lib/filesystems/node-filesystem.js.map +1 -1
  21. package/dist/es5/lib/iterators/async-iteration.js +27 -242
  22. package/dist/es5/lib/iterators/async-iteration.js.map +1 -1
  23. package/dist/es5/lib/iterators/text-iterators.js +35 -410
  24. package/dist/es5/lib/iterators/text-iterators.js.map +1 -1
  25. package/dist/es5/lib/node/buffer.js +4 -4
  26. package/dist/es5/lib/node/buffer.js.map +1 -1
  27. package/dist/es5/lib/node/fs.js +20 -51
  28. package/dist/es5/lib/node/fs.js.map +1 -1
  29. package/dist/es5/lib/node/util.js +3 -5
  30. package/dist/es5/lib/node/util.js.map +1 -1
  31. package/dist/es5/lib/path-utils/file-aliases.js +4 -4
  32. package/dist/es5/lib/path-utils/file-aliases.js.map +1 -1
  33. package/dist/es5/lib/path-utils/path.js +5 -9
  34. package/dist/es5/lib/path-utils/path.js.map +1 -1
  35. package/dist/es5/lib/request-utils/request-scheduler.js +96 -124
  36. package/dist/es5/lib/request-utils/request-scheduler.js.map +1 -1
  37. package/dist/es5/lib/worker-loader-utils/create-loader-worker.js +63 -132
  38. package/dist/es5/lib/worker-loader-utils/create-loader-worker.js.map +1 -1
  39. package/dist/es5/lib/worker-loader-utils/parse-with-worker.js +51 -111
  40. package/dist/es5/lib/worker-loader-utils/parse-with-worker.js.map +1 -1
  41. package/dist/esm/json-loader.js +1 -1
  42. package/dist/esm/json-loader.js.map +1 -1
  43. package/dist/esm/lib/parser-utils/parse-json.js +1 -1
  44. package/dist/esm/lib/parser-utils/parse-json.js.map +1 -1
  45. package/dist/esm/lib/path-utils/file-aliases.js +1 -1
  46. package/dist/esm/lib/path-utils/file-aliases.js.map +1 -1
  47. package/dist/esm/lib/path-utils/path.js +2 -2
  48. package/dist/esm/lib/path-utils/path.js.map +1 -1
  49. package/dist/esm/lib/worker-loader-utils/create-loader-worker.js +1 -1
  50. package/dist/esm/lib/worker-loader-utils/create-loader-worker.js.map +1 -1
  51. package/dist/esm/lib/worker-loader-utils/parse-with-worker.js +2 -2
  52. package/dist/esm/lib/worker-loader-utils/parse-with-worker.js.map +1 -1
  53. package/dist/index.d.ts +27 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +111 -0
  56. package/dist/json-loader.d.ts +22 -0
  57. package/dist/json-loader.d.ts.map +1 -0
  58. package/dist/json-loader.js +28 -0
  59. package/dist/lib/binary-utils/array-buffer-utils.d.ts +31 -0
  60. package/dist/lib/binary-utils/array-buffer-utils.d.ts.map +1 -0
  61. package/dist/lib/binary-utils/array-buffer-utils.js +115 -0
  62. package/dist/lib/binary-utils/binary-copy-utils.d.ts +24 -0
  63. package/dist/lib/binary-utils/binary-copy-utils.d.ts.map +1 -0
  64. package/dist/lib/binary-utils/binary-copy-utils.js +51 -0
  65. package/dist/lib/binary-utils/buffer-utils.d.ts +16 -0
  66. package/dist/lib/binary-utils/buffer-utils.d.ts.map +1 -0
  67. package/dist/lib/binary-utils/buffer-utils.js +50 -0
  68. package/dist/lib/binary-utils/encode-utils.d.ts +4 -0
  69. package/dist/lib/binary-utils/encode-utils.d.ts.map +1 -0
  70. package/dist/lib/binary-utils/encode-utils.js +35 -0
  71. package/dist/lib/binary-utils/get-first-characters.d.ts +3 -0
  72. package/dist/lib/binary-utils/get-first-characters.d.ts.map +1 -0
  73. package/dist/lib/binary-utils/get-first-characters.js +30 -0
  74. package/dist/lib/binary-utils/memory-copy-utils.d.ts +25 -0
  75. package/dist/lib/binary-utils/memory-copy-utils.d.ts.map +1 -0
  76. package/dist/lib/binary-utils/memory-copy-utils.js +61 -0
  77. package/dist/lib/env-utils/assert.d.ts +6 -0
  78. package/dist/lib/env-utils/assert.d.ts.map +1 -0
  79. package/dist/lib/env-utils/assert.js +13 -0
  80. package/dist/lib/env-utils/globals.d.ts +15 -0
  81. package/dist/lib/env-utils/globals.d.ts.map +1 -0
  82. package/dist/lib/env-utils/globals.js +30 -0
  83. package/dist/lib/filesystems/node-filesystem.d.ts +38 -0
  84. package/dist/lib/filesystems/node-filesystem.d.ts.map +1 -0
  85. package/dist/lib/filesystems/node-filesystem.js +69 -0
  86. package/dist/lib/iterators/async-iteration.d.ts +20 -0
  87. package/dist/lib/iterators/async-iteration.d.ts.map +1 -0
  88. package/dist/lib/iterators/async-iteration.js +53 -0
  89. package/dist/lib/iterators/text-iterators.d.ts +19 -0
  90. package/dist/lib/iterators/text-iterators.d.ts.map +1 -0
  91. package/dist/lib/iterators/text-iterators.js +61 -0
  92. package/dist/lib/node/buffer.d.ts +10 -0
  93. package/dist/lib/node/buffer.d.ts.map +1 -0
  94. package/dist/lib/node/buffer.js +36 -0
  95. package/dist/lib/node/fs.d.ts +26 -0
  96. package/dist/lib/node/fs.d.ts.map +1 -0
  97. package/dist/lib/node/fs.js +42 -0
  98. package/dist/lib/node/util.d.ts +5 -0
  99. package/dist/lib/node/util.d.ts.map +1 -0
  100. package/dist/lib/node/util.js +25 -0
  101. package/dist/lib/parser-utils/parse-json.d.ts +5 -0
  102. package/dist/lib/parser-utils/parse-json.d.ts.map +1 -0
  103. package/dist/lib/parser-utils/parse-json.js +16 -0
  104. package/dist/lib/path-utils/file-aliases.d.ts +17 -0
  105. package/dist/lib/path-utils/file-aliases.d.ts.map +1 -0
  106. package/dist/lib/path-utils/file-aliases.js +47 -0
  107. package/dist/lib/path-utils/path.d.ts +16 -0
  108. package/dist/lib/path-utils/path.d.ts.map +1 -0
  109. package/dist/lib/path-utils/path.js +40 -0
  110. package/dist/lib/request-utils/request-scheduler.d.ts +62 -0
  111. package/dist/lib/request-utils/request-scheduler.d.ts.map +1 -0
  112. package/dist/lib/request-utils/request-scheduler.js +142 -0
  113. package/dist/lib/worker-loader-utils/create-loader-worker.d.ts +7 -0
  114. package/dist/lib/worker-loader-utils/create-loader-worker.d.ts.map +1 -0
  115. package/dist/lib/worker-loader-utils/create-loader-worker.js +97 -0
  116. package/dist/lib/worker-loader-utils/parse-with-worker.d.ts +15 -0
  117. package/dist/lib/worker-loader-utils/parse-with-worker.d.ts.map +1 -0
  118. package/dist/lib/worker-loader-utils/parse-with-worker.js +73 -0
  119. package/dist/types.d.ts +207 -0
  120. package/dist/types.d.ts.map +1 -0
  121. package/dist/types.js +3 -0
  122. package/dist/workers/json-worker.d.ts +2 -0
  123. package/dist/workers/json-worker.d.ts.map +1 -0
  124. package/dist/workers/json-worker.js +5 -0
  125. package/package.json +5 -8
  126. package/src/lib/worker-loader-utils/parse-with-worker.ts +6 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/worker-loader-utils/create-loader-worker.ts"],"names":["requestId","createLoaderWorker","loader","self","WorkerBody","onmessage","type","payload","input","options","parseData","arrayBuffer","context","parse","parseOnMainThread","result","postMessage","message","Error","error","Promise","resolve","reject","id","onMessage","removeEventListener","addEventListener","parseSync","data","parser","parseTextSync","textDecoder","TextDecoder","decode","name","modules","worker"],"mappings":"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","sourcesContent":["/* eslint-disable no-restricted-globals */\nimport type {LoaderWithParser} from '../../types';\nimport {WorkerBody} from '@loaders.gl/worker-utils';\n// import {validateLoaderVersion} from './validate-loader-version';\n\nlet requestId = 0;\n\n/**\n * Set up a WebWorkerGlobalScope to talk with the main thread\n * @param loader\n */\nexport function createLoaderWorker(loader: LoaderWithParser) {\n // Check that we are actually in a worker thread\n if (typeof self === 'undefined') {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload) => {\n switch (type) {\n case 'process':\n try {\n // validateLoaderVersion(loader, data.source.split('@')[1]);\n\n const {input, options = {}} = payload;\n\n const result = await parseData({\n loader,\n arrayBuffer: input,\n options,\n context: {\n parse: parseOnMainThread\n }\n });\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n}\n\nfunction parseOnMainThread(arrayBuffer: ArrayBuffer, options: {[key: string]: any}): Promise<void> {\n return new Promise((resolve, reject) => {\n const id = requestId++;\n\n /**\n */\n const onMessage = (type, payload) => {\n if (payload.id !== id) {\n // not ours\n return;\n }\n\n switch (type) {\n case 'done':\n WorkerBody.removeEventListener(onMessage);\n resolve(payload.result);\n break;\n\n case 'error':\n WorkerBody.removeEventListener(onMessage);\n reject(payload.error);\n break;\n\n default:\n // ignore\n }\n };\n\n WorkerBody.addEventListener(onMessage);\n\n // Ask the main thread to decode data\n const payload = {id, input: arrayBuffer, options};\n WorkerBody.postMessage('process', payload);\n });\n}\n\n// TODO - Support byteOffset and byteLength (enabling parsing of embedded binaries without copies)\n// TODO - Why not support async loader.parse* funcs here?\n// TODO - Why not reuse a common function instead of reimplementing loader.parse* selection logic? Keeping loader small?\n// TODO - Lack of appropriate parser functions can be detected when we create worker, no need to wait until parse\nasync function parseData({loader, arrayBuffer, options, context}) {\n let data;\n let parser;\n if (loader.parseSync || loader.parse) {\n data = arrayBuffer;\n parser = loader.parseSync || loader.parse;\n } else if (loader.parseTextSync) {\n const textDecoder = new TextDecoder();\n data = textDecoder.decode(arrayBuffer);\n parser = loader.parseTextSync;\n } else {\n throw new Error(`Could not load data with ${loader.name} loader`);\n }\n\n // TODO - proper merge in of loader options...\n options = {\n ...options,\n modules: (loader && loader.options && loader.options.modules) || {},\n worker: false\n };\n\n return await parser(data, {...options}, context, loader);\n}\n"],"file":"create-loader-worker.js"}
1
+ {"version":3,"sources":["../../../../src/lib/worker-loader-utils/create-loader-worker.ts"],"names":["requestId","createLoaderWorker","loader","self","WorkerBody","onmessage","type","payload","input","options","result","parseData","arrayBuffer","context","parse","parseOnMainThread","postMessage","error","message","Error","Promise","resolve","reject","id","onMessage","removeEventListener","addEventListener","data","parser","parseSync","parseTextSync","textDecoder","TextDecoder","decode","name","modules","worker"],"mappings":"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","sourcesContent":["/* eslint-disable no-restricted-globals */\nimport type {LoaderWithParser} from '../../types';\nimport {WorkerBody} from '@loaders.gl/worker-utils';\n// import {validateLoaderVersion} from './validate-loader-version';\n\nlet requestId = 0;\n\n/**\n * Set up a WebWorkerGlobalScope to talk with the main thread\n * @param loader\n */\nexport function createLoaderWorker(loader: LoaderWithParser) {\n // Check that we are actually in a worker thread\n if (typeof self === 'undefined') {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload) => {\n switch (type) {\n case 'process':\n try {\n // validateLoaderVersion(loader, data.source.split('@')[1]);\n\n const {input, options = {}} = payload;\n\n const result = await parseData({\n loader,\n arrayBuffer: input,\n options,\n context: {\n parse: parseOnMainThread\n }\n });\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n}\n\nfunction parseOnMainThread(arrayBuffer: ArrayBuffer, options: {[key: string]: any}): Promise<void> {\n return new Promise((resolve, reject) => {\n const id = requestId++;\n\n /**\n */\n const onMessage = (type, payload) => {\n if (payload.id !== id) {\n // not ours\n return;\n }\n\n switch (type) {\n case 'done':\n WorkerBody.removeEventListener(onMessage);\n resolve(payload.result);\n break;\n\n case 'error':\n WorkerBody.removeEventListener(onMessage);\n reject(payload.error);\n break;\n\n default:\n // ignore\n }\n };\n\n WorkerBody.addEventListener(onMessage);\n\n // Ask the main thread to decode data\n const payload = {id, input: arrayBuffer, options};\n WorkerBody.postMessage('process', payload);\n });\n}\n\n// TODO - Support byteOffset and byteLength (enabling parsing of embedded binaries without copies)\n// TODO - Why not support async loader.parse* funcs here?\n// TODO - Why not reuse a common function instead of reimplementing loader.parse* selection logic? Keeping loader small?\n// TODO - Lack of appropriate parser functions can be detected when we create worker, no need to wait until parse\nasync function parseData({loader, arrayBuffer, options, context}) {\n let data;\n let parser;\n if (loader.parseSync || loader.parse) {\n data = arrayBuffer;\n parser = loader.parseSync || loader.parse;\n } else if (loader.parseTextSync) {\n const textDecoder = new TextDecoder();\n data = textDecoder.decode(arrayBuffer);\n parser = loader.parseTextSync;\n } else {\n throw new Error(`Could not load data with ${loader.name} loader`);\n }\n\n // TODO - proper merge in of loader options...\n options = {\n ...options,\n modules: (loader && loader.options && loader.options.modules) || {},\n worker: false\n };\n\n return await parser(data, {...options}, context, loader);\n}\n"],"file":"create-loader-worker.js"}
@@ -1,17 +1,11 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports.canParseWithWorker = canParseWithWorker;
9
7
  exports.parseWithWorker = parseWithWorker;
10
8
 
11
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
12
-
13
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
14
-
15
9
  var _workerUtils = require("@loaders.gl/worker-utils");
16
10
 
17
11
  function canParseWithWorker(loader, options) {
@@ -22,115 +16,61 @@ function canParseWithWorker(loader, options) {
22
16
  return loader.worker && (options === null || options === void 0 ? void 0 : options.worker);
23
17
  }
24
18
 
25
- function parseWithWorker(_x, _x2, _x3, _x4, _x5) {
26
- return _parseWithWorker.apply(this, arguments);
19
+ async function parseWithWorker(loader, data, options, context, parseOnMainThread) {
20
+ const name = loader.id;
21
+ const url = (0, _workerUtils.getWorkerURL)(loader, options);
22
+
23
+ const workerFarm = _workerUtils.WorkerFarm.getWorkerFarm(options);
24
+
25
+ const workerPool = workerFarm.getWorkerPool({
26
+ name,
27
+ url
28
+ });
29
+ options = JSON.parse(JSON.stringify(options));
30
+ const job = await workerPool.startJob('process-on-worker', onMessage.bind(null, parseOnMainThread));
31
+ job.postMessage('process', {
32
+ input: data,
33
+ options
34
+ });
35
+ const result = await job.result;
36
+ return await result.result;
27
37
  }
28
38
 
29
- function _parseWithWorker() {
30
- _parseWithWorker = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(loader, data, options, context, parseOnMainThread) {
31
- var name, url, workerFarm, workerPool, job, result;
32
- return _regenerator.default.wrap(function _callee$(_context) {
33
- while (1) {
34
- switch (_context.prev = _context.next) {
35
- case 0:
36
- name = loader.id;
37
- url = (0, _workerUtils.getWorkerURL)(loader, options);
38
- workerFarm = _workerUtils.WorkerFarm.getWorkerFarm(options);
39
- workerPool = workerFarm.getWorkerPool({
40
- name: name,
41
- url: url
42
- });
43
- options = JSON.parse(JSON.stringify(options));
44
- _context.next = 7;
45
- return workerPool.startJob('process-on-worker', onMessage.bind(null, parseOnMainThread));
46
-
47
- case 7:
48
- job = _context.sent;
49
- job.postMessage('process', {
50
- input: data,
51
- options: options
52
- });
53
- _context.next = 11;
54
- return job.result;
55
-
56
- case 11:
57
- result = _context.sent;
58
- _context.next = 14;
59
- return result.result;
60
-
61
- case 14:
62
- return _context.abrupt("return", _context.sent);
63
-
64
- case 15:
65
- case "end":
66
- return _context.stop();
67
- }
39
+ async function onMessage(parseOnMainThread, job, type, payload) {
40
+ switch (type) {
41
+ case 'done':
42
+ job.done(payload);
43
+ break;
44
+
45
+ case 'error':
46
+ job.error(new Error(payload.error));
47
+ break;
48
+
49
+ case 'process':
50
+ const {
51
+ id,
52
+ input,
53
+ options
54
+ } = payload;
55
+
56
+ try {
57
+ const result = await parseOnMainThread(input, options);
58
+ job.postMessage('done', {
59
+ id,
60
+ result
61
+ });
62
+ } catch (error) {
63
+ const message = error instanceof Error ? error.message : 'unknown error';
64
+ job.postMessage('error', {
65
+ id,
66
+ error: message
67
+ });
68
68
  }
69
- }, _callee);
70
- }));
71
- return _parseWithWorker.apply(this, arguments);
72
- }
73
-
74
- function onMessage(_x6, _x7, _x8, _x9) {
75
- return _onMessage.apply(this, arguments);
76
- }
77
69
 
78
- function _onMessage() {
79
- _onMessage = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(parseOnMainThread, job, type, payload) {
80
- var id, input, options, result, message;
81
- return _regenerator.default.wrap(function _callee2$(_context2) {
82
- while (1) {
83
- switch (_context2.prev = _context2.next) {
84
- case 0:
85
- _context2.t0 = type;
86
- _context2.next = _context2.t0 === 'done' ? 3 : _context2.t0 === 'error' ? 5 : _context2.t0 === 'process' ? 7 : 20;
87
- break;
70
+ break;
88
71
 
89
- case 3:
90
- job.done(payload);
91
- return _context2.abrupt("break", 21);
92
-
93
- case 5:
94
- job.error(payload.error);
95
- return _context2.abrupt("break", 21);
96
-
97
- case 7:
98
- id = payload.id, input = payload.input, options = payload.options;
99
- _context2.prev = 8;
100
- _context2.next = 11;
101
- return parseOnMainThread(input, options);
102
-
103
- case 11:
104
- result = _context2.sent;
105
- job.postMessage('done', {
106
- id: id,
107
- result: result
108
- });
109
- _context2.next = 19;
110
- break;
111
-
112
- case 15:
113
- _context2.prev = 15;
114
- _context2.t1 = _context2["catch"](8);
115
- message = _context2.t1 instanceof Error ? _context2.t1.message : 'unknown error';
116
- job.postMessage('error', {
117
- id: id,
118
- error: message
119
- });
120
-
121
- case 19:
122
- return _context2.abrupt("break", 21);
123
-
124
- case 20:
125
- console.warn("parse-with-worker unknown message ".concat(type));
126
-
127
- case 21:
128
- case "end":
129
- return _context2.stop();
130
- }
131
- }
132
- }, _callee2, null, [[8, 15]]);
133
- }));
134
- return _onMessage.apply(this, arguments);
72
+ default:
73
+ console.warn("parse-with-worker unknown message ".concat(type));
74
+ }
135
75
  }
136
76
  //# sourceMappingURL=parse-with-worker.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/worker-loader-utils/parse-with-worker.ts"],"names":["canParseWithWorker","loader","options","WorkerFarm","isSupported","worker","parseWithWorker","data","context","parseOnMainThread","name","id","url","workerFarm","getWorkerFarm","workerPool","getWorkerPool","JSON","parse","stringify","startJob","onMessage","bind","job","postMessage","input","result","type","payload","done","error","message","Error","console","warn"],"mappings":";;;;;;;;;;;;;;AAEA;;AAOO,SAASA,kBAAT,CAA4BC,MAA5B,EAA4CC,OAA5C,EAAqE;AAC1E,MAAI,CAACC,wBAAWC,WAAX,EAAL,EAA+B;AAC7B,WAAO,KAAP;AACD;;AAED,SAAOH,MAAM,CAACI,MAAP,KAAiBH,OAAjB,aAAiBA,OAAjB,uBAAiBA,OAAO,CAAEG,MAA1B,CAAP;AACD;;SAMqBC,e;;;;;+EAAf,iBACLL,MADK,EAELM,IAFK,EAGLL,OAHK,EAILM,OAJK,EAKLC,iBALK;AAAA;AAAA;AAAA;AAAA;AAAA;AAOCC,YAAAA,IAPD,GAOQT,MAAM,CAACU,EAPf;AAQCC,YAAAA,GARD,GAQO,+BAAaX,MAAb,EAAqBC,OAArB,CARP;AAUCW,YAAAA,UAVD,GAUcV,wBAAWW,aAAX,CAAyBZ,OAAzB,CAVd;AAWCa,YAAAA,UAXD,GAWcF,UAAU,CAACG,aAAX,CAAyB;AAACN,cAAAA,IAAI,EAAJA,IAAD;AAAOE,cAAAA,GAAG,EAAHA;AAAP,aAAzB,CAXd;AAeLV,YAAAA,OAAO,GAAGe,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,SAAL,CAAejB,OAAf,CAAX,CAAV;AAfK;AAAA,mBAiBaa,UAAU,CAACK,QAAX,CAChB,mBADgB,EAGhBC,SAAS,CAACC,IAAV,CAAe,IAAf,EAAqBb,iBAArB,CAHgB,CAjBb;;AAAA;AAiBCc,YAAAA,GAjBD;AAuBLA,YAAAA,GAAG,CAACC,WAAJ,CAAgB,SAAhB,EAA2B;AAEzBC,cAAAA,KAAK,EAAElB,IAFkB;AAGzBL,cAAAA,OAAO,EAAPA;AAHyB,aAA3B;AAvBK;AAAA,mBA6BgBqB,GAAG,CAACG,MA7BpB;;AAAA;AA6BCA,YAAAA,MA7BD;AAAA;AAAA,mBA8BQA,MAAM,CAACA,MA9Bf;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SAuCQL,S;;;;;yEAAf,kBACEZ,iBADF,EAEEc,GAFF,EAGEI,IAHF,EAIEC,OAJF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAMUD,IANV;AAAA,8CAOS,MAPT,wBAWS,OAXT,wBAeS,SAfT;AAAA;;AAAA;AAQMJ,YAAAA,GAAG,CAACM,IAAJ,CAASD,OAAT;AARN;;AAAA;AAYML,YAAAA,GAAG,CAACO,KAAJ,CAAUF,OAAO,CAACE,KAAlB;AAZN;;AAAA;AAiBanB,YAAAA,EAjBb,GAiBmCiB,OAjBnC,CAiBajB,EAjBb,EAiBiBc,KAjBjB,GAiBmCG,OAjBnC,CAiBiBH,KAjBjB,EAiBwBvB,OAjBxB,GAiBmC0B,OAjBnC,CAiBwB1B,OAjBxB;AAAA;AAAA;AAAA,mBAmB6BO,iBAAiB,CAACgB,KAAD,EAAQvB,OAAR,CAnB9C;;AAAA;AAmBcwB,YAAAA,MAnBd;AAoBQH,YAAAA,GAAG,CAACC,WAAJ,CAAgB,MAAhB,EAAwB;AAACb,cAAAA,EAAE,EAAFA,EAAD;AAAKe,cAAAA,MAAM,EAANA;AAAL,aAAxB;AApBR;AAAA;;AAAA;AAAA;AAAA;AAsBcK,YAAAA,OAtBd,GAsBwB,wBAAiBC,KAAjB,GAAyB,aAAMD,OAA/B,GAAyC,eAtBjE;AAuBQR,YAAAA,GAAG,CAACC,WAAJ,CAAgB,OAAhB,EAAyB;AAACb,cAAAA,EAAE,EAAFA,EAAD;AAAKmB,cAAAA,KAAK,EAAEC;AAAZ,aAAzB;;AAvBR;AAAA;;AAAA;AA6BME,YAAAA,OAAO,CAACC,IAAR,6CAAkDP,IAAlD;;AA7BN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","sourcesContent":["import type {WorkerJob, WorkerMessageType, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport type {Loader, LoaderOptions, LoaderContext} from '../../types';\nimport {WorkerFarm, getWorkerURL} from '@loaders.gl/worker-utils';\n\n/**\n * Determines if a loader can parse with worker\n * @param loader\n * @param options\n */\nexport function canParseWithWorker(loader: Loader, options?: LoaderOptions) {\n if (!WorkerFarm.isSupported()) {\n return false;\n }\n\n return loader.worker && options?.worker;\n}\n\n/**\n * this function expects that the worker function sends certain messages,\n * this can be automated if the worker is wrapper by a call to createLoaderWorker in @loaders.gl/loader-utils.\n */\nexport async function parseWithWorker(\n loader: Loader,\n data,\n options?: LoaderOptions,\n context?: LoaderContext,\n parseOnMainThread?: (arrayBuffer: ArrayBuffer, options: {[key: string]: any}) => Promise<void>\n) {\n const name = loader.id; // TODO\n const url = getWorkerURL(loader, options);\n\n const workerFarm = WorkerFarm.getWorkerFarm(options);\n const workerPool = workerFarm.getWorkerPool({name, url});\n\n // options.log object contains functions which cannot be transferred\n // TODO - decide how to handle logging on workers\n options = JSON.parse(JSON.stringify(options));\n\n const job = await workerPool.startJob(\n 'process-on-worker',\n // eslint-disable-next-line\n onMessage.bind(null, parseOnMainThread)\n );\n\n job.postMessage('process', {\n // @ts-ignore\n input: data,\n options\n });\n\n const result = await job.result;\n return await result.result;\n}\n\n/**\n * Handle worker's responses to the main thread\n * @param job\n * @param type\n * @param payload\n */\nasync function onMessage(\n parseOnMainThread,\n job: WorkerJob,\n type: WorkerMessageType,\n payload: WorkerMessagePayload\n) {\n switch (type) {\n case 'done':\n job.done(payload);\n break;\n\n case 'error':\n job.error(payload.error);\n break;\n\n case 'process':\n // Worker is asking for main thread to parseO\n const {id, input, options} = payload;\n try {\n const result = await parseOnMainThread(input, options);\n job.postMessage('done', {id, result});\n } catch (error) {\n const message = error instanceof Error ? error.message : 'unknown error';\n job.postMessage('error', {id, error: message});\n }\n break;\n\n default:\n // eslint-disable-next-line\n console.warn(`parse-with-worker unknown message ${type}`);\n }\n}\n"],"file":"parse-with-worker.js"}
1
+ {"version":3,"sources":["../../../../src/lib/worker-loader-utils/parse-with-worker.ts"],"names":["canParseWithWorker","loader","options","WorkerFarm","isSupported","worker","parseWithWorker","data","context","parseOnMainThread","name","id","url","workerFarm","getWorkerFarm","workerPool","getWorkerPool","JSON","parse","stringify","job","startJob","onMessage","bind","postMessage","input","result","type","payload","done","error","Error","message","console","warn"],"mappings":";;;;;;;;AAEA;;AAOO,SAASA,kBAAT,CAA4BC,MAA5B,EAA4CC,OAA5C,EAAqE;AAC1E,MAAI,CAACC,wBAAWC,WAAX,EAAL,EAA+B;AAC7B,WAAO,KAAP;AACD;;AAED,SAAOH,MAAM,CAACI,MAAP,KAAiBH,OAAjB,aAAiBA,OAAjB,uBAAiBA,OAAO,CAAEG,MAA1B,CAAP;AACD;;AAMM,eAAeC,eAAf,CACLL,MADK,EAELM,IAFK,EAGLL,OAHK,EAILM,OAJK,EAKLC,iBALK,EAML;AACA,QAAMC,IAAI,GAAGT,MAAM,CAACU,EAApB;AACA,QAAMC,GAAG,GAAG,+BAAaX,MAAb,EAAqBC,OAArB,CAAZ;;AAEA,QAAMW,UAAU,GAAGV,wBAAWW,aAAX,CAAyBZ,OAAzB,CAAnB;;AACA,QAAMa,UAAU,GAAGF,UAAU,CAACG,aAAX,CAAyB;AAACN,IAAAA,IAAD;AAAOE,IAAAA;AAAP,GAAzB,CAAnB;AAIAV,EAAAA,OAAO,GAAGe,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,SAAL,CAAejB,OAAf,CAAX,CAAV;AAEA,QAAMkB,GAAG,GAAG,MAAML,UAAU,CAACM,QAAX,CAChB,mBADgB,EAGhBC,SAAS,CAACC,IAAV,CAAe,IAAf,EAAqBd,iBAArB,CAHgB,CAAlB;AAMAW,EAAAA,GAAG,CAACI,WAAJ,CAAgB,SAAhB,EAA2B;AAEzBC,IAAAA,KAAK,EAAElB,IAFkB;AAGzBL,IAAAA;AAHyB,GAA3B;AAMA,QAAMwB,MAAM,GAAG,MAAMN,GAAG,CAACM,MAAzB;AAEA,SAAO,MAAMA,MAAM,CAACA,MAApB;AACD;;AAQD,eAAeJ,SAAf,CACEb,iBADF,EAEEW,GAFF,EAGEO,IAHF,EAIEC,OAJF,EAKE;AACA,UAAQD,IAAR;AACE,SAAK,MAAL;AACEP,MAAAA,GAAG,CAACS,IAAJ,CAASD,OAAT;AACA;;AAEF,SAAK,OAAL;AACER,MAAAA,GAAG,CAACU,KAAJ,CAAU,IAAIC,KAAJ,CAAUH,OAAO,CAACE,KAAlB,CAAV;AACA;;AAEF,SAAK,SAAL;AAEE,YAAM;AAACnB,QAAAA,EAAD;AAAKc,QAAAA,KAAL;AAAYvB,QAAAA;AAAZ,UAAuB0B,OAA7B;;AACA,UAAI;AACF,cAAMF,MAAM,GAAG,MAAMjB,iBAAiB,CAACgB,KAAD,EAAQvB,OAAR,CAAtC;AACAkB,QAAAA,GAAG,CAACI,WAAJ,CAAgB,MAAhB,EAAwB;AAACb,UAAAA,EAAD;AAAKe,UAAAA;AAAL,SAAxB;AACD,OAHD,CAGE,OAAOI,KAAP,EAAc;AACd,cAAME,OAAO,GAAGF,KAAK,YAAYC,KAAjB,GAAyBD,KAAK,CAACE,OAA/B,GAAyC,eAAzD;AACAZ,QAAAA,GAAG,CAACI,WAAJ,CAAgB,OAAhB,EAAyB;AAACb,UAAAA,EAAD;AAAKmB,UAAAA,KAAK,EAAEE;AAAZ,SAAzB;AACD;;AACD;;AAEF;AAEEC,MAAAA,OAAO,CAACC,IAAR,6CAAkDP,IAAlD;AAvBJ;AAyBD","sourcesContent":["import type {WorkerJob, WorkerMessageType, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport type {Loader, LoaderOptions, LoaderContext} from '../../types';\nimport {WorkerFarm, getWorkerURL} from '@loaders.gl/worker-utils';\n\n/**\n * Determines if a loader can parse with worker\n * @param loader\n * @param options\n */\nexport function canParseWithWorker(loader: Loader, options?: LoaderOptions) {\n if (!WorkerFarm.isSupported()) {\n return false;\n }\n\n return loader.worker && options?.worker;\n}\n\n/**\n * this function expects that the worker function sends certain messages,\n * this can be automated if the worker is wrapper by a call to createLoaderWorker in @loaders.gl/loader-utils.\n */\nexport async function parseWithWorker(\n loader: Loader,\n data: any,\n options?: LoaderOptions,\n context?: LoaderContext,\n parseOnMainThread?: (arrayBuffer: ArrayBuffer, options: {[key: string]: any}) => Promise<void>\n) {\n const name = loader.id; // TODO\n const url = getWorkerURL(loader, options);\n\n const workerFarm = WorkerFarm.getWorkerFarm(options);\n const workerPool = workerFarm.getWorkerPool({name, url});\n\n // options.log object contains functions which cannot be transferred\n // TODO - decide how to handle logging on workers\n options = JSON.parse(JSON.stringify(options));\n\n const job = await workerPool.startJob(\n 'process-on-worker',\n // @ts-expect-error\n onMessage.bind(null, parseOnMainThread) // eslint-disable-line @typescript-eslint/no-misused-promises\n );\n\n job.postMessage('process', {\n // @ts-ignore\n input: data,\n options\n });\n\n const result = await job.result;\n // TODO - what is going on here?\n return await result.result;\n}\n\n/**\n * Handle worker's responses to the main thread\n * @param job\n * @param type\n * @param payload\n */\nasync function onMessage(\n parseOnMainThread: (arrayBuffer: ArrayBuffer, options?: {[key: string]: any}) => Promise<void>,\n job: WorkerJob,\n type: WorkerMessageType,\n payload: WorkerMessagePayload\n) {\n switch (type) {\n case 'done':\n job.done(payload);\n break;\n\n case 'error':\n job.error(new Error(payload.error));\n break;\n\n case 'process':\n // Worker is asking for main thread to parseO\n const {id, input, options} = payload;\n try {\n const result = await parseOnMainThread(input, options);\n job.postMessage('done', {id, result});\n } catch (error) {\n const message = error instanceof Error ? error.message : 'unknown error';\n job.postMessage('error', {id, error: message});\n }\n break;\n\n default:\n // eslint-disable-next-line\n console.warn(`parse-with-worker unknown message ${type}`);\n }\n}\n"],"file":"parse-with-worker.js"}
@@ -1,4 +1,4 @@
1
- const VERSION = typeof "3.1.0-alpha.4" !== 'undefined' ? "3.1.0-alpha.4" : 'latest';
1
+ const VERSION = typeof "3.1.0-beta.3" !== 'undefined' ? "3.1.0-beta.3" : 'latest';
2
2
  export const JSONLoader = {
3
3
  name: 'JSON',
4
4
  id: 'json',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/json-loader.ts"],"names":["VERSION","JSONLoader","name","id","module","version","extensions","mimeTypes","category","text","parseTextSync","parse","arrayBuffer","TextDecoder","decode","options","JSON","_typecheckJSONLoader"],"mappings":"AAIA,MAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAMA,OAAO,MAAMC,UAAU,GAAG;AACxBC,EAAAA,IAAI,EAAE,MADkB;AAExBC,EAAAA,EAAE,EAAE,MAFoB;AAGxBC,EAAAA,MAAM,EAAE,MAHgB;AAIxBC,EAAAA,OAAO,EAAEL,OAJe;AAKxBM,EAAAA,UAAU,EAAE,CAAC,MAAD,EAAS,SAAT,CALY;AAMxBC,EAAAA,SAAS,EAAE,CAAC,kBAAD,CANa;AAOxBC,EAAAA,QAAQ,EAAE,MAPc;AAQxBC,EAAAA,IAAI,EAAE,IARkB;AASxBC,EAAAA,aATwB;AAUxBC,EAAAA,KAAK,EAAE,MAAOC,WAAP,IAAuBF,aAAa,CAAC,IAAIG,WAAJ,GAAkBC,MAAlB,CAAyBF,WAAzB,CAAD,CAVnB;AAWxBG,EAAAA,OAAO,EAAE;AAXe,CAAnB;;AAeP,SAASL,aAAT,CAAuBD,IAAvB,EAA6B;AAC3B,SAAOO,IAAI,CAACL,KAAL,CAAWF,IAAX,CAAP;AACD;;AAED,OAAO,MAAMQ,oBAAsC,GAAGhB,UAA/C","sourcesContent":["import type {LoaderWithParser} from './types';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/**\n * A JSON Micro loader (minimal bundle size)\n * Alternative to `@loaders.gl/json`\n */\nexport const JSONLoader = {\n name: 'JSON',\n id: 'json',\n module: 'json',\n version: VERSION,\n extensions: ['json', 'geojson'],\n mimeTypes: ['application/json'],\n category: 'json',\n text: true,\n parseTextSync,\n parse: async (arrayBuffer) => parseTextSync(new TextDecoder().decode(arrayBuffer)),\n options: {}\n};\n\n// TODO - deprecated\nfunction parseTextSync(text) {\n return JSON.parse(text);\n}\n\nexport const _typecheckJSONLoader: LoaderWithParser = JSONLoader;\n"],"file":"json-loader.js"}
1
+ {"version":3,"sources":["../../src/json-loader.ts"],"names":["VERSION","JSONLoader","name","id","module","version","extensions","mimeTypes","category","text","parseTextSync","parse","arrayBuffer","TextDecoder","decode","options","JSON","_typecheckJSONLoader"],"mappings":"AAIA,MAAMA,OAAO,GAAG,0BAAuB,WAAvB,oBAAmD,QAAnE;AAMA,OAAO,MAAMC,UAAU,GAAG;AACxBC,EAAAA,IAAI,EAAE,MADkB;AAExBC,EAAAA,EAAE,EAAE,MAFoB;AAGxBC,EAAAA,MAAM,EAAE,MAHgB;AAIxBC,EAAAA,OAAO,EAAEL,OAJe;AAKxBM,EAAAA,UAAU,EAAE,CAAC,MAAD,EAAS,SAAT,CALY;AAMxBC,EAAAA,SAAS,EAAE,CAAC,kBAAD,CANa;AAOxBC,EAAAA,QAAQ,EAAE,MAPc;AAQxBC,EAAAA,IAAI,EAAE,IARkB;AASxBC,EAAAA,aATwB;AAUxBC,EAAAA,KAAK,EAAE,MAAOC,WAAP,IAAuBF,aAAa,CAAC,IAAIG,WAAJ,GAAkBC,MAAlB,CAAyBF,WAAzB,CAAD,CAVnB;AAWxBG,EAAAA,OAAO,EAAE;AAXe,CAAnB;;AAeP,SAASL,aAAT,CAAuBD,IAAvB,EAA6B;AAC3B,SAAOO,IAAI,CAACL,KAAL,CAAWF,IAAX,CAAP;AACD;;AAED,OAAO,MAAMQ,oBAAsC,GAAGhB,UAA/C","sourcesContent":["import type {LoaderWithParser} from './types';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/**\n * A JSON Micro loader (minimal bundle size)\n * Alternative to `@loaders.gl/json`\n */\nexport const JSONLoader = {\n name: 'JSON',\n id: 'json',\n module: 'json',\n version: VERSION,\n extensions: ['json', 'geojson'],\n mimeTypes: ['application/json'],\n category: 'json',\n text: true,\n parseTextSync,\n parse: async (arrayBuffer) => parseTextSync(new TextDecoder().decode(arrayBuffer)),\n options: {}\n};\n\n// TODO - deprecated\nfunction parseTextSync(text) {\n return JSON.parse(text);\n}\n\nexport const _typecheckJSONLoader: LoaderWithParser = JSONLoader;\n"],"file":"json-loader.js"}
@@ -3,7 +3,7 @@ export function parseJSON(string) {
3
3
  try {
4
4
  return JSON.parse(string);
5
5
  } catch (_) {
6
- throw new Error(`Failed to parse JSON from data starting with "${getFirstCharacters(string)}"`);
6
+ throw new Error("Failed to parse JSON from data starting with \"".concat(getFirstCharacters(string), "\""));
7
7
  }
8
8
  }
9
9
  //# sourceMappingURL=parse-json.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/parser-utils/parse-json.ts"],"names":["getFirstCharacters","parseJSON","string","JSON","parse","_","Error"],"mappings":"AAAA,SAAQA,kBAAR,QAAiC,sCAAjC;AAKA,OAAO,SAASC,SAAT,CAAmBC,MAAnB,EAAwC;AAC7C,MAAI;AACF,WAAOC,IAAI,CAACC,KAAL,CAAWF,MAAX,CAAP;AACD,GAFD,CAEE,OAAOG,CAAP,EAAU;AACV,UAAM,IAAIC,KAAJ,CAAW,iDAAgDN,kBAAkB,CAACE,MAAD,CAAS,GAAtF,CAAN;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
+ {"version":3,"sources":["../../../../src/lib/parser-utils/parse-json.ts"],"names":["getFirstCharacters","parseJSON","string","JSON","parse","_","Error"],"mappings":"AAAA,SAAQA,kBAAR,QAAiC,sCAAjC;AAKA,OAAO,SAASC,SAAT,CAAmBC,MAAnB,EAAwC;AAC7C,MAAI;AACF,WAAOC,IAAI,CAACC,KAAL,CAAWF,MAAX,CAAP;AACD,GAFD,CAEE,OAAOG,CAAP,EAAU;AACV,UAAM,IAAIC,KAAJ,0DAA2DN,kBAAkB,CAACE,MAAD,CAA7E,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"}
@@ -18,7 +18,7 @@ export function resolvePath(filename) {
18
18
  }
19
19
 
20
20
  if (!filename.startsWith('http://') && !filename.startsWith('https://')) {
21
- filename = `${pathPrefix}${filename}`;
21
+ filename = "".concat(pathPrefix).concat(filename);
22
22
  }
23
23
 
24
24
  return filename;
@@ -1 +1 @@
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,MAAMC,WAA0C,GAAG,EAAnD;AAKA,OAAO,SAASC,aAAT,CAAuBC,MAAvB,EAA6C;AAClDH,EAAAA,UAAU,GAAGG,MAAb;AACD;AAKD,OAAO,SAASC,aAAT,GAAiC;AACtC,SAAOJ,UAAP;AACD;AASD,OAAO,SAASK,UAAT,CAAoBC,OAApB,EAAkE;AACvEC,EAAAA,MAAM,CAACC,MAAP,CAAcP,WAAd,EAA2BK,OAA3B;AACD;AAKD,OAAO,SAASG,WAAT,CAAqBC,QAArB,EAA+C;AACpD,OAAK,MAAMC,KAAX,IAAoBV,WAApB,EAAiC;AAC/B,QAAIS,QAAQ,CAACE,UAAT,CAAoBD,KAApB,CAAJ,EAAgC;AAC9B,YAAME,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,GAAI,GAAEV,UAAW,GAAEU,QAAS,EAApC;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
+ {"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,MAAMC,WAA0C,GAAG,EAAnD;AAKA,OAAO,SAASC,aAAT,CAAuBC,MAAvB,EAA6C;AAClDH,EAAAA,UAAU,GAAGG,MAAb;AACD;AAKD,OAAO,SAASC,aAAT,GAAiC;AACtC,SAAOJ,UAAP;AACD;AASD,OAAO,SAASK,UAAT,CAAoBC,OAApB,EAAkE;AACvEC,EAAAA,MAAM,CAACC,MAAP,CAAcP,WAAd,EAA2BK,OAA3B;AACD;AAKD,OAAO,SAASG,WAAT,CAAqBC,QAArB,EAA+C;AACpD,OAAK,MAAMC,KAAX,IAAoBV,WAApB,EAAiC;AAC/B,QAAIS,QAAQ,CAACE,UAAT,CAAoBD,KAApB,CAAJ,EAAgC;AAC9B,YAAME,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"}
@@ -10,11 +10,11 @@ export function join(...parts) {
10
10
  const separator = '/';
11
11
  parts = parts.map((part, index) => {
12
12
  if (index) {
13
- part = part.replace(new RegExp(`^${separator}`), '');
13
+ part = part.replace(new RegExp("^".concat(separator)), '');
14
14
  }
15
15
 
16
16
  if (index !== parts.length - 1) {
17
- part = part.replace(new RegExp(`${separator}$`), '');
17
+ part = part.replace(new RegExp("".concat(separator, "$")), '');
18
18
  }
19
19
 
20
20
  return part;
@@ -1 +1 @@
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":"AAMA,OAAO,SAASA,QAAT,CAAkBC,GAAlB,EAAuC;AAC5C,QAAMC,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;AAMD,OAAO,SAASG,OAAT,CAAiBJ,GAAjB,EAAsC;AAC3C,QAAMC,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;AAMD,OAAO,SAASI,IAAT,CAAc,GAAGC,KAAjB,EAA0C;AAC/C,QAAMC,SAAS,GAAG,GAAlB;AACAD,EAAAA,KAAK,GAAGA,KAAK,CAACE,GAAN,CAAU,CAACC,IAAD,EAAOC,KAAP,KAAiB;AACjC,QAAIA,KAAJ,EAAW;AACTD,MAAAA,IAAI,GAAGA,IAAI,CAACE,OAAL,CAAa,IAAIC,MAAJ,CAAY,IAAGL,SAAU,EAAzB,CAAb,EAA0C,EAA1C,CAAP;AACD;;AACD,QAAIG,KAAK,KAAKJ,KAAK,CAACO,MAAN,GAAe,CAA7B,EAAgC;AAC9BJ,MAAAA,IAAI,GAAGA,IAAI,CAACE,OAAL,CAAa,IAAIC,MAAJ,CAAY,GAAEL,SAAU,GAAxB,CAAb,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
+ {"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":"AAMA,OAAO,SAASA,QAAT,CAAkBC,GAAlB,EAAuC;AAC5C,QAAMC,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;AAMD,OAAO,SAASG,OAAT,CAAiBJ,GAAjB,EAAsC;AAC3C,QAAMC,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;AAMD,OAAO,SAASI,IAAT,CAAc,GAAGC,KAAjB,EAA0C;AAC/C,QAAMC,SAAS,GAAG,GAAlB;AACAD,EAAAA,KAAK,GAAGA,KAAK,CAACE,GAAN,CAAU,CAACC,IAAD,EAAOC,KAAP,KAAiB;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"}
@@ -89,7 +89,7 @@ async function parseData({
89
89
  data = textDecoder.decode(arrayBuffer);
90
90
  parser = loader.parseTextSync;
91
91
  } else {
92
- throw new Error(`Could not load data with ${loader.name} loader`);
92
+ throw new Error("Could not load data with ".concat(loader.name, " loader"));
93
93
  }
94
94
 
95
95
  options = { ...options,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/worker-loader-utils/create-loader-worker.ts"],"names":["WorkerBody","requestId","createLoaderWorker","loader","self","onmessage","type","payload","input","options","result","parseData","arrayBuffer","context","parse","parseOnMainThread","postMessage","error","message","Error","Promise","resolve","reject","id","onMessage","removeEventListener","addEventListener","data","parser","parseSync","parseTextSync","textDecoder","TextDecoder","decode","name","modules","worker"],"mappings":"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","sourcesContent":["/* eslint-disable no-restricted-globals */\nimport type {LoaderWithParser} from '../../types';\nimport {WorkerBody} from '@loaders.gl/worker-utils';\n// import {validateLoaderVersion} from './validate-loader-version';\n\nlet requestId = 0;\n\n/**\n * Set up a WebWorkerGlobalScope to talk with the main thread\n * @param loader\n */\nexport function createLoaderWorker(loader: LoaderWithParser) {\n // Check that we are actually in a worker thread\n if (typeof self === 'undefined') {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload) => {\n switch (type) {\n case 'process':\n try {\n // validateLoaderVersion(loader, data.source.split('@')[1]);\n\n const {input, options = {}} = payload;\n\n const result = await parseData({\n loader,\n arrayBuffer: input,\n options,\n context: {\n parse: parseOnMainThread\n }\n });\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n}\n\nfunction parseOnMainThread(arrayBuffer: ArrayBuffer, options: {[key: string]: any}): Promise<void> {\n return new Promise((resolve, reject) => {\n const id = requestId++;\n\n /**\n */\n const onMessage = (type, payload) => {\n if (payload.id !== id) {\n // not ours\n return;\n }\n\n switch (type) {\n case 'done':\n WorkerBody.removeEventListener(onMessage);\n resolve(payload.result);\n break;\n\n case 'error':\n WorkerBody.removeEventListener(onMessage);\n reject(payload.error);\n break;\n\n default:\n // ignore\n }\n };\n\n WorkerBody.addEventListener(onMessage);\n\n // Ask the main thread to decode data\n const payload = {id, input: arrayBuffer, options};\n WorkerBody.postMessage('process', payload);\n });\n}\n\n// TODO - Support byteOffset and byteLength (enabling parsing of embedded binaries without copies)\n// TODO - Why not support async loader.parse* funcs here?\n// TODO - Why not reuse a common function instead of reimplementing loader.parse* selection logic? Keeping loader small?\n// TODO - Lack of appropriate parser functions can be detected when we create worker, no need to wait until parse\nasync function parseData({loader, arrayBuffer, options, context}) {\n let data;\n let parser;\n if (loader.parseSync || loader.parse) {\n data = arrayBuffer;\n parser = loader.parseSync || loader.parse;\n } else if (loader.parseTextSync) {\n const textDecoder = new TextDecoder();\n data = textDecoder.decode(arrayBuffer);\n parser = loader.parseTextSync;\n } else {\n throw new Error(`Could not load data with ${loader.name} loader`);\n }\n\n // TODO - proper merge in of loader options...\n options = {\n ...options,\n modules: (loader && loader.options && loader.options.modules) || {},\n worker: false\n };\n\n return await parser(data, {...options}, context, loader);\n}\n"],"file":"create-loader-worker.js"}
1
+ {"version":3,"sources":["../../../../src/lib/worker-loader-utils/create-loader-worker.ts"],"names":["WorkerBody","requestId","createLoaderWorker","loader","self","onmessage","type","payload","input","options","result","parseData","arrayBuffer","context","parse","parseOnMainThread","postMessage","error","message","Error","Promise","resolve","reject","id","onMessage","removeEventListener","addEventListener","data","parser","parseSync","parseTextSync","textDecoder","TextDecoder","decode","name","modules","worker"],"mappings":"AAEA,SAAQA,UAAR,QAAyB,0BAAzB;AAGA,IAAIC,SAAS,GAAG,CAAhB;AAMA,OAAO,SAASC,kBAAT,CAA4BC,MAA5B,EAAsD;AAE3D,MAAI,OAAOC,IAAP,KAAgB,WAApB,EAAiC;AAC/B;AACD;;AAEDJ,EAAAA,UAAU,CAACK,SAAX,GAAuB,OAAOC,IAAP,EAAaC,OAAb,KAAyB;AAC9C,YAAQD,IAAR;AACE,WAAK,SAAL;AACE,YAAI;AAGF,gBAAM;AAACE,YAAAA,KAAD;AAAQC,YAAAA,OAAO,GAAG;AAAlB,cAAwBF,OAA9B;AAEA,gBAAMG,MAAM,GAAG,MAAMC,SAAS,CAAC;AAC7BR,YAAAA,MAD6B;AAE7BS,YAAAA,WAAW,EAAEJ,KAFgB;AAG7BC,YAAAA,OAH6B;AAI7BI,YAAAA,OAAO,EAAE;AACPC,cAAAA,KAAK,EAAEC;AADA;AAJoB,WAAD,CAA9B;AAQAf,UAAAA,UAAU,CAACgB,WAAX,CAAuB,MAAvB,EAA+B;AAACN,YAAAA;AAAD,WAA/B;AACD,SAdD,CAcE,OAAOO,KAAP,EAAc;AACd,gBAAMC,OAAO,GAAGD,KAAK,YAAYE,KAAjB,GAAyBF,KAAK,CAACC,OAA/B,GAAyC,EAAzD;AACAlB,UAAAA,UAAU,CAACgB,WAAX,CAAuB,OAAvB,EAAgC;AAACC,YAAAA,KAAK,EAAEC;AAAR,WAAhC;AACD;;AACD;;AACF;AArBF;AAuBD,GAxBD;AAyBD;;AAED,SAASH,iBAAT,CAA2BH,WAA3B,EAAqDH,OAArD,EAAmG;AACjG,SAAO,IAAIW,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtC,UAAMC,EAAE,GAAGtB,SAAS,EAApB;;AAIA,UAAMuB,SAAS,GAAG,CAAClB,IAAD,EAAOC,OAAP,KAAmB;AACnC,UAAIA,OAAO,CAACgB,EAAR,KAAeA,EAAnB,EAAuB;AAErB;AACD;;AAED,cAAQjB,IAAR;AACE,aAAK,MAAL;AACEN,UAAAA,UAAU,CAACyB,mBAAX,CAA+BD,SAA/B;AACAH,UAAAA,OAAO,CAACd,OAAO,CAACG,MAAT,CAAP;AACA;;AAEF,aAAK,OAAL;AACEV,UAAAA,UAAU,CAACyB,mBAAX,CAA+BD,SAA/B;AACAF,UAAAA,MAAM,CAACf,OAAO,CAACU,KAAT,CAAN;AACA;;AAEF;AAXF;AAcD,KApBD;;AAsBAjB,IAAAA,UAAU,CAAC0B,gBAAX,CAA4BF,SAA5B;AAGA,UAAMjB,OAAO,GAAG;AAACgB,MAAAA,EAAD;AAAKf,MAAAA,KAAK,EAAEI,WAAZ;AAAyBH,MAAAA;AAAzB,KAAhB;AACAT,IAAAA,UAAU,CAACgB,WAAX,CAAuB,SAAvB,EAAkCT,OAAlC;AACD,GAhCM,CAAP;AAiCD;;AAMD,eAAeI,SAAf,CAAyB;AAACR,EAAAA,MAAD;AAASS,EAAAA,WAAT;AAAsBH,EAAAA,OAAtB;AAA+BI,EAAAA;AAA/B,CAAzB,EAAkE;AAChE,MAAIc,IAAJ;AACA,MAAIC,MAAJ;;AACA,MAAIzB,MAAM,CAAC0B,SAAP,IAAoB1B,MAAM,CAACW,KAA/B,EAAsC;AACpCa,IAAAA,IAAI,GAAGf,WAAP;AACAgB,IAAAA,MAAM,GAAGzB,MAAM,CAAC0B,SAAP,IAAoB1B,MAAM,CAACW,KAApC;AACD,GAHD,MAGO,IAAIX,MAAM,CAAC2B,aAAX,EAA0B;AAC/B,UAAMC,WAAW,GAAG,IAAIC,WAAJ,EAApB;AACAL,IAAAA,IAAI,GAAGI,WAAW,CAACE,MAAZ,CAAmBrB,WAAnB,CAAP;AACAgB,IAAAA,MAAM,GAAGzB,MAAM,CAAC2B,aAAhB;AACD,GAJM,MAIA;AACL,UAAM,IAAIX,KAAJ,oCAAsChB,MAAM,CAAC+B,IAA7C,aAAN;AACD;;AAGDzB,EAAAA,OAAO,GAAG,EACR,GAAGA,OADK;AAER0B,IAAAA,OAAO,EAAGhC,MAAM,IAAIA,MAAM,CAACM,OAAjB,IAA4BN,MAAM,CAACM,OAAP,CAAe0B,OAA5C,IAAwD,EAFzD;AAGRC,IAAAA,MAAM,EAAE;AAHA,GAAV;AAMA,SAAO,MAAMR,MAAM,CAACD,IAAD,EAAO,EAAC,GAAGlB;AAAJ,GAAP,EAAqBI,OAArB,EAA8BV,MAA9B,CAAnB;AACD","sourcesContent":["/* eslint-disable no-restricted-globals */\nimport type {LoaderWithParser} from '../../types';\nimport {WorkerBody} from '@loaders.gl/worker-utils';\n// import {validateLoaderVersion} from './validate-loader-version';\n\nlet requestId = 0;\n\n/**\n * Set up a WebWorkerGlobalScope to talk with the main thread\n * @param loader\n */\nexport function createLoaderWorker(loader: LoaderWithParser) {\n // Check that we are actually in a worker thread\n if (typeof self === 'undefined') {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload) => {\n switch (type) {\n case 'process':\n try {\n // validateLoaderVersion(loader, data.source.split('@')[1]);\n\n const {input, options = {}} = payload;\n\n const result = await parseData({\n loader,\n arrayBuffer: input,\n options,\n context: {\n parse: parseOnMainThread\n }\n });\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n}\n\nfunction parseOnMainThread(arrayBuffer: ArrayBuffer, options: {[key: string]: any}): Promise<void> {\n return new Promise((resolve, reject) => {\n const id = requestId++;\n\n /**\n */\n const onMessage = (type, payload) => {\n if (payload.id !== id) {\n // not ours\n return;\n }\n\n switch (type) {\n case 'done':\n WorkerBody.removeEventListener(onMessage);\n resolve(payload.result);\n break;\n\n case 'error':\n WorkerBody.removeEventListener(onMessage);\n reject(payload.error);\n break;\n\n default:\n // ignore\n }\n };\n\n WorkerBody.addEventListener(onMessage);\n\n // Ask the main thread to decode data\n const payload = {id, input: arrayBuffer, options};\n WorkerBody.postMessage('process', payload);\n });\n}\n\n// TODO - Support byteOffset and byteLength (enabling parsing of embedded binaries without copies)\n// TODO - Why not support async loader.parse* funcs here?\n// TODO - Why not reuse a common function instead of reimplementing loader.parse* selection logic? Keeping loader small?\n// TODO - Lack of appropriate parser functions can be detected when we create worker, no need to wait until parse\nasync function parseData({loader, arrayBuffer, options, context}) {\n let data;\n let parser;\n if (loader.parseSync || loader.parse) {\n data = arrayBuffer;\n parser = loader.parseSync || loader.parse;\n } else if (loader.parseTextSync) {\n const textDecoder = new TextDecoder();\n data = textDecoder.decode(arrayBuffer);\n parser = loader.parseTextSync;\n } else {\n throw new Error(`Could not load data with ${loader.name} loader`);\n }\n\n // TODO - proper merge in of loader options...\n options = {\n ...options,\n modules: (loader && loader.options && loader.options.modules) || {},\n worker: false\n };\n\n return await parser(data, {...options}, context, loader);\n}\n"],"file":"create-loader-worker.js"}
@@ -31,7 +31,7 @@ async function onMessage(parseOnMainThread, job, type, payload) {
31
31
  break;
32
32
 
33
33
  case 'error':
34
- job.error(payload.error);
34
+ job.error(new Error(payload.error));
35
35
  break;
36
36
 
37
37
  case 'process':
@@ -58,7 +58,7 @@ async function onMessage(parseOnMainThread, job, type, payload) {
58
58
  break;
59
59
 
60
60
  default:
61
- console.warn(`parse-with-worker unknown message ${type}`);
61
+ console.warn("parse-with-worker unknown message ".concat(type));
62
62
  }
63
63
  }
64
64
  //# sourceMappingURL=parse-with-worker.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/worker-loader-utils/parse-with-worker.ts"],"names":["WorkerFarm","getWorkerURL","canParseWithWorker","loader","options","isSupported","worker","parseWithWorker","data","context","parseOnMainThread","name","id","url","workerFarm","getWorkerFarm","workerPool","getWorkerPool","JSON","parse","stringify","job","startJob","onMessage","bind","postMessage","input","result","type","payload","done","error","message","Error","console","warn"],"mappings":"AAEA,SAAQA,UAAR,EAAoBC,YAApB,QAAuC,0BAAvC;AAOA,OAAO,SAASC,kBAAT,CAA4BC,MAA5B,EAA4CC,OAA5C,EAAqE;AAC1E,MAAI,CAACJ,UAAU,CAACK,WAAX,EAAL,EAA+B;AAC7B,WAAO,KAAP;AACD;;AAED,SAAOF,MAAM,CAACG,MAAP,KAAiBF,OAAjB,aAAiBA,OAAjB,uBAAiBA,OAAO,CAAEE,MAA1B,CAAP;AACD;AAMD,OAAO,eAAeC,eAAf,CACLJ,MADK,EAELK,IAFK,EAGLJ,OAHK,EAILK,OAJK,EAKLC,iBALK,EAML;AACA,QAAMC,IAAI,GAAGR,MAAM,CAACS,EAApB;AACA,QAAMC,GAAG,GAAGZ,YAAY,CAACE,MAAD,EAASC,OAAT,CAAxB;AAEA,QAAMU,UAAU,GAAGd,UAAU,CAACe,aAAX,CAAyBX,OAAzB,CAAnB;AACA,QAAMY,UAAU,GAAGF,UAAU,CAACG,aAAX,CAAyB;AAACN,IAAAA,IAAD;AAAOE,IAAAA;AAAP,GAAzB,CAAnB;AAIAT,EAAAA,OAAO,GAAGc,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,SAAL,CAAehB,OAAf,CAAX,CAAV;AAEA,QAAMiB,GAAG,GAAG,MAAML,UAAU,CAACM,QAAX,CAChB,mBADgB,EAGhBC,SAAS,CAACC,IAAV,CAAe,IAAf,EAAqBd,iBAArB,CAHgB,CAAlB;AAMAW,EAAAA,GAAG,CAACI,WAAJ,CAAgB,SAAhB,EAA2B;AAEzBC,IAAAA,KAAK,EAAElB,IAFkB;AAGzBJ,IAAAA;AAHyB,GAA3B;AAMA,QAAMuB,MAAM,GAAG,MAAMN,GAAG,CAACM,MAAzB;AACA,SAAO,MAAMA,MAAM,CAACA,MAApB;AACD;;AAQD,eAAeJ,SAAf,CACEb,iBADF,EAEEW,GAFF,EAGEO,IAHF,EAIEC,OAJF,EAKE;AACA,UAAQD,IAAR;AACE,SAAK,MAAL;AACEP,MAAAA,GAAG,CAACS,IAAJ,CAASD,OAAT;AACA;;AAEF,SAAK,OAAL;AACER,MAAAA,GAAG,CAACU,KAAJ,CAAUF,OAAO,CAACE,KAAlB;AACA;;AAEF,SAAK,SAAL;AAEE,YAAM;AAACnB,QAAAA,EAAD;AAAKc,QAAAA,KAAL;AAAYtB,QAAAA;AAAZ,UAAuByB,OAA7B;;AACA,UAAI;AACF,cAAMF,MAAM,GAAG,MAAMjB,iBAAiB,CAACgB,KAAD,EAAQtB,OAAR,CAAtC;AACAiB,QAAAA,GAAG,CAACI,WAAJ,CAAgB,MAAhB,EAAwB;AAACb,UAAAA,EAAD;AAAKe,UAAAA;AAAL,SAAxB;AACD,OAHD,CAGE,OAAOI,KAAP,EAAc;AACd,cAAMC,OAAO,GAAGD,KAAK,YAAYE,KAAjB,GAAyBF,KAAK,CAACC,OAA/B,GAAyC,eAAzD;AACAX,QAAAA,GAAG,CAACI,WAAJ,CAAgB,OAAhB,EAAyB;AAACb,UAAAA,EAAD;AAAKmB,UAAAA,KAAK,EAAEC;AAAZ,SAAzB;AACD;;AACD;;AAEF;AAEEE,MAAAA,OAAO,CAACC,IAAR,CAAc,qCAAoCP,IAAK,EAAvD;AAvBJ;AAyBD","sourcesContent":["import type {WorkerJob, WorkerMessageType, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport type {Loader, LoaderOptions, LoaderContext} from '../../types';\nimport {WorkerFarm, getWorkerURL} from '@loaders.gl/worker-utils';\n\n/**\n * Determines if a loader can parse with worker\n * @param loader\n * @param options\n */\nexport function canParseWithWorker(loader: Loader, options?: LoaderOptions) {\n if (!WorkerFarm.isSupported()) {\n return false;\n }\n\n return loader.worker && options?.worker;\n}\n\n/**\n * this function expects that the worker function sends certain messages,\n * this can be automated if the worker is wrapper by a call to createLoaderWorker in @loaders.gl/loader-utils.\n */\nexport async function parseWithWorker(\n loader: Loader,\n data,\n options?: LoaderOptions,\n context?: LoaderContext,\n parseOnMainThread?: (arrayBuffer: ArrayBuffer, options: {[key: string]: any}) => Promise<void>\n) {\n const name = loader.id; // TODO\n const url = getWorkerURL(loader, options);\n\n const workerFarm = WorkerFarm.getWorkerFarm(options);\n const workerPool = workerFarm.getWorkerPool({name, url});\n\n // options.log object contains functions which cannot be transferred\n // TODO - decide how to handle logging on workers\n options = JSON.parse(JSON.stringify(options));\n\n const job = await workerPool.startJob(\n 'process-on-worker',\n // eslint-disable-next-line\n onMessage.bind(null, parseOnMainThread)\n );\n\n job.postMessage('process', {\n // @ts-ignore\n input: data,\n options\n });\n\n const result = await job.result;\n return await result.result;\n}\n\n/**\n * Handle worker's responses to the main thread\n * @param job\n * @param type\n * @param payload\n */\nasync function onMessage(\n parseOnMainThread,\n job: WorkerJob,\n type: WorkerMessageType,\n payload: WorkerMessagePayload\n) {\n switch (type) {\n case 'done':\n job.done(payload);\n break;\n\n case 'error':\n job.error(payload.error);\n break;\n\n case 'process':\n // Worker is asking for main thread to parseO\n const {id, input, options} = payload;\n try {\n const result = await parseOnMainThread(input, options);\n job.postMessage('done', {id, result});\n } catch (error) {\n const message = error instanceof Error ? error.message : 'unknown error';\n job.postMessage('error', {id, error: message});\n }\n break;\n\n default:\n // eslint-disable-next-line\n console.warn(`parse-with-worker unknown message ${type}`);\n }\n}\n"],"file":"parse-with-worker.js"}
1
+ {"version":3,"sources":["../../../../src/lib/worker-loader-utils/parse-with-worker.ts"],"names":["WorkerFarm","getWorkerURL","canParseWithWorker","loader","options","isSupported","worker","parseWithWorker","data","context","parseOnMainThread","name","id","url","workerFarm","getWorkerFarm","workerPool","getWorkerPool","JSON","parse","stringify","job","startJob","onMessage","bind","postMessage","input","result","type","payload","done","error","Error","message","console","warn"],"mappings":"AAEA,SAAQA,UAAR,EAAoBC,YAApB,QAAuC,0BAAvC;AAOA,OAAO,SAASC,kBAAT,CAA4BC,MAA5B,EAA4CC,OAA5C,EAAqE;AAC1E,MAAI,CAACJ,UAAU,CAACK,WAAX,EAAL,EAA+B;AAC7B,WAAO,KAAP;AACD;;AAED,SAAOF,MAAM,CAACG,MAAP,KAAiBF,OAAjB,aAAiBA,OAAjB,uBAAiBA,OAAO,CAAEE,MAA1B,CAAP;AACD;AAMD,OAAO,eAAeC,eAAf,CACLJ,MADK,EAELK,IAFK,EAGLJ,OAHK,EAILK,OAJK,EAKLC,iBALK,EAML;AACA,QAAMC,IAAI,GAAGR,MAAM,CAACS,EAApB;AACA,QAAMC,GAAG,GAAGZ,YAAY,CAACE,MAAD,EAASC,OAAT,CAAxB;AAEA,QAAMU,UAAU,GAAGd,UAAU,CAACe,aAAX,CAAyBX,OAAzB,CAAnB;AACA,QAAMY,UAAU,GAAGF,UAAU,CAACG,aAAX,CAAyB;AAACN,IAAAA,IAAD;AAAOE,IAAAA;AAAP,GAAzB,CAAnB;AAIAT,EAAAA,OAAO,GAAGc,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,SAAL,CAAehB,OAAf,CAAX,CAAV;AAEA,QAAMiB,GAAG,GAAG,MAAML,UAAU,CAACM,QAAX,CAChB,mBADgB,EAGhBC,SAAS,CAACC,IAAV,CAAe,IAAf,EAAqBd,iBAArB,CAHgB,CAAlB;AAMAW,EAAAA,GAAG,CAACI,WAAJ,CAAgB,SAAhB,EAA2B;AAEzBC,IAAAA,KAAK,EAAElB,IAFkB;AAGzBJ,IAAAA;AAHyB,GAA3B;AAMA,QAAMuB,MAAM,GAAG,MAAMN,GAAG,CAACM,MAAzB;AAEA,SAAO,MAAMA,MAAM,CAACA,MAApB;AACD;;AAQD,eAAeJ,SAAf,CACEb,iBADF,EAEEW,GAFF,EAGEO,IAHF,EAIEC,OAJF,EAKE;AACA,UAAQD,IAAR;AACE,SAAK,MAAL;AACEP,MAAAA,GAAG,CAACS,IAAJ,CAASD,OAAT;AACA;;AAEF,SAAK,OAAL;AACER,MAAAA,GAAG,CAACU,KAAJ,CAAU,IAAIC,KAAJ,CAAUH,OAAO,CAACE,KAAlB,CAAV;AACA;;AAEF,SAAK,SAAL;AAEE,YAAM;AAACnB,QAAAA,EAAD;AAAKc,QAAAA,KAAL;AAAYtB,QAAAA;AAAZ,UAAuByB,OAA7B;;AACA,UAAI;AACF,cAAMF,MAAM,GAAG,MAAMjB,iBAAiB,CAACgB,KAAD,EAAQtB,OAAR,CAAtC;AACAiB,QAAAA,GAAG,CAACI,WAAJ,CAAgB,MAAhB,EAAwB;AAACb,UAAAA,EAAD;AAAKe,UAAAA;AAAL,SAAxB;AACD,OAHD,CAGE,OAAOI,KAAP,EAAc;AACd,cAAME,OAAO,GAAGF,KAAK,YAAYC,KAAjB,GAAyBD,KAAK,CAACE,OAA/B,GAAyC,eAAzD;AACAZ,QAAAA,GAAG,CAACI,WAAJ,CAAgB,OAAhB,EAAyB;AAACb,UAAAA,EAAD;AAAKmB,UAAAA,KAAK,EAAEE;AAAZ,SAAzB;AACD;;AACD;;AAEF;AAEEC,MAAAA,OAAO,CAACC,IAAR,6CAAkDP,IAAlD;AAvBJ;AAyBD","sourcesContent":["import type {WorkerJob, WorkerMessageType, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport type {Loader, LoaderOptions, LoaderContext} from '../../types';\nimport {WorkerFarm, getWorkerURL} from '@loaders.gl/worker-utils';\n\n/**\n * Determines if a loader can parse with worker\n * @param loader\n * @param options\n */\nexport function canParseWithWorker(loader: Loader, options?: LoaderOptions) {\n if (!WorkerFarm.isSupported()) {\n return false;\n }\n\n return loader.worker && options?.worker;\n}\n\n/**\n * this function expects that the worker function sends certain messages,\n * this can be automated if the worker is wrapper by a call to createLoaderWorker in @loaders.gl/loader-utils.\n */\nexport async function parseWithWorker(\n loader: Loader,\n data: any,\n options?: LoaderOptions,\n context?: LoaderContext,\n parseOnMainThread?: (arrayBuffer: ArrayBuffer, options: {[key: string]: any}) => Promise<void>\n) {\n const name = loader.id; // TODO\n const url = getWorkerURL(loader, options);\n\n const workerFarm = WorkerFarm.getWorkerFarm(options);\n const workerPool = workerFarm.getWorkerPool({name, url});\n\n // options.log object contains functions which cannot be transferred\n // TODO - decide how to handle logging on workers\n options = JSON.parse(JSON.stringify(options));\n\n const job = await workerPool.startJob(\n 'process-on-worker',\n // @ts-expect-error\n onMessage.bind(null, parseOnMainThread) // eslint-disable-line @typescript-eslint/no-misused-promises\n );\n\n job.postMessage('process', {\n // @ts-ignore\n input: data,\n options\n });\n\n const result = await job.result;\n // TODO - what is going on here?\n return await result.result;\n}\n\n/**\n * Handle worker's responses to the main thread\n * @param job\n * @param type\n * @param payload\n */\nasync function onMessage(\n parseOnMainThread: (arrayBuffer: ArrayBuffer, options?: {[key: string]: any}) => Promise<void>,\n job: WorkerJob,\n type: WorkerMessageType,\n payload: WorkerMessagePayload\n) {\n switch (type) {\n case 'done':\n job.done(payload);\n break;\n\n case 'error':\n job.error(new Error(payload.error));\n break;\n\n case 'process':\n // Worker is asking for main thread to parseO\n const {id, input, options} = payload;\n try {\n const result = await parseOnMainThread(input, options);\n job.postMessage('done', {id, result});\n } catch (error) {\n const message = error instanceof Error ? error.message : 'unknown error';\n job.postMessage('error', {id, error: message});\n }\n break;\n\n default:\n // eslint-disable-next-line\n console.warn(`parse-with-worker unknown message ${type}`);\n }\n}\n"],"file":"parse-with-worker.js"}
@@ -0,0 +1,27 @@
1
+ export type { Loader, LoaderWithParser, LoaderContext, LoaderOptions, Writer, WriterOptions, DataType, SyncDataType, BatchableDataType, IFileSystem, IRandomAccessReadFileSystem } from './types';
2
+ export { assert } from './lib/env-utils/assert';
3
+ export { isBrowser, isWorker, nodeVersion, self, window, global, document } from './lib/env-utils/globals';
4
+ export { createLoaderWorker } from './lib/worker-loader-utils/create-loader-worker';
5
+ export { parseWithWorker, canParseWithWorker } from './lib/worker-loader-utils/parse-with-worker';
6
+ export { parseJSON } from './lib/parser-utils/parse-json';
7
+ export { toArrayBuffer, sliceArrayBuffer, concatenateArrayBuffers, concatenateTypedArrays, compareArrayBuffers } from './lib/binary-utils/array-buffer-utils';
8
+ export { padToNBytes, copyToArray, copyArrayBuffer } from './lib/binary-utils/memory-copy-utils';
9
+ export { copyPaddedArrayBufferToDataView, copyPaddedStringToDataView } from './lib/binary-utils/binary-copy-utils';
10
+ export { padStringToByteAlignment, copyStringToDataView, copyBinaryToDataView } from './lib/binary-utils/encode-utils';
11
+ export { getFirstCharacters, getMagicString } from './lib/binary-utils/get-first-characters';
12
+ export { makeTextEncoderIterator, makeTextDecoderIterator, makeLineIterator, makeNumberedLineIterator } from './lib/iterators/text-iterators';
13
+ export { forEach, concatenateArrayBuffersAsync } from './lib/iterators/async-iteration';
14
+ export { default as RequestScheduler } from './lib/request-utils/request-scheduler';
15
+ export { setPathPrefix, getPathPrefix, resolvePath } from './lib/path-utils/file-aliases';
16
+ export { addAliases as _addAliases } from './lib/path-utils/file-aliases';
17
+ export { JSONLoader } from './json-loader';
18
+ import * as path from './lib/path-utils/path';
19
+ export { path };
20
+ export { isBuffer, toBuffer, bufferToArrayBuffer } from './lib/binary-utils/buffer-utils';
21
+ import * as util from './lib/node/util';
22
+ export { util };
23
+ export { promisify } from './lib/node/util';
24
+ import * as fs from './lib/node/fs';
25
+ export { fs };
26
+ export { default as _NodeFileSystem } from './lib/filesystems/node-filesystem';
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,MAAM,EACN,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,MAAM,EACN,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAC,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EACL,SAAS,EACT,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,MAAM,EACN,MAAM,EACN,QAAQ,EACT,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAC,kBAAkB,EAAC,MAAM,gDAAgD,CAAC;AAClF,OAAO,EAAC,eAAe,EAAE,kBAAkB,EAAC,MAAM,6CAA6C,CAAC;AAGhG,OAAO,EAAC,SAAS,EAAC,MAAM,+BAA+B,CAAC;AAGxD,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAC,WAAW,EAAE,WAAW,EAAE,eAAe,EAAC,MAAM,sCAAsC,CAAC;AAC/F,OAAO,EACL,+BAA+B,EAC/B,0BAA0B,EAC3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAC,kBAAkB,EAAE,cAAc,EAAC,MAAM,yCAAyC,CAAC;AAG3F,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAC,OAAO,EAAE,4BAA4B,EAAC,MAAM,iCAAiC,CAAC;AAGtF,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,uCAAuC,CAAC;AAGlF,OAAO,EAAC,aAAa,EAAE,aAAa,EAAE,WAAW,EAAC,MAAM,+BAA+B,CAAC;AACxF,OAAO,EAAC,UAAU,IAAI,WAAW,EAAC,MAAM,+BAA+B,CAAC;AAGxE,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAOzC,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAC,IAAI,EAAC,CAAC;AAGd,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,EAAC,MAAM,iCAAiC,CAAC;AAKxF,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAC,IAAI,EAAC,CAAC;AAEd,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAG1C,OAAO,KAAK,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAC,EAAE,EAAC,CAAC;AAGZ,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,mCAAmC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports._NodeFileSystem = exports.fs = exports.promisify = exports.util = exports.bufferToArrayBuffer = exports.toBuffer = exports.isBuffer = exports.path = exports.JSONLoader = exports._addAliases = exports.resolvePath = exports.getPathPrefix = exports.setPathPrefix = exports.RequestScheduler = exports.concatenateArrayBuffersAsync = exports.forEach = exports.makeNumberedLineIterator = exports.makeLineIterator = exports.makeTextDecoderIterator = exports.makeTextEncoderIterator = exports.getMagicString = exports.getFirstCharacters = exports.copyBinaryToDataView = exports.copyStringToDataView = exports.padStringToByteAlignment = exports.copyPaddedStringToDataView = exports.copyPaddedArrayBufferToDataView = exports.copyArrayBuffer = exports.copyToArray = exports.padToNBytes = exports.compareArrayBuffers = exports.concatenateTypedArrays = exports.concatenateArrayBuffers = exports.sliceArrayBuffer = exports.toArrayBuffer = exports.parseJSON = exports.canParseWithWorker = exports.parseWithWorker = exports.createLoaderWorker = exports.document = exports.global = exports.window = exports.self = exports.nodeVersion = exports.isWorker = exports.isBrowser = exports.assert = void 0;
26
+ // GENERAL UTILS
27
+ var assert_1 = require("./lib/env-utils/assert");
28
+ Object.defineProperty(exports, "assert", { enumerable: true, get: function () { return assert_1.assert; } });
29
+ var globals_1 = require("./lib/env-utils/globals");
30
+ Object.defineProperty(exports, "isBrowser", { enumerable: true, get: function () { return globals_1.isBrowser; } });
31
+ Object.defineProperty(exports, "isWorker", { enumerable: true, get: function () { return globals_1.isWorker; } });
32
+ Object.defineProperty(exports, "nodeVersion", { enumerable: true, get: function () { return globals_1.nodeVersion; } });
33
+ Object.defineProperty(exports, "self", { enumerable: true, get: function () { return globals_1.self; } });
34
+ Object.defineProperty(exports, "window", { enumerable: true, get: function () { return globals_1.window; } });
35
+ Object.defineProperty(exports, "global", { enumerable: true, get: function () { return globals_1.global; } });
36
+ Object.defineProperty(exports, "document", { enumerable: true, get: function () { return globals_1.document; } });
37
+ // LOADERS.GL-SPECIFIC WORKER UTILS
38
+ var create_loader_worker_1 = require("./lib/worker-loader-utils/create-loader-worker");
39
+ Object.defineProperty(exports, "createLoaderWorker", { enumerable: true, get: function () { return create_loader_worker_1.createLoaderWorker; } });
40
+ var parse_with_worker_1 = require("./lib/worker-loader-utils/parse-with-worker");
41
+ Object.defineProperty(exports, "parseWithWorker", { enumerable: true, get: function () { return parse_with_worker_1.parseWithWorker; } });
42
+ Object.defineProperty(exports, "canParseWithWorker", { enumerable: true, get: function () { return parse_with_worker_1.canParseWithWorker; } });
43
+ // PARSER UTILS
44
+ var parse_json_1 = require("./lib/parser-utils/parse-json");
45
+ Object.defineProperty(exports, "parseJSON", { enumerable: true, get: function () { return parse_json_1.parseJSON; } });
46
+ // MEMORY COPY UTILS
47
+ var array_buffer_utils_1 = require("./lib/binary-utils/array-buffer-utils");
48
+ Object.defineProperty(exports, "toArrayBuffer", { enumerable: true, get: function () { return array_buffer_utils_1.toArrayBuffer; } });
49
+ Object.defineProperty(exports, "sliceArrayBuffer", { enumerable: true, get: function () { return array_buffer_utils_1.sliceArrayBuffer; } });
50
+ Object.defineProperty(exports, "concatenateArrayBuffers", { enumerable: true, get: function () { return array_buffer_utils_1.concatenateArrayBuffers; } });
51
+ Object.defineProperty(exports, "concatenateTypedArrays", { enumerable: true, get: function () { return array_buffer_utils_1.concatenateTypedArrays; } });
52
+ Object.defineProperty(exports, "compareArrayBuffers", { enumerable: true, get: function () { return array_buffer_utils_1.compareArrayBuffers; } });
53
+ var memory_copy_utils_1 = require("./lib/binary-utils/memory-copy-utils");
54
+ Object.defineProperty(exports, "padToNBytes", { enumerable: true, get: function () { return memory_copy_utils_1.padToNBytes; } });
55
+ Object.defineProperty(exports, "copyToArray", { enumerable: true, get: function () { return memory_copy_utils_1.copyToArray; } });
56
+ Object.defineProperty(exports, "copyArrayBuffer", { enumerable: true, get: function () { return memory_copy_utils_1.copyArrayBuffer; } });
57
+ var binary_copy_utils_1 = require("./lib/binary-utils/binary-copy-utils");
58
+ Object.defineProperty(exports, "copyPaddedArrayBufferToDataView", { enumerable: true, get: function () { return binary_copy_utils_1.copyPaddedArrayBufferToDataView; } });
59
+ Object.defineProperty(exports, "copyPaddedStringToDataView", { enumerable: true, get: function () { return binary_copy_utils_1.copyPaddedStringToDataView; } });
60
+ var encode_utils_1 = require("./lib/binary-utils/encode-utils");
61
+ Object.defineProperty(exports, "padStringToByteAlignment", { enumerable: true, get: function () { return encode_utils_1.padStringToByteAlignment; } });
62
+ Object.defineProperty(exports, "copyStringToDataView", { enumerable: true, get: function () { return encode_utils_1.copyStringToDataView; } });
63
+ Object.defineProperty(exports, "copyBinaryToDataView", { enumerable: true, get: function () { return encode_utils_1.copyBinaryToDataView; } });
64
+ var get_first_characters_1 = require("./lib/binary-utils/get-first-characters");
65
+ Object.defineProperty(exports, "getFirstCharacters", { enumerable: true, get: function () { return get_first_characters_1.getFirstCharacters; } });
66
+ Object.defineProperty(exports, "getMagicString", { enumerable: true, get: function () { return get_first_characters_1.getMagicString; } });
67
+ // ITERATOR UTILS
68
+ var text_iterators_1 = require("./lib/iterators/text-iterators");
69
+ Object.defineProperty(exports, "makeTextEncoderIterator", { enumerable: true, get: function () { return text_iterators_1.makeTextEncoderIterator; } });
70
+ Object.defineProperty(exports, "makeTextDecoderIterator", { enumerable: true, get: function () { return text_iterators_1.makeTextDecoderIterator; } });
71
+ Object.defineProperty(exports, "makeLineIterator", { enumerable: true, get: function () { return text_iterators_1.makeLineIterator; } });
72
+ Object.defineProperty(exports, "makeNumberedLineIterator", { enumerable: true, get: function () { return text_iterators_1.makeNumberedLineIterator; } });
73
+ var async_iteration_1 = require("./lib/iterators/async-iteration");
74
+ Object.defineProperty(exports, "forEach", { enumerable: true, get: function () { return async_iteration_1.forEach; } });
75
+ Object.defineProperty(exports, "concatenateArrayBuffersAsync", { enumerable: true, get: function () { return async_iteration_1.concatenateArrayBuffersAsync; } });
76
+ // REQUEST UTILS
77
+ var request_scheduler_1 = require("./lib/request-utils/request-scheduler");
78
+ Object.defineProperty(exports, "RequestScheduler", { enumerable: true, get: function () { return __importDefault(request_scheduler_1).default; } });
79
+ // PATH HELPERS
80
+ var file_aliases_1 = require("./lib/path-utils/file-aliases");
81
+ Object.defineProperty(exports, "setPathPrefix", { enumerable: true, get: function () { return file_aliases_1.setPathPrefix; } });
82
+ Object.defineProperty(exports, "getPathPrefix", { enumerable: true, get: function () { return file_aliases_1.getPathPrefix; } });
83
+ Object.defineProperty(exports, "resolvePath", { enumerable: true, get: function () { return file_aliases_1.resolvePath; } });
84
+ var file_aliases_2 = require("./lib/path-utils/file-aliases");
85
+ Object.defineProperty(exports, "_addAliases", { enumerable: true, get: function () { return file_aliases_2.addAliases; } });
86
+ // MICRO LOADERS
87
+ var json_loader_1 = require("./json-loader");
88
+ Object.defineProperty(exports, "JSONLoader", { enumerable: true, get: function () { return json_loader_1.JSONLoader; } });
89
+ // NODE support
90
+ // Node.js emulation (can be used in browser)
91
+ // `path` replacement (avoids bundling big path polyfill)
92
+ const path = __importStar(require("./lib/path-utils/path"));
93
+ exports.path = path;
94
+ // Avoid direct use of `Buffer` which pulls in 50KB polyfill
95
+ var buffer_utils_1 = require("./lib/binary-utils/buffer-utils");
96
+ Object.defineProperty(exports, "isBuffer", { enumerable: true, get: function () { return buffer_utils_1.isBuffer; } });
97
+ Object.defineProperty(exports, "toBuffer", { enumerable: true, get: function () { return buffer_utils_1.toBuffer; } });
98
+ Object.defineProperty(exports, "bufferToArrayBuffer", { enumerable: true, get: function () { return buffer_utils_1.bufferToArrayBuffer; } });
99
+ // Note.js wrappers (can be safely imported, but not used in browser)
100
+ // Use instead of importing 'util'
101
+ const util = __importStar(require("./lib/node/util"));
102
+ exports.util = util;
103
+ // TODO - remove
104
+ var util_1 = require("./lib/node/util");
105
+ Object.defineProperty(exports, "promisify", { enumerable: true, get: function () { return util_1.promisify; } });
106
+ // Use instead of importing 'fs';`
107
+ const fs = __importStar(require("./lib/node/fs"));
108
+ exports.fs = fs;
109
+ // EXPERIMENTAL
110
+ var node_filesystem_1 = require("./lib/filesystems/node-filesystem");
111
+ Object.defineProperty(exports, "_NodeFileSystem", { enumerable: true, get: function () { return __importDefault(node_filesystem_1).default; } });