@loaders.gl/core 4.4.2 → 5.0.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 (121) hide show
  1. package/dist/dist.dev.js +583 -162
  2. package/dist/dist.min.js +4 -3
  3. package/dist/index.cjs +499 -148
  4. package/dist/index.cjs.map +4 -4
  5. package/dist/index.d.ts +8 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +7 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/iterators/make-iterator/make-stream-iterator.js +1 -1
  10. package/dist/iterators/make-iterator/make-stream-iterator.js.map +1 -1
  11. package/dist/lib/api/core-api.d.ts +6 -0
  12. package/dist/lib/api/core-api.d.ts.map +1 -0
  13. package/dist/lib/api/core-api.js +23 -0
  14. package/dist/lib/api/core-api.js.map +1 -0
  15. package/dist/lib/api/create-data-source.d.ts +2 -2
  16. package/dist/lib/api/create-data-source.d.ts.map +1 -1
  17. package/dist/lib/api/create-data-source.js +15 -14
  18. package/dist/lib/api/create-data-source.js.map +1 -1
  19. package/dist/lib/api/load-in-batches.d.ts +4 -4
  20. package/dist/lib/api/load-in-batches.d.ts.map +1 -1
  21. package/dist/lib/api/load-in-batches.js +1 -1
  22. package/dist/lib/api/load-in-batches.js.map +1 -1
  23. package/dist/lib/api/load-loader.d.ts +8 -0
  24. package/dist/lib/api/load-loader.d.ts.map +1 -0
  25. package/dist/lib/api/load-loader.js +116 -0
  26. package/dist/lib/api/load-loader.js.map +1 -0
  27. package/dist/lib/api/load.d.ts +2 -2
  28. package/dist/lib/api/load.d.ts.map +1 -1
  29. package/dist/lib/api/load.js +52 -3
  30. package/dist/lib/api/load.js.map +1 -1
  31. package/dist/lib/api/parse-file.d.ts +15 -0
  32. package/dist/lib/api/parse-file.d.ts.map +1 -0
  33. package/dist/lib/api/parse-file.js +70 -0
  34. package/dist/lib/api/parse-file.js.map +1 -0
  35. package/dist/lib/api/parse-in-batches.d.ts +2 -2
  36. package/dist/lib/api/parse-in-batches.d.ts.map +1 -1
  37. package/dist/lib/api/parse-in-batches.js +6 -4
  38. package/dist/lib/api/parse-in-batches.js.map +1 -1
  39. package/dist/lib/api/parse-sync.d.ts +2 -2
  40. package/dist/lib/api/parse-sync.d.ts.map +1 -1
  41. package/dist/lib/api/parse-sync.js +10 -1
  42. package/dist/lib/api/parse-sync.js.map +1 -1
  43. package/dist/lib/api/parse.d.ts +2 -2
  44. package/dist/lib/api/parse.d.ts.map +1 -1
  45. package/dist/lib/api/parse.js +25 -16
  46. package/dist/lib/api/parse.js.map +1 -1
  47. package/dist/lib/api/preload.d.ts +11 -0
  48. package/dist/lib/api/preload.d.ts.map +1 -0
  49. package/dist/lib/api/preload.js +14 -0
  50. package/dist/lib/api/preload.js.map +1 -0
  51. package/dist/lib/api/register-loaders.js +1 -1
  52. package/dist/lib/api/register-loaders.js.map +1 -1
  53. package/dist/lib/api/select-loader.d.ts.map +1 -1
  54. package/dist/lib/api/select-loader.js +48 -5
  55. package/dist/lib/api/select-loader.js.map +1 -1
  56. package/dist/lib/api/select-source.d.ts +3 -3
  57. package/dist/lib/api/select-source.d.ts.map +1 -1
  58. package/dist/lib/api/select-source.js +2 -5
  59. package/dist/lib/api/select-source.js.map +1 -1
  60. package/dist/lib/fetch/fetch-error-message.js +1 -1
  61. package/dist/lib/fetch/fetch-error-message.js.map +1 -1
  62. package/dist/lib/init.js +1 -1
  63. package/dist/lib/init.js.map +1 -1
  64. package/dist/lib/loader-utils/check-errors.js +1 -1
  65. package/dist/lib/loader-utils/check-errors.js.map +1 -1
  66. package/dist/lib/loader-utils/get-data.d.ts +4 -0
  67. package/dist/lib/loader-utils/get-data.d.ts.map +1 -1
  68. package/dist/lib/loader-utils/get-data.js +26 -0
  69. package/dist/lib/loader-utils/get-data.js.map +1 -1
  70. package/dist/lib/loader-utils/get-fetch-function.d.ts +1 -1
  71. package/dist/lib/loader-utils/get-fetch-function.d.ts.map +1 -1
  72. package/dist/lib/loader-utils/get-fetch-function.js +1 -1
  73. package/dist/lib/loader-utils/get-fetch-function.js.map +1 -1
  74. package/dist/lib/loader-utils/loader-context.d.ts +1 -1
  75. package/dist/lib/loader-utils/loader-context.d.ts.map +1 -1
  76. package/dist/lib/loader-utils/loader-context.js +3 -1
  77. package/dist/lib/loader-utils/loader-context.js.map +1 -1
  78. package/dist/lib/loader-utils/loggers.d.ts +19 -0
  79. package/dist/lib/loader-utils/loggers.d.ts.map +1 -1
  80. package/dist/lib/loader-utils/loggers.js +28 -2
  81. package/dist/lib/loader-utils/loggers.js.map +1 -1
  82. package/dist/lib/loader-utils/option-defaults.d.ts +1 -0
  83. package/dist/lib/loader-utils/option-defaults.d.ts.map +1 -1
  84. package/dist/lib/loader-utils/option-defaults.js +2 -0
  85. package/dist/lib/loader-utils/option-defaults.js.map +1 -1
  86. package/dist/lib/loader-utils/option-utils.d.ts.map +1 -1
  87. package/dist/lib/loader-utils/option-utils.js +50 -2
  88. package/dist/lib/loader-utils/option-utils.js.map +1 -1
  89. package/dist/lib/utils/response-utils.js +3 -3
  90. package/dist/lib/utils/response-utils.js.map +1 -1
  91. package/dist/null-loader.d.ts.map +1 -1
  92. package/dist/null-loader.js +1 -1
  93. package/dist/null-loader.js.map +1 -1
  94. package/dist/null-worker-node.js +199 -36
  95. package/dist/null-worker.js +199 -36
  96. package/package.json +6 -6
  97. package/src/index.ts +10 -1
  98. package/src/iterators/make-iterator/make-stream-iterator.ts +1 -1
  99. package/src/lib/api/core-api.ts +25 -0
  100. package/src/lib/api/create-data-source.ts +24 -24
  101. package/src/lib/api/load-in-batches.ts +16 -11
  102. package/src/lib/api/load-loader.ts +163 -0
  103. package/src/lib/api/load.ts +78 -5
  104. package/src/lib/api/parse-file.ts +143 -0
  105. package/src/lib/api/parse-in-batches.ts +13 -5
  106. package/src/lib/api/parse-sync.ts +27 -2
  107. package/src/lib/api/parse.ts +44 -18
  108. package/src/lib/api/preload.ts +31 -0
  109. package/src/lib/api/register-loaders.ts +1 -1
  110. package/src/lib/api/select-loader.ts +57 -5
  111. package/src/lib/api/select-source.ts +7 -10
  112. package/src/lib/fetch/fetch-error-message.ts +1 -1
  113. package/src/lib/loader-utils/check-errors.ts +1 -1
  114. package/src/lib/loader-utils/get-data.ts +36 -0
  115. package/src/lib/loader-utils/get-fetch-function.ts +3 -2
  116. package/src/lib/loader-utils/loader-context.ts +5 -2
  117. package/src/lib/loader-utils/loggers.ts +28 -2
  118. package/src/lib/loader-utils/option-defaults.ts +2 -0
  119. package/src/lib/loader-utils/option-utils.ts +59 -2
  120. package/src/lib/utils/response-utils.ts +3 -3
  121. package/src/null-loader.ts +3 -3
