@loaders.gl/core 4.0.0-alpha.1 → 4.0.0-alpha.11

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 (425) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +2 -2
  4. package/dist/core-addons/write-file-browser.d.ts +1 -0
  5. package/dist/core-addons/write-file-browser.d.ts.map +1 -0
  6. package/dist/core-addons/write-file-browser.js +59 -1
  7. package/dist/dist.min.js +3906 -0
  8. package/dist/es5/bundle.js +6 -0
  9. package/dist/es5/bundle.js.map +1 -0
  10. package/dist/es5/core-addons/write-file-browser.js +2 -0
  11. package/dist/es5/core-addons/write-file-browser.js.map +1 -0
  12. package/dist/es5/index.js +377 -0
  13. package/dist/es5/index.js.map +1 -0
  14. package/dist/es5/iterators/batch-iterators/timed-batch-iterator.js +94 -0
  15. package/dist/es5/iterators/batch-iterators/timed-batch-iterator.js.map +1 -0
  16. package/dist/es5/iterators/make-iterator/make-array-buffer-iterator.js +42 -0
  17. package/dist/es5/iterators/make-iterator/make-array-buffer-iterator.js.map +1 -0
  18. package/dist/es5/iterators/make-iterator/make-blob-iterator.js +47 -0
  19. package/dist/es5/iterators/make-iterator/make-blob-iterator.js.map +1 -0
  20. package/dist/es5/iterators/make-iterator/make-iterator.js +31 -0
  21. package/dist/es5/iterators/make-iterator/make-iterator.js.map +1 -0
  22. package/dist/es5/iterators/make-iterator/make-stream-iterator.js +133 -0
  23. package/dist/es5/iterators/make-iterator/make-stream-iterator.js.map +1 -0
  24. package/dist/es5/iterators/make-iterator/make-string-iterator.js +38 -0
  25. package/dist/es5/iterators/make-iterator/make-string-iterator.js.map +1 -0
  26. package/dist/es5/iterators/make-stream/make-dom-stream.js +67 -0
  27. package/dist/es5/iterators/make-stream/make-dom-stream.js.map +1 -0
  28. package/dist/es5/iterators/make-stream/make-node-stream.js +168 -0
  29. package/dist/es5/iterators/make-stream/make-node-stream.js.map +1 -0
  30. package/dist/es5/javascript-utils/is-type.js +79 -0
  31. package/dist/es5/javascript-utils/is-type.js.map +1 -0
  32. package/dist/es5/lib/api/encode-table.js +159 -0
  33. package/dist/es5/lib/api/encode-table.js.map +1 -0
  34. package/dist/es5/lib/api/encode.js +244 -0
  35. package/dist/es5/lib/api/encode.js.map +1 -0
  36. package/dist/es5/lib/api/load-in-batches.js +63 -0
  37. package/dist/es5/lib/api/load-in-batches.js.map +1 -0
  38. package/dist/es5/lib/api/load.js +76 -0
  39. package/dist/es5/lib/api/load.js.map +1 -0
  40. package/dist/es5/lib/api/loader-options.js +19 -0
  41. package/dist/es5/lib/api/loader-options.js.map +1 -0
  42. package/dist/es5/lib/api/parse-in-batches.js +278 -0
  43. package/dist/es5/lib/api/parse-in-batches.js.map +1 -0
  44. package/dist/es5/lib/api/parse-sync.js +53 -0
  45. package/dist/es5/lib/api/parse-sync.js.map +1 -0
  46. package/dist/es5/lib/api/parse.js +143 -0
  47. package/dist/es5/lib/api/parse.js.map +1 -0
  48. package/dist/es5/lib/api/register-loaders.js +50 -0
  49. package/dist/es5/lib/api/register-loaders.js.map +1 -0
  50. package/dist/es5/lib/api/save.js +42 -0
  51. package/dist/es5/lib/api/save.js.map +1 -0
  52. package/dist/es5/lib/api/select-loader.js +302 -0
  53. package/dist/es5/lib/api/select-loader.js.map +1 -0
  54. package/dist/es5/lib/common.js +2 -0
  55. package/dist/es5/lib/common.js.map +1 -0
  56. package/dist/es5/lib/fetch/fetch-error-message.js +56 -0
  57. package/dist/es5/lib/fetch/fetch-error-message.js.map +1 -0
  58. package/dist/es5/lib/fetch/fetch-file.js +47 -0
  59. package/dist/es5/lib/fetch/fetch-file.js.map +1 -0
  60. package/dist/es5/lib/fetch/read-array-buffer.js +76 -0
  61. package/dist/es5/lib/fetch/read-array-buffer.js.map +1 -0
  62. package/dist/es5/lib/fetch/read-file.js +20 -0
  63. package/dist/es5/lib/fetch/read-file.js.map +1 -0
  64. package/dist/es5/lib/fetch/write-file.js +48 -0
  65. package/dist/es5/lib/fetch/write-file.js.map +1 -0
  66. package/dist/es5/lib/filesystems/browser-filesystem.js +249 -0
  67. package/dist/es5/lib/filesystems/browser-filesystem.js.map +1 -0
  68. package/dist/es5/lib/filesystems/filesystem.js +2 -0
  69. package/dist/es5/lib/filesystems/filesystem.js.map +1 -0
  70. package/dist/es5/lib/filesystems/read-array-buffer.js +41 -0
  71. package/dist/es5/lib/filesystems/read-array-buffer.js.map +1 -0
  72. package/dist/es5/lib/init.js +18 -0
  73. package/dist/es5/lib/init.js.map +1 -0
  74. package/dist/es5/lib/loader-utils/check-errors.js +57 -0
  75. package/dist/es5/lib/loader-utils/check-errors.js.map +1 -0
  76. package/dist/es5/lib/loader-utils/get-data.js +237 -0
  77. package/dist/es5/lib/loader-utils/get-data.js.map +1 -0
  78. package/dist/es5/lib/loader-utils/get-fetch-function.js +26 -0
  79. package/dist/es5/lib/loader-utils/get-fetch-function.js.map +1 -0
  80. package/dist/es5/lib/loader-utils/loader-context.js +49 -0
  81. package/dist/es5/lib/loader-utils/loader-context.js.map +1 -0
  82. package/dist/es5/lib/loader-utils/loggers.js +90 -0
  83. package/dist/es5/lib/loader-utils/loggers.js.map +1 -0
  84. package/dist/es5/lib/loader-utils/normalize-loader.js +44 -0
  85. package/dist/es5/lib/loader-utils/normalize-loader.js.map +1 -0
  86. package/dist/es5/lib/loader-utils/option-defaults.js +47 -0
  87. package/dist/es5/lib/loader-utils/option-defaults.js.map +1 -0
  88. package/dist/es5/lib/loader-utils/option-utils.js +132 -0
  89. package/dist/es5/lib/loader-utils/option-utils.js.map +1 -0
  90. package/dist/es5/lib/progress/fetch-progress.js +134 -0
  91. package/dist/es5/lib/progress/fetch-progress.js.map +1 -0
  92. package/dist/es5/lib/utils/log.js +12 -0
  93. package/dist/es5/lib/utils/log.js.map +1 -0
  94. package/dist/es5/lib/utils/mime-type-utils.js +24 -0
  95. package/dist/es5/lib/utils/mime-type-utils.js.map +1 -0
  96. package/dist/es5/lib/utils/resource-utils.js +62 -0
  97. package/dist/es5/lib/utils/resource-utils.js.map +1 -0
  98. package/dist/es5/lib/utils/response-utils.js +197 -0
  99. package/dist/es5/lib/utils/response-utils.js.map +1 -0
  100. package/dist/es5/lib/utils/url-utils.js +16 -0
  101. package/dist/es5/lib/utils/url-utils.js.map +1 -0
  102. package/dist/es5/null-loader.js +139 -0
  103. package/dist/es5/null-loader.js.map +1 -0
  104. package/dist/es5/workers/null-worker.js +6 -0
  105. package/dist/es5/workers/null-worker.js.map +1 -0
  106. package/dist/esm/bundle.js +4 -0
  107. package/dist/esm/bundle.js.map +1 -0
  108. package/dist/esm/core-addons/README.md +1 -0
  109. package/dist/esm/core-addons/write-file-browser.js +2 -0
  110. package/dist/esm/core-addons/write-file-browser.js.map +1 -0
  111. package/dist/esm/index.js +30 -0
  112. package/dist/esm/index.js.map +1 -0
  113. package/dist/esm/iterators/batch-iterators/timed-batch-iterator.js +16 -0
  114. package/dist/esm/iterators/batch-iterators/timed-batch-iterator.js.map +1 -0
  115. package/dist/esm/iterators/make-iterator/make-array-buffer-iterator.js +20 -0
  116. package/dist/esm/iterators/make-iterator/make-array-buffer-iterator.js.map +1 -0
  117. package/dist/esm/iterators/make-iterator/make-blob-iterator.js +12 -0
  118. package/dist/esm/iterators/make-iterator/make-blob-iterator.js.map +1 -0
  119. package/dist/esm/iterators/make-iterator/make-iterator.js +25 -0
  120. package/dist/esm/iterators/make-iterator/make-iterator.js.map +1 -0
  121. package/dist/esm/iterators/make-iterator/make-stream-iterator.js +32 -0
  122. package/dist/esm/iterators/make-iterator/make-stream-iterator.js.map +1 -0
  123. package/dist/esm/iterators/make-iterator/make-string-iterator.js +13 -0
  124. package/dist/esm/iterators/make-iterator/make-string-iterator.js.map +1 -0
  125. package/dist/esm/iterators/make-stream/make-dom-stream.js +29 -0
  126. package/dist/esm/iterators/make-stream/make-dom-stream.js.map +1 -0
  127. package/dist/esm/iterators/make-stream/make-node-stream.js +57 -0
  128. package/dist/esm/iterators/make-stream/make-node-stream.js.map +1 -0
  129. package/dist/esm/javascript-utils/is-type.js +19 -0
  130. package/dist/esm/javascript-utils/is-type.js.map +1 -0
  131. package/dist/esm/lib/api/encode-table.js +45 -0
  132. package/dist/esm/lib/api/encode-table.js.map +1 -0
  133. package/dist/esm/lib/api/encode.js +87 -0
  134. package/dist/esm/lib/api/encode.js.map +1 -0
  135. package/dist/esm/lib/api/load-in-batches.js +25 -0
  136. package/dist/esm/lib/api/load-in-batches.js.map +1 -0
  137. package/dist/esm/lib/api/load.js +26 -0
  138. package/dist/esm/lib/api/load.js.map +1 -0
  139. package/dist/esm/lib/api/loader-options.js +3 -0
  140. package/dist/esm/lib/api/loader-options.js.map +1 -0
  141. package/dist/esm/lib/api/parse-in-batches.js +84 -0
  142. package/dist/esm/lib/api/parse-in-batches.js.map +1 -0
  143. package/dist/esm/lib/api/parse-sync.js +45 -0
  144. package/dist/esm/lib/api/parse-sync.js.map +1 -0
  145. package/dist/esm/lib/api/parse.js +74 -0
  146. package/dist/esm/lib/api/parse.js.map +1 -0
  147. package/dist/esm/lib/api/register-loaders.js +25 -0
  148. package/dist/esm/lib/api/register-loaders.js.map +1 -0
  149. package/dist/esm/lib/api/save.js +11 -0
  150. package/dist/esm/lib/api/save.js.map +1 -0
  151. package/dist/esm/lib/api/select-loader.js +201 -0
  152. package/dist/esm/lib/api/select-loader.js.map +1 -0
  153. package/dist/esm/lib/common.js +2 -0
  154. package/dist/esm/lib/common.js.map +1 -0
  155. package/dist/esm/lib/fetch/fetch-error-message.js +18 -0
  156. package/dist/esm/lib/fetch/fetch-error-message.js.map +1 -0
  157. package/dist/esm/lib/fetch/fetch-file.js +14 -0
  158. package/dist/esm/lib/fetch/fetch-file.js.map +1 -0
  159. package/dist/esm/lib/fetch/read-array-buffer.js +23 -0
  160. package/dist/esm/lib/fetch/read-array-buffer.js.map +1 -0
  161. package/dist/esm/lib/fetch/read-file.js +15 -0
  162. package/dist/esm/lib/fetch/read-file.js.map +1 -0
  163. package/dist/esm/lib/fetch/write-file.js +21 -0
  164. package/dist/esm/lib/fetch/write-file.js.map +1 -0
  165. package/dist/esm/lib/filesystems/browser-filesystem.js +92 -0
  166. package/dist/esm/lib/filesystems/browser-filesystem.js.map +1 -0
  167. package/dist/esm/lib/filesystems/filesystem.js +2 -0
  168. package/dist/esm/lib/filesystems/filesystem.js.map +1 -0
  169. package/dist/esm/lib/filesystems/read-array-buffer.js +8 -0
  170. package/dist/esm/lib/filesystems/read-array-buffer.js.map +1 -0
  171. package/dist/esm/lib/init.js +11 -0
  172. package/dist/esm/lib/init.js.map +1 -0
  173. package/dist/esm/lib/loader-utils/check-errors.js +22 -0
  174. package/dist/esm/lib/loader-utils/check-errors.js.map +1 -0
  175. package/dist/esm/lib/loader-utils/get-data.js +103 -0
  176. package/dist/esm/lib/loader-utils/get-data.js.map +1 -0
  177. package/dist/esm/lib/loader-utils/get-fetch-function.js +18 -0
  178. package/dist/esm/lib/loader-utils/get-fetch-function.js.map +1 -0
  179. package/dist/esm/lib/loader-utils/loader-context.js +38 -0
  180. package/dist/esm/lib/loader-utils/loader-context.js.map +1 -0
  181. package/dist/esm/lib/loader-utils/loggers.js +50 -0
  182. package/dist/esm/lib/loader-utils/loggers.js.map +1 -0
  183. package/dist/esm/lib/loader-utils/normalize-loader.js +37 -0
  184. package/dist/esm/lib/loader-utils/normalize-loader.js.map +1 -0
  185. package/dist/esm/lib/loader-utils/option-defaults.js +39 -0
  186. package/dist/esm/lib/loader-utils/option-defaults.js.map +1 -0
  187. package/dist/esm/lib/loader-utils/option-utils.js +106 -0
  188. package/dist/esm/lib/loader-utils/option-utils.js.map +1 -0
  189. package/dist/esm/lib/progress/fetch-progress.js +52 -0
  190. package/dist/esm/lib/progress/fetch-progress.js.map +1 -0
  191. package/dist/esm/lib/utils/log.js +5 -0
  192. package/dist/esm/lib/utils/log.js.map +1 -0
  193. package/dist/esm/lib/utils/mime-type-utils.js +17 -0
  194. package/dist/esm/lib/utils/mime-type-utils.js.map +1 -0
  195. package/dist/esm/lib/utils/resource-utils.js +54 -0
  196. package/dist/esm/lib/utils/resource-utils.js.map +1 -0
  197. package/dist/esm/lib/utils/response-utils.js +89 -0
  198. package/dist/esm/lib/utils/response-utils.js.map +1 -0
  199. package/dist/esm/lib/utils/url-utils.js +9 -0
  200. package/dist/esm/lib/utils/url-utils.js.map +1 -0
  201. package/dist/esm/null-loader.js +45 -0
  202. package/dist/esm/null-loader.js.map +1 -0
  203. package/dist/esm/workers/null-worker.js +4 -0
  204. package/dist/esm/workers/null-worker.js.map +1 -0
  205. package/dist/index.d.ts +31 -0
  206. package/dist/index.d.ts.map +1 -0
  207. package/dist/index.js +108 -31
  208. package/dist/iterators/batch-iterators/timed-batch-iterator.d.ts +5 -0
  209. package/dist/iterators/batch-iterators/timed-batch-iterator.d.ts.map +1 -0
  210. package/dist/iterators/batch-iterators/timed-batch-iterator.js +20 -17
  211. package/dist/iterators/make-iterator/make-array-buffer-iterator.d.ts +9 -0
  212. package/dist/iterators/make-iterator/make-array-buffer-iterator.d.ts.map +1 -0
  213. package/dist/iterators/make-iterator/make-array-buffer-iterator.js +25 -16
  214. package/dist/iterators/make-iterator/make-blob-iterator.d.ts +9 -0
  215. package/dist/iterators/make-iterator/make-blob-iterator.d.ts.map +1 -0
  216. package/dist/iterators/make-iterator/make-blob-iterator.js +20 -12
  217. package/dist/iterators/make-iterator/make-iterator.d.ts +19 -0
  218. package/dist/iterators/make-iterator/make-iterator.d.ts.map +1 -0
  219. package/dist/iterators/make-iterator/make-iterator.js +36 -29
  220. package/dist/iterators/make-iterator/make-stream-iterator.d.ts +11 -0
  221. package/dist/iterators/make-iterator/make-stream-iterator.d.ts.map +1 -0
  222. package/dist/iterators/make-iterator/make-stream-iterator.js +89 -32
  223. package/dist/iterators/make-iterator/make-string-iterator.d.ts +9 -0
  224. package/dist/iterators/make-iterator/make-string-iterator.d.ts.map +1 -0
  225. package/dist/iterators/make-iterator/make-string-iterator.js +22 -12
  226. package/dist/iterators/make-stream/make-dom-stream.d.ts +14 -0
  227. package/dist/iterators/make-stream/make-dom-stream.d.ts.map +1 -0
  228. package/dist/iterators/make-stream/make-dom-stream.js +44 -32
  229. package/dist/iterators/make-stream/make-node-stream.d.ts +11 -0
  230. package/dist/iterators/make-stream/make-node-stream.d.ts.map +1 -0
  231. package/dist/iterators/make-stream/make-node-stream.js +75 -70
  232. package/dist/javascript-utils/is-type.d.ts +22 -0
  233. package/dist/javascript-utils/is-type.d.ts.map +1 -0
  234. package/dist/javascript-utils/is-type.js +41 -21
  235. package/dist/lib/api/encode-table.d.ts +6 -0
  236. package/dist/lib/api/encode-table.d.ts.map +1 -0
  237. package/dist/lib/api/encode-table.js +54 -0
  238. package/dist/lib/api/encode.d.ts +26 -0
  239. package/dist/lib/api/encode.d.ts.map +1 -0
  240. package/dist/lib/api/encode.js +111 -81
  241. package/dist/lib/api/load-in-batches.d.ts +13 -0
  242. package/dist/lib/api/load-in-batches.d.ts.map +1 -0
  243. package/dist/lib/api/load-in-batches.js +30 -27
  244. package/dist/lib/api/load.d.ts +15 -0
  245. package/dist/lib/api/load.d.ts.map +1 -0
  246. package/dist/lib/api/load.js +42 -24
  247. package/dist/lib/api/loader-options.d.ts +3 -0
  248. package/dist/lib/api/loader-options.d.ts.map +1 -0
  249. package/dist/lib/api/loader-options.js +7 -0
  250. package/dist/lib/api/parse-in-batches.d.ts +10 -0
  251. package/dist/lib/api/parse-in-batches.d.ts.map +1 -0
  252. package/dist/lib/api/parse-in-batches.js +110 -92
  253. package/dist/lib/api/parse-sync.d.ts +10 -0
  254. package/dist/lib/api/parse-sync.d.ts.map +1 -0
  255. package/dist/lib/api/parse-sync.js +56 -54
  256. package/dist/lib/api/parse.d.ts +6 -0
  257. package/dist/lib/api/parse.d.ts.map +1 -0
  258. package/dist/lib/api/parse.js +81 -61
  259. package/dist/lib/api/register-loaders.d.ts +7 -0
  260. package/dist/lib/api/register-loaders.d.ts.map +1 -0
  261. package/dist/lib/api/register-loaders.js +29 -23
  262. package/dist/lib/api/save.d.ts +4 -0
  263. package/dist/lib/api/save.d.ts.map +1 -0
  264. package/dist/lib/api/save.js +13 -9
  265. package/dist/lib/api/select-loader.d.ts +22 -0
  266. package/dist/lib/api/select-loader.d.ts.map +1 -0
  267. package/dist/lib/api/select-loader.js +219 -194
  268. package/dist/lib/common.d.ts +2 -0
  269. package/dist/lib/common.d.ts.map +1 -0
  270. package/dist/lib/common.js +2 -2
  271. package/dist/lib/fetch/fetch-error-message.d.ts +3 -0
  272. package/dist/lib/fetch/fetch-error-message.d.ts.map +1 -0
  273. package/dist/lib/fetch/fetch-error-message.js +21 -17
  274. package/dist/lib/fetch/fetch-file.d.ts +13 -0
  275. package/dist/lib/fetch/fetch-file.d.ts.map +1 -0
  276. package/dist/lib/fetch/fetch-file.js +25 -15
  277. package/dist/lib/fetch/read-array-buffer.d.ts +17 -0
  278. package/dist/lib/fetch/read-array-buffer.d.ts.map +1 -0
  279. package/dist/lib/fetch/read-array-buffer.js +39 -27
  280. package/dist/lib/fetch/read-file.d.ts +5 -0
  281. package/dist/lib/fetch/read-file.d.ts.map +1 -0
  282. package/dist/lib/fetch/read-file.js +28 -16
  283. package/dist/lib/fetch/write-file.d.ts +3 -0
  284. package/dist/lib/fetch/write-file.d.ts.map +1 -0
  285. package/dist/lib/fetch/write-file.js +20 -23
  286. package/dist/lib/filesystems/browser-filesystem.d.ts +58 -0
  287. package/dist/lib/filesystems/browser-filesystem.d.ts.map +1 -0
  288. package/dist/lib/filesystems/browser-filesystem.js +118 -107
  289. package/dist/lib/filesystems/filesystem.d.ts +46 -0
  290. package/dist/lib/filesystems/filesystem.d.ts.map +1 -0
  291. package/dist/lib/filesystems/filesystem.js +2 -2
  292. package/dist/lib/filesystems/read-array-buffer.d.ts +19 -0
  293. package/dist/lib/filesystems/read-array-buffer.d.ts.map +1 -0
  294. package/dist/lib/filesystems/read-array-buffer.js +28 -8
  295. package/dist/lib/init.d.ts +3 -0
  296. package/dist/lib/init.d.ts.map +1 -0
  297. package/dist/lib/init.js +16 -6
  298. package/dist/lib/loader-utils/check-errors.d.ts +3 -0
  299. package/dist/lib/loader-utils/check-errors.d.ts.map +1 -0
  300. package/dist/lib/loader-utils/check-errors.js +26 -22
  301. package/dist/lib/loader-utils/get-data.d.ts +6 -0
  302. package/dist/lib/loader-utils/get-data.d.ts.map +1 -0
  303. package/dist/lib/loader-utils/get-data.js +122 -122
  304. package/dist/lib/loader-utils/get-fetch-function.d.ts +9 -0
  305. package/dist/lib/loader-utils/get-fetch-function.d.ts.map +1 -0
  306. package/dist/lib/loader-utils/get-fetch-function.js +31 -0
  307. package/dist/lib/loader-utils/loader-context.d.ts +13 -0
  308. package/dist/lib/loader-utils/loader-context.d.ts.map +1 -0
  309. package/dist/lib/loader-utils/loader-context.js +57 -34
  310. package/dist/lib/loader-utils/loggers.d.ts +17 -0
  311. package/dist/lib/loader-utils/loggers.d.ts.map +1 -0
  312. package/dist/lib/loader-utils/loggers.js +39 -46
  313. package/dist/lib/loader-utils/normalize-loader.d.ts +4 -0
  314. package/dist/lib/loader-utils/normalize-loader.d.ts.map +1 -0
  315. package/dist/lib/loader-utils/normalize-loader.js +50 -41
  316. package/dist/lib/loader-utils/option-defaults.d.ts +20 -0
  317. package/dist/lib/loader-utils/option-defaults.d.ts.map +1 -0
  318. package/dist/lib/loader-utils/option-defaults.js +41 -35
  319. package/dist/lib/loader-utils/option-utils.d.ts +34 -0
  320. package/dist/lib/loader-utils/option-utils.d.ts.map +1 -0
  321. package/dist/lib/loader-utils/option-utils.js +140 -120
  322. package/dist/lib/progress/fetch-progress.d.ts +6 -0
  323. package/dist/lib/progress/fetch-progress.d.ts.map +1 -0
  324. package/dist/lib/progress/fetch-progress.js +54 -56
  325. package/dist/lib/utils/log.d.ts +3 -0
  326. package/dist/lib/utils/log.d.ts.map +1 -0
  327. package/dist/lib/utils/log.js +6 -0
  328. package/dist/lib/utils/mime-type-utils.d.ts +20 -0
  329. package/dist/lib/utils/mime-type-utils.d.ts.map +1 -0
  330. package/dist/lib/utils/mime-type-utils.js +38 -17
  331. package/dist/lib/utils/resource-utils.d.ts +30 -0
  332. package/dist/lib/utils/resource-utils.d.ts.map +1 -0
  333. package/dist/lib/utils/resource-utils.js +86 -56
  334. package/dist/lib/utils/response-utils.d.ts +18 -0
  335. package/dist/lib/utils/response-utils.d.ts.map +1 -0
  336. package/dist/lib/utils/response-utils.js +105 -105
  337. package/dist/lib/utils/url-utils.d.ts +3 -0
  338. package/dist/lib/utils/url-utils.d.ts.map +1 -0
  339. package/dist/lib/utils/url-utils.js +14 -0
  340. package/dist/null-loader.d.ts +10 -0
  341. package/dist/null-loader.d.ts.map +1 -0
  342. package/dist/null-loader.js +53 -31
  343. package/dist/null-worker-node.js +234 -0
  344. package/dist/null-worker.js +61 -21
  345. package/dist/workers/null-worker.d.ts +2 -0
  346. package/dist/workers/null-worker.d.ts.map +1 -0
  347. package/dist/workers/null-worker.js +5 -4
  348. package/package.json +18 -16
  349. package/src/index.ts +20 -4
  350. package/src/iterators/make-stream/make-dom-stream.ts +10 -5
  351. package/src/iterators/make-stream/make-node-stream.ts +10 -9
  352. package/src/lib/api/encode-table.ts +71 -0
  353. package/src/lib/api/encode.ts +15 -5
  354. package/src/lib/api/load-in-batches.ts +1 -1
  355. package/src/lib/api/load.ts +39 -8
  356. package/src/lib/api/loader-options.ts +2 -0
  357. package/src/lib/api/parse-in-batches.ts +8 -9
  358. package/src/lib/api/parse-sync.ts +8 -4
  359. package/src/lib/api/parse.ts +42 -5
  360. package/src/lib/api/register-loaders.ts +1 -1
  361. package/src/lib/api/select-loader.ts +23 -4
  362. package/src/lib/init.ts +17 -0
  363. package/src/lib/loader-utils/get-fetch-function.ts +38 -0
  364. package/src/lib/loader-utils/loader-context.ts +20 -9
  365. package/src/lib/loader-utils/loggers.ts +1 -1
  366. package/src/lib/loader-utils/option-defaults.ts +3 -1
  367. package/src/lib/loader-utils/option-utils.ts +22 -46
  368. package/src/lib/progress/fetch-progress.ts +2 -2
  369. package/src/lib/utils/log.ts +4 -0
  370. package/src/lib/utils/resource-utils.ts +54 -34
  371. package/src/lib/utils/response-utils.ts +5 -4
  372. package/src/lib/utils/url-utils.ts +12 -0
  373. package/src/null-loader.ts +17 -5
  374. package/dist/bundle.js.map +0 -1
  375. package/dist/core-addons/write-file-browser.js.map +0 -1
  376. package/dist/index.js.map +0 -1
  377. package/dist/iterators/batch-iterators/timed-batch-iterator.js.map +0 -1
  378. package/dist/iterators/make-iterator/make-array-buffer-iterator.js.map +0 -1
  379. package/dist/iterators/make-iterator/make-blob-iterator.js.map +0 -1
  380. package/dist/iterators/make-iterator/make-iterator.js.map +0 -1
  381. package/dist/iterators/make-iterator/make-stream-iterator.js.map +0 -1
  382. package/dist/iterators/make-iterator/make-string-iterator.js.map +0 -1
  383. package/dist/iterators/make-stream/make-dom-stream.js.map +0 -1
  384. package/dist/iterators/make-stream/make-node-stream.js.map +0 -1
  385. package/dist/iterators/make-stream/make-stream.js +0 -7
  386. package/dist/iterators/make-stream/make-stream.js.map +0 -1
  387. package/dist/javascript-utils/is-type.js.map +0 -1
  388. package/dist/lib/api/encode.js.map +0 -1
  389. package/dist/lib/api/load-in-batches.js.map +0 -1
  390. package/dist/lib/api/load.js.map +0 -1
  391. package/dist/lib/api/parse-in-batches.js.map +0 -1
  392. package/dist/lib/api/parse-sync.js.map +0 -1
  393. package/dist/lib/api/parse.js.map +0 -1
  394. package/dist/lib/api/register-loaders.js.map +0 -1
  395. package/dist/lib/api/save.js.map +0 -1
  396. package/dist/lib/api/select-loader.js.map +0 -1
  397. package/dist/lib/api/set-loader-options.js +0 -5
  398. package/dist/lib/api/set-loader-options.js.map +0 -1
  399. package/dist/lib/common.js.map +0 -1
  400. package/dist/lib/fetch/fetch-error-message.js.map +0 -1
  401. package/dist/lib/fetch/fetch-file.js.map +0 -1
  402. package/dist/lib/fetch/read-array-buffer.js.map +0 -1
  403. package/dist/lib/fetch/read-file.js.map +0 -1
  404. package/dist/lib/fetch/write-file.js.map +0 -1
  405. package/dist/lib/filesystems/browser-filesystem.js.map +0 -1
  406. package/dist/lib/filesystems/filesystem.js.map +0 -1
  407. package/dist/lib/filesystems/read-array-buffer.js.map +0 -1
  408. package/dist/lib/init.js.map +0 -1
  409. package/dist/lib/loader-utils/check-errors.js.map +0 -1
  410. package/dist/lib/loader-utils/get-data.js.map +0 -1
  411. package/dist/lib/loader-utils/loader-context.js.map +0 -1
  412. package/dist/lib/loader-utils/loggers.js.map +0 -1
  413. package/dist/lib/loader-utils/normalize-loader.js.map +0 -1
  414. package/dist/lib/loader-utils/option-defaults.js.map +0 -1
  415. package/dist/lib/loader-utils/option-utils.js.map +0 -1
  416. package/dist/lib/progress/fetch-progress.js.map +0 -1
  417. package/dist/lib/utils/mime-type-utils.js.map +0 -1
  418. package/dist/lib/utils/resource-utils.js.map +0 -1
  419. package/dist/lib/utils/response-utils.js.map +0 -1
  420. package/dist/null-loader.js.map +0 -1
  421. package/dist/workers/null-worker.js.map +0 -1
  422. package/src/iterators/make-stream/make-stream.ts +0 -19
  423. package/src/lib/api/set-loader-options.ts +0 -9
  424. package/src/lib/init.js +0 -10
  425. /package/dist/{core-addons → es5/core-addons}/README.md +0 -0
