@loaders.gl/core 3.3.0-alpha.5 → 3.3.0-alpha.6

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 (184) hide show
  1. package/dist/dist.min.js +210 -821
  2. package/dist/es5/bundle.js +0 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/core-addons/write-file-browser.js +2 -0
  5. package/dist/es5/core-addons/write-file-browser.js.map +1 -1
  6. package/dist/es5/index.js +108 -130
  7. package/dist/es5/index.js.map +1 -1
  8. package/dist/es5/iterators/batch-iterators/timed-batch-iterator.js +34 -69
  9. package/dist/es5/iterators/batch-iterators/timed-batch-iterator.js.map +1 -1
  10. package/dist/es5/iterators/make-iterator/make-array-buffer-iterator.js +9 -17
  11. package/dist/es5/iterators/make-iterator/make-array-buffer-iterator.js.map +1 -1
  12. package/dist/es5/iterators/make-iterator/make-blob-iterator.js +0 -11
  13. package/dist/es5/iterators/make-iterator/make-blob-iterator.js.map +1 -1
  14. package/dist/es5/iterators/make-iterator/make-iterator.js +0 -11
  15. package/dist/es5/iterators/make-iterator/make-iterator.js.map +1 -1
  16. package/dist/es5/iterators/make-iterator/make-stream-iterator.js +29 -75
  17. package/dist/es5/iterators/make-iterator/make-stream-iterator.js.map +1 -1
  18. package/dist/es5/iterators/make-iterator/make-string-iterator.js +1 -8
  19. package/dist/es5/iterators/make-iterator/make-string-iterator.js.map +1 -1
  20. package/dist/es5/iterators/make-stream/make-dom-stream.js +2 -17
  21. package/dist/es5/iterators/make-stream/make-dom-stream.js.map +1 -1
  22. package/dist/es5/iterators/make-stream/make-node-stream.js +0 -50
  23. package/dist/es5/iterators/make-stream/make-node-stream.js.map +1 -1
  24. package/dist/es5/javascript-utils/is-type.js +1 -34
  25. package/dist/es5/javascript-utils/is-type.js.map +1 -1
  26. package/dist/es5/lib/api/encode.js +42 -118
  27. package/dist/es5/lib/api/encode.js.map +1 -1
  28. package/dist/es5/lib/api/load-in-batches.js +1 -15
  29. package/dist/es5/lib/api/load-in-batches.js.map +1 -1
  30. package/dist/es5/lib/api/load.js +0 -18
  31. package/dist/es5/lib/api/load.js.map +1 -1
  32. package/dist/es5/lib/api/loader-options.js +4 -5
  33. package/dist/es5/lib/api/loader-options.js.map +1 -1
  34. package/dist/es5/lib/api/parse-in-batches.js +122 -196
  35. package/dist/es5/lib/api/parse-in-batches.js.map +1 -1
  36. package/dist/es5/lib/api/parse-sync.js +2 -16
  37. package/dist/es5/lib/api/parse-sync.js.map +1 -1
  38. package/dist/es5/lib/api/parse.js +3 -42
  39. package/dist/es5/lib/api/parse.js.map +1 -1
  40. package/dist/es5/lib/api/register-loaders.js +3 -14
  41. package/dist/es5/lib/api/register-loaders.js.map +1 -1
  42. package/dist/es5/lib/api/save.js +0 -11
  43. package/dist/es5/lib/api/save.js.map +1 -1
  44. package/dist/es5/lib/api/select-loader.js +18 -91
  45. package/dist/es5/lib/api/select-loader.js.map +1 -1
  46. package/dist/es5/lib/common.js.map +1 -1
  47. package/dist/es5/lib/fetch/fetch-error-message.js +1 -15
  48. package/dist/es5/lib/fetch/fetch-error-message.js.map +1 -1
  49. package/dist/es5/lib/fetch/fetch-file.js +0 -14
  50. package/dist/es5/lib/fetch/fetch-file.js.map +1 -1
  51. package/dist/es5/lib/fetch/read-array-buffer.js +0 -20
  52. package/dist/es5/lib/fetch/read-array-buffer.js.map +1 -1
  53. package/dist/es5/lib/fetch/read-file.js +0 -3
  54. package/dist/es5/lib/fetch/read-file.js.map +1 -1
  55. package/dist/es5/lib/fetch/write-file.js +0 -13
  56. package/dist/es5/lib/fetch/write-file.js.map +1 -1
  57. package/dist/es5/lib/filesystems/browser-filesystem.js +9 -55
  58. package/dist/es5/lib/filesystems/browser-filesystem.js.map +1 -1
  59. package/dist/es5/lib/filesystems/filesystem.js.map +1 -1
  60. package/dist/es5/lib/filesystems/read-array-buffer.js +0 -10
  61. package/dist/es5/lib/filesystems/read-array-buffer.js.map +1 -1
  62. package/dist/es5/lib/init.js +1 -4
  63. package/dist/es5/lib/init.js.map +1 -1
  64. package/dist/es5/lib/loader-utils/check-errors.js +0 -14
  65. package/dist/es5/lib/loader-utils/check-errors.js.map +1 -1
  66. package/dist/es5/lib/loader-utils/get-data.js +2 -64
  67. package/dist/es5/lib/loader-utils/get-data.js.map +1 -1
  68. package/dist/es5/lib/loader-utils/loader-context.js +2 -15
  69. package/dist/es5/lib/loader-utils/loader-context.js.map +1 -1
  70. package/dist/es5/lib/loader-utils/loggers.js +2 -20
  71. package/dist/es5/lib/loader-utils/loggers.js.map +1 -1
  72. package/dist/es5/lib/loader-utils/normalize-loader.js +4 -16
  73. package/dist/es5/lib/loader-utils/normalize-loader.js.map +1 -1
  74. package/dist/es5/lib/loader-utils/option-defaults.js +2 -3
  75. package/dist/es5/lib/loader-utils/option-defaults.js.map +1 -1
  76. package/dist/es5/lib/loader-utils/option-utils.js +10 -38
  77. package/dist/es5/lib/loader-utils/option-utils.js.map +1 -1
  78. package/dist/es5/lib/progress/fetch-progress.js +6 -35
  79. package/dist/es5/lib/progress/fetch-progress.js.map +1 -1
  80. package/dist/es5/lib/utils/log.js +0 -1
  81. package/dist/es5/lib/utils/log.js.map +1 -1
  82. package/dist/es5/lib/utils/mime-type-utils.js +1 -4
  83. package/dist/es5/lib/utils/mime-type-utils.js.map +1 -1
  84. package/dist/es5/lib/utils/resource-utils.js +1 -11
  85. package/dist/es5/lib/utils/resource-utils.js.map +1 -1
  86. package/dist/es5/lib/utils/response-utils.js +1 -47
  87. package/dist/es5/lib/utils/response-utils.js.map +1 -1
  88. package/dist/es5/null-loader.js +32 -67
  89. package/dist/es5/null-loader.js.map +1 -1
  90. package/dist/es5/workers/null-worker.js +0 -2
  91. package/dist/es5/workers/null-worker.js.map +1 -1
  92. package/dist/esm/bundle.js +1 -1
  93. package/dist/esm/bundle.js.map +1 -1
  94. package/dist/esm/core-addons/write-file-browser.js.map +1 -1
  95. package/dist/esm/index.js +11 -0
  96. package/dist/esm/index.js.map +1 -1
  97. package/dist/esm/iterators/batch-iterators/timed-batch-iterator.js +1 -3
  98. package/dist/esm/iterators/batch-iterators/timed-batch-iterator.js.map +1 -1
  99. package/dist/esm/iterators/make-iterator/make-array-buffer-iterator.js +5 -2
  100. package/dist/esm/iterators/make-iterator/make-array-buffer-iterator.js.map +1 -1
  101. package/dist/esm/iterators/make-iterator/make-blob-iterator.js +1 -1
  102. package/dist/esm/iterators/make-iterator/make-blob-iterator.js.map +1 -1
  103. package/dist/esm/iterators/make-iterator/make-iterator.js +1 -5
  104. package/dist/esm/iterators/make-iterator/make-iterator.js.map +1 -1
  105. package/dist/esm/iterators/make-iterator/make-stream-iterator.js +1 -5
  106. package/dist/esm/iterators/make-iterator/make-stream-iterator.js.map +1 -1
  107. package/dist/esm/iterators/make-iterator/make-string-iterator.js +2 -1
  108. package/dist/esm/iterators/make-iterator/make-string-iterator.js.map +1 -1
  109. package/dist/esm/iterators/make-stream/make-dom-stream.js +3 -6
  110. package/dist/esm/iterators/make-stream/make-dom-stream.js.map +1 -1
  111. package/dist/esm/iterators/make-stream/make-node-stream.js +0 -18
  112. package/dist/esm/iterators/make-stream/make-node-stream.js.map +1 -1
  113. package/dist/esm/javascript-utils/is-type.js +4 -2
  114. package/dist/esm/javascript-utils/is-type.js.map +1 -1
  115. package/dist/esm/lib/api/encode.js +8 -15
  116. package/dist/esm/lib/api/encode.js.map +1 -1
  117. package/dist/esm/lib/api/load-in-batches.js +1 -2
  118. package/dist/esm/lib/api/load-in-batches.js.map +1 -1
  119. package/dist/esm/lib/api/load.js +2 -1
  120. package/dist/esm/lib/api/load.js.map +1 -1
  121. package/dist/esm/lib/api/loader-options.js.map +1 -1
  122. package/dist/esm/lib/api/parse-in-batches.js +12 -12
  123. package/dist/esm/lib/api/parse-in-batches.js.map +1 -1
  124. package/dist/esm/lib/api/parse-sync.js +3 -5
  125. package/dist/esm/lib/api/parse-sync.js.map +1 -1
  126. package/dist/esm/lib/api/parse.js +5 -5
  127. package/dist/esm/lib/api/parse.js.map +1 -1
  128. package/dist/esm/lib/api/register-loaders.js +1 -2
  129. package/dist/esm/lib/api/register-loaders.js.map +1 -1
  130. package/dist/esm/lib/api/save.js.map +1 -1
  131. package/dist/esm/lib/api/select-loader.js +17 -35
  132. package/dist/esm/lib/api/select-loader.js.map +1 -1
  133. package/dist/esm/lib/common.js.map +1 -1
  134. package/dist/esm/lib/fetch/fetch-error-message.js +0 -3
  135. package/dist/esm/lib/fetch/fetch-error-message.js.map +1 -1
  136. package/dist/esm/lib/fetch/fetch-file.js +1 -3
  137. package/dist/esm/lib/fetch/fetch-file.js.map +1 -1
  138. package/dist/esm/lib/fetch/read-array-buffer.js +3 -6
  139. package/dist/esm/lib/fetch/read-array-buffer.js.map +1 -1
  140. package/dist/esm/lib/fetch/read-file.js +4 -2
  141. package/dist/esm/lib/fetch/read-file.js.map +1 -1
  142. package/dist/esm/lib/fetch/write-file.js +1 -4
  143. package/dist/esm/lib/fetch/write-file.js.map +1 -1
  144. package/dist/esm/lib/filesystems/browser-filesystem.js +6 -19
  145. package/dist/esm/lib/filesystems/browser-filesystem.js.map +1 -1
  146. package/dist/esm/lib/filesystems/filesystem.js.map +1 -1
  147. package/dist/esm/lib/filesystems/read-array-buffer.js +2 -1
  148. package/dist/esm/lib/filesystems/read-array-buffer.js.map +1 -1
  149. package/dist/esm/lib/init.js +3 -2
  150. package/dist/esm/lib/init.js.map +1 -1
  151. package/dist/esm/lib/loader-utils/check-errors.js +2 -5
  152. package/dist/esm/lib/loader-utils/check-errors.js.map +1 -1
  153. package/dist/esm/lib/loader-utils/get-data.js +3 -23
  154. package/dist/esm/lib/loader-utils/get-data.js.map +1 -1
  155. package/dist/esm/lib/loader-utils/loader-context.js +4 -6
  156. package/dist/esm/lib/loader-utils/loader-context.js.map +1 -1
  157. package/dist/esm/lib/loader-utils/loggers.js +18 -13
  158. package/dist/esm/lib/loader-utils/loggers.js.map +1 -1
  159. package/dist/esm/lib/loader-utils/normalize-loader.js +6 -9
  160. package/dist/esm/lib/loader-utils/normalize-loader.js.map +1 -1
  161. package/dist/esm/lib/loader-utils/option-defaults.js +2 -0
  162. package/dist/esm/lib/loader-utils/option-defaults.js.map +1 -1
  163. package/dist/esm/lib/loader-utils/option-utils.js +14 -14
  164. package/dist/esm/lib/loader-utils/option-utils.js.map +1 -1
  165. package/dist/esm/lib/progress/fetch-progress.js +5 -10
  166. package/dist/esm/lib/progress/fetch-progress.js.map +1 -1
  167. package/dist/esm/lib/utils/log.js +1 -0
  168. package/dist/esm/lib/utils/log.js.map +1 -1
  169. package/dist/esm/lib/utils/mime-type-utils.js +4 -4
  170. package/dist/esm/lib/utils/mime-type-utils.js.map +1 -1
  171. package/dist/esm/lib/utils/resource-utils.js +2 -7
  172. package/dist/esm/lib/utils/resource-utils.js.map +1 -1
  173. package/dist/esm/lib/utils/response-utils.js +5 -18
  174. package/dist/esm/lib/utils/response-utils.js.map +1 -1
  175. package/dist/esm/null-loader.js +2 -1
  176. package/dist/esm/null-loader.js.map +1 -1
  177. package/dist/esm/workers/null-worker.js.map +1 -1
  178. package/dist/iterators/make-stream/make-dom-stream.d.ts.map +1 -1
  179. package/dist/iterators/make-stream/make-dom-stream.js +1 -0
  180. package/dist/lib/loader-utils/loggers.d.ts +2 -1
  181. package/dist/lib/loader-utils/loggers.d.ts.map +1 -1
  182. package/dist/null-worker.js +1 -1
  183. package/package.json +4 -4
  184. package/src/iterators/make-stream/make-dom-stream.ts +1 -0
