@loaders.gl/core 3.1.6 → 3.2.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/dist.min.js +720 -29
  2. package/dist/es5/lib/api/select-loader.js +15 -0
  3. package/dist/es5/lib/api/select-loader.js.map +1 -1
  4. package/dist/es5/lib/init.js +14 -4
  5. package/dist/es5/lib/init.js.map +1 -1
  6. package/dist/es5/lib/loader-utils/option-defaults.js +4 -1
  7. package/dist/es5/lib/loader-utils/option-defaults.js.map +1 -1
  8. package/dist/es5/lib/utils/log.js +14 -0
  9. package/dist/es5/lib/utils/log.js.map +1 -0
  10. package/dist/es5/null-loader.js +1 -1
  11. package/dist/es5/null-loader.js.map +1 -1
  12. package/dist/esm/lib/api/select-loader.js +14 -0
  13. package/dist/esm/lib/api/select-loader.js.map +1 -1
  14. package/dist/esm/lib/init.js +11 -4
  15. package/dist/esm/lib/init.js.map +1 -1
  16. package/dist/esm/lib/loader-utils/option-defaults.js +3 -1
  17. package/dist/esm/lib/loader-utils/option-defaults.js.map +1 -1
  18. package/dist/esm/lib/utils/log.js +5 -0
  19. package/dist/esm/lib/utils/log.js.map +1 -0
  20. package/dist/esm/null-loader.js +1 -1
  21. package/dist/esm/null-loader.js.map +1 -1
  22. package/dist/lib/api/select-loader.d.ts.map +1 -1
  23. package/dist/lib/api/select-loader.js +11 -0
  24. package/dist/lib/init.d.ts.map +1 -1
  25. package/dist/lib/init.js +9 -3
  26. package/dist/lib/loader-utils/option-defaults.d.ts.map +1 -1
  27. package/dist/lib/loader-utils/option-defaults.js +3 -1
  28. package/dist/lib/utils/log.d.ts +3 -0
  29. package/dist/lib/utils/log.d.ts.map +1 -0
  30. package/dist/lib/utils/log.js +6 -0
  31. package/dist/null-worker.js +46 -15
  32. package/package.json +7 -4
  33. package/src/lib/api/select-loader.ts +16 -0
  34. package/src/lib/init.ts +10 -3
  35. package/src/lib/loader-utils/option-defaults.ts +3 -1
  36. package/src/lib/utils/log.ts +4 -0
@@ -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.6" : "latest";
186
+ var VERSION = true ? "3.2.0-alpha.1" : "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.6",
3
+ "version": "3.2.0-alpha.1",
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,9 +42,10 @@
40
42
  },
41
43
  "dependencies": {
42
44
  "@babel/runtime": "^7.3.1",
43
- "@loaders.gl/loader-utils": "3.1.6",
44
- "@loaders.gl/worker-utils": "3.1.6",
45
+ "@loaders.gl/loader-utils": "3.2.0-alpha.1",
46
+ "@loaders.gl/worker-utils": "3.2.0-alpha.1",
47
+ "@probe.gl/log": "^3.5.0",
45
48
  "probe.gl": "^3.4.0"
46
49
  },
47
- "gitHead": "4fe0724b942697a95ff3eb3af47b7a7c18556c52"
50
+ "gitHead": "423a2815092b08dcf93ad5b7dc2940b167305afe"
48
51
  }
@@ -1,6 +1,7 @@
1
1
  import type {LoaderContext, LoaderOptions, Loader} from '@loaders.gl/loader-utils';
2
2
  import {compareArrayBuffers, path} from '@loaders.gl/loader-utils';
3
3
  import {normalizeLoader} from '../loader-utils/normalize-loader';
4
+ import {log} from '../utils/log';
4
5
  import {getResourceUrlAndType} from '../utils/resource-utils';
5
6
  import {getRegisteredLoaders} from './register-loaders';
6
7
  import {isBlob} from '../../javascript-utils/is-type';
@@ -103,6 +104,7 @@ export function selectLoaderSync(
103
104
  }
104
105
 
105
106
  /** Implements loaders selection logic */
107
+ // eslint-disable-next-line complexity
106
108
  function selectLoaderInternal(
107
109
  data: Response | Blob | ArrayBuffer | string,
108
110
  loaders: Loader[],
@@ -114,19 +116,33 @@ function selectLoaderInternal(
114
116
  const testUrl = url || context?.url;
115
117
 
116
118
  let loader: Loader | null = null;
119
+ let reason: string = '';
117
120
 
118
121
  // if options.mimeType is supplied, it takes precedence
119
122
  if (options?.mimeType) {
120
123
  loader = findLoaderByMIMEType(loaders, options?.mimeType);
124
+ reason = `match forced by supplied MIME type ${options?.mimeType}`;
121
125
  }
126
+
122
127
  // Look up loader by url
123
128
  loader = loader || findLoaderByUrl(loaders, testUrl);
129
+ reason = reason || (loader ? `matched url ${testUrl}` : '');
130
+
124
131
  // Look up loader by mime type
125
132
  loader = loader || findLoaderByMIMEType(loaders, type);
133
+ reason = reason || (loader ? `matched MIME type ${type}` : '');
134
+
126
135
  // Look for loader via initial bytes (Note: not always accessible (e.g. Response, stream, async iterator)
127
136
  loader = loader || findLoaderByInitialBytes(loaders, data);
137
+ reason = reason || (loader ? `matched initial data ${getFirstCharacters(data)}` : '');
138
+
128
139
  // Look up loader by fallback mime type
129
140
  loader = loader || findLoaderByMIMEType(loaders, options?.fallbackMimeType);
141
+ reason = reason || (loader ? `matched fallback MIME type ${type}` : '');
142
+
143
+ if (reason) {
144
+ log.log(1, `selectLoader selected ${loader?.name}: ${reason}.`);
145
+ }
130
146
 
131
147
  return loader;
132
148
  }
package/src/lib/init.ts CHANGED
@@ -1,10 +1,17 @@
1
+ // loaders.gl, MIT license
2
+ import {log} from './utils/log';
3
+
1
4
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
2
5
  const version = typeof __VERSION__ !== 'undefined' ? __VERSION__ : '';
3
6
 
4
7
  // @ts-ignore
5
- globalThis.loaders = Object.assign(globalThis.loaders || {}, {
6
- VERSION: version
7
- });
8
+ if (!globalThis.loaders) {
9
+ log.log(1, `loaders.gl ${version}`)();
8
10
 
11
+ globalThis.loaders = Object.assign(globalThis.loaders || {}, {
12
+ VERSION: version,
13
+ log
14
+ });
15
+ }
9
16
  // @ts-ignore
10
17
  export default globalThis.loaders;
@@ -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,
@@ -0,0 +1,4 @@
1
+ // loaders.gl, MIT license
2
+ import {Log} from '@probe.gl/log';
3
+
4
+ export const log = new Log({id: 'loaders.gl'});