@loaders.gl/core 3.1.7 → 3.2.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/dist.min.js +211 -54
  2. package/dist/es5/index.js +8 -2
  3. package/dist/es5/index.js.map +1 -1
  4. package/dist/es5/lib/api/encode.js +75 -50
  5. package/dist/es5/lib/api/encode.js.map +1 -1
  6. package/dist/es5/lib/api/loader-options.js +20 -0
  7. package/dist/es5/lib/api/loader-options.js.map +1 -0
  8. package/dist/es5/lib/api/select-loader.js.map +1 -1
  9. package/dist/es5/lib/init.js +1 -1
  10. package/dist/es5/lib/init.js.map +1 -1
  11. package/dist/es5/lib/loader-utils/option-defaults.js +4 -1
  12. package/dist/es5/lib/loader-utils/option-defaults.js.map +1 -1
  13. package/dist/es5/lib/loader-utils/option-utils.js +3 -0
  14. package/dist/es5/lib/loader-utils/option-utils.js.map +1 -1
  15. package/dist/es5/lib/utils/response-utils.js +2 -2
  16. package/dist/es5/lib/utils/response-utils.js.map +1 -1
  17. package/dist/es5/null-loader.js +1 -1
  18. package/dist/es5/null-loader.js.map +1 -1
  19. package/dist/esm/index.js +1 -1
  20. package/dist/esm/index.js.map +1 -1
  21. package/dist/esm/lib/api/encode.js +12 -0
  22. package/dist/esm/lib/api/encode.js.map +1 -1
  23. package/dist/esm/lib/api/loader-options.js +3 -0
  24. package/dist/esm/lib/api/loader-options.js.map +1 -0
  25. package/dist/esm/lib/api/select-loader.js.map +1 -1
  26. package/dist/esm/lib/init.js +1 -1
  27. package/dist/esm/lib/init.js.map +1 -1
  28. package/dist/esm/lib/loader-utils/option-defaults.js +3 -1
  29. package/dist/esm/lib/loader-utils/option-defaults.js.map +1 -1
  30. package/dist/esm/lib/loader-utils/option-utils.js +1 -3
  31. package/dist/esm/lib/loader-utils/option-utils.js.map +1 -1
  32. package/dist/esm/lib/utils/response-utils.js +2 -2
  33. package/dist/esm/lib/utils/response-utils.js.map +1 -1
  34. package/dist/esm/null-loader.js +1 -1
  35. package/dist/esm/null-loader.js.map +1 -1
  36. package/dist/index.d.ts +1 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +5 -4
  39. package/dist/lib/api/encode.d.ts +1 -1
  40. package/dist/lib/api/encode.d.ts.map +1 -1
  41. package/dist/lib/api/encode.js +13 -5
  42. package/dist/lib/api/loader-options.d.ts +3 -0
  43. package/dist/lib/api/loader-options.d.ts.map +1 -0
  44. package/dist/lib/api/loader-options.js +7 -0
  45. package/dist/lib/api/select-loader.js +1 -0
  46. package/dist/lib/loader-utils/option-defaults.d.ts.map +1 -1
  47. package/dist/lib/loader-utils/option-defaults.js +3 -1
  48. package/dist/lib/loader-utils/option-utils.d.ts +8 -0
  49. package/dist/lib/loader-utils/option-utils.d.ts.map +1 -1
  50. package/dist/lib/loader-utils/option-utils.js +10 -6
  51. package/dist/lib/utils/response-utils.js +2 -2
  52. package/dist/null-worker.js +46 -15
  53. package/package.json +6 -4
  54. package/src/index.ts +1 -1
  55. package/src/lib/api/encode.ts +9 -1
  56. package/src/lib/api/loader-options.ts +2 -0
  57. package/src/lib/api/select-loader.ts +1 -0
  58. package/src/lib/loader-utils/option-defaults.ts +3 -1
  59. package/src/lib/loader-utils/option-utils.ts +6 -3
  60. package/src/lib/utils/response-utils.ts +2 -2
  61. package/dist/es5/lib/api/set-loader-options.js +0 -13
  62. package/dist/es5/lib/api/set-loader-options.js.map +0 -1
  63. package/dist/esm/lib/api/set-loader-options.js +0 -5
  64. package/dist/esm/lib/api/set-loader-options.js.map +0 -1
  65. package/dist/lib/api/set-loader-options.d.ts +0 -6
  66. package/dist/lib/api/set-loader-options.d.ts.map +0 -1
  67. package/dist/lib/api/set-loader-options.js +0 -12
  68. package/src/lib/api/set-loader-options.ts +0 -9