@@ -3,23 +3,20 @@ import { isResponse, isReadableStream, isAsyncIterable, isIterable, isIterator,
3
3
  import { makeIterator } from '../../iterators/make-iterator/make-iterator';
4
4
  import { checkResponse, makeResponse } from '../utils/response-utils';
5
5
  const ERR_DATA = 'Cannot convert supplied data type';
6
+
6
7
  export function getArrayBufferOrStringFromDataSync(data, loader, options) {
7
8
  if (loader.text && typeof data === 'string') {
8
9
  return data;
9
10
  }
10
-
11
11
  if (isBuffer(data)) {
12
12
  data = data.buffer;
13
13
  }
14
-
15
14
  if (data instanceof ArrayBuffer) {
16
15
  const arrayBuffer = data;
17
-
18
16
  if (loader.text && !loader.binary) {
19
17
  const textDecoder = new TextDecoder('utf8');
20
18
  return textDecoder.decode(arrayBuffer);
21
19
  }
22
-
23
20
  return arrayBuffer;
24
21
  }
25
22
 
@@ -28,22 +25,19 @@ export function getArrayBufferOrStringFromDataSync(data, loader, options) {
28
25
  const textDecoder = new TextDecoder('utf8');
29
26
  return textDecoder.decode(data);
30
27
  }
31
-
32
28
  let arrayBuffer = data.buffer;
33
- const byteLength = data.byteLength || data.length;
34
29
 
30
+ const byteLength = data.byteLength || data.length;
35
31
  if (data.byteOffset !== 0 || byteLength !== arrayBuffer.byteLength) {
36
32
  arrayBuffer = arrayBuffer.slice(data.byteOffset, data.byteOffset + byteLength);
37
33
  }
38
-
39
34
  return arrayBuffer;
40
35
  }
41
-
42
36
  throw new Error(ERR_DATA);
43
37
  }
38
+
44
39
  export async function getArrayBufferOrStringFromData(data, loader, options) {
45
40
  const isArrayBuffer = data instanceof ArrayBuffer || ArrayBuffer.isView(data);
46
-
47
41
  if (typeof data === 'string' || isArrayBuffer) {
48
42
  return getArrayBufferOrStringFromDataSync(data, loader, options);
49
43
  }
@@ -51,54 +45,44 @@ export async function getArrayBufferOrStringFromData(data, loader, options) {
51
45
  if (isBlob(data)) {
52
46
  data = await makeResponse(data);
53
47
  }
54
-
55
48
  if (isResponse(data)) {
56
49
  const response = data;
57
50
  await checkResponse(response);
58
51
  return loader.binary ? await response.arrayBuffer() : await response.text();
59
52
  }
60
-
61
53
  if (isReadableStream(data)) {
62
54
  data = makeIterator(data, options);
63
55
  }
64
-
65
56
  if (isIterable(data) || isAsyncIterable(data)) {
66
57
  return concatenateArrayBuffersAsync(data);
67
58
  }
68
-
69
59
  throw new Error(ERR_DATA);
70
60
  }
71
61
  export async function getAsyncIterableFromData(data, options) {
72
62
  if (isIterator(data)) {
73
63
  return data;
74
64
  }
75
-
76
65
  if (isResponse(data)) {
77
66
  const response = data;
78
67
  await checkResponse(response);
79
68
  const body = await response.body;
80
69
  return makeIterator(body, options);
81
70
  }
82
-
83
71
  if (isBlob(data) || isReadableStream(data)) {
84
72
  return makeIterator(data, options);
85
73
  }
86
-
87
74
  if (isAsyncIterable(data)) {
88
75
  return data[Symbol.asyncIterator]();
89
76
  }
90
-
91
77
  return getIterableFromData(data);
92
78
  }
93
79
  export async function getReadableStream(data) {
94
80
  if (isReadableStream(data)) {
95
81
  return data;
96
82
  }
97
-
98
83
  if (isResponse(data)) {
99
84
  return data.body;
100
85
  }
101
-
102
86
  const response = await makeResponse(data);
103
87
  return response.body;
104
88
  }
@@ -109,21 +93,17 @@ function getIterableFromData(data) {
109
93
  yield data.buffer;
110
94
  }();
111
95
  }
112
-
113
96
  if (data instanceof ArrayBuffer) {
114
97
  return function* oneChunk() {
115
98
  yield data;
116
99
  }();
117
100
  }
118
-
119
101
  if (isIterator(data)) {
120
102
  return data;
121
103
  }
122
-
123
104
  if (isIterable(data)) {
124
105
  return data[Symbol.iterator]();
125
106
  }
126
-
127
107
  throw new Error(ERR_DATA);
128
108
  }
129
109
  //# sourceMappingURL=get-data.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/loader-utils/get-data.ts"],"names":["concatenateArrayBuffersAsync","isResponse","isReadableStream","isAsyncIterable","isIterable","isIterator","isBlob","isBuffer","makeIterator","checkResponse","makeResponse","ERR_DATA","getArrayBufferOrStringFromDataSync","data","loader","options","text","buffer","ArrayBuffer","arrayBuffer","binary","textDecoder","TextDecoder","decode","isView","byteLength","length","byteOffset","slice","Error","getArrayBufferOrStringFromData","isArrayBuffer","response","getAsyncIterableFromData","body","Symbol","asyncIterator","getIterableFromData","getReadableStream","oneChunk","iterator"],"mappings":"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","sourcesContent":["import type {\n DataType,\n SyncDataType,\n BatchableDataType,\n Loader,\n LoaderOptions\n} from '@loaders.gl/loader-utils';\nimport {concatenateArrayBuffersAsync} from '@loaders.gl/loader-utils';\nimport {\n isResponse,\n isReadableStream,\n isAsyncIterable,\n isIterable,\n isIterator,\n isBlob,\n isBuffer\n} from '../../javascript-utils/is-type';\nimport {makeIterator} from '../../iterators/make-iterator/make-iterator';\nimport {checkResponse, makeResponse} from '../utils/response-utils';\n\nconst ERR_DATA = 'Cannot convert supplied data type';\n\n// eslint-disable-next-line complexity\nexport function getArrayBufferOrStringFromDataSync(\n data: SyncDataType,\n loader: Loader,\n options: LoaderOptions\n): ArrayBuffer | string {\n if (loader.text && typeof data === 'string') {\n return data;\n }\n\n if (isBuffer(data)) {\n // @ts-ignore\n data = data.buffer;\n }\n\n if (data instanceof ArrayBuffer) {\n const arrayBuffer = data;\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder('utf8');\n return textDecoder.decode(arrayBuffer);\n }\n return arrayBuffer;\n }\n\n // We may need to handle offsets\n if (ArrayBuffer.isView(data)) {\n // TextDecoder is invoked on typed arrays and will handle offsets\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder('utf8');\n return textDecoder.decode(data);\n }\n\n let arrayBuffer = data.buffer;\n\n // Since we are returning the underlying arrayBuffer, we must create a new copy\n // if this typed array / Buffer is a partial view into the ArryayBuffer\n // TODO - this is a potentially unnecessary copy\n const byteLength = data.byteLength || data.length;\n if (data.byteOffset !== 0 || byteLength !== arrayBuffer.byteLength) {\n // console.warn(`loaders.gl copying arraybuffer of length ${byteLength}`);\n arrayBuffer = arrayBuffer.slice(data.byteOffset, data.byteOffset + byteLength);\n }\n return arrayBuffer;\n }\n\n throw new Error(ERR_DATA);\n}\n\n// Convert async iterator to a promise\nexport async function getArrayBufferOrStringFromData(\n data: DataType,\n loader: Loader,\n options: LoaderOptions\n): Promise<ArrayBuffer | string> {\n const isArrayBuffer = data instanceof ArrayBuffer || ArrayBuffer.isView(data);\n if (typeof data === 'string' || isArrayBuffer) {\n return getArrayBufferOrStringFromDataSync(data as string | ArrayBuffer, loader, options);\n }\n\n // Blobs and files are FileReader compatible\n if (isBlob(data)) {\n data = await makeResponse(data);\n }\n\n if (isResponse(data)) {\n const response = data as Response;\n await checkResponse(response);\n return loader.binary ? await response.arrayBuffer() : await response.text();\n }\n\n if (isReadableStream(data)) {\n // @ts-expect-error TS2559 options type\n data = makeIterator(data as ReadableStream, options);\n }\n\n if (isIterable(data) || isAsyncIterable(data)) {\n // Assume arrayBuffer iterator - attempt to concatenate\n return concatenateArrayBuffersAsync(data as AsyncIterable<ArrayBuffer>);\n }\n\n throw new Error(ERR_DATA);\n}\n\nexport async function getAsyncIterableFromData(\n data: BatchableDataType,\n options: LoaderOptions\n): Promise<AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>> {\n if (isIterator(data)) {\n return data as AsyncIterable<ArrayBuffer>;\n }\n\n if (isResponse(data)) {\n const response = data as Response;\n // Note Since this function is not async, we currently can't load error message, just status\n await checkResponse(response);\n // TODO - bug in polyfill, body can be a Promise under Node.js\n // eslint-disable-next-line @typescript-eslint/await-thenable\n const body = await response.body;\n // TODO - body can be null?\n return makeIterator(body as ReadableStream<Uint8Array>, options as any);\n }\n\n if (isBlob(data) || isReadableStream(data)) {\n return makeIterator(data as Blob | ReadableStream, options as any);\n }\n\n if (isAsyncIterable(data)) {\n return data[Symbol.asyncIterator]();\n }\n\n return getIterableFromData(data);\n}\n\nexport async function getReadableStream(data: BatchableDataType): Promise<ReadableStream> {\n if (isReadableStream(data)) {\n return data as ReadableStream;\n }\n if (isResponse(data)) {\n // @ts-ignore\n return data.body;\n }\n const response = await makeResponse(data);\n // @ts-ignore\n return response.body;\n}\n\n// HELPERS\n\nfunction getIterableFromData(data) {\n // generate an iterator that emits a single chunk\n if (ArrayBuffer.isView(data)) {\n return (function* oneChunk() {\n yield data.buffer;\n })();\n }\n\n if (data instanceof ArrayBuffer) {\n return (function* oneChunk() {\n yield data;\n })();\n }\n\n if (isIterator(data)) {\n return data;\n }\n\n if (isIterable(data)) {\n return data[Symbol.iterator]();\n }\n\n throw new Error(ERR_DATA);\n}\n"],"file":"get-data.js"}
