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

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 (36) hide show
  1. package/dist/es5/index.js +8 -0
  2. package/dist/es5/index.js.map +1 -1
  3. package/dist/es5/json-loader.js +1 -1
  4. package/dist/es5/lib/worker-loader-utils/create-loader-worker.js +4 -4
  5. package/dist/es5/lib/worker-loader-utils/create-loader-worker.js.map +1 -1
  6. package/dist/es5/lib/worker-loader-utils/encode-with-worker.js +23 -0
  7. package/dist/es5/lib/worker-loader-utils/encode-with-worker.js.map +1 -0
  8. package/dist/es5/lib/worker-loader-utils/parse-with-worker.js +10 -8
  9. package/dist/es5/lib/worker-loader-utils/parse-with-worker.js.map +1 -1
  10. package/dist/esm/index.js +1 -0
  11. package/dist/esm/index.js.map +1 -1
  12. package/dist/esm/json-loader.js +1 -1
  13. package/dist/esm/lib/worker-loader-utils/create-loader-worker.js +3 -2
  14. package/dist/esm/lib/worker-loader-utils/create-loader-worker.js.map +1 -1
  15. package/dist/esm/lib/worker-loader-utils/encode-with-worker.js +14 -0
  16. package/dist/esm/lib/worker-loader-utils/encode-with-worker.js.map +1 -0
  17. package/dist/esm/lib/worker-loader-utils/parse-with-worker.js +3 -1
  18. package/dist/esm/lib/worker-loader-utils/parse-with-worker.js.map +1 -1
  19. package/dist/index.d.ts +1 -0
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +3 -1
  22. package/dist/lib/worker-loader-utils/create-loader-worker.d.ts.map +1 -1
  23. package/dist/lib/worker-loader-utils/create-loader-worker.js +2 -1
  24. package/dist/lib/worker-loader-utils/encode-with-worker.d.ts +8 -0
  25. package/dist/lib/worker-loader-utils/encode-with-worker.d.ts.map +1 -0
  26. package/dist/lib/worker-loader-utils/encode-with-worker.js +21 -0
  27. package/dist/lib/worker-loader-utils/parse-with-worker.d.ts.map +1 -1
  28. package/dist/lib/worker-loader-utils/parse-with-worker.js +4 -1
  29. package/dist/types.d.ts +9 -2
  30. package/dist/types.d.ts.map +1 -1
  31. package/package.json +3 -3
  32. package/src/index.ts +1 -0
  33. package/src/lib/worker-loader-utils/create-loader-worker.ts +2 -1
  34. package/src/lib/worker-loader-utils/encode-with-worker.ts +21 -0
  35. package/src/lib/worker-loader-utils/parse-with-worker.ts +4 -1
  36. package/src/types.ts +9 -2
package/dist/es5/index.js CHANGED
@@ -73,6 +73,12 @@ Object.defineProperty(exports, "canParseWithWorker", {
73
73
  return _parseWithWorker.canParseWithWorker;
74
74
  }
75
75
  });