@@ -0,0 +1,71 @@
1
+ // loaders.gl, MIT license
2
+ // Copyright 2022 Foursquare Labs, Inc
3
+
4
+ /* global TextEncoder, TextDecoder */
5
+ import {concatenateArrayBuffers, Writer, WriterOptionsType} from '@loaders.gl/loader-utils';
6
+ import {Table} from '@loaders.gl/schema';
7
+
8
+ export async function encodeTable<WriterT extends Writer = Writer>(
9
+ data: Table,
10
+ writer: WriterT,
11
+ options?: WriterOptionsType<WriterT>
12
+ ): Promise<ArrayBuffer> {
13
+ if (writer.encode) {
14
+ return await writer.encode(data, options);
15
+ }
16
+
17
+ if (writer.encodeText) {
18
+ const text = await writer.encodeText(data, options);
19
+ return new TextEncoder().encode(text);
20
+ }
21
+
22
+ if (writer.encodeInBatches) {
23
+ // Create an iterator representing the data
24
+ // TODO - Assumes this is a table
25
+ const batches = encodeTableInBatches(data, writer, options);
26
+
27
+ // Concatenate the output
28
+ const chunks: ArrayBuffer[] = [];
29
+ for await (const batch of batches) {
30
+ chunks.push(batch);
31
+ }
32
+ return concatenateArrayBuffers(...chunks);
33
+ }
34
+
35
+ throw new Error('Writer could not encode data');
36
+ }
37
+
38
+ export async function encodeTableAsText<WriterT extends Writer = Writer>(
39
+ data: Table,
40
+ writer: WriterT,
41
+ options?: WriterOptionsType<WriterT>
42
+ ): Promise<string> {
43
+ if (writer.text && writer.encodeText) {
44
+ return await writer.encodeText(data, options);
45
+ }
46
+
47
+ if (writer.text && (writer.encode || writer.encodeInBatches)) {
48
+ const arrayBuffer = await encodeTable(data, writer, options);
49
+ return new TextDecoder().decode(arrayBuffer);
50
+ }
51
+ throw new Error('Writer could not encode data as text');
52
+ }
53
+
54
+ export function encodeTableInBatches<WriterT extends Writer = Writer>(
55
+ data: Table,
56
+ writer: WriterT,
57
+ options?: WriterOptionsType<WriterT>
58
+ ): AsyncIterable<ArrayBuffer> {
59
+ if (writer.encodeInBatches) {
60
+ const dataIterator = getIterator(data);
61
+ // @ts-expect-error
62
+ return writer.encodeInBatches(dataIterator, options);
63
+ }
64
+ // TODO -fall back to atomic encode?
65
+ throw new Error('Writer could not encode data in batches');
66
+ }
67
+
68
+ function getIterator(data) {
69
+ const dataIterator = [{table: data, start: 0, end: data.length}];
70
+ return dataIterator;
71
+ }
@@ -1,8 +1,10 @@
1
- import type {Writer, LoaderOptions} from '@loaders.gl/loader-utils';
1
+ import {Writer, WriterOptions, canEncodeWithWorker} from '@loaders.gl/loader-utils';
2
+ import {processOnWorker} from '@loaders.gl/worker-utils';
2
3
  import {concatenateArrayBuffers, resolvePath} from '@loaders.gl/loader-utils';