1
+ {"version":3,"file":"get-data.js","names":["concatenateArrayBuffersAsync","isResponse","isReadableStream","isAsyncIterable","isIterable","isIterator","isBlob","isBuffer","makeIterator","checkResponse","makeResponse","ERR_DATA","getArrayBufferOrStringFromDataSync","data","loader","options","text","buffer","ArrayBuffer","arrayBuffer","binary","textDecoder","TextDecoder","decode","isView","byteLength","length","byteOffset","slice","Error","getArrayBufferOrStringFromData","isArrayBuffer","response","getAsyncIterableFromData","body","Symbol","asyncIterator","getIterableFromData","getReadableStream","oneChunk","iterator"],"sources":["../../../../src/lib/loader-utils/get-data.ts"],"sourcesContent":["import type {\n DataType,\n SyncDataType,\n BatchableDataType,\n Loader,\n LoaderOptions\n} from '@loaders.gl/loader-utils';\nimport {concatenateArrayBuffersAsync} from '@loaders.gl/loader-utils';\nimport {\n isResponse,\n isReadableStream,\n isAsyncIterable,\n isIterable,\n isIterator,\n isBlob,\n isBuffer\n} from '../../javascript-utils/is-type';\nimport {makeIterator} from '../../iterators/make-iterator/make-iterator';\nimport {checkResponse, makeResponse} from '../utils/response-utils';\n\nconst ERR_DATA = 'Cannot convert supplied data type';\n\n// eslint-disable-next-line complexity\nexport function getArrayBufferOrStringFromDataSync(\n data: SyncDataType,\n loader: Loader,\n options: LoaderOptions\n): ArrayBuffer | string {\n if (loader.text && typeof data === 'string') {\n return data;\n }\n\n if (isBuffer(data)) {\n // @ts-ignore\n data = data.buffer;\n }\n\n if (data instanceof ArrayBuffer) {\n const arrayBuffer = data;\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder('utf8');\n return textDecoder.decode(arrayBuffer);\n }\n return arrayBuffer;\n }\n\n // We may need to handle offsets\n if (ArrayBuffer.isView(data)) {\n // TextDecoder is invoked on typed arrays and will handle offsets\n if (loader.text && !loader.binary) {\n const textDecoder = new TextDecoder('utf8');\n return textDecoder.decode(data);\n }\n\n let arrayBuffer = data.buffer;\n\n // Since we are returning the underlying arrayBuffer, we must create a new copy\n // if this typed array / Buffer is a partial view into the ArryayBuffer\n // TODO - this is a potentially unnecessary copy\n const byteLength = data.byteLength || data.length;\n if (data.byteOffset !== 0 || byteLength !== arrayBuffer.byteLength) {\n // console.warn(`loaders.gl copying arraybuffer of length ${byteLength}`);\n arrayBuffer = arrayBuffer.slice(data.byteOffset, data.byteOffset + byteLength);\n }\n return arrayBuffer;\n }\n\n throw new Error(ERR_DATA);\n}\n\n// Convert async iterator to a promise\nexport async function getArrayBufferOrStringFromData(\n data: DataType,\n loader: Loader,\n options: LoaderOptions\n): Promise<ArrayBuffer | string> {\n const isArrayBuffer = data instanceof ArrayBuffer || ArrayBuffer.isView(data);\n if (typeof data === 'string' || isArrayBuffer) {\n return getArrayBufferOrStringFromDataSync(data as string | ArrayBuffer, loader, options);\n }\n\n // Blobs and files are FileReader compatible\n if (isBlob(data)) {\n data = await makeResponse(data);\n }\n\n if (isResponse(data)) {\n const response = data as Response;\n await checkResponse(response);\n return loader.binary ? await response.arrayBuffer() : await response.text();\n }\n\n if (isReadableStream(data)) {\n // @ts-expect-error TS2559 options type\n data = makeIterator(data as ReadableStream, options);\n }\n\n if (isIterable(data) || isAsyncIterable(data)) {\n // Assume arrayBuffer iterator - attempt to concatenate\n return concatenateArrayBuffersAsync(data as AsyncIterable<ArrayBuffer>);\n }\n\n throw new Error(ERR_DATA);\n}\n\nexport async function getAsyncIterableFromData(\n data: BatchableDataType,\n options: LoaderOptions\n): Promise<AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>> {\n if (isIterator(data)) {\n return data as AsyncIterable<ArrayBuffer>;\n }\n\n if (isResponse(data)) {\n const response = data as Response;\n // Note Since this function is not async, we currently can't load error message, just status\n await checkResponse(response);\n // TODO - bug in polyfill, body can be a Promise under Node.js\n // eslint-disable-next-line @typescript-eslint/await-thenable\n const body = await response.body;\n // TODO - body can be null?\n return makeIterator(body as ReadableStream<Uint8Array>, options as any);\n }\n\n if (isBlob(data) || isReadableStream(data)) {\n return makeIterator(data as Blob | ReadableStream, options as any);\n }\n\n if (isAsyncIterable(data)) {\n return data[Symbol.asyncIterator]();\n }\n\n return getIterableFromData(data);\n}\n\nexport async function getReadableStream(data: BatchableDataType): Promise<ReadableStream> {\n if (isReadableStream(data)) {\n return data as ReadableStream;\n }\n if (isResponse(data)) {\n // @ts-ignore\n return data.body;\n }\n const response = await makeResponse(data);\n // @ts-ignore\n return response.body;\n}\n\n// HELPERS\n\nfunction getIterableFromData(data) {\n // generate an iterator that emits a single chunk\n if (ArrayBuffer.isView(data)) {\n return (function* oneChunk() {\n yield data.buffer;\n })();\n }\n\n if (data instanceof ArrayBuffer) {\n return (function* oneChunk() {\n yield data;\n })();\n }\n\n if (isIterator(data)) {\n return data;\n }\n\n if (isIterable(data)) {\n return data[Symbol.iterator]();\n }\n\n throw new Error(ERR_DATA);\n}\n"],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { getFetchFunction } from './option-utils';
2
- export function getLoaderContext(context, options, previousContext = null) {
2
+
3
+ export function getLoaderContext(context, options) {
4
+ let previousContext = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
3
5
  if (previousContext) {
4
6
  return previousContext;
5
7
  }
6
-
7
8
  const resolvedContext = {
8
9
  fetch: getFetchFunction(options, context),
9
10
  ...context
@@ -12,25 +13,22 @@ export function getLoaderContext(context, options, previousContext = null) {
12
13
  if (!Array.isArray(resolvedContext.loaders)) {
13
14
  resolvedContext.loaders = null;
14
15
  }
15
-
16
16
  return resolvedContext;
17
17
  }
18
+
18
19
  export function getLoadersFromContext(loaders, context) {
19
20
  if (!context && loaders && !Array.isArray(loaders)) {
20
21
  return loaders;
21
22
  }
22
23
 
23
24
  let candidateLoaders;
24
-
25
25
  if (loaders) {
26
26
  candidateLoaders = Array.isArray(loaders) ? loaders : [loaders];
27
27
  }
28
-
29
28
  if (context && context.loaders) {
30
29
  const contextLoaders = Array.isArray(context.loaders) ? context.loaders : [context.loaders];
31
30
  candidateLoaders = candidateLoaders ? [...candidateLoaders, ...contextLoaders] : contextLoaders;
32
31
  }
33
-
34
32
  return candidateLoaders && candidateLoaders.length ? candidateLoaders : null;
35
33
  }
36
34
  //# sourceMappingURL=loader-context.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/loader-utils/loader-context.ts"],"names":["getFetchFunction","getLoaderContext","context","options","previousContext","resolvedContext","fetch","Array","isArray","loaders","getLoadersFromContext","candidateLoaders","contextLoaders","length"],"mappings":"AACA,SAAQA,gBAAR,QAA+B,gBAA/B;AAWA,OAAO,SAASC,gBAAT,CACLC,OADK,EAELC,OAFK,EAGLC,eAAqC,GAAG,IAHnC,EAIU;AAGf,MAAIA,eAAJ,EAAqB;AACnB,WAAOA,eAAP;AACD;;AAED,QAAMC,eAA8B,GAAG;AACrCC,IAAAA,KAAK,EAAEN,gBAAgB,CAACG,OAAD,EAAUD,OAAV,CADc;AAErC,OAAGA;AAFkC,GAAvC;;AAMA,MAAI,CAACK,KAAK,CAACC,OAAN,CAAcH,eAAe,CAACI,OAA9B,CAAL,EAA6C;AAC3CJ,IAAAA,eAAe,CAACI,OAAhB,GAA0B,IAA1B;AACD;;AAED,SAAOJ,eAAP;AACD;AAGD,OAAO,SAASK,qBAAT,CACLD,OADK,EAELP,OAFK,EAGL;AAEA,MAAI,CAACA,OAAD,IAAYO,OAAZ,IAAuB,CAACF,KAAK,CAACC,OAAN,CAAcC,OAAd,CAA5B,EAAoD;AAClD,WAAOA,OAAP;AACD;;AAGD,MAAIE,gBAAJ;;AACA,MAAIF,OAAJ,EAAa;AACXE,IAAAA,gBAAgB,GAAGJ,KAAK,CAACC,OAAN,CAAcC,OAAd,IAAyBA,OAAzB,GAAmC,CAACA,OAAD,CAAtD;AACD;;AACD,MAAIP,OAAO,IAAIA,OAAO,CAACO,OAAvB,EAAgC;AAC9B,UAAMG,cAAc,GAAGL,KAAK,CAACC,OAAN,CAAcN,OAAO,CAACO,OAAtB,IAAiCP,OAAO,CAACO,OAAzC,GAAmD,CAACP,OAAO,CAACO,OAAT,CAA1E;AACAE,IAAAA,gBAAgB,GAAGA,gBAAgB,GAAG,CAAC,GAAGA,gBAAJ,EAAsB,GAAGC,cAAzB,CAAH,GAA8CA,cAAjF;AACD;;AAED,SAAOD,gBAAgB,IAAIA,gBAAgB,CAACE,MAArC,GAA8CF,gBAA9C,GAAiE,IAAxE;AACD","sourcesContent":["import type {Loader, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\nimport {getFetchFunction} from './option-utils';\n\n/**\n * \"sub\" loaders invoked by other loaders get a \"context\" injected on `this`\n * The context will inject core methods like `parse` and contain information\n * about loaders and options passed in to the top-level `parse` call.\n *\n * @param context\n * @param options\n * @param previousContext\n */\nexport function getLoaderContext(\n context: Omit<LoaderContext, 'fetch'> & Partial<Pick<LoaderContext, 'fetch'>>,\n options?: LoaderOptions,\n previousContext: LoaderContext | null = null\n): LoaderContext {\n // For recursive calls, we already have a context\n // TODO - add any additional loaders to context?\n if (previousContext) {\n return previousContext;\n }\n\n const resolvedContext: LoaderContext = {\n fetch: getFetchFunction(options, context),\n ...context\n };\n\n // Recursive loading does not use single loader\n if (!Array.isArray(resolvedContext.loaders)) {\n resolvedContext.loaders = null;\n }\n\n return resolvedContext;\n}\n\n// eslint-disable-next-line complexity\nexport function getLoadersFromContext(\n loaders: Loader[] | Loader | undefined,\n context?: LoaderContext\n) {\n // A single non-array loader is force selected, but only on top-level (context === null)\n if (!context && loaders && !Array.isArray(loaders)) {\n return loaders;\n }\n\n // Create a merged list\n let candidateLoaders;\n if (loaders) {\n candidateLoaders = Array.isArray(loaders) ? loaders : [loaders];\n }\n if (context && context.loaders) {\n const contextLoaders = Array.isArray(context.loaders) ? context.loaders : [context.loaders];\n candidateLoaders = candidateLoaders ? [...candidateLoaders, ...contextLoaders] : contextLoaders;\n }\n // If no loaders, return null to look in globally registered loaders\n return candidateLoaders && candidateLoaders.length ? candidateLoaders : null;\n}\n"],"file":"loader-context.js"}
1
+ {"version":3,"file":"loader-context.js","names":["getFetchFunction","getLoaderContext","context","options","previousContext","resolvedContext","fetch","Array","isArray","loaders","getLoadersFromContext","candidateLoaders","contextLoaders","length"],"sources":["../../../../src/lib/loader-utils/loader-context.ts"],"sourcesContent":["import type {Loader, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\nimport {getFetchFunction} from './option-utils';\n\n/**\n * \"sub\" loaders invoked by other loaders get a \"context\" injected on `this`\n * The context will inject core methods like `parse` and contain information\n * about loaders and options passed in to the top-level `parse` call.\n *\n * @param context\n * @param options\n * @param previousContext\n */\nexport function getLoaderContext(\n context: Omit<LoaderContext, 'fetch'> & Partial<Pick<LoaderContext, 'fetch'>>,\n options?: LoaderOptions,\n previousContext: LoaderContext | null = null\n): LoaderContext {\n // For recursive calls, we already have a context\n // TODO - add any additional loaders to context?\n if (previousContext) {\n return previousContext;\n }\n\n const resolvedContext: LoaderContext = {\n fetch: getFetchFunction(options, context),\n ...context\n };\n\n // Recursive loading does not use single loader\n if (!Array.isArray(resolvedContext.loaders)) {\n resolvedContext.loaders = null;\n }\n\n return resolvedContext;\n}\n\n// eslint-disable-next-line complexity\nexport function getLoadersFromContext(\n loaders: Loader[] | Loader | undefined,\n context?: LoaderContext\n) {\n // A single non-array loader is force selected, but only on top-level (context === null)\n if (!context && loaders && !Array.isArray(loaders)) {\n return loaders;\n }\n\n // Create a merged list\n let candidateLoaders;\n if (loaders) {\n candidateLoaders = Array.isArray(loaders) ? loaders : [loaders];\n }\n if (context && context.loaders) {\n const contextLoaders = Array.isArray(context.loaders) ? context.loaders : [context.loaders];\n candidateLoaders = candidateLoaders ? [...candidateLoaders, ...contextLoaders] : contextLoaders;\n }\n // If no loaders, return null to look in globally registered loaders\n return candidateLoaders && candidateLoaders.length ? candidateLoaders : null;\n}\n"],"mappings":"AACA,SAAQA,gBAAgB,QAAO,gBAAgB;;AAW/C,OAAO,SAASC,gBAAgB,CAC9BC,OAA6E,EAC7EC,OAAuB,EAER;EAAA,IADfC,eAAqC,uEAAG,IAAI;EAI5C,IAAIA,eAAe,EAAE;IACnB,OAAOA,eAAe;EACxB;EAEA,MAAMC,eAA8B,GAAG;IACrCC,KAAK,EAAEN,gBAAgB,CAACG,OAAO,EAAED,OAAO,CAAC;IACzC,GAAGA;EACL,CAAC;;EAGD,IAAI,CAACK,KAAK,CAACC,OAAO,CAACH,eAAe,CAACI,OAAO,CAAC,EAAE;IAC3CJ,eAAe,CAACI,OAAO,GAAG,IAAI;EAChC;EAEA,OAAOJ,eAAe;AACxB;;AAGA,OAAO,SAASK,qBAAqB,CACnCD,OAAsC,EACtCP,OAAuB,EACvB;EAEA,IAAI,CAACA,OAAO,IAAIO,OAAO,IAAI,CAACF,KAAK,CAACC,OAAO,CAACC,OAAO,CAAC,EAAE;IAClD,OAAOA,OAAO;EAChB;;EAGA,IAAIE,gBAAgB;EACpB,IAAIF,OAAO,EAAE;IACXE,gBAAgB,GAAGJ,KAAK,CAACC,OAAO,CAACC,OAAO,CAAC,GAAGA,OAAO,GAAG,CAACA,OAAO,CAAC;EACjE;EACA,IAAIP,OAAO,IAAIA,OAAO,CAACO,OAAO,EAAE;IAC9B,MAAMG,cAAc,GAAGL,KAAK,CAACC,OAAO,CAACN,OAAO,CAACO,OAAO,CAAC,GAAGP,OAAO,CAACO,OAAO,GAAG,CAACP,OAAO,CAACO,OAAO,CAAC;IAC3FE,gBAAgB,GAAGA,gBAAgB,GAAG,CAAC,GAAGA,gBAAgB,EAAE,GAAGC,cAAc,CAAC,GAAGA,cAAc;EACjG;EAEA,OAAOD,gBAAgB,IAAIA,gBAAgB,CAACE,MAAM,GAAGF,gBAAgB,GAAG,IAAI;AAC9E"}
@@ -3,46 +3,51 @@ import { Log } from 'probe.gl';
3
3
  export const probeLog = new Log({
4
4
  id: 'loaders.gl'
5
5
  });
6
+
6
7
  export class NullLog {
7
8
  log() {
8
9
  return () => {};
9
10
  }
10
-
11
11
  info() {
12
12
  return () => {};
13
13
  }
14
-
15
14
  warn() {
16
15
  return () => {};
17
16
  }
18
-
19
17
  error() {
20
18
  return () => {};
21
19
  }
22
-
23
20
  }
21
+
24
22
  export class ConsoleLog {
25
23
  constructor() {
26
24
  _defineProperty(this, "console", void 0);
27
-
28
25
  this.console = console;
29
26
  }
30
27
 
31
- log(...args) {
28
+ log() {
29
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
30
+ args[_key] = arguments[_key];
31
+ }
32
32
  return this.console.log.bind(this.console, ...args);
33
33
  }
34
-
35
- info(...args) {
34
+ info() {
35
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
36
+ args[_key2] = arguments[_key2];
37
+ }
36
38
  return this.console.info.bind(this.console, ...args);
37
39
  }
38
-
39
- warn(...args) {
40
+ warn() {
41
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
42
+ args[_key3] = arguments[_key3];
43
+ }
40
44
  return this.console.warn.bind(this.console, ...args);
41
45
  }
42
-
43
- error(...args) {
46
+ error() {
47
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
48
+ args[_key4] = arguments[_key4];
49
+ }
44
50
  return this.console.error.bind(this.console, ...args);
45
51
  }
46
-
47
52
  }
48
53
  //# sourceMappingURL=loggers.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/loader-utils/loggers.ts"],"names":["Log","probeLog","id","NullLog","log","info","warn","error","ConsoleLog","constructor","console","args","bind"],"mappings":";AACA,SAAQA,GAAR,QAAkB,UAAlB;AAEA,OAAO,MAAMC,QAAQ,GAAG,IAAID,GAAJ,CAAQ;AAACE,EAAAA,EAAE,EAAE;AAAL,CAAR,CAAjB;AAGP,OAAO,MAAMC,OAAN,CAAc;AACnBC,EAAAA,GAAG,GAAG;AACJ,WAAO,MAAM,CAAE,CAAf;AACD;;AACDC,EAAAA,IAAI,GAAG;AACL,WAAO,MAAM,CAAE,CAAf;AACD;;AACDC,EAAAA,IAAI,GAAG;AACL,WAAO,MAAM,CAAE,CAAf;AACD;;AACDC,EAAAA,KAAK,GAAG;AACN,WAAO,MAAM,CAAE,CAAf;AACD;;AAZkB;AAgBrB,OAAO,MAAMC,UAAN,CAAiB;AAGtBC,EAAAA,WAAW,GAAG;AAAA;;AACZ,SAAKC,OAAL,GAAeA,OAAf;AACD;;AACDN,EAAAA,GAAG,CAAC,GAAGO,IAAJ,EAAU;AACX,WAAO,KAAKD,OAAL,CAAaN,GAAb,CAAiBQ,IAAjB,CAAsB,KAAKF,OAA3B,EAAoC,GAAGC,IAAvC,CAAP;AACD;;AACDN,EAAAA,IAAI,CAAC,GAAGM,IAAJ,EAAU;AACZ,WAAO,KAAKD,OAAL,CAAaL,IAAb,CAAkBO,IAAlB,CAAuB,KAAKF,OAA5B,EAAqC,GAAGC,IAAxC,CAAP;AACD;;AACDL,EAAAA,IAAI,CAAC,GAAGK,IAAJ,EAAU;AACZ,WAAO,KAAKD,OAAL,CAAaJ,IAAb,CAAkBM,IAAlB,CAAuB,KAAKF,OAA5B,EAAqC,GAAGC,IAAxC,CAAP;AACD;;AACDJ,EAAAA,KAAK,CAAC,GAAGI,IAAJ,EAAU;AACb,WAAO,KAAKD,OAAL,CAAaH,KAAb,CAAmBK,IAAnB,CAAwB,KAAKF,OAA7B,EAAsC,GAAGC,IAAzC,CAAP;AACD;;AAjBqB","sourcesContent":["// probe.gl Log compatible loggers\nimport {Log} from 'probe.gl';\n\nexport const probeLog = new Log({id: 'loaders.gl'});\n\n// Logs nothing\nexport class NullLog {\n log() {\n return () => {};\n }\n info() {\n return () => {};\n }\n warn() {\n return () => {};\n }\n error() {\n return () => {};\n }\n}\n\n// Logs to console\nexport class ConsoleLog {\n console;\n\n constructor() {\n this.console = console; // eslint-disable-line\n }\n log(...args) {\n return this.console.log.bind(this.console, ...args);\n }\n info(...args) {\n return this.console.info.bind(this.console, ...args);\n }\n warn(...args) {\n return this.console.warn.bind(this.console, ...args);\n }\n error(...args) {\n return this.console.error.bind(this.console, ...args);\n }\n}\n"],"file":"loggers.js"}
1
+ {"version":3,"file":"loggers.js","names":["Log","probeLog","id","NullLog","log","info","warn","error","ConsoleLog","constructor","console","args","bind"],"sources":["../../../../src/lib/loader-utils/loggers.ts"],"sourcesContent":["// probe.gl Log compatible loggers\nimport {Log} from 'probe.gl';\n\nexport const probeLog = new Log({id: 'loaders.gl'});\n\n// Logs nothing\nexport class NullLog {\n log() {\n return () => {};\n }\n info() {\n return () => {};\n }\n warn() {\n return () => {};\n }\n error() {\n return () => {};\n }\n}\n\n// Logs to console\nexport class ConsoleLog {\n console;\n\n constructor() {\n this.console = console; // eslint-disable-line\n }\n log(...args) {\n return this.console.log.bind(this.console, ...args);\n }\n info(...args) {\n return this.console.info.bind(this.console, ...args);\n }\n warn(...args) {\n return this.console.warn.bind(this.console, ...args);\n }\n error(...args) {\n return this.console.error.bind(this.console, ...args);\n }\n}\n"],"mappings":";AACA,SAAQA,GAAG,QAAO,UAAU;AAE5B,OAAO,MAAMC,QAAQ,GAAG,IAAID,GAAG,CAAC;EAACE,EAAE,EAAE;AAAY,CAAC,CAAC;;AAGnD,OAAO,MAAMC,OAAO,CAAC;EACnBC,GAAG,GAAG;IACJ,OAAO,MAAM,CAAC,CAAC;EACjB;EACAC,IAAI,GAAG;IACL,OAAO,MAAM,CAAC,CAAC;EACjB;EACAC,IAAI,GAAG;IACL,OAAO,MAAM,CAAC,CAAC;EACjB;EACAC,KAAK,GAAG;IACN,OAAO,MAAM,CAAC,CAAC;EACjB;AACF;;AAGA,OAAO,MAAMC,UAAU,CAAC;EAGtBC,WAAW,GAAG;IAAA;IACZ,IAAI,CAACC,OAAO,GAAGA,OAAO;EACxB;;EACAN,GAAG,GAAU;IAAA,kCAANO,IAAI;MAAJA,IAAI;IAAA;IACT,OAAO,IAAI,CAACD,OAAO,CAACN,GAAG,CAACQ,IAAI,CAAC,IAAI,CAACF,OAAO,EAAE,GAAGC,IAAI,CAAC;EACrD;EACAN,IAAI,GAAU;IAAA,mCAANM,IAAI;MAAJA,IAAI;IAAA;IACV,OAAO,IAAI,CAACD,OAAO,CAACL,IAAI,CAACO,IAAI,CAAC,IAAI,CAACF,OAAO,EAAE,GAAGC,IAAI,CAAC;EACtD;EACAL,IAAI,GAAU;IAAA,mCAANK,IAAI;MAAJA,IAAI;IAAA;IACV,OAAO,IAAI,CAACD,OAAO,CAACJ,IAAI,CAACM,IAAI,CAAC,IAAI,CAACF,OAAO,EAAE,GAAGC,IAAI,CAAC;EACtD;EACAJ,KAAK,GAAU;IAAA,mCAANI,IAAI;MAAJA,IAAI;IAAA;IACX,OAAO,IAAI,CAACD,OAAO,CAACH,KAAK,CAACK,IAAI,CAAC,IAAI,CAACF,OAAO,EAAE,GAAGC,IAAI,CAAC;EACvD;AACF"}
@@ -1,30 +1,29 @@
1
1
  import { assert } from '@loaders.gl/loader-utils';
2
2
  export function isLoaderObject(loader) {
3
3
  var _loader;
4
-
5
4
  if (!loader) {
6
5
  return false;
7
6
  }
8
-
9
7
  if (Array.isArray(loader)) {
10
8
  loader = loader[0];
11
9
  }
12
-
13
10
  const hasExtensions = Array.isArray((_loader = loader) === null || _loader === void 0 ? void 0 : _loader.extensions);
11
+
14
12
  return hasExtensions;
15
13
  }
16
14
  export function normalizeLoader(loader) {
17
15
  var _loader2, _loader3;
18
-
19
16
  assert(loader, 'null loader');
20
17
  assert(isLoaderObject(loader), 'invalid loader');
21
- let options;
22
18
 
19
+ let options;
23
20
  if (Array.isArray(loader)) {
24
21
  options = loader[1];
25
22
  loader = loader[0];
26
- loader = { ...loader,
27
- options: { ...loader.options,
23
+ loader = {
24
+ ...loader,
25
+ options: {
26
+ ...loader.options,
28
27
  ...options
29
28
  }
30
29
  };
@@ -33,11 +32,9 @@ export function normalizeLoader(loader) {
33
32
  if ((_loader2 = loader) !== null && _loader2 !== void 0 && _loader2.parseTextSync || (_loader3 = loader) !== null && _loader3 !== void 0 && _loader3.parseText) {
34
33
  loader.text = true;
35
34
  }
36
-
37
35
  if (!loader.text) {
38
36
  loader.binary = true;
39
37
  }
40
-
41
38
  return loader;
42
39
  }
43
40
  //# sourceMappingURL=normalize-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/loader-utils/normalize-loader.ts"],"names":["assert","isLoaderObject","loader","Array","isArray","hasExtensions","extensions","normalizeLoader","options","parseTextSync","parseText","text","binary"],"mappings":"AACA,SAAQA,MAAR,QAAqB,0BAArB;AAEA,OAAO,SAASC,cAAT,CAAwBC,MAAxB,EAA+C;AAAA;;AACpD,MAAI,CAACA,MAAL,EAAa;AACX,WAAO,KAAP;AACD;;AAED,MAAIC,KAAK,CAACC,OAAN,CAAcF,MAAd,CAAJ,EAA2B;AACzBA,IAAAA,MAAM,GAAGA,MAAM,CAAC,CAAD,CAAf;AACD;;AAED,QAAMG,aAAa,GAAGF,KAAK,CAACC,OAAN,YAAcF,MAAd,4CAAc,QAAQI,UAAtB,CAAtB;AAWA,SAAOD,aAAP;AACD;AAED,OAAO,SAASE,eAAT,CAAyBL,MAAzB,EAAiD;AAAA;;AAItDF,EAAAA,MAAM,CAACE,MAAD,EAAS,aAAT,CAAN;AACAF,EAAAA,MAAM,CAACC,cAAc,CAACC,MAAD,CAAf,EAAyB,gBAAzB,CAAN;AAKA,MAAIM,OAAJ;;AACA,MAAIL,KAAK,CAACC,OAAN,CAAcF,MAAd,CAAJ,EAA2B;AACzBM,IAAAA,OAAO,GAAGN,MAAM,CAAC,CAAD,CAAhB;AACAA,IAAAA,MAAM,GAAGA,MAAM,CAAC,CAAD,CAAf;AACAA,IAAAA,MAAM,GAAG,EACP,GAAGA,MADI;AAEPM,MAAAA,OAAO,EAAE,EAAC,GAAGN,MAAM,CAACM,OAAX;AAAoB,WAAGA;AAAvB;AAFF,KAAT;AAID;;AAMD,MAAI,YAAAN,MAAM,UAAN,oCAAQO,aAAR,gBAAyBP,MAAzB,qCAAyB,SAAQQ,SAArC,EAAgD;AAC9CR,IAAAA,MAAM,CAACS,IAAP,GAAc,IAAd;AACD;;AAED,MAAI,CAACT,MAAM,CAACS,IAAZ,EAAkB;AAChBT,IAAAA,MAAM,CAACU,MAAP,GAAgB,IAAhB;AACD;;AAED,SAAOV,MAAP;AACD","sourcesContent":["import type {Loader} from '@loaders.gl/loader-utils';\nimport {assert} from '@loaders.gl/loader-utils';\n\nexport function isLoaderObject(loader?: any): boolean {\n if (!loader) {\n return false;\n }\n\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n const hasExtensions = Array.isArray(loader?.extensions);\n\n /* Now handled by types and worker loaders do not have these\n let hasParser =\n loader.parseTextSync ||\n loader.parseSync ||\n loader.parse ||\n loader.parseStream || // TODO Remove, Replace with parseInBatches\n loader.parseInBatches;\n */\n\n return hasExtensions;\n}\n\nexport function normalizeLoader(loader: Loader): Loader {\n // This error is fairly easy to trigger by mixing up import statements etc\n // So we make an exception and add a developer error message for this case\n // To help new users from getting stuck here\n assert(loader, 'null loader');\n assert(isLoaderObject(loader), 'invalid loader');\n\n // NORMALIZE [LOADER, OPTIONS] => LOADER\n\n // If [loader, options], create a new loaders object with options merged in\n let options;\n if (Array.isArray(loader)) {\n options = loader[1];\n loader = loader[0];\n loader = {\n ...loader,\n options: {...loader.options, ...options}\n };\n }\n\n // NORMALIZE text and binary flags\n // Ensure at least one of text/binary flags are properly set\n\n // @ts-expect-error\n if (loader?.parseTextSync || loader?.parseText) {\n loader.text = true;\n }\n\n if (!loader.text) {\n loader.binary = true;\n }\n\n return loader;\n}\n"],"file":"normalize-loader.js"}
1
+ {"version":3,"file":"normalize-loader.js","names":["assert","isLoaderObject","loader","Array","isArray","hasExtensions","extensions","normalizeLoader","options","parseTextSync","parseText","text","binary"],"sources":["../../../../src/lib/loader-utils/normalize-loader.ts"],"sourcesContent":["import type {Loader} from '@loaders.gl/loader-utils';\nimport {assert} from '@loaders.gl/loader-utils';\n\nexport function isLoaderObject(loader?: any): boolean {\n if (!loader) {\n return false;\n }\n\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n const hasExtensions = Array.isArray(loader?.extensions);\n\n /* Now handled by types and worker loaders do not have these\n let hasParser =\n loader.parseTextSync ||\n loader.parseSync ||\n loader.parse ||\n loader.parseStream || // TODO Remove, Replace with parseInBatches\n loader.parseInBatches;\n */\n\n return hasExtensions;\n}\n\nexport function normalizeLoader(loader: Loader): Loader {\n // This error is fairly easy to trigger by mixing up import statements etc\n // So we make an exception and add a developer error message for this case\n // To help new users from getting stuck here\n assert(loader, 'null loader');\n assert(isLoaderObject(loader), 'invalid loader');\n\n // NORMALIZE [LOADER, OPTIONS] => LOADER\n\n // If [loader, options], create a new loaders object with options merged in\n let options;\n if (Array.isArray(loader)) {\n options = loader[1];\n loader = loader[0];\n loader = {\n ...loader,\n options: {...loader.options, ...options}\n };\n }\n\n // NORMALIZE text and binary flags\n // Ensure at least one of text/binary flags are properly set\n\n // @ts-expect-error\n if (loader?.parseTextSync || loader?.parseText) {\n loader.text = true;\n }\n\n if (!loader.text) {\n loader.binary = true;\n }\n\n return loader;\n}\n"],"mappings":"AACA,SAAQA,MAAM,QAAO,0BAA0B;AAE/C,OAAO,SAASC,cAAc,CAACC,MAAY,EAAW;EAAA;EACpD,IAAI,CAACA,MAAM,EAAE;IACX,OAAO,KAAK;EACd;EAEA,IAAIC,KAAK,CAACC,OAAO,CAACF,MAAM,CAAC,EAAE;IACzBA,MAAM,GAAGA,MAAM,CAAC,CAAC,CAAC;EACpB;EAEA,MAAMG,aAAa,GAAGF,KAAK,CAACC,OAAO,YAACF,MAAM,4CAAN,QAAQI,UAAU,CAAC;;EAWvD,OAAOD,aAAa;AACtB;AAEA,OAAO,SAASE,eAAe,CAACL,MAAc,EAAU;EAAA;EAItDF,MAAM,CAACE,MAAM,EAAE,aAAa,CAAC;EAC7BF,MAAM,CAACC,cAAc,CAACC,MAAM,CAAC,EAAE,gBAAgB,CAAC;;EAKhD,IAAIM,OAAO;EACX,IAAIL,KAAK,CAACC,OAAO,CAACF,MAAM,CAAC,EAAE;IACzBM,OAAO,GAAGN,MAAM,CAAC,CAAC,CAAC;IACnBA,MAAM,GAAGA,MAAM,CAAC,CAAC,CAAC;IAClBA,MAAM,GAAG;MACP,GAAGA,MAAM;MACTM,OAAO,EAAE;QAAC,GAAGN,MAAM,CAACM,OAAO;QAAE,GAAGA;MAAO;IACzC,CAAC;EACH;;EAMA,IAAI,YAAAN,MAAM,qCAAN,SAAQO,aAAa,gBAAIP,MAAM,qCAAN,SAAQQ,SAAS,EAAE;IAC9CR,MAAM,CAACS,IAAI,GAAG,IAAI;EACpB;EAEA,IAAI,CAACT,MAAM,CAACS,IAAI,EAAE;IAChBT,MAAM,CAACU,MAAM,GAAG,IAAI;EACtB;EAEA,OAAOV,MAAM;AACf"}
@@ -5,6 +5,7 @@ export const DEFAULT_LOADER_OPTIONS = {
5
5
  mimeType: undefined,
6
6
  nothrow: false,
7
7
  log: new ConsoleLog(),
8
+
8
9
  CDN: 'https://unpkg.com/@loaders.gl',
9
10
  worker: true,
10
11
  maxConcurrency: 3,
@@ -12,6 +13,7 @@ export const DEFAULT_LOADER_OPTIONS = {
12
13
  reuseWorkers: isBrowser,
13
14
  _nodeWorkers: false,
14
15
  _workerType: '',
16
+
15
17
  limit: 0,
16
18
  _limitMB: 0,
17
19
  batchSize: 'auto',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/loader-utils/option-defaults.ts"],"names":["isBrowser","ConsoleLog","DEFAULT_LOADER_OPTIONS","fetch","mimeType","undefined","nothrow","log","CDN","worker","maxConcurrency","maxMobileConcurrency","reuseWorkers","_nodeWorkers","_workerType","limit","_limitMB","batchSize","batchDebounceMs","metadata","transforms","REMOVED_LOADER_OPTIONS","throws","dataType","uri","method","headers","body","mode","credentials","cache","redirect","referrer","referrerPolicy","integrity","keepalive","signal"],"mappings":"AACA,SAAQA,SAAR,QAAwB,0BAAxB;AACA,SAAQC,UAAR,QAAyB,WAAzB;AAEA,OAAO,MAAMC,sBAAqC,GAAG;AAEnDC,EAAAA,KAAK,EAAE,IAF4C;AAGnDC,EAAAA,QAAQ,EAAEC,SAHyC;AAInDC,EAAAA,OAAO,EAAE,KAJ0C;AAKnDC,EAAAA,GAAG,EAAE,IAAIN,UAAJ,EAL8C;AAOnDO,EAAAA,GAAG,EAAE,+BAP8C;AAQnDC,EAAAA,MAAM,EAAE,IAR2C;AASnDC,EAAAA,cAAc,EAAE,CATmC;AAUnDC,EAAAA,oBAAoB,EAAE,CAV6B;AAWnDC,EAAAA,YAAY,EAAEZ,SAXqC;AAYnDa,EAAAA,YAAY,EAAE,KAZqC;AAanDC,EAAAA,WAAW,EAAE,EAbsC;AAenDC,EAAAA,KAAK,EAAE,CAf4C;AAgBnDC,EAAAA,QAAQ,EAAE,CAhByC;AAiBnDC,EAAAA,SAAS,EAAE,MAjBwC;AAkBnDC,EAAAA,eAAe,EAAE,CAlBkC;AAmBnDC,EAAAA,QAAQ,EAAE,KAnByC;AAoBnDC,EAAAA,UAAU,EAAE;AApBuC,CAA9C;AAuBP,OAAO,MAAMC,sBAAsB,GAAG;AACpCC,EAAAA,MAAM,EAAE,SAD4B;AAEpCC,EAAAA,QAAQ,EAAE,kBAF0B;AAGpCC,EAAAA,GAAG,EAAE,SAH+B;AAKpCC,EAAAA,MAAM,EAAE,cAL4B;AAMpCC,EAAAA,OAAO,EAAE,eAN2B;AAOpCC,EAAAA,IAAI,EAAE,YAP8B;AAQpCC,EAAAA,IAAI,EAAE,YAR8B;AASpCC,EAAAA,WAAW,EAAE,mBATuB;AAUpCC,EAAAA,KAAK,EAAE,aAV6B;AAWpCC,EAAAA,QAAQ,EAAE,gBAX0B;AAYpCC,EAAAA,QAAQ,EAAE,gBAZ0B;AAapCC,EAAAA,cAAc,EAAE,sBAboB;AAcpCC,EAAAA,SAAS,EAAE,iBAdyB;AAepCC,EAAAA,SAAS,EAAE,iBAfyB;AAgBpCC,EAAAA,MAAM,EAAE;AAhB4B,CAA/B","sourcesContent":["import type {LoaderOptions} from '@loaders.gl/loader-utils';\nimport {isBrowser} from '@loaders.gl/loader-utils';\nimport {ConsoleLog} from './loggers';\n\nexport const DEFAULT_LOADER_OPTIONS: LoaderOptions = {\n // baseUri\n fetch: null,\n mimeType: undefined,\n nothrow: false,\n log: new ConsoleLog(), // A probe.gl compatible (`log.log()()` syntax) that just logs to console\n\n CDN: 'https://unpkg.com/@loaders.gl',\n worker: true, // By default, use worker if provided by loader.\n maxConcurrency: 3, // How many worker instances should be created for each loader.\n maxMobileConcurrency: 1, // How many worker instances should be created for each loader on mobile devices.\n reuseWorkers: isBrowser, // By default reuse workers in browser (Node.js refuses to terminate if browsers are running)\n _nodeWorkers: false, // By default do not support node workers\n _workerType: '', // 'test' to use locally generated workers\n\n limit: 0,\n _limitMB: 0,\n batchSize: 'auto',\n batchDebounceMs: 0,\n metadata: false, // TODO - currently only implemented for parseInBatches, adds initial metadata batch,\n transforms: []\n};\n\nexport const REMOVED_LOADER_OPTIONS = {\n throws: 'nothrow',\n dataType: '(no longer used)',\n uri: 'baseUri',\n // Warn if fetch options are used on top-level\n method: 'fetch.method',\n headers: 'fetch.headers',\n body: 'fetch.body',\n mode: 'fetch.mode',\n credentials: 'fetch.credentials',\n cache: 'fetch.cache',\n redirect: 'fetch.redirect',\n referrer: 'fetch.referrer',\n referrerPolicy: 'fetch.referrerPolicy',\n integrity: 'fetch.integrity',\n keepalive: 'fetch.keepalive',\n signal: 'fetch.signal'\n};\n"],"file":"option-defaults.js"}
1
+ {"version":3,"file":"option-defaults.js","names":["isBrowser","ConsoleLog","DEFAULT_LOADER_OPTIONS","fetch","mimeType","undefined","nothrow","log","CDN","worker","maxConcurrency","maxMobileConcurrency","reuseWorkers","_nodeWorkers","_workerType","limit","_limitMB","batchSize","batchDebounceMs","metadata","transforms","REMOVED_LOADER_OPTIONS","throws","dataType","uri","method","headers","body","mode","credentials","cache","redirect","referrer","referrerPolicy","integrity","keepalive","signal"],"sources":["../../../../src/lib/loader-utils/option-defaults.ts"],"sourcesContent":["import type {LoaderOptions} from '@loaders.gl/loader-utils';\nimport {isBrowser} from '@loaders.gl/loader-utils';\nimport {ConsoleLog} from './loggers';\n\nexport const DEFAULT_LOADER_OPTIONS: LoaderOptions = {\n // baseUri\n fetch: null,\n mimeType: undefined,\n nothrow: false,\n log: new ConsoleLog(), // A probe.gl compatible (`log.log()()` syntax) that just logs to console\n\n CDN: 'https://unpkg.com/@loaders.gl',\n worker: true, // By default, use worker if provided by loader.\n maxConcurrency: 3, // How many worker instances should be created for each loader.\n maxMobileConcurrency: 1, // How many worker instances should be created for each loader on mobile devices.\n reuseWorkers: isBrowser, // By default reuse workers in browser (Node.js refuses to terminate if browsers are running)\n _nodeWorkers: false, // By default do not support node workers\n _workerType: '', // 'test' to use locally generated workers\n\n limit: 0,\n _limitMB: 0,\n batchSize: 'auto',\n batchDebounceMs: 0,\n metadata: false, // TODO - currently only implemented for parseInBatches, adds initial metadata batch,\n transforms: []\n};\n\nexport const REMOVED_LOADER_OPTIONS = {\n throws: 'nothrow',\n dataType: '(no longer used)',\n uri: 'baseUri',\n // Warn if fetch options are used on top-level\n method: 'fetch.method',\n headers: 'fetch.headers',\n body: 'fetch.body',\n mode: 'fetch.mode',\n credentials: 'fetch.credentials',\n cache: 'fetch.cache',\n redirect: 'fetch.redirect',\n referrer: 'fetch.referrer',\n referrerPolicy: 'fetch.referrerPolicy',\n integrity: 'fetch.integrity',\n keepalive: 'fetch.keepalive',\n signal: 'fetch.signal'\n};\n"],"mappings":"AACA,SAAQA,SAAS,QAAO,0BAA0B;AAClD,SAAQC,UAAU,QAAO,WAAW;AAEpC,OAAO,MAAMC,sBAAqC,GAAG;EAEnDC,KAAK,EAAE,IAAI;EACXC,QAAQ,EAAEC,SAAS;EACnBC,OAAO,EAAE,KAAK;EACdC,GAAG,EAAE,IAAIN,UAAU,EAAE;;EAErBO,GAAG,EAAE,+BAA+B;EACpCC,MAAM,EAAE,IAAI;EACZC,cAAc,EAAE,CAAC;EACjBC,oBAAoB,EAAE,CAAC;EACvBC,YAAY,EAAEZ,SAAS;EACvBa,YAAY,EAAE,KAAK;EACnBC,WAAW,EAAE,EAAE;;EAEfC,KAAK,EAAE,CAAC;EACRC,QAAQ,EAAE,CAAC;EACXC,SAAS,EAAE,MAAM;EACjBC,eAAe,EAAE,CAAC;EAClBC,QAAQ,EAAE,KAAK;EACfC,UAAU,EAAE;AACd,CAAC;AAED,OAAO,MAAMC,sBAAsB,GAAG;EACpCC,MAAM,EAAE,SAAS;EACjBC,QAAQ,EAAE,kBAAkB;EAC5BC,GAAG,EAAE,SAAS;EAEdC,MAAM,EAAE,cAAc;EACtBC,OAAO,EAAE,eAAe;EACxBC,IAAI,EAAE,YAAY;EAClBC,IAAI,EAAE,YAAY;EAClBC,WAAW,EAAE,mBAAmB;EAChCC,KAAK,EAAE,aAAa;EACpBC,QAAQ,EAAE,gBAAgB;EAC1BC,QAAQ,EAAE,gBAAgB;EAC1BC,cAAc,EAAE,sBAAsB;EACtCC,SAAS,EAAE,iBAAiB;EAC5BC,SAAS,EAAE,iBAAiB;EAC5BC,MAAM,EAAE;AACV,CAAC"}
@@ -2,31 +2,38 @@ import { isPureObject, isObject } from '../../javascript-utils/is-type';
2
2
  import { fetchFile } from '../fetch/fetch-file';
3
3
  import { probeLog, NullLog } from './loggers';
4
4
  import { DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS } from './option-defaults';
5
+
5
6
  export function getGlobalLoaderState() {
6
7
  globalThis.loaders = globalThis.loaders || {};
7
8
  const {
8
9
  loaders
9
10
  } = globalThis;
11
+
10
12
  loaders._state = loaders._state || {};
11
13
  return loaders._state;
12
14
  }
15
+
13
16
  export const getGlobalLoaderOptions = () => {
14
17
  const state = getGlobalLoaderState();
15
- state.globalOptions = state.globalOptions || { ...DEFAULT_LOADER_OPTIONS
18
+ state.globalOptions = state.globalOptions || {
19
+ ...DEFAULT_LOADER_OPTIONS
16
20
  };
17
21
  return state.globalOptions;
18
22
  };
23
+
19
24
  export function setGlobalOptions(options) {
20
25
  const state = getGlobalLoaderState();
21
26
  const globalOptions = getGlobalLoaderOptions();
22
27
  state.globalOptions = normalizeOptionsInternal(globalOptions, options);
23
28
  }
29
+
24
30
  export function normalizeOptions(options, loader, loaders, url) {
25
31
  loaders = loaders || [];
26
32
  loaders = Array.isArray(loaders) ? loaders : [loaders];
27
33
  validateOptions(options, loaders);
28
34
  return normalizeOptionsInternal(loader, options, url);
29
35
  }
36
+
30
37
  export function getFetchFunction(options, context) {
31
38
  const globalOptions = getGlobalLoaderOptions();
32
39
  const fetchOptions = options || globalOptions;
@@ -48,11 +55,12 @@ export function getFetchFunction(options, context) {
48
55
 
49
56
  function validateOptions(options, loaders) {
50
57
  validateOptionsObject(options, null, DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS, loaders);
51
-
52
58
  for (const loader of loaders) {
53
59
  const idOptions = options && options[loader.id] || {};
60
+
54
61
  const loaderOptions = loader.options && loader.options[loader.id] || {};
55
62
  const deprecatedOptions = loader.deprecatedOptions && loader.deprecatedOptions[loader.id] || {};
63
+
56
64
  validateOptionsObject(idOptions, loader.id, loaderOptions, deprecatedOptions, loaders);
57
65
  }
58
66
  }
@@ -60,12 +68,10 @@ function validateOptions(options, loaders) {
60
68
  function validateOptionsObject(options, id, defaultOptions, deprecatedOptions, loaders) {
61
69
  const loaderName = id || 'Top level';
62
70
  const prefix = id ? "".concat(id, ".") : '';
63
-
64
71
  for (const key in options) {
65
72
  const isSubOptions = !id && isObject(options[key]);
66
73
  const isBaseUriOption = key === 'baseUri' && !id;
67
74
  const isWorkerUrlOption = key === 'workerUrl' && id;
68
-
69
75
  if (!(key in defaultOptions) && !isBaseUriOption && !isWorkerUrlOption) {
70
76
  if (key in deprecatedOptions) {
71
77
  probeLog.warn("".concat(loaderName, " loader option '").concat(prefix).concat(key, "' no longer supported, use '").concat(deprecatedOptions[key], "'"))();
@@ -76,39 +82,33 @@ function validateOptionsObject(options, id, defaultOptions, deprecatedOptions, l
76
82
  }
77
83
  }
78
84
  }
79
-
80
85
  function findSimilarOption(optionKey, loaders) {
81
86
  const lowerCaseOptionKey = optionKey.toLowerCase();
82
87
  let bestSuggestion = '';
83
-
84
88
  for (const loader of loaders) {
85
89
  for (const key in loader.options) {
86
90
  if (optionKey === key) {
87
91
  return "Did you mean '".concat(loader.id, ".").concat(key, "'?");
88
92
  }
89
-
90
93
  const lowerCaseKey = key.toLowerCase();
91
94
  const isPartialMatch = lowerCaseOptionKey.startsWith(lowerCaseKey) || lowerCaseKey.startsWith(lowerCaseOptionKey);
92
-
93
95
  if (isPartialMatch) {
94
96
  bestSuggestion = bestSuggestion || "Did you mean '".concat(loader.id, ".").concat(key, "'?");
95
97
  }
96
98
  }
97
99
  }
98
-
99
100
  return bestSuggestion;
100
101
  }
101
-
102
102
  function normalizeOptionsInternal(loader, options, url) {
103
103
  const loaderDefaultOptions = loader.options || {};
104
- const mergedOptions = { ...loaderDefaultOptions
104
+ const mergedOptions = {
105
+ ...loaderDefaultOptions
105
106
  };
106
107
  addUrlOptions(mergedOptions, url);
107
108
 
108
109
  if (mergedOptions.log === null) {
109
110
  mergedOptions.log = new NullLog();
110
111
  }
111
-
112
112
  mergeNestedFields(mergedOptions, getGlobalLoaderOptions());
113
113
  mergeNestedFields(mergedOptions, options);
114
114
  return mergedOptions;
@@ -118,9 +118,9 @@ function mergeNestedFields(mergedOptions, options) {
118
118
  for (const key in options) {
119
119
  if (key in options) {
120
120
  const value = options[key];
121
-
122
121
  if (isPureObject(value) && isPureObject(mergedOptions[key])) {
123
- mergedOptions[key] = { ...mergedOptions[key],
122
+ mergedOptions[key] = {
123
+ ...mergedOptions[key],
124
124
  ...options[key]
125
125
  };
126
126
  } else {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/loader-utils/option-utils.ts"],"names":["isPureObject","isObject","fetchFile","probeLog","NullLog","DEFAULT_LOADER_OPTIONS","REMOVED_LOADER_OPTIONS","getGlobalLoaderState","globalThis","loaders","_state","getGlobalLoaderOptions","state","globalOptions","setGlobalOptions","options","normalizeOptionsInternal","normalizeOptions","loader","url","Array","isArray","validateOptions","getFetchFunction","context","fetchOptions","fetch","validateOptionsObject","idOptions","id","loaderOptions","deprecatedOptions","defaultOptions","loaderName","prefix","key","isSubOptions","isBaseUriOption","isWorkerUrlOption","warn","suggestion","findSimilarOption","optionKey","lowerCaseOptionKey","toLowerCase","bestSuggestion","lowerCaseKey","isPartialMatch","startsWith","loaderDefaultOptions","mergedOptions","addUrlOptions","log","mergeNestedFields","value","baseUri"],"mappings":"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","sourcesContent":["import type {Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {isPureObject, isObject} from '../../javascript-utils/is-type';\nimport {fetchFile} from '../fetch/fetch-file';\nimport {probeLog, NullLog} from './loggers';\nimport {DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS} from './option-defaults';\n/**\n * Global state for loaders.gl. Stored on `global.loaders._state`\n */\ntype GlobalLoaderState = {\n loaderRegistry: Loader[];\n globalOptions: {[key: string]: any};\n};\n\n/**\n * Helper for safely accessing global loaders.gl variables\n * Wraps initialization of global variable in function to defeat overly aggressive tree-shakers\n */\nexport function getGlobalLoaderState(): GlobalLoaderState {\n // @ts-ignore\n globalThis.loaders = globalThis.loaders || {};\n // @ts-ignore\n const {loaders} = globalThis;\n\n // Add _state object to keep separate from modules added to globalThis.loaders\n loaders._state = loaders._state || {};\n return loaders._state;\n}\n\n/**\n * Store global loader options on the global object to increase chances of cross loaders-version interoperability\n * NOTE: This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks\n * @returns global loader options merged with default loader options\n */\nexport const getGlobalLoaderOptions = () => {\n const state = getGlobalLoaderState();\n // Ensure all default loader options from this library are mentioned\n state.globalOptions = state.globalOptions || {...DEFAULT_LOADER_OPTIONS};\n return state.globalOptions;\n};\n\n/**\n * Set global loader options\n * @param options\n */\nexport function setGlobalOptions(options: object): void {\n const state = getGlobalLoaderState();\n const globalOptions = getGlobalLoaderOptions();\n state.globalOptions = normalizeOptionsInternal(globalOptions, options);\n}\n\n/**\n * Merges options with global opts and loader defaults, also injects baseUri\n * @param options\n * @param loader\n * @param loaders\n * @param url\n */\nexport function normalizeOptions(\n options: object,\n loader: Loader,\n loaders?: Loader[],\n url?: string\n): object {\n loaders = loaders || [];\n loaders = Array.isArray(loaders) ? loaders : [loaders];\n\n validateOptions(options, loaders);\n return normalizeOptionsInternal(loader, options, url);\n}\n\n/**\n * Gets the current fetch function from options and context\n * @param options\n * @param context\n */\nexport function getFetchFunction(\n options?: LoaderOptions,\n context?: Omit<LoaderContext, 'fetch'> & Partial<Pick<LoaderContext, 'fetch'>>\n) {\n const globalOptions = getGlobalLoaderOptions();\n\n const fetchOptions = options || globalOptions;\n\n // options.fetch can be a function\n if (typeof fetchOptions.fetch === 'function') {\n return fetchOptions.fetch;\n }\n\n // options.fetch can be an options object\n if (isObject(fetchOptions.fetch)) {\n return (url) => fetchFile(url, fetchOptions);\n }\n\n // else refer to context (from parent loader) if available\n if (context?.fetch) {\n return context?.fetch;\n }\n\n // else return the default fetch function\n return fetchFile;\n}\n\n// VALIDATE OPTIONS\n\n/**\n * Warn for unsupported options\n * @param options\n * @param loaders\n */\nfunction validateOptions(options: LoaderOptions, loaders: Loader[]) {\n // Check top level options\n validateOptionsObject(options, null, DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS, loaders);\n for (const loader of loaders) {\n // Get the scoped, loader specific options from the user supplied options\n const idOptions = (options && options[loader.id]) || {};\n\n // Get scoped, loader specific default and deprecated options from the selected loader\n const loaderOptions = (loader.options && loader.options[loader.id]) || {};\n const deprecatedOptions =\n (loader.deprecatedOptions && loader.deprecatedOptions[loader.id]) || {};\n\n // Validate loader specific options\n validateOptionsObject(idOptions, loader.id, loaderOptions, deprecatedOptions, loaders);\n }\n}\n\n// eslint-disable-next-line max-params, complexity\nfunction validateOptionsObject(\n options,\n id: string | null,\n defaultOptions,\n deprecatedOptions,\n loaders: Loader[]\n) {\n const loaderName = id || 'Top level';\n const prefix = id ? `${id}.` : '';\n\n for (const key in options) {\n // If top level option value is an object it could options for a loader, so ignore\n const isSubOptions = !id && isObject(options[key]);\n const isBaseUriOption = key === 'baseUri' && !id;\n const isWorkerUrlOption = key === 'workerUrl' && id;\n // <loader>.workerUrl requires special handling as it is now auto-generated and no longer specified as a default option.\n if (!(key in defaultOptions) && !isBaseUriOption && !isWorkerUrlOption) {\n // Issue deprecation warnings\n if (key in deprecatedOptions) {\n probeLog.warn(\n `${loaderName} loader option \\'${prefix}${key}\\' no longer supported, use \\'${deprecatedOptions[key]}\\'`\n )();\n } else if (!isSubOptions) {\n const suggestion = findSimilarOption(key, loaders);\n probeLog.warn(\n `${loaderName} loader option \\'${prefix}${key}\\' not recognized. ${suggestion}`\n )();\n }\n }\n }\n}\n\nfunction findSimilarOption(optionKey, loaders) {\n const lowerCaseOptionKey = optionKey.toLowerCase();\n let bestSuggestion = '';\n for (const loader of loaders) {\n for (const key in loader.options) {\n if (optionKey === key) {\n return `Did you mean \\'${loader.id}.${key}\\'?`;\n }\n const lowerCaseKey = key.toLowerCase();\n const isPartialMatch =\n lowerCaseOptionKey.startsWith(lowerCaseKey) || lowerCaseKey.startsWith(lowerCaseOptionKey);\n if (isPartialMatch) {\n bestSuggestion = bestSuggestion || `Did you mean \\'${loader.id}.${key}\\'?`;\n }\n }\n }\n return bestSuggestion;\n}\n\nfunction normalizeOptionsInternal(loader, options, url?: string) {\n const loaderDefaultOptions = loader.options || {};\n\n const mergedOptions = {...loaderDefaultOptions};\n\n addUrlOptions(mergedOptions, url);\n\n // LOGGING: options.log can be set to `null` to defeat logging\n if (mergedOptions.log === null) {\n mergedOptions.log = new NullLog();\n }\n\n mergeNestedFields(mergedOptions, getGlobalLoaderOptions());\n mergeNestedFields(mergedOptions, options);\n\n return mergedOptions;\n}\n\n// Merge nested options objects\nfunction mergeNestedFields(mergedOptions, options) {\n for (const key in options) {\n // Check for nested options\n // object in options => either no key in defaultOptions or object in defaultOptions\n if (key in options) {\n const value = options[key];\n if (isPureObject(value) && isPureObject(mergedOptions[key])) {\n mergedOptions[key] = {\n ...mergedOptions[key],\n ...options[key]\n };\n } else {\n mergedOptions[key] = options[key];\n }\n }\n // else: No need to merge nested opts, and the initial merge already copied over the nested options\n }\n}\n\n// Harvest information from the url\n// TODO - baseUri should be a directory, i.e. remove file component from baseUri\n// TODO - extract extension?\n// TODO - extract query parameters?\n// TODO - should these be injected on context instead of options?\nfunction addUrlOptions(options, url?: string) {\n if (url && !('baseUri' in options)) {\n options.baseUri = url;\n }\n}\n"],"file":"option-utils.js"}
1
+ {"version":3,"file":"option-utils.js","names":["isPureObject","isObject","fetchFile","probeLog","NullLog","DEFAULT_LOADER_OPTIONS","REMOVED_LOADER_OPTIONS","getGlobalLoaderState","globalThis","loaders","_state","getGlobalLoaderOptions","state","globalOptions","setGlobalOptions","options","normalizeOptionsInternal","normalizeOptions","loader","url","Array","isArray","validateOptions","getFetchFunction","context","fetchOptions","fetch","validateOptionsObject","idOptions","id","loaderOptions","deprecatedOptions","defaultOptions","loaderName","prefix","key","isSubOptions","isBaseUriOption","isWorkerUrlOption","warn","suggestion","findSimilarOption","optionKey","lowerCaseOptionKey","toLowerCase","bestSuggestion","lowerCaseKey","isPartialMatch","startsWith","loaderDefaultOptions","mergedOptions","addUrlOptions","log","mergeNestedFields","value","baseUri"],"sources":["../../../../src/lib/loader-utils/option-utils.ts"],"sourcesContent":["import type {Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {isPureObject, isObject} from '../../javascript-utils/is-type';\nimport {fetchFile} from '../fetch/fetch-file';\nimport {probeLog, NullLog} from './loggers';\nimport {DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS} from './option-defaults';\n/**\n * Global state for loaders.gl. Stored on `global.loaders._state`\n */\ntype GlobalLoaderState = {\n loaderRegistry: Loader[];\n globalOptions: {[key: string]: any};\n};\n\n/**\n * Helper for safely accessing global loaders.gl variables\n * Wraps initialization of global variable in function to defeat overly aggressive tree-shakers\n */\nexport function getGlobalLoaderState(): GlobalLoaderState {\n // @ts-ignore\n globalThis.loaders = globalThis.loaders || {};\n // @ts-ignore\n const {loaders} = globalThis;\n\n // Add _state object to keep separate from modules added to globalThis.loaders\n loaders._state = loaders._state || {};\n return loaders._state;\n}\n\n/**\n * Store global loader options on the global object to increase chances of cross loaders-version interoperability\n * NOTE: This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks\n * @returns global loader options merged with default loader options\n */\nexport const getGlobalLoaderOptions = () => {\n const state = getGlobalLoaderState();\n // Ensure all default loader options from this library are mentioned\n state.globalOptions = state.globalOptions || {...DEFAULT_LOADER_OPTIONS};\n return state.globalOptions;\n};\n\n/**\n * Set global loader options\n * @param options\n */\nexport function setGlobalOptions(options: object): void {\n const state = getGlobalLoaderState();\n const globalOptions = getGlobalLoaderOptions();\n state.globalOptions = normalizeOptionsInternal(globalOptions, options);\n}\n\n/**\n * Merges options with global opts and loader defaults, also injects baseUri\n * @param options\n * @param loader\n * @param loaders\n * @param url\n */\nexport function normalizeOptions(\n options: object,\n loader: Loader,\n loaders?: Loader[],\n url?: string\n): object {\n loaders = loaders || [];\n loaders = Array.isArray(loaders) ? loaders : [loaders];\n\n validateOptions(options, loaders);\n return normalizeOptionsInternal(loader, options, url);\n}\n\n/**\n * Gets the current fetch function from options and context\n * @param options\n * @param context\n */\nexport function getFetchFunction(\n options?: LoaderOptions,\n context?: Omit<LoaderContext, 'fetch'> & Partial<Pick<LoaderContext, 'fetch'>>\n) {\n const globalOptions = getGlobalLoaderOptions();\n\n const fetchOptions = options || globalOptions;\n\n // options.fetch can be a function\n if (typeof fetchOptions.fetch === 'function') {\n return fetchOptions.fetch;\n }\n\n // options.fetch can be an options object\n if (isObject(fetchOptions.fetch)) {\n return (url) => fetchFile(url, fetchOptions);\n }\n\n // else refer to context (from parent loader) if available\n if (context?.fetch) {\n return context?.fetch;\n }\n\n // else return the default fetch function\n return fetchFile;\n}\n\n// VALIDATE OPTIONS\n\n/**\n * Warn for unsupported options\n * @param options\n * @param loaders\n */\nfunction validateOptions(options: LoaderOptions, loaders: Loader[]) {\n // Check top level options\n validateOptionsObject(options, null, DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS, loaders);\n for (const loader of loaders) {\n // Get the scoped, loader specific options from the user supplied options\n const idOptions = (options && options[loader.id]) || {};\n\n // Get scoped, loader specific default and deprecated options from the selected loader\n const loaderOptions = (loader.options && loader.options[loader.id]) || {};\n const deprecatedOptions =\n (loader.deprecatedOptions && loader.deprecatedOptions[loader.id]) || {};\n\n // Validate loader specific options\n validateOptionsObject(idOptions, loader.id, loaderOptions, deprecatedOptions, loaders);\n }\n}\n\n// eslint-disable-next-line max-params, complexity\nfunction validateOptionsObject(\n options,\n id: string | null,\n defaultOptions,\n deprecatedOptions,\n loaders: Loader[]\n) {\n const loaderName = id || 'Top level';\n const prefix = id ? `${id}.` : '';\n\n for (const key in options) {\n // If top level option value is an object it could options for a loader, so ignore\n const isSubOptions = !id && isObject(options[key]);\n const isBaseUriOption = key === 'baseUri' && !id;\n const isWorkerUrlOption = key === 'workerUrl' && id;\n // <loader>.workerUrl requires special handling as it is now auto-generated and no longer specified as a default option.\n if (!(key in defaultOptions) && !isBaseUriOption && !isWorkerUrlOption) {\n // Issue deprecation warnings\n if (key in deprecatedOptions) {\n probeLog.warn(\n `${loaderName} loader option \\'${prefix}${key}\\' no longer supported, use \\'${deprecatedOptions[key]}\\'`\n )();\n } else if (!isSubOptions) {\n const suggestion = findSimilarOption(key, loaders);\n probeLog.warn(\n `${loaderName} loader option \\'${prefix}${key}\\' not recognized. ${suggestion}`\n )();\n }\n }\n }\n}\n\nfunction findSimilarOption(optionKey, loaders) {\n const lowerCaseOptionKey = optionKey.toLowerCase();\n let bestSuggestion = '';\n for (const loader of loaders) {\n for (const key in loader.options) {\n if (optionKey === key) {\n return `Did you mean \\'${loader.id}.${key}\\'?`;\n }\n const lowerCaseKey = key.toLowerCase();\n const isPartialMatch =\n lowerCaseOptionKey.startsWith(lowerCaseKey) || lowerCaseKey.startsWith(lowerCaseOptionKey);\n if (isPartialMatch) {\n bestSuggestion = bestSuggestion || `Did you mean \\'${loader.id}.${key}\\'?`;\n }\n }\n }\n return bestSuggestion;\n}\n\nfunction normalizeOptionsInternal(loader, options, url?: string) {\n const loaderDefaultOptions = loader.options || {};\n\n const mergedOptions = {...loaderDefaultOptions};\n\n addUrlOptions(mergedOptions, url);\n\n // LOGGING: options.log can be set to `null` to defeat logging\n if (mergedOptions.log === null) {\n mergedOptions.log = new NullLog();\n }\n\n mergeNestedFields(mergedOptions, getGlobalLoaderOptions());\n mergeNestedFields(mergedOptions, options);\n\n return mergedOptions;\n}\n\n// Merge nested options objects\nfunction mergeNestedFields(mergedOptions, options) {\n for (const key in options) {\n // Check for nested options\n // object in options => either no key in defaultOptions or object in defaultOptions\n if (key in options) {\n const value = options[key];\n if (isPureObject(value) && isPureObject(mergedOptions[key])) {\n mergedOptions[key] = {\n ...mergedOptions[key],\n ...options[key]\n };\n } else {\n mergedOptions[key] = options[key];\n }\n }\n // else: No need to merge nested opts, and the initial merge already copied over the nested options\n }\n}\n\n// Harvest information from the url\n// TODO - baseUri should be a directory, i.e. remove file component from baseUri\n// TODO - extract extension?\n// TODO - extract query parameters?\n// TODO - should these be injected on context instead of options?\nfunction addUrlOptions(options, url?: string) {\n if (url && !('baseUri' in options)) {\n options.baseUri = url;\n }\n}\n"],"mappings":"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"}