76
+ Object.defineProperty(exports, "canEncodeWithWorker", {
77
+ enumerable: true,
78
+ get: function get() {
79
+ return _encodeWithWorker.canEncodeWithWorker;
80
+ }
81
+ });
76
82
  Object.defineProperty(exports, "parseJSON", {
77
83
  enumerable: true,
78
84
  get: function get() {
@@ -281,6 +287,8 @@ var _createLoaderWorker = require("./lib/worker-loader-utils/create-loader-worke
281
287
 
282
288
  var _parseWithWorker = require("./lib/worker-loader-utils/parse-with-worker");
283
289
 
290
+ var _encodeWithWorker = require("./lib/worker-loader-utils/encode-with-worker");
291
+
284
292
  var _parseJson = require("./lib/parser-utils/parse-json");
285
293
 
286
294
  var _arrayBufferUtils = require("./lib/binary-utils/array-buffer-utils");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA;;AACA;;AAWA;;AACA;;AAGA;;AAGA;;AAOA;;AACA;;AAIA;;AAKA;;AAGA;;AAMA;;AAGA;;AAGA;;AAIA;;AAOA;;;;AAIA;;AAKA;;;;AAMA;;;;AAIA","sourcesContent":["// TYPES\nexport type {\n Loader,\n LoaderWithParser,\n LoaderContext,\n LoaderOptions,\n Writer,\n WriterOptions,\n DataType,\n SyncDataType,\n BatchableDataType,\n IFileSystem,\n IRandomAccessReadFileSystem\n} from './types';\n\n// GENERAL UTILS\nexport {assert} from './lib/env-utils/assert';\nexport {\n isBrowser,\n isWorker,\n nodeVersion,\n self,\n window,\n global,\n document\n} from './lib/env-utils/globals';\n\n// LOADERS.GL-SPECIFIC WORKER UTILS\nexport {createLoaderWorker} from './lib/worker-loader-utils/create-loader-worker';\nexport {parseWithWorker, canParseWithWorker} from './lib/worker-loader-utils/parse-with-worker';\n\n// PARSER UTILS\nexport {parseJSON} from './lib/parser-utils/parse-json';\n\n// MEMORY COPY UTILS\nexport {\n toArrayBuffer,\n sliceArrayBuffer,\n concatenateArrayBuffers,\n concatenateTypedArrays,\n compareArrayBuffers\n} from './lib/binary-utils/array-buffer-utils';\nexport {padToNBytes, copyToArray, copyArrayBuffer} from './lib/binary-utils/memory-copy-utils';\nexport {\n copyPaddedArrayBufferToDataView,\n copyPaddedStringToDataView\n} from './lib/binary-utils/binary-copy-utils';\nexport {\n padStringToByteAlignment,\n copyStringToDataView,\n copyBinaryToDataView\n} from './lib/binary-utils/encode-utils';\nexport {getFirstCharacters, getMagicString} from './lib/binary-utils/get-first-characters';\n\n// ITERATOR UTILS\nexport {\n makeTextEncoderIterator,\n makeTextDecoderIterator,\n makeLineIterator,\n makeNumberedLineIterator\n} from './lib/iterators/text-iterators';\nexport {forEach, concatenateArrayBuffersAsync} from './lib/iterators/async-iteration';\n\n// REQUEST UTILS\nexport {default as RequestScheduler} from './lib/request-utils/request-scheduler';\n\n// PATH HELPERS\nexport {setPathPrefix, getPathPrefix, resolvePath} from './lib/path-utils/file-aliases';\nexport {addAliases as _addAliases} from './lib/path-utils/file-aliases';\n\n// MICRO LOADERS\nexport {JSONLoader} from './json-loader';\n\n// NODE support\n\n// Node.js emulation (can be used in browser)\n\n// `path` replacement (avoids bundling big path polyfill)\nimport * as path from './lib/path-utils/path';\nexport {path};\n\n// Avoid direct use of `Buffer` which pulls in 50KB polyfill\nexport {isBuffer, toBuffer, bufferToArrayBuffer} from './lib/binary-utils/buffer-utils';\n\n// Note.js wrappers (can be safely imported, but not used in browser)\n\n// Use instead of importing 'util'\nimport * as util from './lib/node/util';\nexport {util};\n// TODO - remove\nexport {promisify} from './lib/node/util';\n\n// Use instead of importing 'fs';`\nimport * as fs from './lib/node/fs';\nexport {fs};\n\n// EXPERIMENTAL\nexport {default as _NodeFileSystem} from './lib/filesystems/node-filesystem';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA;;AACA;;AAWA;;AACA;;AACA;;AAGA;;AAGA;;AAOA;;AACA;;AAIA;;AAKA;;AAGA;;AAMA;;AAGA;;AAGA;;AAIA;;AAOA;;;;AAIA;;AAKA;;;;AAMA;;;;AAIA","sourcesContent":["// TYPES\nexport type {\n Loader,\n LoaderWithParser,\n LoaderContext,\n LoaderOptions,\n Writer,\n WriterOptions,\n DataType,\n SyncDataType,\n BatchableDataType,\n IFileSystem,\n IRandomAccessReadFileSystem\n} from './types';\n\n// GENERAL UTILS\nexport {assert} from './lib/env-utils/assert';\nexport {\n isBrowser,\n isWorker,\n nodeVersion,\n self,\n window,\n global,\n document\n} from './lib/env-utils/globals';\n\n// LOADERS.GL-SPECIFIC WORKER UTILS\nexport {createLoaderWorker} from './lib/worker-loader-utils/create-loader-worker';\nexport {parseWithWorker, canParseWithWorker} from './lib/worker-loader-utils/parse-with-worker';\nexport {canEncodeWithWorker} from './lib/worker-loader-utils/encode-with-worker';\n\n// PARSER UTILS\nexport {parseJSON} from './lib/parser-utils/parse-json';\n\n// MEMORY COPY UTILS\nexport {\n toArrayBuffer,\n sliceArrayBuffer,\n concatenateArrayBuffers,\n concatenateTypedArrays,\n compareArrayBuffers\n} from './lib/binary-utils/array-buffer-utils';\nexport {padToNBytes, copyToArray, copyArrayBuffer} from './lib/binary-utils/memory-copy-utils';\nexport {\n copyPaddedArrayBufferToDataView,\n copyPaddedStringToDataView\n} from './lib/binary-utils/binary-copy-utils';\nexport {\n padStringToByteAlignment,\n copyStringToDataView,\n copyBinaryToDataView\n} from './lib/binary-utils/encode-utils';\nexport {getFirstCharacters, getMagicString} from './lib/binary-utils/get-first-characters';\n\n// ITERATOR UTILS\nexport {\n makeTextEncoderIterator,\n makeTextDecoderIterator,\n makeLineIterator,\n makeNumberedLineIterator\n} from './lib/iterators/text-iterators';\nexport {forEach, concatenateArrayBuffersAsync} from './lib/iterators/async-iteration';\n\n// REQUEST UTILS\nexport {default as RequestScheduler} from './lib/request-utils/request-scheduler';\n\n// PATH HELPERS\nexport {setPathPrefix, getPathPrefix, resolvePath} from './lib/path-utils/file-aliases';\nexport {addAliases as _addAliases} from './lib/path-utils/file-aliases';\n\n// MICRO LOADERS\nexport {JSONLoader} from './json-loader';\n\n// NODE support\n\n// Node.js emulation (can be used in browser)\n\n// `path` replacement (avoids bundling big path polyfill)\nimport * as path from './lib/path-utils/path';\nexport {path};\n\n// Avoid direct use of `Buffer` which pulls in 50KB polyfill\nexport {isBuffer, toBuffer, bufferToArrayBuffer} from './lib/binary-utils/buffer-utils';\n\n// Note.js wrappers (can be safely imported, but not used in browser)\n\n// Use instead of importing 'util'\nimport * as util from './lib/node/util';\nexport {util};\n// TODO - remove\nexport {promisify} from './lib/node/util';\n\n// Use instead of importing 'fs';`\nimport * as fs from './lib/node/fs';\nexport {fs};\n\n// EXPERIMENTAL\nexport {default as _NodeFileSystem} from './lib/filesystems/node-filesystem';\n"],"file":"index.js"}
@@ -11,7 +11,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
11
11
 
12
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
13
 
14
- var VERSION = typeof "3.2.0-alpha.1" !== 'undefined' ? "3.2.0-alpha.1" : 'latest';
14
+ var VERSION = typeof "3.2.0-alpha.4" !== 'undefined' ? "3.2.0-alpha.4" : 'latest';
15
15
  var JSONLoader = {
16
16
  name: 'JSON',
17
17
  id: 'json',
@@ -28,7 +28,7 @@ function createLoaderWorker(loader) {
28
28
 
29
29
  _workerUtils.WorkerBody.onmessage = function () {
30
30
  var _ref = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(type, payload) {
31
- var input, _payload$options, options, result, message;
31
+ var input, _payload$options, options, _payload$context, context, result, message;
32
32
 
33
33
  return _regenerator.default.wrap(function _callee$(_context) {
34
34
  while (1) {
@@ -40,15 +40,15 @@ function createLoaderWorker(loader) {
40
40
 
41
41
  case 3:
42
42
  _context.prev = 3;
43
- input = payload.input, _payload$options = payload.options, options = _payload$options === void 0 ? {} : _payload$options;
43
+ input = payload.input, _payload$options = payload.options, options = _payload$options === void 0 ? {} : _payload$options, _payload$context = payload.context, context = _payload$context === void 0 ? {} : _payload$context;
44
44
  _context.next = 7;
45
45
  return parseData({
46
46
  loader: loader,
47
47
  arrayBuffer: input,
48
48
  options: options,
49
- context: {
49
+ context: _objectSpread(_objectSpread({}, context), {}, {
50
50
  parse: parseOnMainThread
51
- }
51
+ })
52
52
  });
53
53
 
54
54
  case 7:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/worker-loader-utils/create-loader-worker.ts"],"names":["requestId","createLoaderWorker","loader","WorkerBody","inWorkerThread","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 (!WorkerBody.inWorkerThread()) {\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","WorkerBody","inWorkerThread","onmessage","type","payload","input","options","context","parseData","arrayBuffer","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 (!WorkerBody.inWorkerThread()) {\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 = {}, context = {}} = payload;\n\n const result = await parseData({\n loader,\n arrayBuffer: input,\n options,\n context: {\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"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.canEncodeWithWorker = canEncodeWithWorker;
7
+
8
+ var _workerUtils = require("@loaders.gl/worker-utils");
9
+
10
+ var _globals = require("../env-utils/globals");
11
+
12
+ function canEncodeWithWorker(writer, options) {
13
+ if (!_workerUtils.WorkerFarm.isSupported()) {
14
+ return false;
15
+ }
16
+
17
+ if (!_globals.isBrowser && !(options !== null && options !== void 0 && options._nodeWorkers)) {
18
+ return false;
19
+ }
20
+
21
+ return writer.worker && (options === null || options === void 0 ? void 0 : options.worker);
22
+ }
23
+ //# sourceMappingURL=encode-with-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/worker-loader-utils/encode-with-worker.ts"],"names":["canEncodeWithWorker","writer","options","WorkerFarm","isSupported","isBrowser","_nodeWorkers","worker"],"mappings":";;;;;;;AAAA;;AAEA;;AAOO,SAASA,mBAAT,CAA6BC,MAA7B,EAA6CC,OAA7C,EAAsE;AAC3E,MAAI,CAACC,wBAAWC,WAAX,EAAL,EAA+B;AAC7B,WAAO,KAAP;AACD;;AAGD,MAAI,CAACC,kBAAD,IAAc,EAACH,OAAD,aAACA,OAAD,eAACA,OAAO,CAAEI,YAAV,CAAlB,EAA0C;AACxC,WAAO,KAAP;AACD;;AAED,SAAOL,MAAM,CAACM,MAAP,KAAiBL,OAAjB,aAAiBA,OAAjB,uBAAiBA,OAAO,CAAEK,MAA1B,CAAP;AACD","sourcesContent":["import {WorkerFarm} from '@loaders.gl/worker-utils';\nimport {Writer, WriterOptions} from '../../types';\nimport {isBrowser} from '../env-utils/globals';\n\n/**\n * Determines if a loader can parse with worker\n * @param loader\n * @param options\n */\nexport function canEncodeWithWorker(writer: Writer, options?: WriterOptions) {\n if (!WorkerFarm.isSupported()) {\n return false;\n }\n\n // Node workers are still experimental\n if (!isBrowser && !options?._nodeWorkers) {\n return false;\n }\n\n return writer.worker && options?.worker;\n}\n"],"file":"encode-with-worker.js"}
@@ -45,27 +45,29 @@ function _parseWithWorker() {
45
45
  url: url
46
46
  });
47
47
  options = JSON.parse(JSON.stringify(options));
48
- _context.next = 7;
48
+ context = JSON.parse(JSON.stringify(context || {}));
49
+ _context.next = 8;
49
50
  return workerPool.startJob('process-on-worker', onMessage.bind(null, parseOnMainThread));
50
51
 
51
- case 7:
52
+ case 8:
52
53
  job = _context.sent;
53
54
  job.postMessage('process', {
54
55
  input: data,
55
- options: options
56
+ options: options,
57
+ context: context
56
58
  });
57
- _context.next = 11;
59
+ _context.next = 12;
58
60
  return job.result;
59
61
 
60
- case 11:
62
+ case 12:
61
63
  result = _context.sent;
62
- _context.next = 14;
64
+ _context.next = 15;
63
65
  return result.result;
64
66
 
65
- case 14:
67
+ case 15:
66
68
  return _context.abrupt("return", _context.sent);
67
69
 
68
- case 15:
70
+ case 16:
69
71
  case "end":
70
72
  return _context.stop();
71
73
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/worker-loader-utils/parse-with-worker.ts"],"names":["canParseWithWorker","loader","options","WorkerFarm","isSupported","isBrowser","_nodeWorkers","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","Error","message","console","warn"],"mappings":"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","sourcesContent":["import {\n WorkerJob,\n WorkerMessageType,\n WorkerMessagePayload,\n isBrowser\n} 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 // Node workers are still experimental\n if (!isBrowser && !options?._nodeWorkers) {\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
+ {"version":3,"sources":["../../../../src/lib/worker-loader-utils/parse-with-worker.ts"],"names":["canParseWithWorker","loader","options","WorkerFarm","isSupported","isBrowser","_nodeWorkers","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","Error","message","console","warn"],"mappings":"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","sourcesContent":["import {\n WorkerJob,\n WorkerMessageType,\n WorkerMessagePayload,\n isBrowser\n} 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 // Node workers are still experimental\n if (!isBrowser && !options?._nodeWorkers) {\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 // context.fetch & context.parse functions cannot be transferred\n // TODO - decide how to handle logging on workers\n options = JSON.parse(JSON.stringify(options));\n context = JSON.parse(JSON.stringify(context || {}));\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 context\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"}
package/dist/esm/index.js CHANGED
@@ -2,6 +2,7 @@ export { assert } from './lib/env-utils/assert';
2
2
  export { isBrowser, isWorker, nodeVersion, self, window, global, document } from './lib/env-utils/globals';
3
3
  export { createLoaderWorker } from './lib/worker-loader-utils/create-loader-worker';
4
4
  export { parseWithWorker, canParseWithWorker } from './lib/worker-loader-utils/parse-with-worker';
5
+ export { canEncodeWithWorker } from './lib/worker-loader-utils/encode-with-worker';
5
6
  export { parseJSON } from './lib/parser-utils/parse-json';
6
7
  export { toArrayBuffer, sliceArrayBuffer, concatenateArrayBuffers, concatenateTypedArrays, compareArrayBuffers } from './lib/binary-utils/array-buffer-utils';
7
8
  export { padToNBytes, copyToArray, copyArrayBuffer } from './lib/binary-utils/memory-copy-utils';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":["assert","isBrowser","isWorker","nodeVersion","self","window","global","document","createLoaderWorker","parseWithWorker","canParseWithWorker","parseJSON","toArrayBuffer","sliceArrayBuffer","concatenateArrayBuffers","concatenateTypedArrays","compareArrayBuffers","padToNBytes","copyToArray","copyArrayBuffer","copyPaddedArrayBufferToDataView","copyPaddedStringToDataView","padStringToByteAlignment","copyStringToDataView","copyBinaryToDataView","getFirstCharacters","getMagicString","makeTextEncoderIterator","makeTextDecoderIterator","makeLineIterator","makeNumberedLineIterator","forEach","concatenateArrayBuffersAsync","default","RequestScheduler","setPathPrefix","getPathPrefix","resolvePath","addAliases","_addAliases","JSONLoader","path","isBuffer","toBuffer","bufferToArrayBuffer","util","promisify","fs","_NodeFileSystem"],"mappings":"AAgBA,SAAQA,MAAR,QAAqB,wBAArB;AACA,SACEC,SADF,EAEEC,QAFF,EAGEC,WAHF,EAIEC,IAJF,EAKEC,MALF,EAMEC,MANF,EAOEC,QAPF,QAQO,yBARP;AAWA,SAAQC,kBAAR,QAAiC,gDAAjC;AACA,SAAQC,eAAR,EAAyBC,kBAAzB,QAAkD,6CAAlD;AAGA,SAAQC,SAAR,QAAwB,+BAAxB;AAGA,SACEC,aADF,EAEEC,gBAFF,EAGEC,uBAHF,EAIEC,sBAJF,EAKEC,mBALF,QAMO,uCANP;AAOA,SAAQC,WAAR,EAAqBC,WAArB,EAAkCC,eAAlC,QAAwD,sCAAxD;AACA,SACEC,+BADF,EAEEC,0BAFF,QAGO,sCAHP;AAIA,SACEC,wBADF,EAEEC,oBAFF,EAGEC,oBAHF,QAIO,iCAJP;AAKA,SAAQC,kBAAR,EAA4BC,cAA5B,QAAiD,yCAAjD;AAGA,SACEC,uBADF,EAEEC,uBAFF,EAGEC,gBAHF,EAIEC,wBAJF,QAKO,gCALP;AAMA,SAAQC,OAAR,EAAiBC,4BAAjB,QAAoD,iCAApD;AAGA,SAAQC,OAAO,IAAIC,gBAAnB,QAA0C,uCAA1C;AAGA,SAAQC,aAAR,EAAuBC,aAAvB,EAAsCC,WAAtC,QAAwD,+BAAxD;AACA,SAAQC,UAAU,IAAIC,WAAtB,QAAwC,+BAAxC;AAGA,SAAQC,UAAR,QAAyB,eAAzB;AAOA,OAAO,KAAKC,IAAZ,MAAsB,uBAAtB;AACA,SAAQA,IAAR;AAGA,SAAQC,QAAR,EAAkBC,QAAlB,EAA4BC,mBAA5B,QAAsD,iCAAtD;AAKA,OAAO,KAAKC,IAAZ,MAAsB,iBAAtB;AACA,SAAQA,IAAR;AAEA,SAAQC,SAAR,QAAwB,iBAAxB;AAGA,OAAO,KAAKC,EAAZ,MAAoB,eAApB;AACA,SAAQA,EAAR;AAGA,SAAQd,OAAO,IAAIe,eAAnB,QAAyC,mCAAzC","sourcesContent":["// TYPES\nexport type {\n Loader,\n LoaderWithParser,\n LoaderContext,\n LoaderOptions,\n Writer,\n WriterOptions,\n DataType,\n SyncDataType,\n BatchableDataType,\n IFileSystem,\n IRandomAccessReadFileSystem\n} from './types';\n\n// GENERAL UTILS\nexport {assert} from './lib/env-utils/assert';\nexport {\n isBrowser,\n isWorker,\n nodeVersion,\n self,\n window,\n global,\n document\n} from './lib/env-utils/globals';\n\n// LOADERS.GL-SPECIFIC WORKER UTILS\nexport {createLoaderWorker} from './lib/worker-loader-utils/create-loader-worker';\nexport {parseWithWorker, canParseWithWorker} from './lib/worker-loader-utils/parse-with-worker';\n\n// PARSER UTILS\nexport {parseJSON} from './lib/parser-utils/parse-json';\n\n// MEMORY COPY UTILS\nexport {\n toArrayBuffer,\n sliceArrayBuffer,\n concatenateArrayBuffers,\n concatenateTypedArrays,\n compareArrayBuffers\n} from './lib/binary-utils/array-buffer-utils';\nexport {padToNBytes, copyToArray, copyArrayBuffer} from './lib/binary-utils/memory-copy-utils';\nexport {\n copyPaddedArrayBufferToDataView,\n copyPaddedStringToDataView\n} from './lib/binary-utils/binary-copy-utils';\nexport {\n padStringToByteAlignment,\n copyStringToDataView,\n copyBinaryToDataView\n} from './lib/binary-utils/encode-utils';\nexport {getFirstCharacters, getMagicString} from './lib/binary-utils/get-first-characters';\n\n// ITERATOR UTILS\nexport {\n makeTextEncoderIterator,\n makeTextDecoderIterator,\n makeLineIterator,\n makeNumberedLineIterator\n} from './lib/iterators/text-iterators';\nexport {forEach, concatenateArrayBuffersAsync} from './lib/iterators/async-iteration';\n\n// REQUEST UTILS\nexport {default as RequestScheduler} from './lib/request-utils/request-scheduler';\n\n// PATH HELPERS\nexport {setPathPrefix, getPathPrefix, resolvePath} from './lib/path-utils/file-aliases';\nexport {addAliases as _addAliases} from './lib/path-utils/file-aliases';\n\n// MICRO LOADERS\nexport {JSONLoader} from './json-loader';\n\n// NODE support\n\n// Node.js emulation (can be used in browser)\n\n// `path` replacement (avoids bundling big path polyfill)\nimport * as path from './lib/path-utils/path';\nexport {path};\n\n// Avoid direct use of `Buffer` which pulls in 50KB polyfill\nexport {isBuffer, toBuffer, bufferToArrayBuffer} from './lib/binary-utils/buffer-utils';\n\n// Note.js wrappers (can be safely imported, but not used in browser)\n\n// Use instead of importing 'util'\nimport * as util from './lib/node/util';\nexport {util};\n// TODO - remove\nexport {promisify} from './lib/node/util';\n\n// Use instead of importing 'fs';`\nimport * as fs from './lib/node/fs';\nexport {fs};\n\n// EXPERIMENTAL\nexport {default as _NodeFileSystem} from './lib/filesystems/node-filesystem';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/index.ts"],"names":["assert","isBrowser","isWorker","nodeVersion","self","window","global","document","createLoaderWorker","parseWithWorker","canParseWithWorker","canEncodeWithWorker","parseJSON","toArrayBuffer","sliceArrayBuffer","concatenateArrayBuffers","concatenateTypedArrays","compareArrayBuffers","padToNBytes","copyToArray","copyArrayBuffer","copyPaddedArrayBufferToDataView","copyPaddedStringToDataView","padStringToByteAlignment","copyStringToDataView","copyBinaryToDataView","getFirstCharacters","getMagicString","makeTextEncoderIterator","makeTextDecoderIterator","makeLineIterator","makeNumberedLineIterator","forEach","concatenateArrayBuffersAsync","default","RequestScheduler","setPathPrefix","getPathPrefix","resolvePath","addAliases","_addAliases","JSONLoader","path","isBuffer","toBuffer","bufferToArrayBuffer","util","promisify","fs","_NodeFileSystem"],"mappings":"AAgBA,SAAQA,MAAR,QAAqB,wBAArB;AACA,SACEC,SADF,EAEEC,QAFF,EAGEC,WAHF,EAIEC,IAJF,EAKEC,MALF,EAMEC,MANF,EAOEC,QAPF,QAQO,yBARP;AAWA,SAAQC,kBAAR,QAAiC,gDAAjC;AACA,SAAQC,eAAR,EAAyBC,kBAAzB,QAAkD,6CAAlD;AACA,SAAQC,mBAAR,QAAkC,8CAAlC;AAGA,SAAQC,SAAR,QAAwB,+BAAxB;AAGA,SACEC,aADF,EAEEC,gBAFF,EAGEC,uBAHF,EAIEC,sBAJF,EAKEC,mBALF,QAMO,uCANP;AAOA,SAAQC,WAAR,EAAqBC,WAArB,EAAkCC,eAAlC,QAAwD,sCAAxD;AACA,SACEC,+BADF,EAEEC,0BAFF,QAGO,sCAHP;AAIA,SACEC,wBADF,EAEEC,oBAFF,EAGEC,oBAHF,QAIO,iCAJP;AAKA,SAAQC,kBAAR,EAA4BC,cAA5B,QAAiD,yCAAjD;AAGA,SACEC,uBADF,EAEEC,uBAFF,EAGEC,gBAHF,EAIEC,wBAJF,QAKO,gCALP;AAMA,SAAQC,OAAR,EAAiBC,4BAAjB,QAAoD,iCAApD;AAGA,SAAQC,OAAO,IAAIC,gBAAnB,QAA0C,uCAA1C;AAGA,SAAQC,aAAR,EAAuBC,aAAvB,EAAsCC,WAAtC,QAAwD,+BAAxD;AACA,SAAQC,UAAU,IAAIC,WAAtB,QAAwC,+BAAxC;AAGA,SAAQC,UAAR,QAAyB,eAAzB;AAOA,OAAO,KAAKC,IAAZ,MAAsB,uBAAtB;AACA,SAAQA,IAAR;AAGA,SAAQC,QAAR,EAAkBC,QAAlB,EAA4BC,mBAA5B,QAAsD,iCAAtD;AAKA,OAAO,KAAKC,IAAZ,MAAsB,iBAAtB;AACA,SAAQA,IAAR;AAEA,SAAQC,SAAR,QAAwB,iBAAxB;AAGA,OAAO,KAAKC,EAAZ,MAAoB,eAApB;AACA,SAAQA,EAAR;AAGA,SAAQd,OAAO,IAAIe,eAAnB,QAAyC,mCAAzC","sourcesContent":["// TYPES\nexport type {\n Loader,\n LoaderWithParser,\n LoaderContext,\n LoaderOptions,\n Writer,\n WriterOptions,\n DataType,\n SyncDataType,\n BatchableDataType,\n IFileSystem,\n IRandomAccessReadFileSystem\n} from './types';\n\n// GENERAL UTILS\nexport {assert} from './lib/env-utils/assert';\nexport {\n isBrowser,\n isWorker,\n nodeVersion,\n self,\n window,\n global,\n document\n} from './lib/env-utils/globals';\n\n// LOADERS.GL-SPECIFIC WORKER UTILS\nexport {createLoaderWorker} from './lib/worker-loader-utils/create-loader-worker';\nexport {parseWithWorker, canParseWithWorker} from './lib/worker-loader-utils/parse-with-worker';\nexport {canEncodeWithWorker} from './lib/worker-loader-utils/encode-with-worker';\n\n// PARSER UTILS\nexport {parseJSON} from './lib/parser-utils/parse-json';\n\n// MEMORY COPY UTILS\nexport {\n toArrayBuffer,\n sliceArrayBuffer,\n concatenateArrayBuffers,\n concatenateTypedArrays,\n compareArrayBuffers\n} from './lib/binary-utils/array-buffer-utils';\nexport {padToNBytes, copyToArray, copyArrayBuffer} from './lib/binary-utils/memory-copy-utils';\nexport {\n copyPaddedArrayBufferToDataView,\n copyPaddedStringToDataView\n} from './lib/binary-utils/binary-copy-utils';\nexport {\n padStringToByteAlignment,\n copyStringToDataView,\n copyBinaryToDataView\n} from './lib/binary-utils/encode-utils';\nexport {getFirstCharacters, getMagicString} from './lib/binary-utils/get-first-characters';\n\n// ITERATOR UTILS\nexport {\n makeTextEncoderIterator,\n makeTextDecoderIterator,\n makeLineIterator,\n makeNumberedLineIterator\n} from './lib/iterators/text-iterators';\nexport {forEach, concatenateArrayBuffersAsync} from './lib/iterators/async-iteration';\n\n// REQUEST UTILS\nexport {default as RequestScheduler} from './lib/request-utils/request-scheduler';\n\n// PATH HELPERS\nexport {setPathPrefix, getPathPrefix, resolvePath} from './lib/path-utils/file-aliases';\nexport {addAliases as _addAliases} from './lib/path-utils/file-aliases';\n\n// MICRO LOADERS\nexport {JSONLoader} from './json-loader';\n\n// NODE support\n\n// Node.js emulation (can be used in browser)\n\n// `path` replacement (avoids bundling big path polyfill)\nimport * as path from './lib/path-utils/path';\nexport {path};\n\n// Avoid direct use of `Buffer` which pulls in 50KB polyfill\nexport {isBuffer, toBuffer, bufferToArrayBuffer} from './lib/binary-utils/buffer-utils';\n\n// Note.js wrappers (can be safely imported, but not used in browser)\n\n// Use instead of importing 'util'\nimport * as util from './lib/node/util';\nexport {util};\n// TODO - remove\nexport {promisify} from './lib/node/util';\n\n// Use instead of importing 'fs';`\nimport * as fs from './lib/node/fs';\nexport {fs};\n\n// EXPERIMENTAL\nexport {default as _NodeFileSystem} from './lib/filesystems/node-filesystem';\n"],"file":"index.js"}
@@ -1,4 +1,4 @@
1
- const VERSION = typeof "3.2.0-alpha.1" !== 'undefined' ? "3.2.0-alpha.1" : 'latest';
1
+ const VERSION = typeof "3.2.0-alpha.4" !== 'undefined' ? "3.2.0-alpha.4" : 'latest';
2
2
  export const JSONLoader = {
3
3
  name: 'JSON',
4
4
  id: 'json',
@@ -11,13 +11,14 @@ export function createLoaderWorker(loader) {
11
11
  try {
12
12
  const {
13
13
  input,
14
- options = {}
14
+ options = {},
15
+ context = {}
15
16
  } = payload;
16
17
  const result = await parseData({
17
18
  loader,
18
19
  arrayBuffer: input,
19
20
  options,
20
- context: {
21
+ context: { ...context,
21
22
  parse: parseOnMainThread
22
23
  }
23
24
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/worker-loader-utils/create-loader-worker.ts"],"names":["WorkerBody","requestId","createLoaderWorker","loader","inWorkerThread","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 (!WorkerBody.inWorkerThread()) {\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","inWorkerThread","onmessage","type","payload","input","options","context","result","parseData","arrayBuffer","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,CAACH,UAAU,CAACI,cAAX,EAAL,EAAkC;AAChC;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,EAAlB;AAAsBC,YAAAA,OAAO,GAAG;AAAhC,cAAsCH,OAA5C;AAEA,gBAAMI,MAAM,GAAG,MAAMC,SAAS,CAAC;AAC7BT,YAAAA,MAD6B;AAE7BU,YAAAA,WAAW,EAAEL,KAFgB;AAG7BC,YAAAA,OAH6B;AAI7BC,YAAAA,OAAO,EAAE,EACP,GAAGA,OADI;AAEPI,cAAAA,KAAK,EAAEC;AAFA;AAJoB,WAAD,CAA9B;AASAf,UAAAA,UAAU,CAACgB,WAAX,CAAuB,MAAvB,EAA+B;AAACL,YAAAA;AAAD,WAA/B;AACD,SAfD,CAeE,OAAOM,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;AAtBF;AAwBD,GAzBD;AA0BD;;AAED,SAASH,iBAAT,CAA2BF,WAA3B,EAAqDJ,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,CAACI,MAAT,CAAP;AACA;;AAEF,aAAK,OAAL;AACEX,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,EAAEK,WAAZ;AAAyBJ,MAAAA;AAAzB,KAAhB;AACAT,IAAAA,UAAU,CAACgB,WAAX,CAAuB,SAAvB,EAAkCT,OAAlC;AACD,GAhCM,CAAP;AAiCD;;AAMD,eAAeK,SAAf,CAAyB;AAACT,EAAAA,MAAD;AAASU,EAAAA,WAAT;AAAsBJ,EAAAA,OAAtB;AAA+BC,EAAAA;AAA/B,CAAzB,EAAkE;AAChE,MAAIiB,IAAJ;AACA,MAAIC,MAAJ;;AACA,MAAIzB,MAAM,CAAC0B,SAAP,IAAoB1B,MAAM,CAACW,KAA/B,EAAsC;AACpCa,IAAAA,IAAI,GAAGd,WAAP;AACAe,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,CAAmBpB,WAAnB,CAAP;AACAe,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,EAAqBC,OAArB,EAA8BP,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 (!WorkerBody.inWorkerThread()) {\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 = {}, context = {}} = payload;\n\n const result = await parseData({\n loader,\n arrayBuffer: input,\n options,\n context: {\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"}
@@ -0,0 +1,14 @@
1
+ import { WorkerFarm } from '@loaders.gl/worker-utils';
2
+ import { isBrowser } from '../env-utils/globals';
3
+ export function canEncodeWithWorker(writer, options) {
4
+ if (!WorkerFarm.isSupported()) {
5
+ return false;
6
+ }
7
+
8
+ if (!isBrowser && !(options !== null && options !== void 0 && options._nodeWorkers)) {
9
+ return false;
10
+ }
11
+
12
+ return writer.worker && (options === null || options === void 0 ? void 0 : options.worker);
13
+ }
14
+ //# sourceMappingURL=encode-with-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/worker-loader-utils/encode-with-worker.ts"],"names":["WorkerFarm","isBrowser","canEncodeWithWorker","writer","options","isSupported","_nodeWorkers","worker"],"mappings":"AAAA,SAAQA,UAAR,QAAyB,0BAAzB;AAEA,SAAQC,SAAR,QAAwB,sBAAxB;AAOA,OAAO,SAASC,mBAAT,CAA6BC,MAA7B,EAA6CC,OAA7C,EAAsE;AAC3E,MAAI,CAACJ,UAAU,CAACK,WAAX,EAAL,EAA+B;AAC7B,WAAO,KAAP;AACD;;AAGD,MAAI,CAACJ,SAAD,IAAc,EAACG,OAAD,aAACA,OAAD,eAACA,OAAO,CAAEE,YAAV,CAAlB,EAA0C;AACxC,WAAO,KAAP;AACD;;AAED,SAAOH,MAAM,CAACI,MAAP,KAAiBH,OAAjB,aAAiBA,OAAjB,uBAAiBA,OAAO,CAAEG,MAA1B,CAAP;AACD","sourcesContent":["import {WorkerFarm} from '@loaders.gl/worker-utils';\nimport {Writer, WriterOptions} from '../../types';\nimport {isBrowser} from '../env-utils/globals';\n\n/**\n * Determines if a loader can parse with worker\n * @param loader\n * @param options\n */\nexport function canEncodeWithWorker(writer: Writer, options?: WriterOptions) {\n if (!WorkerFarm.isSupported()) {\n return false;\n }\n\n // Node workers are still experimental\n if (!isBrowser && !options?._nodeWorkers) {\n return false;\n }\n\n return writer.worker && options?.worker;\n}\n"],"file":"encode-with-worker.js"}
@@ -20,10 +20,12 @@ export async function parseWithWorker(loader, data, options, context, parseOnMai
20
20
  url
21
21
  });
22
22
  options = JSON.parse(JSON.stringify(options));
23
+ context = JSON.parse(JSON.stringify(context || {}));
23
24
  const job = await workerPool.startJob('process-on-worker', onMessage.bind(null, parseOnMainThread));
24
25
  job.postMessage('process', {
25
26
  input: data,
26
- options
27
+ options,
28
+ context
27
29
  });
28
30
  const result = await job.result;
29
31
  return await result.result;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/worker-loader-utils/parse-with-worker.ts"],"names":["isBrowser","WorkerFarm","getWorkerURL","canParseWithWorker","loader","options","isSupported","_nodeWorkers","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":"AAAA,SAIEA,SAJF,QAKO,0BALP;AAOA,SAAQC,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;;AAGD,MAAI,CAACN,SAAD,IAAc,EAACK,OAAD,aAACA,OAAD,eAACA,OAAO,CAAEE,YAAV,CAAlB,EAA0C;AACxC,WAAO,KAAP;AACD;;AAED,SAAOH,MAAM,CAACI,MAAP,KAAiBH,OAAjB,aAAiBA,OAAjB,uBAAiBA,OAAO,CAAEG,MAA1B,CAAP;AACD;AAMD,OAAO,eAAeC,eAAf,CACLL,MADK,EAELM,IAFK,EAGLL,OAHK,EAILM,OAJK,EAKLC,iBALK,EAML;AACA,QAAMC,IAAI,GAAGT,MAAM,CAACU,EAApB;AACA,QAAMC,GAAG,GAAGb,YAAY,CAACE,MAAD,EAASC,OAAT,CAAxB;AAEA,QAAMW,UAAU,GAAGf,UAAU,CAACgB,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 {\n WorkerJob,\n WorkerMessageType,\n WorkerMessagePayload,\n isBrowser\n} 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 // Node workers are still experimental\n if (!isBrowser && !options?._nodeWorkers) {\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
+ {"version":3,"sources":["../../../../src/lib/worker-loader-utils/parse-with-worker.ts"],"names":["isBrowser","WorkerFarm","getWorkerURL","canParseWithWorker","loader","options","isSupported","_nodeWorkers","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":"AAAA,SAIEA,SAJF,QAKO,0BALP;AAOA,SAAQC,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;;AAGD,MAAI,CAACN,SAAD,IAAc,EAACK,OAAD,aAACA,OAAD,eAACA,OAAO,CAAEE,YAAV,CAAlB,EAA0C;AACxC,WAAO,KAAP;AACD;;AAED,SAAOH,MAAM,CAACI,MAAP,KAAiBH,OAAjB,aAAiBA,OAAjB,uBAAiBA,OAAO,CAAEG,MAA1B,CAAP;AACD;AAMD,OAAO,eAAeC,eAAf,CACLL,MADK,EAELM,IAFK,EAGLL,OAHK,EAILM,OAJK,EAKLC,iBALK,EAML;AACA,QAAMC,IAAI,GAAGT,MAAM,CAACU,EAApB;AACA,QAAMC,GAAG,GAAGb,YAAY,CAACE,MAAD,EAASC,OAAT,CAAxB;AAEA,QAAMW,UAAU,GAAGf,UAAU,CAACgB,aAAX,CAAyBZ,OAAzB,CAAnB;AACA,QAAMa,UAAU,GAAGF,UAAU,CAACG,aAAX,CAAyB;AAACN,IAAAA,IAAD;AAAOE,IAAAA;AAAP,GAAzB,CAAnB;AAKAV,EAAAA,OAAO,GAAGe,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,SAAL,CAAejB,OAAf,CAAX,CAAV;AACAM,EAAAA,OAAO,GAAGS,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,SAAL,CAAeX,OAAO,IAAI,EAA1B,CAAX,CAAV;AAEA,QAAMY,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,OAHyB;AAIzBM,IAAAA;AAJyB,GAA3B;AAOA,QAAMkB,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 {\n WorkerJob,\n WorkerMessageType,\n WorkerMessagePayload,\n isBrowser\n} 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 // Node workers are still experimental\n if (!isBrowser && !options?._nodeWorkers) {\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 // context.fetch & context.parse functions cannot be transferred\n // TODO - decide how to handle logging on workers\n options = JSON.parse(JSON.stringify(options));\n context = JSON.parse(JSON.stringify(context || {}));\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 context\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"}
package/dist/index.d.ts CHANGED
@@ -3,6 +3,7 @@ export { assert } from './lib/env-utils/assert';
3
3
  export { isBrowser, isWorker, nodeVersion, self, window, global, document } from './lib/env-utils/globals';
4
4
  export { createLoaderWorker } from './lib/worker-loader-utils/create-loader-worker';
5
5
  export { parseWithWorker, canParseWithWorker } from './lib/worker-loader-utils/parse-with-worker';
6
+ export { canEncodeWithWorker } from './lib/worker-loader-utils/encode-with-worker';
6
7
  export { parseJSON } from './lib/parser-utils/parse-json';
7
8
  export { toArrayBuffer, sliceArrayBuffer, concatenateArrayBuffers, concatenateTypedArrays, compareArrayBuffers } from './lib/binary-utils/array-buffer-utils';
8
9
  export { padToNBytes, copyToArray, copyArrayBuffer } from './lib/binary-utils/memory-copy-utils';
@@ -1 +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"}
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;AAChG,OAAO,EAAC,mBAAmB,EAAC,MAAM,8CAA8C,CAAC;AAGjF,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 CHANGED
@@ -22,7 +22,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
22
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
23
23
  };
24
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;
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.canEncodeWithWorker = 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
26
  // GENERAL UTILS
27
27
  var assert_1 = require("./lib/env-utils/assert");
28
28
  Object.defineProperty(exports, "assert", { enumerable: true, get: function () { return assert_1.assert; } });
@@ -40,6 +40,8 @@ Object.defineProperty(exports, "createLoaderWorker", { enumerable: true, get: fu
40
40
  var parse_with_worker_1 = require("./lib/worker-loader-utils/parse-with-worker");
41
41
  Object.defineProperty(exports, "parseWithWorker", { enumerable: true, get: function () { return parse_with_worker_1.parseWithWorker; } });
42
42
  Object.defineProperty(exports, "canParseWithWorker", { enumerable: true, get: function () { return parse_with_worker_1.canParseWithWorker; } });
43
+ var encode_with_worker_1 = require("./lib/worker-loader-utils/encode-with-worker");
44
+ Object.defineProperty(exports, "canEncodeWithWorker", { enumerable: true, get: function () { return encode_with_worker_1.canEncodeWithWorker; } });
43
45
  // PARSER UTILS
44
46
  var parse_json_1 = require("./lib/parser-utils/parse-json");
45
47
  Object.defineProperty(exports, "parseJSON", { enumerable: true, get: function () { return parse_json_1.parseJSON; } });
@@ -1 +1 @@
1
- {"version":3,"file":"create-loader-worker.d.ts","sourceRoot":"","sources":["../../../src/lib/worker-loader-utils/create-loader-worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAMlD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,QA+B1D"}
1
+ {"version":3,"file":"create-loader-worker.d.ts","sourceRoot":"","sources":["../../../src/lib/worker-loader-utils/create-loader-worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAMlD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,QAgC1D"}
@@ -18,12 +18,13 @@ function createLoaderWorker(loader) {
18
18
  case 'process':
19
19
  try {
20
20
  // validateLoaderVersion(loader, data.source.split('@')[1]);
21
- const { input, options = {} } = payload;
21
+ const { input, options = {}, context = {} } = payload;
22
22
  const result = await parseData({
23
23
  loader,
24
24
  arrayBuffer: input,
25
25
  options,
26
26
  context: {
27
+ ...context,
27
28
  parse: parseOnMainThread
28
29
  }
29
30
  });
@@ -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":"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,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"}
@@ -29,8 +29,10 @@ async function parseWithWorker(loader, data, options, context, parseOnMainThread
29
29
  const workerFarm = worker_utils_2.WorkerFarm.getWorkerFarm(options);
30
30
  const workerPool = workerFarm.getWorkerPool({ name, url });
31
31
  // options.log object contains functions which cannot be transferred
32
+ // context.fetch & context.parse functions cannot be transferred
32
33
  // TODO - decide how to handle logging on workers
33
34
  options = JSON.parse(JSON.stringify(options));
35
+ context = JSON.parse(JSON.stringify(context || {}));
34
36
  const job = await workerPool.startJob('process-on-worker',
35
37
  // @ts-expect-error
36
38
  onMessage.bind(null, parseOnMainThread) // eslint-disable-line @typescript-eslint/no-misused-promises
@@ -38,7 +40,8 @@ async function parseWithWorker(loader, data, options, context, parseOnMainThread
38
40
  job.postMessage('process', {
39
41
  // @ts-ignore
40
42
  input: data,
41
- options
43
+ options,
44
+ context
42
45
  });
43
46
  const result = await job.result;
44
47
  // TODO - what is going on here?
package/dist/types.d.ts CHANGED
@@ -118,7 +118,12 @@ export declare type LoaderWithParser = Loader & {
118
118
  parseFileInBatches?: ParseFileInBatches;
119
119
  };
120
120
  /** Options for writers */
121
- export declare type WriterOptions = {};
121
+ export declare type WriterOptions = {
122
+ /** worker source. If is set will be used instead of loading worker from the Internet */
123
+ souce?: string | null;
124
+ /** writer-specific options */
125
+ [writerId: string]: any;
126
+ };
122
127
  /**
123
128
  * A writer definition that can be used with `@loaders.gl/core` functions
124
129
  */
@@ -127,7 +132,8 @@ export declare type Writer = {
127
132
  id: string;
128
133
  module: string;
129
134
  version: string;
130
- options: object;
135
+ worker?: string | boolean;
136
+ options: WriterOptions;
131
137
  deprecatedOptions?: object;
132
138
  binary?: boolean;
133
139
  extensions?: string[];
@@ -143,6 +149,7 @@ export declare type LoaderContext = {
143
149
  loaders?: Loader[] | null;
144
150
  url?: string;
145
151
  fetch: typeof fetch;
152
+ response?: Response;
146
153
  parse: (arrayBuffer: ArrayBuffer, loaders?: any, options?: LoaderOptions, context?: LoaderContext) => Promise<any>;
147
154
  parseSync?: (arrayBuffer: ArrayBuffer, loaders?: any, options?: LoaderOptions, context?: LoaderContext) => any;
148
155
  parseInBatches?: (iterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>, loaders?: any, options?: LoaderOptions, context?: LoaderContext) => AsyncIterable<any> | Promise<AsyncIterable<any>>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAEA,oBAAY,aAAa,GACrB,SAAS,GACT,UAAU,GACV,iBAAiB,GACjB,UAAU,GACV,WAAW,GACX,UAAU,GACV,WAAW,GACX,UAAU,GACV,WAAW,CAAC;AAEhB,oBAAY,eAAe,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,CAAC;AAExE,oBAAY,UAAU,GAAG,aAAa,GAAG,eAAe,CAAC;AAEzD,oBAAY,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,aAAa,GAAG,eAAe,CAAC;AAE3E,aAAK,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE3E;;GAEG;AACH,oBAAY,aAAa,GAAG;IAC1B,+CAA+C;IAC/C,KAAK,CAAC,EAAE,OAAO,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,IAAI,CAAC;IACtD,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAGlC,kDAAkD;IAClD,GAAG,CAAC,EAAE,GAAG,CAAC;IAIV,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,6CAA6C;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,gDAAgD;IAChD,QAAQ,CAAC,EAAE,CAAC,CAAC;IACb,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAIhC,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,mFAAmF;IACnF,SAAS,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,OAAO,CAAC;IACzC,yEAAyE;IACzE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,+CAA+C;IAC/C,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,uEAAuE;IACvE,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,yEAAyE;IACzE,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,mEAAmE;IACnE,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,mEAAmE;IACnE,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,iFAAiF;IACjF,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,qEAAqE;IACrE,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,uFAAuF;IACvF,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,uEAAuE;IACvE,MAAM,CAAC,EAAE,GAAG,CAAC;IAGb,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC;CACzB,CAAC;AAEF,aAAK,cAAc,GAAG;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,oBAAY,MAAM,GAAG;IAEnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAG3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAA,KAAK,OAAO,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC;IAG9D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,MAAM,KAAA,KAAK,OAAO,CAAC;CAChC,CAAC;AAEF;;;GAGG;AACH,oBAAY,gBAAgB,GAAG,MAAM,GAAG;IAEtC,QAAQ,CAAC,EAAE,CAAC,MAAM,KAAA,KAAK,OAAO,CAAC;IAE/B,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC,CAAC;AAEF,0BAA0B;AAC1B,oBAAY,aAAa,GAAG,EAAE,CAAC;AAE/B;;GAEG;AACH,oBAAY,MAAM,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IAEb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAEhB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAG3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,oBAAY,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,KAAK,EAAE,CACL,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,KAAA,EACR,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,aAAa,KACpB,OAAO,CAAC,GAAG,CAAC,CAAC;IAClB,SAAS,CAAC,EAAE,CACV,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,KAAA,EACR,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,aAAa,KACpB,GAAG,CAAC;IACT,cAAc,CAAC,EAAE,CACf,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,EAC5D,OAAO,CAAC,KAAA,EACR,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,aAAa,KACpB,aAAa,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;CACvD,CAAC;AAEF,aAAK,KAAK,GAAG,CACX,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,aAAa,KACpB,OAAO,CAAC,GAAG,CAAC,CAAC;AAClB,aAAK,SAAS,GAAG,CACf,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,aAAa,KACpB,GAAG,CAAC;AACT,aAAK,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AACzE,aAAK,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,GAAG,CAAC;AACpE,aAAK,cAAc,GAAG,CACpB,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,EAC5D,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,aAAa,KACpB,aAAa,CAAC,GAAG,CAAC,CAAC;AACxB,aAAK,kBAAkB,GAAG,CACxB,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,aAAa,KACpB,aAAa,CAAC,GAAG,CAAC,CAAC;AAExB,aAAK,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAC3E,aAAK,UAAU,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,WAAW,CAAC;AAEtE,aAAK,UAAU,GAAG,QAAQ,CAAC;AAC3B,aAAK,eAAe,GAAG,QAAQ,CAAC;AAChC,aAAK,cAAc,GAAG,CACpB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,aAAa,KACpB,OAAO,CAAC,MAAM,CAAC,CAAC;AACrB,aAAK,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,GAAG,CAAC;AAE9D,oBAAY,gBAAgB,GAAG,CAC7B,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,KAC9D,aAAa,CAAC,WAAW,CAAC,CAAC;AAEhC,6CAA6C;AAC7C,oBAAY,YAAY,GAAG,MAAM,GAAG,WAAW,CAAC;AAEhD,qCAAqC;AACrC,oBAAY,QAAQ,GAChB,MAAM,GACN,WAAW,GACX,IAAI,GACJ,IAAI,GACJ,QAAQ,GACR,cAAc,GACd,QAAQ,CAAC,WAAW,CAAC,GACrB,aAAa,CAAC,WAAW,CAAC,CAAC;AAE/B,0CAA0C;AAC1C,oBAAY,iBAAiB,GACzB,QAAQ,GACR,QAAQ,CAAC,WAAW,CAAC,GACrB,aAAa,CAAC,WAAW,CAAC,GAC1B,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE9E;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IAElE;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC9D;AAED,aAAK,WAAW,GAAG;IAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC;AAC/F,MAAM,WAAW,2BAA4B,SAAQ,WAAW;IAC9D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,KAAA,EAAE,IAAI,CAAC,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;CACpF"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/loader-utils",
3
- "version": "3.2.0-alpha.1",
3
+ "version": "3.2.0-alpha.4",
4
4
  "description": "Framework-independent loaders for 3D graphics formats",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -45,8 +45,8 @@
45
45
  "scripts": {},
46
46
  "dependencies": {
47
47
  "@babel/runtime": "^7.3.1",
48
- "@loaders.gl/worker-utils": "3.2.0-alpha.1",
48
+ "@loaders.gl/worker-utils": "3.2.0-alpha.4",
49
49
  "@probe.gl/stats": "^3.5.0"
50
50
  },
51
- "gitHead": "423a2815092b08dcf93ad5b7dc2940b167305afe"
51
+ "gitHead": "f030d39d5cdedb137e43e757a9da10dd637857fd"
52
52
  }
package/src/index.ts CHANGED
@@ -28,6 +28,7 @@ export {
28
28
  // LOADERS.GL-SPECIFIC WORKER UTILS
29
29
  export {createLoaderWorker} from './lib/worker-loader-utils/create-loader-worker';
30
30
  export {parseWithWorker, canParseWithWorker} from './lib/worker-loader-utils/parse-with-worker';
31
+ export {canEncodeWithWorker} from './lib/worker-loader-utils/encode-with-worker';
31
32
 
32
33
  // PARSER UTILS
33
34
  export {parseJSON} from './lib/parser-utils/parse-json';
@@ -21,13 +21,14 @@ export function createLoaderWorker(loader: LoaderWithParser) {
21
21
  try {
22
22
  // validateLoaderVersion(loader, data.source.split('@')[1]);
23
23
 
24
- const {input, options = {}} = payload;
24
+ const {input, options = {}, context = {}} = payload;
25
25
 
26
26
  const result = await parseData({
27
27
  loader,
28
28
  arrayBuffer: input,
29
29
  options,
30
30
  context: {
31
+ ...context,
31
32
  parse: parseOnMainThread
32
33
  }
33
34
  });
@@ -0,0 +1,21 @@
1
+ import {WorkerFarm} from '@loaders.gl/worker-utils';
2
+ import {Writer, WriterOptions} from '../../types';
3
+ import {isBrowser} from '../env-utils/globals';
4
+
5
+ /**
6
+ * Determines if a loader can parse with worker
7
+ * @param loader
8
+ * @param options
9
+ */
10
+ export function canEncodeWithWorker(writer: Writer, options?: WriterOptions) {
11
+ if (!WorkerFarm.isSupported()) {
12
+ return false;
13
+ }
14
+
15
+ // Node workers are still experimental
16
+ if (!isBrowser && !options?._nodeWorkers) {
17
+ return false;
18
+ }
19
+
20
+ return writer.worker && options?.worker;
21
+ }
@@ -43,8 +43,10 @@ export async function parseWithWorker(
43
43
  const workerPool = workerFarm.getWorkerPool({name, url});
44
44
 
45
45
  // options.log object contains functions which cannot be transferred
46
+ // context.fetch & context.parse functions cannot be transferred
46
47
  // TODO - decide how to handle logging on workers
47
48
  options = JSON.parse(JSON.stringify(options));
49
+ context = JSON.parse(JSON.stringify(context || {}));
48
50
 
49
51
  const job = await workerPool.startJob(
50
52
  'process-on-worker',
@@ -55,7 +57,8 @@ export async function parseWithWorker(
55
57
  job.postMessage('process', {
56
58
  // @ts-ignore
57
59
  input: data,
58
- options
60
+ options,
61
+ context
59
62
  });
60
63
 
61
64
  const result = await job.result;
package/src/types.ts CHANGED
@@ -158,7 +158,12 @@ export type LoaderWithParser = Loader & {
158
158
  };
159
159
 
160
160
  /** Options for writers */
161
- export type WriterOptions = {};
161
+ export type WriterOptions = {
162
+ /** worker source. If is set will be used instead of loading worker from the Internet */
163
+ souce?: string | null;
164
+ /** writer-specific options */
165
+ [writerId: string]: any;
166
+ };
162
167
 
163
168
  /**
164
169
  * A writer definition that can be used with `@loaders.gl/core` functions
@@ -169,8 +174,9 @@ export type Writer = {
169
174
  id: string;
170
175
  module: string;
171
176
  version: string;
177
+ worker?: string | boolean;
172
178
 
173
- options: object;
179
+ options: WriterOptions;
174
180
  deprecatedOptions?: object;
175
181
 
176
182
  // TODO - are these are needed?
@@ -191,6 +197,7 @@ export type LoaderContext = {
191
197
  url?: string;
192
198
 
193
199
  fetch: typeof fetch;
200
+ response?: Response;
194
201
  parse: (
195
202
  arrayBuffer: ArrayBuffer,
196
203
  loaders?,