3
4
  import {isBrowser} from '@loaders.gl/loader-utils';
4
5
  import {writeFile} from '../fetch/write-file';
5
6
  import {fetchFile} from '../fetch/fetch-file';
7
+ import {getLoaderOptions} from './loader-options';
6
8
 
7
9
  /**
8
10
  * Encode loaded data into a binary ArrayBuffer using the specified Writer.
@@ -10,8 +12,15 @@ import {fetchFile} from '../fetch/fetch-file';
10
12
  export async function encode(
11
13
  data: any,
12
14
  writer: Writer,
13
- options?: LoaderOptions
15
+ options?: WriterOptions
14
16
  ): Promise<ArrayBuffer> {
17
+ const globalOptions = getLoaderOptions() as WriterOptions;
18
+ // const globalOptions: WriterOptions = {}; // getWriterOptions();
19
+ options = {...globalOptions, ...options};
20
+ if (canEncodeWithWorker(writer, options)) {
21
+ return await processOnWorker(writer, data, options);
22
+ }
23
+
15
24
  // TODO Merge default writer options with options argument like it is done in load module.
16
25
  if (writer.encode) {
17
26
  return await writer.encode(data, options);
@@ -63,7 +72,7 @@ export async function encode(
63
72
  /**
64
73
  * Encode loaded data into a binary ArrayBuffer using the specified Writer.
65
74
  */
