@loaders.gl/loader-utils 4.0.0-alpha.5 → 4.0.0-alpha.7

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 (252) hide show
  1. package/dist/es5/index.js +328 -0
  2. package/dist/es5/index.js.map +1 -0
  3. package/dist/es5/json-loader.js +44 -0
  4. package/dist/es5/json-loader.js.map +1 -0
  5. package/dist/es5/lib/binary-utils/array-buffer-utils.js +80 -0
  6. package/dist/es5/lib/binary-utils/array-buffer-utils.js.map +1 -0
  7. package/dist/es5/lib/binary-utils/dataview-copy-utils.js +58 -0
  8. package/dist/es5/lib/binary-utils/dataview-copy-utils.js.map +1 -0
  9. package/dist/es5/lib/binary-utils/get-first-characters.js +31 -0
  10. package/dist/es5/lib/binary-utils/get-first-characters.js.map +1 -0
  11. package/dist/es5/lib/binary-utils/memory-conversion-utils.js +44 -0
  12. package/dist/es5/lib/binary-utils/memory-conversion-utils.js.map +1 -0
  13. package/dist/es5/lib/binary-utils/memory-copy-utils.js +34 -0
  14. package/dist/es5/lib/binary-utils/memory-copy-utils.js.map +1 -0
  15. package/dist/es5/lib/env-utils/assert.js +12 -0
  16. package/dist/es5/lib/env-utils/assert.js.map +1 -0
  17. package/dist/es5/lib/env-utils/globals.js +30 -0
  18. package/dist/es5/lib/env-utils/globals.js.map +1 -0
  19. package/dist/es5/lib/filesystems/node-filesystem.js +210 -0
  20. package/dist/es5/lib/filesystems/node-filesystem.js.map +1 -0
  21. package/dist/es5/lib/filesystems/readable-file.js +91 -0
  22. package/dist/es5/lib/filesystems/readable-file.js.map +1 -0
  23. package/dist/es5/lib/filesystems/writable-file.js +82 -0
  24. package/dist/es5/lib/filesystems/writable-file.js.map +1 -0
  25. package/dist/es5/lib/iterators/async-iteration.js +190 -0
  26. package/dist/es5/lib/iterators/async-iteration.js.map +1 -0
  27. package/dist/es5/lib/iterators/text-iterators.js +305 -0
  28. package/dist/es5/lib/iterators/text-iterators.js.map +1 -0
  29. package/dist/es5/lib/node/buffer.browser.js +14 -0
  30. package/dist/es5/lib/node/buffer.browser.js.map +1 -0
  31. package/dist/es5/lib/node/buffer.js +27 -0
  32. package/dist/es5/lib/node/buffer.js.map +1 -0
  33. package/dist/es5/lib/node/fs.js +88 -0
  34. package/dist/es5/lib/node/fs.js.map +1 -0
  35. package/dist/es5/lib/node/promisify.js +36 -0
  36. package/dist/es5/lib/node/promisify.js.map +1 -0
  37. package/dist/es5/lib/node/stream.js +16 -0
  38. package/dist/es5/lib/node/stream.js.map +1 -0
  39. package/dist/es5/lib/option-utils/merge-loader-options.js +30 -0
  40. package/dist/es5/lib/option-utils/merge-loader-options.js.map +1 -0
  41. package/dist/es5/lib/parser-utils/parse-json.js +15 -0
  42. package/dist/es5/lib/parser-utils/parse-json.js.map +1 -0
  43. package/dist/es5/lib/path-utils/file-aliases.js +33 -0
  44. package/dist/es5/lib/path-utils/file-aliases.js.map +1 -0
  45. package/dist/es5/lib/path-utils/get-cwd.js +15 -0
  46. package/dist/es5/lib/path-utils/get-cwd.js.map +1 -0
  47. package/dist/es5/lib/path-utils/path.js +136 -0
  48. package/dist/es5/lib/path-utils/path.js.map +1 -0
  49. package/dist/es5/lib/request-utils/request-scheduler.js +150 -0
  50. package/dist/es5/lib/request-utils/request-scheduler.js.map +1 -0
  51. package/dist/es5/lib/worker-loader-utils/create-loader-worker.js +142 -0
  52. package/dist/es5/lib/worker-loader-utils/create-loader-worker.js.map +1 -0
  53. package/dist/es5/lib/worker-loader-utils/encode-with-worker.js +18 -0
  54. package/dist/es5/lib/worker-loader-utils/encode-with-worker.js.map +1 -0
  55. package/dist/es5/lib/worker-loader-utils/parse-with-worker.js +115 -0
  56. package/dist/es5/lib/worker-loader-utils/parse-with-worker.js.map +1 -0
  57. package/dist/es5/types.js +2 -0
  58. package/dist/es5/types.js.map +1 -0
  59. package/dist/es5/workers/json-worker.js +6 -0
  60. package/dist/es5/workers/json-worker.js.map +1 -0
  61. package/dist/esm/index.js +29 -0
  62. package/dist/esm/index.js.map +1 -0
  63. package/dist/esm/json-loader.js +18 -0
  64. package/dist/esm/json-loader.js.map +1 -0
  65. package/dist/esm/lib/binary-utils/array-buffer-utils.js +52 -0
  66. package/dist/esm/lib/binary-utils/array-buffer-utils.js.map +1 -0
  67. package/dist/{lib/binary-utils/binary-copy-utils.js → esm/lib/binary-utils/dataview-copy-utils.js} +27 -4
  68. package/dist/esm/lib/binary-utils/dataview-copy-utils.js.map +1 -0
  69. package/dist/esm/lib/binary-utils/get-first-characters.js +24 -0
  70. package/dist/esm/lib/binary-utils/get-first-characters.js.map +1 -0
  71. package/dist/esm/lib/binary-utils/memory-conversion-utils.js +31 -0
  72. package/dist/esm/lib/binary-utils/memory-conversion-utils.js.map +1 -0
  73. package/dist/esm/lib/binary-utils/memory-copy-utils.js +26 -0
  74. package/dist/esm/lib/binary-utils/memory-copy-utils.js.map +1 -0
  75. package/dist/esm/lib/env-utils/assert.js +6 -0
  76. package/dist/esm/lib/env-utils/assert.js.map +1 -0
  77. package/dist/esm/lib/env-utils/globals.js +16 -0
  78. package/dist/esm/lib/env-utils/globals.js.map +1 -0
  79. package/dist/esm/lib/filesystems/node-filesystem.js +53 -0
  80. package/dist/esm/lib/filesystems/node-filesystem.js.map +1 -0
  81. package/dist/esm/lib/filesystems/readable-file.js +20 -0
  82. package/dist/esm/lib/filesystems/readable-file.js.map +1 -0
  83. package/dist/esm/lib/filesystems/writable-file.js +20 -0
  84. package/dist/esm/lib/filesystems/writable-file.js.map +1 -0
  85. package/dist/esm/lib/iterators/async-iteration.js +32 -0
  86. package/dist/esm/lib/iterators/async-iteration.js.map +1 -0
  87. package/dist/esm/lib/iterators/text-iterators.js +47 -0
  88. package/dist/esm/lib/iterators/text-iterators.js.map +1 -0
  89. package/dist/esm/lib/node/buffer.browser.js +7 -0
  90. package/dist/esm/lib/node/buffer.browser.js.map +1 -0
  91. package/dist/esm/lib/node/buffer.js +20 -0
  92. package/dist/esm/lib/node/buffer.js.map +1 -0
  93. package/dist/esm/lib/node/fs.js +40 -0
  94. package/dist/esm/lib/node/fs.js.map +1 -0
  95. package/dist/esm/lib/node/promisify.js +10 -0
  96. package/dist/esm/lib/node/promisify.js.map +1 -0
  97. package/dist/esm/lib/node/stream.js +7 -0
  98. package/dist/esm/lib/node/stream.js.map +1 -0
  99. package/dist/esm/lib/option-utils/merge-loader-options.js +17 -0
  100. package/dist/esm/lib/option-utils/merge-loader-options.js.map +1 -0
  101. package/dist/esm/lib/parser-utils/parse-json.js +9 -0
  102. package/dist/esm/lib/parser-utils/parse-json.js.map +1 -0
  103. package/dist/esm/lib/path-utils/file-aliases.js +24 -0
  104. package/dist/esm/lib/path-utils/file-aliases.js.map +1 -0
  105. package/dist/esm/lib/path-utils/get-cwd.js +9 -0
  106. package/dist/esm/lib/path-utils/get-cwd.js.map +1 -0
  107. package/dist/esm/lib/path-utils/path.js +127 -0
  108. package/dist/esm/lib/path-utils/path.js.map +1 -0
  109. package/dist/esm/lib/request-utils/request-scheduler.js +120 -0
  110. package/dist/esm/lib/request-utils/request-scheduler.js.map +1 -0
  111. package/dist/esm/lib/worker-loader-utils/create-loader-worker.js +95 -0
  112. package/dist/esm/lib/worker-loader-utils/create-loader-worker.js.map +1 -0
  113. package/dist/esm/lib/worker-loader-utils/encode-with-worker.js +12 -0
  114. package/dist/esm/lib/worker-loader-utils/encode-with-worker.js.map +1 -0
  115. package/dist/esm/lib/worker-loader-utils/parse-with-worker.js +63 -0
  116. package/dist/esm/lib/worker-loader-utils/parse-with-worker.js.map +1 -0
  117. package/dist/esm/types.js +2 -0
  118. package/dist/esm/types.js.map +1 -0
  119. package/dist/esm/workers/json-worker.js +4 -0
  120. package/dist/esm/workers/json-worker.js.map +1 -0
  121. package/dist/index.d.ts +13 -8
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +122 -26
  124. package/dist/json-loader.d.ts +4 -17
  125. package/dist/json-loader.d.ts.map +1 -1
  126. package/dist/json-loader.js +24 -18
  127. package/dist/lib/binary-utils/array-buffer-utils.d.ts +4 -8
  128. package/dist/lib/binary-utils/array-buffer-utils.d.ts.map +1 -1
  129. package/dist/lib/binary-utils/array-buffer-utils.js +78 -80
  130. package/dist/lib/binary-utils/dataview-copy-utils.d.ts +43 -0
  131. package/dist/lib/binary-utils/dataview-copy-utils.d.ts.map +1 -0
  132. package/dist/lib/binary-utils/dataview-copy-utils.js +97 -0
  133. package/dist/lib/binary-utils/get-first-characters.d.ts +15 -1
  134. package/dist/lib/binary-utils/get-first-characters.d.ts.map +1 -1
  135. package/dist/lib/binary-utils/get-first-characters.js +43 -25
  136. package/dist/lib/binary-utils/{buffer-utils.d.ts → memory-conversion-utils.d.ts} +3 -4
  137. package/dist/lib/binary-utils/memory-conversion-utils.d.ts.map +1 -0
  138. package/dist/lib/binary-utils/memory-conversion-utils.js +73 -0
  139. package/dist/lib/binary-utils/memory-copy-utils.js +58 -24
  140. package/dist/lib/env-utils/assert.js +12 -5
  141. package/dist/lib/env-utils/globals.d.ts +1 -1
  142. package/dist/lib/env-utils/globals.d.ts.map +1 -1
  143. package/dist/lib/env-utils/globals.js +23 -9
  144. package/dist/lib/filesystems/node-filesystem.d.ts +3 -2
  145. package/dist/lib/filesystems/node-filesystem.d.ts.map +1 -1
  146. package/dist/lib/filesystems/node-filesystem.js +72 -59
  147. package/dist/lib/filesystems/readable-file.d.ts +10 -0
  148. package/dist/lib/filesystems/readable-file.d.ts.map +1 -0
  149. package/dist/lib/filesystems/readable-file.js +25 -0
  150. package/dist/lib/filesystems/writable-file.d.ts +18 -0
  151. package/dist/lib/filesystems/writable-file.d.ts.map +1 -0
  152. package/dist/lib/filesystems/writable-file.js +48 -0
  153. package/dist/lib/iterators/async-iteration.js +49 -35
  154. package/dist/lib/iterators/text-iterators.js +56 -41
  155. package/dist/lib/node/buffer.browser.d.ts +12 -0
  156. package/dist/lib/node/buffer.browser.d.ts.map +1 -0
  157. package/dist/lib/node/buffer.browser.js +22 -0
  158. package/dist/lib/node/buffer.d.ts +3 -1
  159. package/dist/lib/node/buffer.d.ts.map +1 -1
  160. package/dist/lib/node/buffer.js +33 -25
  161. package/dist/lib/node/fs.d.ts +4 -2
  162. package/dist/lib/node/fs.d.ts.map +1 -1
  163. package/dist/lib/node/fs.js +47 -40
  164. package/dist/lib/node/promisify.d.ts +13 -0
  165. package/dist/lib/node/promisify.d.ts.map +1 -0
  166. package/dist/lib/node/promisify.js +22 -0
  167. package/dist/lib/node/stream.d.ts +4 -0
  168. package/dist/lib/node/stream.d.ts.map +1 -0
  169. package/dist/lib/node/stream.js +17 -0
  170. package/dist/lib/option-utils/merge-loader-options.d.ts +9 -0
  171. package/dist/lib/option-utils/merge-loader-options.d.ts.map +1 -0
  172. package/dist/lib/option-utils/merge-loader-options.js +27 -0
  173. package/dist/lib/parser-utils/parse-json.js +15 -8
  174. package/dist/lib/path-utils/file-aliases.js +40 -19
  175. package/dist/lib/path-utils/get-cwd.d.ts +2 -0
  176. package/dist/lib/path-utils/get-cwd.d.ts.map +1 -0
  177. package/dist/lib/path-utils/get-cwd.js +12 -0
  178. package/dist/lib/path-utils/path.d.ts +8 -0
  179. package/dist/lib/path-utils/path.d.ts.map +1 -1
  180. package/dist/lib/path-utils/path.js +173 -19
  181. package/dist/lib/request-utils/request-scheduler.d.ts +6 -6
  182. package/dist/lib/request-utils/request-scheduler.d.ts.map +1 -1
  183. package/dist/lib/request-utils/request-scheduler.js +127 -131
  184. package/dist/lib/worker-loader-utils/create-loader-worker.d.ts.map +1 -1
  185. package/dist/lib/worker-loader-utils/create-loader-worker.js +92 -96
  186. package/dist/lib/worker-loader-utils/encode-with-worker.d.ts +8 -0
  187. package/dist/lib/worker-loader-utils/encode-with-worker.d.ts.map +1 -0
  188. package/dist/lib/worker-loader-utils/encode-with-worker.js +21 -0
  189. package/dist/lib/worker-loader-utils/parse-with-worker.d.ts.map +1 -1
  190. package/dist/lib/worker-loader-utils/parse-with-worker.js +77 -60
  191. package/dist/types.d.ts +122 -72
  192. package/dist/types.d.ts.map +1 -1
  193. package/dist/types.js +3 -2
  194. package/dist/workers/json-worker.js +5 -4
  195. package/package.json +12 -19
  196. package/src/index.ts +40 -19
  197. package/src/json-loader.ts +5 -4
  198. package/src/lib/binary-utils/array-buffer-utils.ts +4 -40
  199. package/src/lib/binary-utils/{binary-copy-utils.ts → dataview-copy-utils.ts} +57 -5
  200. package/src/lib/binary-utils/get-first-characters.ts +17 -1
  201. package/src/lib/binary-utils/memory-conversion-utils.ts +53 -0
  202. package/src/lib/filesystems/readable-file.ts +30 -0
  203. package/src/lib/filesystems/writable-file.ts +44 -0
  204. package/src/lib/node/buffer.browser.ts +20 -0
  205. package/src/lib/node/buffer.ts +12 -11
  206. package/src/lib/node/fs.ts +16 -11
  207. package/src/lib/node/promisify.ts +70 -0
  208. package/src/lib/node/stream.ts +18 -0
  209. package/src/lib/option-utils/merge-loader-options.ts +35 -0
  210. package/src/lib/path-utils/get-cwd.ts +9 -0
  211. package/src/lib/path-utils/path.ts +138 -4
  212. package/src/lib/worker-loader-utils/create-loader-worker.ts +3 -2
  213. package/src/lib/worker-loader-utils/encode-with-worker.ts +21 -0
  214. package/src/lib/worker-loader-utils/parse-with-worker.ts +15 -2
  215. package/src/types.ts +211 -93
  216. package/dist/index.js.map +0 -1
  217. package/dist/json-loader.js.map +0 -1
  218. package/dist/lib/binary-utils/array-buffer-utils.js.map +0 -1
  219. package/dist/lib/binary-utils/binary-copy-utils.d.ts +0 -24
  220. package/dist/lib/binary-utils/binary-copy-utils.d.ts.map +0 -1
  221. package/dist/lib/binary-utils/binary-copy-utils.js.map +0 -1
  222. package/dist/lib/binary-utils/buffer-utils.d.ts.map +0 -1
  223. package/dist/lib/binary-utils/buffer-utils.js +0 -16
  224. package/dist/lib/binary-utils/buffer-utils.js.map +0 -1
  225. package/dist/lib/binary-utils/encode-utils.d.ts +0 -4
  226. package/dist/lib/binary-utils/encode-utils.d.ts.map +0 -1
  227. package/dist/lib/binary-utils/encode-utils.js +0 -31
  228. package/dist/lib/binary-utils/encode-utils.js.map +0 -1
  229. package/dist/lib/binary-utils/get-first-characters.js.map +0 -1
  230. package/dist/lib/binary-utils/memory-copy-utils.js.map +0 -1
  231. package/dist/lib/env-utils/assert.js.map +0 -1
  232. package/dist/lib/env-utils/globals.js.map +0 -1
  233. package/dist/lib/filesystems/node-filesystem.js.map +0 -1
  234. package/dist/lib/iterators/async-iteration.js.map +0 -1
  235. package/dist/lib/iterators/text-iterators.js.map +0 -1
  236. package/dist/lib/node/buffer.js.map +0 -1
  237. package/dist/lib/node/fs.js.map +0 -1
  238. package/dist/lib/node/util.d.ts +0 -5
  239. package/dist/lib/node/util.d.ts.map +0 -1
  240. package/dist/lib/node/util.js +0 -3
  241. package/dist/lib/node/util.js.map +0 -1
  242. package/dist/lib/parser-utils/parse-json.js.map +0 -1
  243. package/dist/lib/path-utils/file-aliases.js.map +0 -1
  244. package/dist/lib/path-utils/path.js.map +0 -1
  245. package/dist/lib/request-utils/request-scheduler.js.map +0 -1
  246. package/dist/lib/worker-loader-utils/create-loader-worker.js.map +0 -1
  247. package/dist/lib/worker-loader-utils/parse-with-worker.js.map +0 -1
  248. package/dist/types.js.map +0 -1
  249. package/dist/workers/json-worker.js.map +0 -1
  250. package/src/lib/binary-utils/buffer-utils.ts +0 -28
  251. package/src/lib/binary-utils/encode-utils.ts +0 -32
  252. package/src/lib/node/util.ts +0 -4