@@ -2,13 +2,21 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.encodeURLtoURL = exports.encodeInBatches = exports.encodeText = exports.encodeSync = exports.encode = void 0;
4
4
  const loader_utils_1 = require("@loaders.gl/loader-utils");
5
+ const worker_utils_1 = require("@loaders.gl/worker-utils");
5
6
  const loader_utils_2 = require("@loaders.gl/loader-utils");
7
+ const loader_utils_3 = require("@loaders.gl/loader-utils");
6
8
  const write_file_1 = require("../fetch/write-file");
7
9
  const fetch_file_1 = require("../fetch/fetch-file");
10
+ const loader_options_1 = require("./loader-options");
8
11
  /**
9
12
  * Encode loaded data into a binary ArrayBuffer using the specified Writer.
10
13
  */
11
14
  async function encode(data, writer, options) {
15
+ const globalOptions = (0, loader_options_1.getLoaderOptions)();
16
+ options = { ...globalOptions, ...options };
17
+ if ((0, loader_utils_1.canEncodeWithWorker)(writer, options)) {
18
+ return await (0, worker_utils_1.processOnWorker)(writer, data, options);
19
+ }
12
20
  // TODO Merge default writer options with options argument like it is done in load module.
13
21
  if (writer.encode) {
14
22
  return await writer.encode(data, options);
@@ -29,9 +37,9 @@ async function encode(data, writer, options) {
29
37
  chunks.push(batch);
30
38
  }
31
39
  // @ts-ignore
32
- return (0, loader_utils_1.concatenateArrayBuffers)(...chunks);
40
+ return (0, loader_utils_2.concatenateArrayBuffers)(...chunks);
33
41
  }
34
- if (!loader_utils_2.isBrowser && writer.encodeURLtoURL) {
42
+ if (!loader_utils_3.isBrowser && writer.encodeURLtoURL) {
35
43
  // TODO - how to generate filenames with correct extensions?
36
44
  const tmpInputFilename = getTemporaryFilename('input');
37
45
  await (0, write_file_1.writeFile)(tmpInputFilename, data);
@@ -87,9 +95,9 @@ exports.encodeInBatches = encodeInBatches;
87
95
  * @note Node.js only. This function enables using command-line converters as "writers".
88
96
  */
89
97
  async function encodeURLtoURL(inputUrl, outputUrl, writer, options) {
90
- inputUrl = (0, loader_utils_1.resolvePath)(inputUrl);
91
- outputUrl = (0, loader_utils_1.resolvePath)(outputUrl);
92
- if (loader_utils_2.isBrowser || !writer.encodeURLtoURL) {
98
+ inputUrl = (0, loader_utils_2.resolvePath)(inputUrl);
99
+ outputUrl = (0, loader_utils_2.resolvePath)(outputUrl);
100
+ if (loader_utils_3.isBrowser || !writer.encodeURLtoURL) {
93
101
  throw new Error();
94
102
  }
95
103
  const outputFilename = await writer.encodeURLtoURL(inputUrl, outputUrl, options);
@@ -0,0 +1,3 @@
1
+ export { setGlobalOptions as setLoaderOptions } from '../loader-utils/option-utils';
2
+ export { getGlobalLoaderOptions as getLoaderOptions } from '../loader-utils/option-utils';
3
+ //# sourceMappingURL=loader-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader-options.d.ts","sourceRoot":"","sources":["../../../src/lib/api/loader-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,IAAI,gBAAgB,EAAC,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAC,sBAAsB,IAAI,gBAAgB,EAAC,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getLoaderOptions = exports.setLoaderOptions = void 0;
4
+ var option_utils_1 = require("../loader-utils/option-utils");
5
+ Object.defineProperty(exports, "setLoaderOptions", { enumerable: true, get: function () { return option_utils_1.setGlobalOptions; } });
6
+ var option_utils_2 = require("../loader-utils/option-utils");
7
+ Object.defineProperty(exports, "getLoaderOptions", { enumerable: true, get: function () { return option_utils_2.getGlobalLoaderOptions; } });
@@ -83,6 +83,7 @@ function selectLoaderSync(data, loaders = [], options, context) {
83
83
  }
84
84
  exports.selectLoaderSync = selectLoaderSync;
85
85
  /** Implements loaders selection logic */
86
+ // eslint-disable-next-line complexity
86
87
  function selectLoaderInternal(data, loaders, options, context) {
87
88
  const { url, type } = (0, resource_utils_1.getResourceUrlAndType)(data);
88
89
  const testUrl = url || context?.url;
@@ -1 +1 @@
1
- {"version":3,"file":"option-defaults.d.ts","sourceRoot":"","sources":["../../../src/lib/loader-utils/option-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAG5D,eAAO,MAAM,sBAAsB,EAAE,aAoBpC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;CAiBlC,CAAC"}
1
+ {"version":3,"file":"option-defaults.d.ts","sourceRoot":"","sources":["../../../src/lib/loader-utils/option-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAI5D,eAAO,MAAM,sBAAsB,EAAE,aAqBpC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;CAiBlC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.REMOVED_LOADER_OPTIONS = exports.DEFAULT_LOADER_OPTIONS = void 0;
4
+ const loader_utils_1 = require("@loaders.gl/loader-utils");
4
5
  const loggers_1 = require("./loggers");
5
6
  exports.DEFAULT_LOADER_OPTIONS = {
6
7
  // baseUri
@@ -12,7 +13,8 @@ exports.DEFAULT_LOADER_OPTIONS = {
12
13
  worker: true,
13
14
  maxConcurrency: 3,
14
15
  maxMobileConcurrency: 1,
15
- reuseWorkers: true,
16
+ reuseWorkers: loader_utils_1.isBrowser,
17
+ _nodeWorkers: false,
16
18
  _workerType: '',
17
19
  limit: 0,
18
20
  _limitMB: 0,
@@ -13,6 +13,14 @@ declare type GlobalLoaderState = {
13
13
  * Wraps initialization of global variable in function to defeat overly aggressive tree-shakers
14
14
  */
15
15
  export declare function getGlobalLoaderState(): GlobalLoaderState;
16
+ /**
17
+ * Store global loader options on the global object to increase chances of cross loaders-version interoperability
18
+ * NOTE: This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks
19
+ * @returns global loader options merged with default loader options
20
+ */
21
+ export declare const getGlobalLoaderOptions: () => {
22
+ [key: string]: any;
23
+ };
16
24
  /**
17
25
  * Set global loader options
18
26
  * @param options
@@ -1 +1 @@
1
- {"version":3,"file":"option-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/loader-utils/option-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAKnF;;GAEG;AACH,aAAK,iBAAiB,GAAG;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CASxD;AAWD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAItD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAAE,EAClB,GAAG,CAAC,EAAE,MAAM,GACX,MAAM,CAMR;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,OAuB/E"}
1
+ {"version":3,"file":"option-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/loader-utils/option-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAKnF;;GAEG;AACH,aAAK,iBAAiB,GAAG;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CASxD;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;CAKlC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAItD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAAE,EAClB,GAAG,CAAC,EAAE,MAAM,GACX,MAAM,CAMR;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,OAuB/E"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getFetchFunction = exports.normalizeOptions = exports.setGlobalOptions = exports.getGlobalLoaderState = void 0;
3
+ exports.getFetchFunction = exports.normalizeOptions = exports.setGlobalOptions = exports.getGlobalLoaderOptions = exports.getGlobalLoaderState = void 0;
4
4
  const is_type_1 = require("../../javascript-utils/is-type");
5
5
  const fetch_file_1 = require("../fetch/fetch-file");
6
6
  const loggers_1 = require("./loggers");
@@ -19,21 +19,25 @@ function getGlobalLoaderState() {
19
19
  return loaders._state;
20
20
  }
21
21
  exports.getGlobalLoaderState = getGlobalLoaderState;
22
- // Store global loader options on the global object to increase chances of cross loaders-version interoperability
23
- // NOTE: This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks
22
+ /**
23
+ * Store global loader options on the global object to increase chances of cross loaders-version interoperability
24
+ * NOTE: This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks
25
+ * @returns global loader options merged with default loader options
26
+ */
24
27
  const getGlobalLoaderOptions = () => {
25
28
  const state = getGlobalLoaderState();
26
29
  // Ensure all default loader options from this library are mentioned
27
30
  state.globalOptions = state.globalOptions || { ...option_defaults_1.DEFAULT_LOADER_OPTIONS };
28
31
  return state.globalOptions;
29
32
  };
33
+ exports.getGlobalLoaderOptions = getGlobalLoaderOptions;
30
34
  /**
31
35
  * Set global loader options
32
36
  * @param options
33
37
  */
34
38
  function setGlobalOptions(options) {
35
39
  const state = getGlobalLoaderState();
36
- const globalOptions = getGlobalLoaderOptions();
40
+ const globalOptions = (0, exports.getGlobalLoaderOptions)();
37
41
  state.globalOptions = normalizeOptionsInternal(globalOptions, options);
38
42
  }
39
43
  exports.setGlobalOptions = setGlobalOptions;
@@ -57,7 +61,7 @@ exports.normalizeOptions = normalizeOptions;
57
61
  * @param context
58
62
  */
59
63
  function getFetchFunction(options, context) {
60
- const globalOptions = getGlobalLoaderOptions();
64
+ const globalOptions = (0, exports.getGlobalLoaderOptions)();
61
65
  const fetchOptions = options || globalOptions;
62
66
  // options.fetch can be a function
63
67
  if (typeof fetchOptions.fetch === 'function') {
@@ -141,7 +145,7 @@ function normalizeOptionsInternal(loader, options, url) {
141
145
  if (mergedOptions.log === null) {
142
146
  mergedOptions.log = new loggers_1.NullLog();
143
147
  }
144
- mergeNestedFields(mergedOptions, getGlobalLoaderOptions());
148
+ mergeNestedFields(mergedOptions, (0, exports.getGlobalLoaderOptions)());
145
149
  mergeNestedFields(mergedOptions, options);
146
150
  return mergedOptions;
147
151
  }
@@ -61,7 +61,7 @@ exports.checkResponse = checkResponse;
61
61
  function checkResponseSync(response) {
62
62
  if (!response.ok) {
63
63
  let message = `${response.status} ${response.statusText}`;
64
- message = message.length > 60 ? `${message.slice(60)}...` : message;
64
+ message = message.length > 60 ? `${message.slice(0, 60)}...` : message;
65
65
  throw new Error(message);
66
66
  }
67
67
  }
@@ -76,7 +76,7 @@ async function getResponseError(response) {
76
76
  text += ` ${await response.text()}`;
77
77
  }
78
78
  message += text;
79
- message = message.length > 60 ? `${message.slice(60)}...` : message;
79
+ message = message.length > 60 ? `${message.slice(0, 60)}...` : message;
80
80
  }
81
81
  catch (error) {
82
82
  // eslint forbids return in a finally statement, so we just catch here
@@ -35,16 +35,33 @@
35
35
  }
36
36
 
37
37
  // ../worker-utils/src/lib/worker-farm/worker-body.ts
38
+ function getParentPort() {
39
+ let parentPort;
40
+ try {
41
+ eval("globalThis.parentPort = require('worker_threads').parentPort");
42
+ parentPort = globalThis.parentPort;
43
+ } catch {
44
+ }
45
+ return parentPort;
46
+ }
38
47
  var onMessageWrapperMap = new Map();
39
48
  var WorkerBody = class {
49
+ static inWorkerThread() {
50
+ return typeof self !== "undefined" || Boolean(getParentPort());
51
+ }
40
52
  static set onmessage(onMessage) {
41
- self.onmessage = (message) => {
42
- if (!isKnownMessage(message)) {
43
- return;
44
- }
45
- const { type, payload } = message.data;
53
+ function handleMessage(message) {
54
+ const parentPort3 = getParentPort();
55
+ const { type, payload } = parentPort3 ? message : message.data;
46
56
  onMessage(type, payload);
47
- };
57
+ }
58
+ const parentPort2 = getParentPort();
59
+ if (parentPort2) {
60
+ parentPort2.on("message", handleMessage);
61
+ parentPort2.on("exit", () => console.debug("Node worker closing"));
62
+ } else {
63
+ globalThis.onmessage = handleMessage;
64
+ }
48
65
  }
49
66
  static addEventListener(onMessage) {
50
67
  let onMessageWrapper = onMessageWrapperMap.get(onMessage);
@@ -53,22 +70,36 @@
53
70
  if (!isKnownMessage(message)) {
54
71
  return;
55
72
  }
56
- const { type, payload } = message.data;
73
+ const parentPort3 = getParentPort();
74
+ const { type, payload } = parentPort3 ? message : message.data;
57
75
  onMessage(type, payload);
58
76
  };
59
77
  }
60
- self.addEventListener("message", onMessageWrapper);
78
+ const parentPort2 = getParentPort();
79
+ if (parentPort2) {
80
+ console.error("not implemented");
81
+ } else {
82
+ globalThis.addEventListener("message", onMessageWrapper);
83
+ }
61
84
  }
62
85
  static removeEventListener(onMessage) {
63
86
  const onMessageWrapper = onMessageWrapperMap.get(onMessage);
64
87
  onMessageWrapperMap.delete(onMessage);
65
- self.removeEventListener("message", onMessageWrapper);
88
+ const parentPort2 = getParentPort();
89
+ if (parentPort2) {
90
+ console.error("not implemented");
91
+ } else {
92
+ globalThis.removeEventListener("message", onMessageWrapper);
93
+ }
66
94
  }
67
95
  static postMessage(type, payload) {
68
- if (self) {
69
- const data = { source: "loaders.gl", type, payload };
70
- const transferList = getTransferList(payload);
71
- self.postMessage(data, transferList);
96
+ const data = { source: "loaders.gl", type, payload };
97
+ const transferList = getTransferList(payload);
98
+ const parentPort2 = getParentPort();
99
+ if (parentPort2) {
100
+ parentPort2.postMessage(data, transferList);
101
+ } else {
102
+ globalThis.postMessage(data, transferList);
72
103
  }
73
104
  }
74
105
  };
@@ -80,7 +111,7 @@
80
111
  // ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
81
112
  var requestId = 0;
82
113
  function createLoaderWorker(loader) {
83
- if (typeof self === "undefined") {
114
+ if (!WorkerBody.inWorkerThread()) {
84
115
  return;
85
116
  }
86
117
  WorkerBody.onmessage = async (type, payload) => {
@@ -152,7 +183,7 @@
152
183
  }
153
184
 
154
185
  // src/null-loader.ts
155
- var VERSION = true ? "3.1.7" : "latest";
186
+ var VERSION = true ? "3.2.0-alpha.2" : "latest";
156
187
  var NullLoader = {
157
188
  name: "Null loader",
158
189
  id: "null",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/core",
3
- "version": "3.1.7",
3
+ "version": "3.2.0-alpha.2",
4
4
  "description": "Framework-independent loaders for 3D graphics formats",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -25,6 +25,8 @@
25
25
  "fs": false,
26
26
  "stream": false,
27
27
  "./src/iterators/make-stream/make-node-stream.ts": "./src/iterators/make-stream/make-dom-stream.ts",
28
+ "./src/iterators/make-stream/make-node-stream.js": "./src/iterators/make-stream/make-dom-stream.js",
29
+ "./dist/iterators/make-stream/make-node-stream.js": "./dist/iterators/make-stream/make-dom-stream.js",
28
30
  "./dist/es5/iterators/make-stream/make-node-stream.js": "./dist/es5/iterators/make-stream/make-dom-stream.js",
29
31
  "./dist/esm/iterators/make-stream/make-node-stream.js": "./dist/esm/iterators/make-stream/make-dom-stream.js"
30
32
  },
@@ -40,10 +42,10 @@
40
42
  },
41
43
  "dependencies": {
42
44
  "@babel/runtime": "^7.3.1",
43
- "@loaders.gl/loader-utils": "3.1.7",
44
- "@loaders.gl/worker-utils": "3.1.7",
45
+ "@loaders.gl/loader-utils": "3.2.0-alpha.2",
46
+ "@loaders.gl/worker-utils": "3.2.0-alpha.2",
45
47
  "@probe.gl/log": "^3.5.0",
46
48
  "probe.gl": "^3.4.0"
47
49
  },
48
- "gitHead": "e48d29e426e9f23879875763e73efc5c58345be1"
50
+ "gitHead": "52a602739cbfce60fc314f474efc984d199dff78"
49
51
  }
package/src/index.ts CHANGED
@@ -6,7 +6,7 @@ export {readFileSync} from './lib/fetch/read-file';
6
6
  export {writeFile, writeFileSync} from './lib/fetch/write-file';
7
7
 
8
8
  // CONFIGURATION
9
- export {setLoaderOptions} from './lib/api/set-loader-options';
9
+ export {setLoaderOptions, getLoaderOptions} from './lib/api/loader-options';
10
10
  export {registerLoaders} from './lib/api/register-loaders';
11
11
  export {selectLoader, selectLoaderSync} from './lib/api/select-loader';
12
12
 
@@ -1,8 +1,10 @@
1
- import type {Writer, LoaderOptions} from '@loaders.gl/loader-utils';
1
+ import {Writer, LoaderOptions, canEncodeWithWorker} from '@loaders.gl/loader-utils';
2
+ import {processOnWorker} from '@loaders.gl/worker-utils';
2
3
  import {concatenateArrayBuffers, resolvePath} from '@loaders.gl/loader-utils';
3
4
  import {isBrowser} from '@loaders.gl/loader-utils';
4
5
  import {writeFile} from '../fetch/write-file';
5
6
  import {fetchFile} from '../fetch/fetch-file';
7
+ import {getLoaderOptions} from './loader-options';
6
8
 
7
9
  /**
8
10
  * Encode loaded data into a binary ArrayBuffer using the specified Writer.
@@ -12,6 +14,12 @@ export async function encode(
12
14
  writer: Writer,
13
15
  options?: LoaderOptions
14
16
  ): Promise<ArrayBuffer> {
17
+ const globalOptions = getLoaderOptions();
18
+ options = {...globalOptions, ...options};
19
+ if (canEncodeWithWorker(writer, options)) {
20
+ return await processOnWorker(writer, data, options);
21
+ }
22
+
15
23
  // TODO Merge default writer options with options argument like it is done in load module.
16
24
  if (writer.encode) {
17
25
  return await writer.encode(data, options);
@@ -0,0 +1,2 @@
1
+ export {setGlobalOptions as setLoaderOptions} from '../loader-utils/option-utils';
2
+ export {getGlobalLoaderOptions as getLoaderOptions} from '../loader-utils/option-utils';
@@ -104,6 +104,7 @@ export function selectLoaderSync(
104
104
  }
105
105
 
106
106
  /** Implements loaders selection logic */
107
+ // eslint-disable-next-line complexity
107
108
  function selectLoaderInternal(
108
109
  data: Response | Blob | ArrayBuffer | string,
109
110
  loaders: Loader[],
@@ -1,4 +1,5 @@
1
1
  import type {LoaderOptions} from '@loaders.gl/loader-utils';
2
+ import {isBrowser} from '@loaders.gl/loader-utils';
2
3
  import {ConsoleLog} from './loggers';
3
4
 
4
5
  export const DEFAULT_LOADER_OPTIONS: LoaderOptions = {
@@ -12,7 +13,8 @@ export const DEFAULT_LOADER_OPTIONS: LoaderOptions = {
12
13
  worker: true, // By default, use worker if provided by loader.
13
14
  maxConcurrency: 3, // How many worker instances should be created for each loader.
14
15
  maxMobileConcurrency: 1, // How many worker instances should be created for each loader on mobile devices.
15
- reuseWorkers: true, // By default reuse workers,
16
+ reuseWorkers: isBrowser, // By default reuse workers in browser (Node.js refuses to terminate if browsers are running)
17
+ _nodeWorkers: false, // By default do not support node workers
16
18
  _workerType: '', // 'test' to use locally generated workers
17
19
 
18
20
  limit: 0,
@@ -26,9 +26,12 @@ export function getGlobalLoaderState(): GlobalLoaderState {
26
26
  return loaders._state;
27
27
  }
28
28
 
29
- // Store global loader options on the global object to increase chances of cross loaders-version interoperability
30
- // NOTE: This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks
31
- const getGlobalLoaderOptions = () => {
29
+ /**
30
+ * Store global loader options on the global object to increase chances of cross loaders-version interoperability
31
+ * NOTE: This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks
32
+ * @returns global loader options merged with default loader options
33
+ */
34
+ export const getGlobalLoaderOptions = () => {
32
35
  const state = getGlobalLoaderState();
33
36
  // Ensure all default loader options from this library are mentioned
34
37
  state.globalOptions = state.globalOptions || {...DEFAULT_LOADER_OPTIONS};
@@ -65,7 +65,7 @@ export async function checkResponse(response: Response): Promise<void> {
65
65
  export function checkResponseSync(response: Response): void {
66
66
  if (!response.ok) {
67
67
  let message = `${response.status} ${response.statusText}`;
68
- message = message.length > 60 ? `${message.slice(60)}...` : message;
68
+ message = message.length > 60 ? `${message.slice(0, 60)}...` : message;
69
69
  throw new Error(message);
70
70
  }
71
71
  }
@@ -81,7 +81,7 @@ async function getResponseError(response): Promise<string> {
81
81
  text += ` ${await response.text()}`;
82
82
  }
83
83
  message += text;
84
- message = message.length > 60 ? `${message.slice(60)}...` : message;
84
+ message = message.length > 60 ? `${message.slice(0, 60)}...` : message;
85
85
  } catch (error) {
86
86
  // eslint forbids return in a finally statement, so we just catch here
87
87
  }
@@ -1,13 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.setLoaderOptions = setLoaderOptions;
7
-
8
- var _optionUtils = require("../loader-utils/option-utils");
9
-
10
- function setLoaderOptions(options) {
11
- (0, _optionUtils.setGlobalOptions)(options);
12
- }
13
- //# sourceMappingURL=set-loader-options.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/api/set-loader-options.ts"],"names":["setLoaderOptions","options"],"mappings":";;;;;;;AAAA;;AAMO,SAASA,gBAAT,CAA0BC,OAA1B,EAAiD;AACtD,qCAAiBA,OAAjB;AACD","sourcesContent":["import {setGlobalOptions} from '../loader-utils/option-utils';\n\n/**\n * Set global loader options\n * @param options\n */\nexport function setLoaderOptions(options: object): void {\n setGlobalOptions(options);\n}\n"],"file":"set-loader-options.js"}
@@ -1,5 +0,0 @@
1
- import { setGlobalOptions } from '../loader-utils/option-utils';
2
- export function setLoaderOptions(options) {
3
- setGlobalOptions(options);
4
- }
5
- //# sourceMappingURL=set-loader-options.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/api/set-loader-options.ts"],"names":["setGlobalOptions","setLoaderOptions","options"],"mappings":"AAAA,SAAQA,gBAAR,QAA+B,8BAA/B;AAMA,OAAO,SAASC,gBAAT,CAA0BC,OAA1B,EAAiD;AACtDF,EAAAA,gBAAgB,CAACE,OAAD,CAAhB;AACD","sourcesContent":["import {setGlobalOptions} from '../loader-utils/option-utils';\n\n/**\n * Set global loader options\n * @param options\n */\nexport function setLoaderOptions(options: object): void {\n setGlobalOptions(options);\n}\n"],"file":"set-loader-options.js"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Set global loader options
3
- * @param options
4
- */
5
- export declare function setLoaderOptions(options: object): void;
6
- //# sourceMappingURL=set-loader-options.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"set-loader-options.d.ts","sourceRoot":"","sources":["../../../src/lib/api/set-loader-options.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEtD"}
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setLoaderOptions = void 0;
4
- const option_utils_1 = require("../loader-utils/option-utils");
5
- /**
6
- * Set global loader options
7
- * @param options
8
- */
9
- function setLoaderOptions(options) {
10
- (0, option_utils_1.setGlobalOptions)(options);
11
- }
12
- exports.setLoaderOptions = setLoaderOptions;
@@ -1,9 +0,0 @@
1
- import {setGlobalOptions} from '../loader-utils/option-utils';
2
-
3
- /**
4
- * Set global loader options
5
- * @param options
6
- */
7
- export function setLoaderOptions(options: object): void {
8
- setGlobalOptions(options);
9
- }