@@ -29,10 +29,12 @@ const CORE_LOADER_OPTION_KEYS = [
29
29
  'maxConcurrency',
30
30
  'maxMobileConcurrency',
31
31
  'reuseWorkers',
32
+ 'workerTransferBufferCopy',
32
33
  '_nodeWorkers',
33
34
  '_workerType',
34
35
  'limit',
35
36
  '_limitMB',
37
+ 'shape',
36
38
  'batchSize',
37
39
  'batchDebounceMs',
38
40
  'metadata',
@@ -235,6 +237,7 @@ function normalizeOptionsInternal(
235
237
 
236
238
  const userOptions = normalizeLoaderOptions(options);
237
239
  mergeNestedFields(mergedOptions, userOptions);
240
+ applyCoreShapeDefault(mergedOptions, userOptions, loader);
238
241
 
239
242
  addUrlOptions(mergedOptions, url);
240
243
  addDeprecatedTopLevelOptions(mergedOptions);
@@ -242,7 +245,50 @@ function normalizeOptionsInternal(
242
245
  return mergedOptions;
243
246
  }
244
247
 
245
- // Merge nested options objects
248
+ /**
249
+ * Applies `options.core.shape` to a loader's scoped `shape` option when that loader declares
250
+ * shape support and neither global nor user-supplied loader-scoped options override it.
251
+ * @param mergedOptions fully merged options object being normalized
252
+ * @param userOptions normalized user-supplied options
253
+ * @param loader selected loader
254
+ */
255
+ function applyCoreShapeDefault(
256
+ mergedOptions: LoaderOptions,
257
+ userOptions: LoaderOptions,
258
+ loader: Loader
259
+ ): void {
260
+ const coreShape = mergedOptions.core?.shape;
261
+ if (coreShape === undefined) {
262
+ return;
263
+ }
264
+
265
+ const loaderScopedDefaults = loader.options?.[loader.id];
266
+ if (!isPureObject(loaderScopedDefaults) || !('shape' in loaderScopedDefaults)) {
267
+ return;
268
+ }
269
+
270
+ const globalLoaderScopedOptions = getGlobalLoaderOptions()[loader.id];
271
+ if (isPureObject(globalLoaderScopedOptions) && 'shape' in globalLoaderScopedOptions) {
272
+ return;
273
+ }
274
+
275
+ const userLoaderScopedOptions = userOptions[loader.id];
276
+ if (isPureObject(userLoaderScopedOptions) && 'shape' in userLoaderScopedOptions) {
277
+ return;
278
+ }
279
+
280
+ const loaderScopedOptions = mergedOptions[loader.id];
281
+ mergedOptions[loader.id] = {
282
+ ...(isPureObject(loaderScopedOptions) ? loaderScopedOptions : {}),
283
+ shape: coreShape
284
+ };
285
+ }
286
+
287
+ /**
288
+ * Merges one level of nested option objects into the target options record.
289
+ * @param mergedOptions target options object to mutate
290
+ * @param options source options object
291
+ */
246
292
  function mergeNestedFields(mergedOptions: LoaderOptions, options: LoaderOptions): void {
247
293
  for (const key in options) {
248
294
  // Check for nested options
@@ -288,6 +334,11 @@ function cloneLoaderOptions(options: LoaderOptions): LoaderOptions {
288
334
  return clonedOptions;
289
335
  }
290
336
 
337
+ /**
338
+ * Moves deprecated top-level core option aliases into `options.core` without overwriting
339
+ * explicitly provided `options.core` values.
340
+ * @param options loader options to normalize in place
341
+ */
291
342
  function moveDeprecatedTopLevelOptionsToCore(options: LoaderOptions): void {
292
343
  if (options.baseUri !== undefined) {
293
344
  options.core ||= {};
@@ -298,7 +349,8 @@ function moveDeprecatedTopLevelOptionsToCore(options: LoaderOptions): void {
298
349
 
299
350
  for (const key of CORE_LOADER_OPTION_KEYS) {
300
351
  if ((options as Record<string, unknown>)[key] !== undefined) {
301
- const coreOptions = (options.core = options.core || {});
352
+ options.core ||= {};
353
+ const coreOptions = options.core;
302
354
  const coreRecord = coreOptions as Record<string, unknown>;
303
355
  // Treat deprecated top-level core options as aliases to `options.core`, but never override an explicitly
304
356
  // provided `options.core` value.
@@ -318,6 +370,11 @@ function moveDeprecatedTopLevelOptionsToCore(options: LoaderOptions): void {
318
370
  }
319
371
  }
320
372
 
373
+ /**
374
+ * Rehydrates deprecated top-level aliases from `options.core` for compatibility with older
375
+ * call sites that still read normalized options from the top level.
376
+ * @param options normalized loader options to mutate in place
377
+ */
321
378
  function addDeprecatedTopLevelOptions(options: LoaderOptions): void {
322
379
  const coreOptions = options.core as Record<string, unknown> | undefined;
323
380
  if (!coreOptions) {
@@ -97,7 +97,7 @@ async function getResponseError(response: Response): Promise<Error> {
97
97
  !response.bodyUsed && contentType?.includes('application/json')
98
98
  ? await response.json()
99
99
  : await response.text();
100
- } catch (error) {
100
+ } catch (_error) {
101
101
  // eslint forbids return in a finally statement, so we just catch here
102
102
  }
103
103
  return new FetchError(message, info);
@@ -112,9 +112,9 @@ async function getInitialDataUrl(
112
112
  }
113
113
  if (resource instanceof Blob) {
114
114
  const blobSlice = resource.slice(0, 5);
115
- return await new Promise((resolve) => {
115
+ return await new Promise(resolve => {
116
116
  const reader = new FileReader();
117
- reader.onload = (event) => resolve(event?.target?.result as string);
117
+ reader.onload = event => resolve(event?.target?.result as string);
118
118
  reader.readAsDataURL(blobSlice);
119
119
  });
120
120
  }
@@ -2,13 +2,13 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
+ import type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
6
+ import {LoaderContext} from '@loaders.gl/loader-utils';
7
+
5
8
  // __VERSION__ is injected by babel-plugin-version-inline
6
9
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
7
10
  const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
8
11
 
9
- import type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
10
- import {LoaderContext} from '@loaders.gl/loader-utils';
11
-
12
12
  export type NullLoaderOptions = LoaderOptions & {
13
13
  null?: {};
14
14
  };