@@ -1,102 +1,98 @@
1
- import { WorkerBody } from '@loaders.gl/worker-utils';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createLoaderWorker = void 0;
4
+ const worker_utils_1 = require("@loaders.gl/worker-utils");
5
+ // import {validateLoaderVersion} from './validate-loader-version.js';
2
6
  let requestId = 0;
3
- export function createLoaderWorker(loader) {
4
- if (typeof self === 'undefined') {
5
- return;
6
- }
7
-
8
- WorkerBody.onmessage = async (type, payload) => {
9
- switch (type) {
10
- case 'process':
11
- try {
12
- const {
13
- input,
14
- options = {}
15
- } = payload;
16
- const result = await parseData({
17
- loader,
18
- arrayBuffer: input,
19
- options,
20
- context: {
21
- parse: parseOnMainThread
22
- }
23
- });
24
- WorkerBody.postMessage('done', {
25
- result
26
- });
27
- } catch (error) {
28
- const message = error instanceof Error ? error.message : '';
29
- WorkerBody.postMessage('error', {
30
- error: message
31
- });
32
- }
33
-
34
- break;
35
-
36
- default:
7
+ /**
8
+ * Set up a WebWorkerGlobalScope to talk with the main thread
9
+ * @param loader
10
+ */
11
+ function createLoaderWorker(loader) {
12
+ // Check that we are actually in a worker thread
13
+ if (!worker_utils_1.WorkerBody.inWorkerThread()) {
14
+ return;
37
15
  }
38
- };
16
+ worker_utils_1.WorkerBody.onmessage = async (type, payload) => {
17
+ switch (type) {
18
+ case 'process':
19
+ try {
20
+ // validateLoaderVersion(loader, data.source.split('@')[1]);
21
+ const { input, options = {}, context = {} } = payload;
22
+ const result = await parseData({
23
+ loader,
24
+ arrayBuffer: input,
25
+ options,
26
+ context: {
27
+ ...context,
28
+ parse: parseOnMainThread
29
+ }
30
+ });
31
+ worker_utils_1.WorkerBody.postMessage('done', { result });
32
+ }
33
+ catch (error) {
34
+ const message = error instanceof Error ? error.message : '';
35
+ worker_utils_1.WorkerBody.postMessage('error', { error: message });
36
+ }
37
+ break;
38
+ default:
39
+ }
40
+ };
39
41
  }
40
-
42
+ exports.createLoaderWorker = createLoaderWorker;
41
43
  function parseOnMainThread(arrayBuffer, options) {
42
- return new Promise((resolve, reject) => {
43
- const id = requestId++;
44
-
45
- const onMessage = (type, payload) => {
46
- if (payload.id !== id) {
47
- return;
48
- }
49
-
50
- switch (type) {
51
- case 'done':
52
- WorkerBody.removeEventListener(onMessage);
53
- resolve(payload.result);
54
- break;
55
-
56
- case 'error':
57
- WorkerBody.removeEventListener(onMessage);
58
- reject(payload.error);
59
- break;
60
-
61
- default:
62
- }
63
- };
64
-
65
- WorkerBody.addEventListener(onMessage);
66
- const payload = {
67
- id,
68
- input: arrayBuffer,
69
- options
70
- };
71
- WorkerBody.postMessage('process', payload);
72
- });
44
+ return new Promise((resolve, reject) => {
45
+ const id = requestId++;
46
+ /**
47
+ */
48
+ const onMessage = (type, payload) => {
49
+ if (payload.id !== id) {
50
+ // not ours
51
+ return;
52
+ }
53
+ switch (type) {
54
+ case 'done':
55
+ worker_utils_1.WorkerBody.removeEventListener(onMessage);
56
+ resolve(payload.result);
57
+ break;
58
+ case 'error':
59
+ worker_utils_1.WorkerBody.removeEventListener(onMessage);
60
+ reject(payload.error);
61
+ break;
62
+ default:
63
+ // ignore
64
+ }
65
+ };
66
+ worker_utils_1.WorkerBody.addEventListener(onMessage);
67
+ // Ask the main thread to decode data
68
+ const payload = { id, input: arrayBuffer, options };
69
+ worker_utils_1.WorkerBody.postMessage('process', payload);
70
+ });
73
71
  }
74
-
75
- async function parseData({
76
- loader,
77
- arrayBuffer,
78
- options,
79
- context
80
- }) {
81
- let data;
82
- let parser;
83
-
84
- if (loader.parseSync || loader.parse) {
85
- data = arrayBuffer;
86
- parser = loader.parseSync || loader.parse;
87
- } else if (loader.parseTextSync) {
88
- const textDecoder = new TextDecoder();
89
- data = textDecoder.decode(arrayBuffer);
90
- parser = loader.parseTextSync;
91
- } else {
92
- throw new Error("Could not load data with ".concat(loader.name, " loader"));
93
- }
94
-
95
- options = { ...options,
96
- modules: loader && loader.options && loader.options.modules || {},
97
- worker: false
98
- };
99
- return await parser(data, { ...options
100
- }, context, loader);
72
+ // TODO - Support byteOffset and byteLength (enabling parsing of embedded binaries without copies)
73
+ // TODO - Why not support async loader.parse* funcs here?
74
+ // TODO - Why not reuse a common function instead of reimplementing loader.parse* selection logic? Keeping loader small?
75
+ // TODO - Lack of appropriate parser functions can be detected when we create worker, no need to wait until parse
76
+ async function parseData({ loader, arrayBuffer, options, context }) {
77
+ let data;
78
+ let parser;
79
+ if (loader.parseSync || loader.parse) {
80
+ data = arrayBuffer;
81
+ parser = loader.parseSync || loader.parse;
82
+ }
83
+ else if (loader.parseTextSync) {
84
+ const textDecoder = new TextDecoder();
85
+ data = textDecoder.decode(arrayBuffer);
86
+ parser = loader.parseTextSync;
87
+ }
88
+ else {
89
+ throw new Error(`Could not load data with ${loader.name} loader`);
90
+ }
91
+ // TODO - proper merge in of loader options...
92
+ options = {
93
+ ...options,
94
+ modules: (loader && loader.options && loader.options.modules) || {},
95
+ worker: false
96
+ };
97
+ return await parser(data, { ...options }, context, loader);
101
98
  }
102
- //# sourceMappingURL=create-loader-worker.js.map
@@ -0,0 +1,8 @@
1
+ import { Writer, WriterOptions } from '../../types';
2
+ /**
3
+ * Determines if a loader can parse with worker
4
+ * @param loader
5
+ * @param options
6
+ */
7
+ export declare function canEncodeWithWorker(writer: Writer, options?: WriterOptions): any;
8
+ //# sourceMappingURL=encode-with-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-with-worker.d.ts","sourceRoot":"","sources":["../../../src/lib/worker-loader-utils/encode-with-worker.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,aAAa,CAAC;AAGlD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,OAW1E"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canEncodeWithWorker = void 0;
4
+ const worker_utils_1 = require("@loaders.gl/worker-utils");
5
+ const globals_1 = require("../env-utils/globals");
6
+ /**
7
+ * Determines if a loader can parse with worker
8
+ * @param loader
9
+ * @param options
10
+ */
11
+ function canEncodeWithWorker(writer, options) {
12
+ if (!worker_utils_1.WorkerFarm.isSupported()) {
13
+ return false;
14
+ }
15
+ // Node workers are still experimental
16
+ if (!globals_1.isBrowser && !options?._nodeWorkers) {
17
+ return false;
18
+ }
19
+ return writer.worker && options?.worker;
20
+ }
21
+ exports.canEncodeWithWorker = canEncodeWithWorker;
@@ -1 +1 @@
1
- {"version":3,"file":"parse-with-worker.d.ts","sourceRoot":"","sources":["../../../src/lib/worker-loader-utils/parse-with-worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAC,MAAM,aAAa,CAAC;AAGtE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,4BAMzE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,GAAG,EACT,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,aAAa,EACvB,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,gBA2B/F"}
1
+ {"version":3,"file":"parse-with-worker.d.ts","sourceRoot":"","sources":["../../../src/lib/worker-loader-utils/parse-with-worker.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAC,MAAM,aAAa,CAAC;AAGtE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,4BAWzE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,GAAG,EACT,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,aAAa,EACvB,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,gBA8B/F"}
@@ -1,64 +1,81 @@
1
- import { WorkerFarm, getWorkerURL } from '@loaders.gl/worker-utils';
2
- export function canParseWithWorker(loader, options) {
3
- if (!WorkerFarm.isSupported()) {
4
- return false;
5
- }
6
-
7
- return loader.worker && (options === null || options === void 0 ? void 0 : options.worker);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseWithWorker = exports.canParseWithWorker = void 0;
4
+ const worker_utils_1 = require("@loaders.gl/worker-utils");
5
+ const worker_utils_2 = require("@loaders.gl/worker-utils");
6
+ /**
7
+ * Determines if a loader can parse with worker
8
+ * @param loader
9
+ * @param options
10
+ */
11
+ function canParseWithWorker(loader, options) {
12
+ if (!worker_utils_2.WorkerFarm.isSupported()) {
13
+ return false;
14
+ }
15
+ // Node workers are still experimental
16
+ if (!worker_utils_1.isBrowser && !options?._nodeWorkers) {
17
+ return false;
18
+ }
19
+ return loader.worker && options?.worker;
8
20
  }
9
- export async function parseWithWorker(loader, data, options, context, parseOnMainThread) {
10
- const name = loader.id;
11
- const url = getWorkerURL(loader, options);
12
- const workerFarm = WorkerFarm.getWorkerFarm(options);
13
- const workerPool = workerFarm.getWorkerPool({
14
- name,
15
- url
16
- });
17
- options = JSON.parse(JSON.stringify(options));
18
- const job = await workerPool.startJob('process-on-worker', onMessage.bind(null, parseOnMainThread));
19
- job.postMessage('process', {
20
- input: data,
21
- options
22
- });
23
- const result = await job.result;
24
- return await result.result;
21
+ exports.canParseWithWorker = canParseWithWorker;
22
+ /**
23
+ * this function expects that the worker function sends certain messages,
24
+ * this can be automated if the worker is wrapper by a call to createLoaderWorker in @loaders.gl/loader-utils.
25
+ */
26
+ async function parseWithWorker(loader, data, options, context, parseOnMainThread) {
27
+ const name = loader.id; // TODO
28
+ const url = (0, worker_utils_2.getWorkerURL)(loader, options);
29
+ const workerFarm = worker_utils_2.WorkerFarm.getWorkerFarm(options);
30
+ const workerPool = workerFarm.getWorkerPool({ name, url });
31
+ // options.log object contains functions which cannot be transferred
32
+ // context.fetch & context.parse functions cannot be transferred
33
+ // TODO - decide how to handle logging on workers
34
+ options = JSON.parse(JSON.stringify(options));
35
+ context = JSON.parse(JSON.stringify(context || {}));
36
+ const job = await workerPool.startJob('process-on-worker',
37
+ // @ts-expect-error
38
+ onMessage.bind(null, parseOnMainThread) // eslint-disable-line @typescript-eslint/no-misused-promises
39
+ );
40
+ job.postMessage('process', {
41
+ // @ts-ignore
42
+ input: data,
43
+ options,
44
+ context
45
+ });
46
+ const result = await job.result;
47
+ // TODO - what is going on here?
48
+ return await result.result;
25
49
  }
26
-
50
+ exports.parseWithWorker = parseWithWorker;
51
+ /**
52
+ * Handle worker's responses to the main thread
53
+ * @param job
54
+ * @param type
55
+ * @param payload
56
+ */
27
57
  async function onMessage(parseOnMainThread, job, type, payload) {
28
- switch (type) {
29
- case 'done':
30
- job.done(payload);
31
- break;
32
-
33
- case 'error':
34
- job.error(new Error(payload.error));
35
- break;
36
-
37
- case 'process':
38
- const {
39
- id,
40
- input,
41
- options
42
- } = payload;
43
-
44
- try {
45
- const result = await parseOnMainThread(input, options);
46
- job.postMessage('done', {
47
- id,
48
- result
49
- });
50
- } catch (error) {
51
- const message = error instanceof Error ? error.message : 'unknown error';
52
- job.postMessage('error', {
53
- id,
54
- error: message
55
- });
56
- }
57
-
58
- break;
59
-
60
- default:
61
- console.warn("parse-with-worker unknown message ".concat(type));
62
- }
58
+ switch (type) {
59
+ case 'done':
60
+ job.done(payload);
61
+ break;
62
+ case 'error':
63
+ job.error(new Error(payload.error));
64
+ break;
65
+ case 'process':
66
+ // Worker is asking for main thread to parseO
67
+ const { id, input, options } = payload;
68
+ try {
69
+ const result = await parseOnMainThread(input, options);
70
+ job.postMessage('done', { id, result });
71
+ }
72
+ catch (error) {
73
+ const message = error instanceof Error ? error.message : 'unknown error';
74
+ job.postMessage('error', { id, error: message });
75
+ }
76
+ break;
77
+ default:
78
+ // eslint-disable-next-line
79
+ console.warn(`parse-with-worker unknown message ${type}`);
80
+ }
63
81
  }
64
- //# sourceMappingURL=parse-with-worker.js.map