66
- export function encodeSync(data: any, writer: Writer, options?: LoaderOptions): ArrayBuffer {
75
+ export function encodeSync(data: any, writer: Writer, options?: WriterOptions): ArrayBuffer {
67
76
  if (writer.encodeSync) {
68
77
  return writer.encodeSync(data, options);
69
78
  }
@@ -79,7 +88,7 @@ export function encodeSync(data: any, writer: Writer, options?: LoaderOptions):
79
88
  export async function encodeText(
80
89
  data: any,
81
90
  writer: Writer,
82
- options?: LoaderOptions
91
+ options?: WriterOptions
83
92
  ): Promise<string> {
84
93
  if (writer.text && writer.encodeText) {
85
94
  return await writer.encodeText(data, options);
@@ -99,10 +108,11 @@ export async function encodeText(
99
108
  export function encodeInBatches(
100
109
  data: any,
101
110
  writer: Writer,
102
- options?: LoaderOptions
111
+ options?: WriterOptions
103
112
  ): AsyncIterable<ArrayBuffer> {
104
113
  if (writer.encodeInBatches) {
105
114
  const dataIterator = getIterator(data);
115
+ // @ts-expect-error
106
116
  return writer.encodeInBatches(dataIterator, options);
107
117
  }
108
118
  // TODO -fall back to atomic encode?
@@ -1,6 +1,6 @@
1
1
  import type {LoaderWithParser, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';
2
2
  import {isLoaderObject} from '../loader-utils/normalize-loader';
3
- import {getFetchFunction} from '../loader-utils/option-utils';
3
+ import {getFetchFunction} from '../loader-utils/get-fetch-function';
4
4
 
5
5
  import {parseInBatches} from './parse-in-batches';
6
6
 
@@ -1,7 +1,10 @@
1
+ // loaders.gl, MIT license
2
+
1
3
  import type {DataType, Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';
4
+ import type {LoaderOptionsType, LoaderReturnType} from '@loaders.gl/loader-utils';
2
5
  import {isBlob} from '../../javascript-utils/is-type';
3
6
  import {isLoaderObject} from '../loader-utils/normalize-loader';
4
- import {getFetchFunction} from '../loader-utils/option-utils';
7
+ import {getFetchFunction} from '../loader-utils/get-fetch-function';
5
8
 
6
9
  import {parse} from './parse';
7
10
 
@@ -14,22 +17,46 @@ import {parse} from './parse';
14
17
  * @param options
15
18
  * @param context
16
19
  */
20
+
21
+ export async function load<LoaderT extends Loader>(
22
+ url: string | DataType,
23
+ loader: LoaderT,
24
+ options?: LoaderOptionsType<LoaderT>,
25
+ context?: LoaderContext
26
+ ): Promise<LoaderReturnType<LoaderT>>;
27
+
28
+ export async function load<
29
+ LoaderT extends Loader, // eslint-disable-line @typescript-eslint/no-unused-vars
30
+ LoaderOptionsT extends LoaderOptions = LoaderOptions
31
+ >(
32
+ url: string | DataType,
33
+ loaders: Loader[] | LoaderOptions,
34
+ options?: LoaderOptionsT,
35
+ context?: LoaderContext
36
+ ): Promise<any>;
37
+
17
38
  // implementation signature
18
- export async function load(
39
+ export async function load<LoaderOptionsT extends LoaderOptions>(
19
40
  url: string | DataType,
20
- loaders?: Loader | Loader[] | LoaderOptions,
21
- options?: LoaderOptions,
41
+ loaders?: Loader[] | LoaderOptions,
42
+ options?: LoaderOptionsT,
22
43
  context?: LoaderContext
23
44
  ): Promise<any> {
45
+ let resolvedLoaders: Loader | Loader[];
46
+ let resolvedOptions: LoaderOptionsT | undefined;
47
+
24
48
  // Signature: load(url, options)
25
49
  if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {
50
+ resolvedLoaders = [];
51
+ resolvedOptions = loaders as LoaderOptionsT;
26
52
  context = undefined; // context not supported in short signature
27
- options = loaders as LoaderOptions;
28
- loaders = undefined;
53
+ } else {
54
+ resolvedLoaders = loaders as Loader | Loader[];
55
+ resolvedOptions = options;
29
56
  }
30
57
 
31
58
  // Select fetch function
32
- const fetch = getFetchFunction(options);
59
+ const fetch = getFetchFunction(resolvedOptions);
33
60
 
34
61
  // at this point, `url` could be already loaded binary data
35
62
  let data = url;
@@ -41,9 +68,13 @@ export async function load(
41
68
 
42
69
  if (isBlob(url)) {
43
70
  // The fetch response object will contain blob.name
71
+ // @ts-expect-error TODO - This may not work for overridden fetch functions
44
72
  data = await fetch(url);
45
73
  }
46
74
 
47
75
  // Data is loaded (at least we have a `Response` object) so time to hand over to `parse`
48
- return await parse(data, loaders, options);
76
+ // return await parse(data, loaders as Loader[], options);
77
+ return Array.isArray(resolvedLoaders)
78
+ ? await parse(data, resolvedLoaders, resolvedOptions) // loader array overload
79
+ : await parse(data, resolvedLoaders, resolvedOptions); // single loader overload
49
80
  }
@@ -0,0 +1,2 @@
1
+ export {setGlobalOptions as setLoaderOptions} from '../loader-utils/option-utils';
2
+ export {getGlobalLoaderOptions as getLoaderOptions} from '../loader-utils/option-utils';
@@ -11,7 +11,7 @@ import {isLoaderObject} from '../loader-utils/normalize-loader';
11
11
  import {normalizeOptions} from '../loader-utils/option-utils';
12
12
  import {getLoaderContext} from '../loader-utils/loader-context';
13
13
  import {getAsyncIterableFromData} from '../loader-utils/get-data';
14
- import {getResourceUrlAndType} from '../utils/resource-utils';
14
+ import {getResourceUrl} from '../utils/resource-utils';
15
15
  import {selectLoader} from './select-loader';
16
16
 
17
17
  // Ensure `parse` is available in context if loader falls back to `parse`
@@ -32,6 +32,8 @@ export async function parseInBatches(
32
32
  ): Promise<AsyncIterable<any>> {
33
33
  assert(!context || typeof context === 'object'); // parseInBatches no longer accepts final url
34
34
 
35
+ const loaderArray = Array.isArray(loaders) ? loaders : undefined;
36
+
35
37
  // Signature: parseInBatches(data, options, url) - Uses registered loaders
36
38
  if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {
37
39
  context = undefined; // context not supported in short signature
@@ -43,11 +45,11 @@ export async function parseInBatches(
43
45
  options = options || {};
44
46
 
45
47
  // Extract a url for auto detection
46
- const {url} = getResourceUrlAndType(data);
48
+ const url = getResourceUrl(data);
47
49
 
48
50
  // Chooses a loader and normalizes it
49
51
  // Note - only uses URL and contentType for streams and iterator inputs
50
- const loader = await selectLoader(data as ArrayBuffer, loaders as Loader[], options);
52
+ const loader = await selectLoader(data as ArrayBuffer, loaders as Loader | Loader[], options);
51
53
  // Note: if options.nothrow was set, it is possible that no loader was found, if so just return null
52
54
  if (!loader) {
53
55
  // @ts-ignore
@@ -55,14 +57,11 @@ export async function parseInBatches(
55
57
  }
56
58
 
57
59
  // Normalize options
58
- // @ts-ignore
59
- options = normalizeOptions(options, loader, loaders, url);
60
- // @ts-ignore
60
+ options = normalizeOptions(options, loader, loaderArray, url);
61
61
  context = getLoaderContext(
62
- // @ts-ignore
63
- {url, parseInBatches, parse, loaders: loaders as Loader[]},
62
+ {url, parseInBatches, parse, loaders: loaderArray},
64
63
  options,
65
- context
64
+ context || null
66
65
  );
67
66
 
68
67
  return await parseWithLoaderInBatches(loader as LoaderWithParser, data, options, context);
@@ -11,7 +11,7 @@ import {isLoaderObject} from '../loader-utils/normalize-loader';
11
11
  import {normalizeOptions} from '../loader-utils/option-utils';
12
12
  import {getArrayBufferOrStringFromDataSync} from '../loader-utils/get-data';
13
13
  import {getLoaderContext, getLoadersFromContext} from '../loader-utils/loader-context';
14
- import {getResourceUrlAndType} from '../utils/resource-utils';
14
+ import {getResourceUrl} from '../utils/resource-utils';
15
15
 
16
16
  /**
17
17
  * Parses `data` synchronously using a specified loader
@@ -52,12 +52,16 @@ export function parseSync(
52
52
  options = normalizeOptions(options, loader, candidateLoaders);
53
53
 
54
54
  // Extract a url for auto detection
55
- const {url} = getResourceUrlAndType(data);
55
+ const url = getResourceUrl(data);
56
56
 
57
57
  const parse = () => {
58
- throw new Error('parseSync called parse');
58
+ throw new Error('parseSync called parse (which is async');
59
59
  };
60
- context = getLoaderContext({url, parseSync, parse, loaders: loaders as Loader[]}, options);
60
+ context = getLoaderContext(
61
+ {url, parseSync, parse, loaders: loaders as Loader[]},
62
+ options,
63
+ context || null
64
+ );
61
65
 
62
66
  return parseWithLoaderSync(loader as LoaderWithParser, data, options, context);
63
67
  }
@@ -1,13 +1,41 @@
1
+ // loaders.gl, MIT license
2
+
1
3
  import type {DataType, Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';
4
+ import type {LoaderOptionsType, LoaderReturnType} from '@loaders.gl/loader-utils';
2
5
  import {assert, validateWorkerVersion} from '@loaders.gl/worker-utils';
3
6
  import {parseWithWorker, canParseWithWorker} from '@loaders.gl/loader-utils';
4
7
  import {isLoaderObject} from '../loader-utils/normalize-loader';
8
+ import {isResponse} from '../../javascript-utils/is-type';
5
9
  import {normalizeOptions} from '../loader-utils/option-utils';
6
10
  import {getArrayBufferOrStringFromData} from '../loader-utils/get-data';
7
11
  import {getLoaderContext, getLoadersFromContext} from '../loader-utils/loader-context';
8
- import {getResourceUrlAndType} from '../utils/resource-utils';
12
+ import {getResourceUrl} from '../utils/resource-utils';
9
13
  import {selectLoader} from './select-loader';
10
14
 
15
+ // type LoaderArrayType<T> = T extends (infer Loader)[] ? LoaderOptionsType<Loader> : T
16
+
17
+ export async function parse<
18
+ LoaderT extends Loader,
19
+ OptionsT extends LoaderOptions = LoaderOptionsType<LoaderT>
20
+ >(
21
+ data: DataType | Promise<DataType>,
22
+ loader: LoaderT,
23
+ options?: OptionsT,
24
+ context?: LoaderContext
25
+ ): Promise<LoaderReturnType<LoaderT>>;
26
+
27
+ export async function parse(
28
+ data: DataType | Promise<DataType>,
29
+ loaders: Loader[],
30
+ options?: LoaderOptions,
31
+ context?: LoaderContext
32
+ ): Promise<any>;
33
+
34
+ export async function parse(
35
+ data: DataType | Promise<DataType>,
36
+ options?: LoaderOptions
37
+ ): Promise<any>;
38
+
11
39
  /**
12
40
  * Parses `data` using a specified loader
13
41
  * @param data
@@ -15,6 +43,7 @@ import {selectLoader} from './select-loader';
15
43
  * @param options
16
44
  * @param context
17
45
  */
46
+ // implementation signature
18
47
  export async function parse(
19
48
  data: DataType | Promise<DataType>,
20
49
  loaders?: Loader | Loader[] | LoaderOptions,
@@ -32,10 +61,10 @@ export async function parse(
32
61
  }
33
62
 
34
63
  data = await data; // Resolve any promise
35
- options = options || {};
64
+ options = options || ({} as LoaderOptions); // Could be invalid...
36
65
 
37
66
  // Extract a url for auto detection
38
- const {url} = getResourceUrlAndType(data);
67
+ const url = getResourceUrl(data);
39
68
 
40
69
  // Chooses a loader (and normalizes it)
41
70
  // Also use any loaders in the context, new loaders take priority
@@ -49,10 +78,10 @@ export async function parse(
49
78
  }
50
79
 
51
80
  // Normalize options
52
- options = normalizeOptions(options, loader, candidateLoaders, url);
81
+ options = normalizeOptions(options, loader, candidateLoaders, url); // Could be invalid...
53
82
 
54
83
  // Get a context (if already present, will be unchanged)
55
- context = getLoaderContext({url, parse, loaders: candidateLoaders}, options, context);
84
+ context = getLoaderContext({url, parse, loaders: candidateLoaders}, options, context || null);
56
85
 
57
86
  return await parseWithLoader(loader, data, options, context);
58
87
  }
@@ -62,6 +91,14 @@ export async function parse(
62
91
  async function parseWithLoader(loader, data, options, context) {
63
92
  validateWorkerVersion(loader);
64
93
 
94
+ if (isResponse(data)) {
95
+ // Serialize to support passing the response to web worker
96
+ const response = data as Response;
97
+ const {ok, redirected, status, statusText, type, url} = response;
98
+ const headers = Object.fromEntries(response.headers.entries());
99
+ context.response = {headers, ok, redirected, status, statusText, type, url};
100
+ }
101
+
65
102
  data = await getArrayBufferOrStringFromData(data, loader, options);
66
103
 
67
104
  // First check for synchronous text parser, wrap results in promises
@@ -11,7 +11,7 @@ const getGlobalLoaderRegistry = () => {
11
11
  };
12
12
 
13
13
  /** Register a list of global loaders */
14
- export function registerLoaders(loaders: Loader[]) {
14
+ export function registerLoaders(loaders: Loader[] | Loader) {
15
15
  const loaderRegistry = getGlobalLoaderRegistry();
16
16
 
17
17
  loaders = Array.isArray(loaders) ? loaders : [loaders];
@@ -1,9 +1,11 @@
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 {getResourceUrlAndType} from '../utils/resource-utils';
4
+ import {log} from '../utils/log';
5
+ import {getResourceUrl, getResourceMIMEType} from '../utils/resource-utils';
5
6
  import {getRegisteredLoaders} from './register-loaders';
6
7
  import {isBlob} from '../../javascript-utils/is-type';
8
+ import {stripQueryString} from '../utils/url-utils';
7
9
 
8
10
  const EXT_PATTERN = /\.([^.]+)$/;
9
11
 
@@ -103,30 +105,46 @@ export function selectLoaderSync(
103
105
  }
104
106
 
105
107
  /** Implements loaders selection logic */
108
+ // eslint-disable-next-line complexity
106
109
  function selectLoaderInternal(
107
110
  data: Response | Blob | ArrayBuffer | string,
108
111
  loaders: Loader[],
109
112
  options?: LoaderOptions,
110
113
  context?: LoaderContext
111
114
  ) {
112
- const {url, type} = getResourceUrlAndType(data);
115
+ const url = getResourceUrl(data);
116
+ const type = getResourceMIMEType(data);
113
117
 
114
- const testUrl = url || context?.url;
118
+ const testUrl = stripQueryString(url) || context?.url;
115
119
 
116
120
  let loader: Loader | null = null;
121
+ let reason: string = '';
117
122
 
118
123
  // if options.mimeType is supplied, it takes precedence
119
124
  if (options?.mimeType) {
120
125
  loader = findLoaderByMIMEType(loaders, options?.mimeType);
126
+ reason = `match forced by supplied MIME type ${options?.mimeType}`;
121
127
  }
128
+
122
129
  // Look up loader by url
123
130
  loader = loader || findLoaderByUrl(loaders, testUrl);
131
+ reason = reason || (loader ? `matched url ${testUrl}` : '');
132
+
124
133
  // Look up loader by mime type
125
134
  loader = loader || findLoaderByMIMEType(loaders, type);
135
+ reason = reason || (loader ? `matched MIME type ${type}` : '');
136
+
126
137
  // Look for loader via initial bytes (Note: not always accessible (e.g. Response, stream, async iterator)
127
138
  loader = loader || findLoaderByInitialBytes(loaders, data);
139
+ reason = reason || (loader ? `matched initial data ${getFirstCharacters(data)}` : '');
140
+
128
141
  // Look up loader by fallback mime type
129
142
  loader = loader || findLoaderByMIMEType(loaders, options?.fallbackMimeType);
143
+ reason = reason || (loader ? `matched fallback MIME type ${type}` : '');
144
+
145
+ if (reason) {
146
+ log.log(1, `selectLoader selected ${loader?.name}: ${reason}.`);
147
+ }
130
148
 
131
149
  return loader;
132
150
  }
@@ -145,7 +163,8 @@ function validHTTPResponse(data: any): boolean {
145
163
 
146
164
  /** Generate a helpful message to help explain why loader selection failed. */
147
165
  function getNoValidLoaderMessage(data): string {
148
- const {url, type} = getResourceUrlAndType(data);
166
+ const url = getResourceUrl(data);
167
+ const type = getResourceMIMEType(data);
149
168
 
150
169
  let message = 'No valid loader found (';
151
170
  message += url ? `${path.filename(url)}, ` : 'no url provided, ';
@@ -0,0 +1,17 @@
1
+ // loaders.gl, MIT license
2
+ import {log} from './utils/log';
3
+
4
+ // @ts-ignore TS2304: Cannot find name '__VERSION__'.
5
+ const version = typeof __VERSION__ !== 'undefined' ? __VERSION__ : '';
6
+
7
+ // @ts-ignore
8
+ if (!globalThis.loaders) {
9
+ log.log(1, `loaders.gl ${version}`)();
10
+
11
+ globalThis.loaders = Object.assign(globalThis.loaders || {}, {
12
+ VERSION: version,
13
+ log
14
+ });
15
+ }
16
+ // @ts-ignore
17
+ export default globalThis.loaders;
@@ -0,0 +1,38 @@
1
+ // loaders.gl, MIT license
2
+
3
+ import type {LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';
4
+ import {isObject} from '../../javascript-utils/is-type';
5
+ import {fetchFile} from '../fetch/fetch-file';
6
+ import {getGlobalLoaderOptions} from './option-utils';
7
+
8
+ /**
9
+ * Gets the current fetch function from options and context
10
+ * @param options
11
+ * @param context
12
+ */
13
+ export function getFetchFunction(
14
+ options?: LoaderOptions,
15
+ context?: Omit<LoaderContext, 'fetch'> & Partial<Pick<LoaderContext, 'fetch'>>
16
+ ) {
17
+ const globalOptions = getGlobalLoaderOptions();
18
+
19
+ const fetchOptions = options || globalOptions;
20
+
21
+ // options.fetch can be a function
22
+ if (typeof fetchOptions.fetch === 'function') {
23
+ return fetchOptions.fetch;
24
+ }
25
+
26
+ // options.fetch can be an options object
27
+ if (isObject(fetchOptions.fetch)) {
28
+ return (url) => fetchFile(url, fetchOptions as RequestInit);
29
+ }
30
+
31
+ // else refer to context (from parent loader) if available
32
+ if (context?.fetch) {
33
+ return context?.fetch;
34
+ }
35
+
36
+ // else return the default fetch function
37
+ return fetchFile;
38
+ }
@@ -1,5 +1,7 @@
1
1
  import type {Loader, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';
2
- import {getFetchFunction} from './option-utils';
2
+ import {getFetchFunction} from './get-fetch-function';
3
+ import {extractQueryString, stripQueryString} from '../utils/url-utils';
4
+ import {path} from '@loaders.gl/loader-utils';
3
5
 
4
6
  /**
5
7
  * "sub" loaders invoked by other loaders get a "context" injected on `this`
@@ -12,26 +14,35 @@ import {getFetchFunction} from './option-utils';
12
14
  */
13
15
  export function getLoaderContext(
14
16
  context: Omit<LoaderContext, 'fetch'> & Partial<Pick<LoaderContext, 'fetch'>>,
15
- options?: LoaderOptions,
16
- previousContext: LoaderContext | null = null
17
+ options: LoaderOptions,
18
+ parentContext: LoaderContext | null
17
19
  ): LoaderContext {
18
20
  // For recursive calls, we already have a context
19
21
  // TODO - add any additional loaders to context?
20
- if (previousContext) {
21
- return previousContext;
22
+ if (parentContext) {
23
+ return parentContext;
22
24
  }
23
25
 
24
- const resolvedContext: LoaderContext = {
26
+ const newContext: LoaderContext = {
25
27
  fetch: getFetchFunction(options, context),
26
28
  ...context
27
29
  };
28
30
 
31
+ // Parse URLs so that subloaders can easily generate correct strings
32
+ if (newContext.url) {
33
+ const baseUrl = stripQueryString(newContext.url);
34
+ newContext.baseUrl = baseUrl;
35
+ newContext.queryString = extractQueryString(newContext.url);
36
+ newContext.filename = path.filename(baseUrl);
37
+ newContext.baseUrl = path.dirname(baseUrl);
38
+ }
39
+
29
40
  // Recursive loading does not use single loader
30
- if (!Array.isArray(resolvedContext.loaders)) {
31
- resolvedContext.loaders = null;
41
+ if (!Array.isArray(newContext.loaders)) {
42
+ newContext.loaders = null;
32
43
  }
33
44
 
34
- return resolvedContext;
45
+ return newContext;
35
46
  }
36
47
 
37
48
  // eslint-disable-next-line complexity
@@ -1,5 +1,5 @@
1
1
  // probe.gl Log compatible loggers
2
- import {Log} from 'probe.gl';
2
+ import {Log} from '@probe.gl/log';
3
3
 
4
4
  export const probeLog = new Log({id: 'loaders.gl'});
5
5
 
@@ -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,