@loaders.gl/core 4.0.0-alpha.8 → 4.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/dist/dist.min.js +172 -175
  2. package/dist/es5/index.js +10 -5
  3. package/dist/es5/index.js.map +1 -1
  4. package/dist/es5/iterators/batch-iterators/timed-batch-iterator.js.map +1 -1
  5. package/dist/es5/iterators/make-stream/make-dom-stream.js.map +1 -1
  6. package/dist/es5/iterators/make-stream/make-node-stream.js.map +1 -1
  7. package/dist/es5/javascript-utils/is-type.js +1 -1
  8. package/dist/es5/javascript-utils/is-type.js.map +1 -1
  9. package/dist/es5/lib/api/encode-table.js +6 -4
  10. package/dist/es5/lib/api/encode-table.js.map +1 -1
  11. package/dist/es5/lib/api/encode.js +14 -4
  12. package/dist/es5/lib/api/encode.js.map +1 -1
  13. package/dist/es5/lib/api/load-in-batches.js +40 -11
  14. package/dist/es5/lib/api/load-in-batches.js.map +1 -1
  15. package/dist/es5/lib/api/load.js.map +1 -1
  16. package/dist/es5/lib/api/parse-in-batches.js +12 -14
  17. package/dist/es5/lib/api/parse-in-batches.js.map +1 -1
  18. package/dist/es5/lib/api/parse-sync.js +2 -6
  19. package/dist/es5/lib/api/parse-sync.js.map +1 -1
  20. package/dist/es5/lib/api/parse.js +38 -39
  21. package/dist/es5/lib/api/parse.js.map +1 -1
  22. package/dist/es5/lib/api/save.js.map +1 -1
  23. package/dist/es5/lib/api/select-loader.js +5 -3
  24. package/dist/es5/lib/api/select-loader.js.map +1 -1
  25. package/dist/es5/lib/fetch/fetch-file.js +26 -8
  26. package/dist/es5/lib/fetch/fetch-file.js.map +1 -1
  27. package/dist/es5/lib/fetch/fetch-file.node.js +86 -0
  28. package/dist/es5/lib/fetch/fetch-file.node.js.map +1 -0
  29. package/dist/es5/lib/filesystems/browser-filesystem.js +2 -2
  30. package/dist/es5/lib/filesystems/browser-filesystem.js.map +1 -1
  31. package/dist/es5/lib/filesystems/read-array-buffer.js.map +1 -1
  32. package/dist/es5/lib/init.js +1 -1
  33. package/dist/es5/lib/init.js.map +1 -1
  34. package/dist/es5/lib/loader-utils/check-errors.js +1 -1
  35. package/dist/es5/lib/loader-utils/check-errors.js.map +1 -1
  36. package/dist/es5/lib/loader-utils/get-data.js +1 -1
  37. package/dist/es5/lib/loader-utils/get-data.js.map +1 -1
  38. package/dist/es5/lib/loader-utils/get-fetch-function.js +5 -5
  39. package/dist/es5/lib/loader-utils/get-fetch-function.js.map +1 -1
  40. package/dist/es5/lib/loader-utils/loader-context.js +2 -2
  41. package/dist/es5/lib/loader-utils/loader-context.js.map +1 -1
  42. package/dist/es5/lib/loader-utils/loggers.js.map +1 -1
  43. package/dist/es5/lib/loader-utils/option-defaults.js +1 -0
  44. package/dist/es5/lib/loader-utils/option-defaults.js.map +1 -1
  45. package/dist/es5/lib/loader-utils/option-utils.js +3 -4
  46. package/dist/es5/lib/loader-utils/option-utils.js.map +1 -1
  47. package/dist/es5/lib/progress/fetch-progress.js +1 -1
  48. package/dist/es5/lib/progress/fetch-progress.js.map +1 -1
  49. package/dist/es5/null-loader.js +6 -14
  50. package/dist/es5/null-loader.js.map +1 -1
  51. package/dist/esm/index.js +4 -3
  52. package/dist/esm/index.js.map +1 -1
  53. package/dist/esm/iterators/batch-iterators/timed-batch-iterator.js.map +1 -1
  54. package/dist/esm/iterators/make-stream/make-dom-stream.js.map +1 -1
  55. package/dist/esm/iterators/make-stream/make-node-stream.js.map +1 -1
  56. package/dist/esm/javascript-utils/is-type.js +1 -1
  57. package/dist/esm/javascript-utils/is-type.js.map +1 -1
  58. package/dist/esm/lib/api/encode-table.js +2 -2
  59. package/dist/esm/lib/api/encode-table.js.map +1 -1
  60. package/dist/esm/lib/api/encode.js +12 -2
  61. package/dist/esm/lib/api/encode.js.map +1 -1
  62. package/dist/esm/lib/api/load-in-batches.js +8 -5
  63. package/dist/esm/lib/api/load-in-batches.js.map +1 -1
  64. package/dist/esm/lib/api/load.js.map +1 -1
  65. package/dist/esm/lib/api/parse-in-batches.js +4 -5
  66. package/dist/esm/lib/api/parse-in-batches.js.map +1 -1
  67. package/dist/esm/lib/api/parse-sync.js +2 -4
  68. package/dist/esm/lib/api/parse-sync.js.map +1 -1
  69. package/dist/esm/lib/api/parse.js +12 -11
  70. package/dist/esm/lib/api/parse.js.map +1 -1
  71. package/dist/esm/lib/api/save.js.map +1 -1
  72. package/dist/esm/lib/api/select-loader.js +5 -3
  73. package/dist/esm/lib/api/select-loader.js.map +1 -1
  74. package/dist/esm/lib/fetch/fetch-file.js +16 -7
  75. package/dist/esm/lib/fetch/fetch-file.js.map +1 -1
  76. package/dist/esm/lib/fetch/fetch-file.node.js +54 -0
  77. package/dist/esm/lib/fetch/fetch-file.node.js.map +1 -0
  78. package/dist/esm/lib/filesystems/browser-filesystem.js +1 -1
  79. package/dist/esm/lib/filesystems/browser-filesystem.js.map +1 -1
  80. package/dist/esm/lib/filesystems/read-array-buffer.js.map +1 -1
  81. package/dist/esm/lib/init.js +1 -1
  82. package/dist/esm/lib/init.js.map +1 -1
  83. package/dist/esm/lib/loader-utils/check-errors.js +1 -1
  84. package/dist/esm/lib/loader-utils/check-errors.js.map +1 -1
  85. package/dist/esm/lib/loader-utils/get-data.js +1 -1
  86. package/dist/esm/lib/loader-utils/get-data.js.map +1 -1
  87. package/dist/esm/lib/loader-utils/get-fetch-function.js +5 -5
  88. package/dist/esm/lib/loader-utils/get-fetch-function.js.map +1 -1
  89. package/dist/esm/lib/loader-utils/loader-context.js +2 -2
  90. package/dist/esm/lib/loader-utils/loader-context.js.map +1 -1
  91. package/dist/esm/lib/loader-utils/loggers.js.map +1 -1
  92. package/dist/esm/lib/loader-utils/option-defaults.js +1 -0
  93. package/dist/esm/lib/loader-utils/option-defaults.js.map +1 -1
  94. package/dist/esm/lib/loader-utils/option-utils.js +2 -2
  95. package/dist/esm/lib/loader-utils/option-utils.js.map +1 -1
  96. package/dist/esm/lib/progress/fetch-progress.js +1 -1
  97. package/dist/esm/lib/progress/fetch-progress.js.map +1 -1
  98. package/dist/esm/null-loader.js +6 -14
  99. package/dist/esm/null-loader.js.map +1 -1
  100. package/dist/null-worker-node.js +14 -14
  101. package/dist/null-worker.js +14 -14
  102. package/dist/src/bundle.d.ts.map +1 -0
  103. package/dist/src/core-addons/write-file-browser.d.ts.map +1 -0
  104. package/dist/{index.d.ts → src/index.d.ts} +5 -4
  105. package/dist/src/index.d.ts.map +1 -0
  106. package/dist/src/iterators/batch-iterators/timed-batch-iterator.d.ts +5 -0
  107. package/dist/src/iterators/batch-iterators/timed-batch-iterator.d.ts.map +1 -0
  108. package/dist/src/iterators/make-iterator/make-array-buffer-iterator.d.ts.map +1 -0
  109. package/dist/src/iterators/make-iterator/make-blob-iterator.d.ts.map +1 -0
  110. package/dist/src/iterators/make-iterator/make-iterator.d.ts.map +1 -0
  111. package/dist/src/iterators/make-iterator/make-stream-iterator.d.ts.map +1 -0
  112. package/dist/src/iterators/make-iterator/make-string-iterator.d.ts.map +1 -0
  113. package/dist/src/iterators/make-stream/make-dom-stream.d.ts.map +1 -0
  114. package/dist/src/iterators/make-stream/make-node-stream.d.ts.map +1 -0
  115. package/dist/{javascript-utils → src/javascript-utils}/is-type.d.ts +5 -5
  116. package/dist/src/javascript-utils/is-type.d.ts.map +1 -0
  117. package/dist/src/lib/api/encode-table.d.ts.map +1 -0
  118. package/dist/src/lib/api/encode.d.ts +33 -0
  119. package/dist/src/lib/api/encode.d.ts.map +1 -0
  120. package/dist/{lib → src/lib}/api/load-in-batches.d.ts +7 -2
  121. package/dist/src/lib/api/load-in-batches.d.ts.map +1 -0
  122. package/dist/src/lib/api/load.d.ts +16 -0
  123. package/dist/src/lib/api/load.d.ts.map +1 -0
  124. package/dist/src/lib/api/loader-options.d.ts.map +1 -0
  125. package/dist/src/lib/api/parse-in-batches.d.ts +16 -0
  126. package/dist/src/lib/api/parse-in-batches.d.ts.map +1 -0
  127. package/dist/src/lib/api/parse-sync.d.ts +16 -0
  128. package/dist/src/lib/api/parse-sync.d.ts.map +1 -0
  129. package/dist/{lib → src/lib}/api/parse.d.ts +13 -3
  130. package/dist/src/lib/api/parse.d.ts.map +1 -0
  131. package/dist/src/lib/api/register-loaders.d.ts.map +1 -0
  132. package/dist/src/lib/api/save.d.ts +4 -0
  133. package/dist/src/lib/api/save.d.ts.map +1 -0
  134. package/dist/src/lib/api/select-loader.d.ts.map +1 -0
  135. package/dist/src/lib/common.d.ts.map +1 -0
  136. package/dist/src/lib/fetch/fetch-error-message.d.ts.map +1 -0
  137. package/dist/src/lib/fetch/fetch-file.d.ts +10 -0
  138. package/dist/src/lib/fetch/fetch-file.d.ts.map +1 -0
  139. package/dist/src/lib/fetch/fetch-file.node.d.ts +8 -0
  140. package/dist/src/lib/fetch/fetch-file.node.d.ts.map +1 -0
  141. package/dist/src/lib/fetch/read-array-buffer.d.ts.map +1 -0
  142. package/dist/{lib → src/lib}/fetch/read-file.d.ts +1 -1
  143. package/dist/src/lib/fetch/read-file.d.ts.map +1 -0
  144. package/dist/src/lib/fetch/write-file.d.ts.map +1 -0
  145. package/dist/{lib → src/lib}/filesystems/browser-filesystem.d.ts +4 -4
  146. package/dist/src/lib/filesystems/browser-filesystem.d.ts.map +1 -0
  147. package/dist/src/lib/filesystems/read-array-buffer.d.ts +8 -0
  148. package/dist/src/lib/filesystems/read-array-buffer.d.ts.map +1 -0
  149. package/dist/{lib → src/lib}/init.d.ts.map +1 -1
  150. package/dist/src/lib/loader-utils/check-errors.d.ts +12 -0
  151. package/dist/src/lib/loader-utils/check-errors.d.ts.map +1 -0
  152. package/dist/src/lib/loader-utils/get-data.d.ts.map +1 -0
  153. package/dist/src/lib/loader-utils/get-fetch-function.d.ts +8 -0
  154. package/dist/src/lib/loader-utils/get-fetch-function.d.ts.map +1 -0
  155. package/dist/{lib → src/lib}/loader-utils/loader-context.d.ts +5 -2
  156. package/dist/src/lib/loader-utils/loader-context.d.ts.map +1 -0
  157. package/dist/src/lib/loader-utils/loggers.d.ts +19 -0
  158. package/dist/src/lib/loader-utils/loggers.d.ts.map +1 -0
  159. package/dist/src/lib/loader-utils/normalize-loader.d.ts.map +1 -0
  160. package/dist/src/lib/loader-utils/option-defaults.d.ts.map +1 -0
  161. package/dist/{lib → src/lib}/loader-utils/option-utils.d.ts +1 -1
  162. package/dist/src/lib/loader-utils/option-utils.d.ts.map +1 -0
  163. package/dist/{lib → src/lib}/progress/fetch-progress.d.ts +1 -1
  164. package/dist/src/lib/progress/fetch-progress.d.ts.map +1 -0
  165. package/dist/src/lib/utils/log.d.ts.map +1 -0
  166. package/dist/src/lib/utils/mime-type-utils.d.ts.map +1 -0
  167. package/dist/src/lib/utils/resource-utils.d.ts.map +1 -0
  168. package/dist/src/lib/utils/response-utils.d.ts.map +1 -0
  169. package/dist/src/lib/utils/url-utils.d.ts.map +1 -0
  170. package/dist/src/null-loader.d.ts +13 -0
  171. package/dist/src/null-loader.d.ts.map +1 -0
  172. package/dist/src/workers/null-worker.d.ts.map +1 -0
  173. package/dist/tsconfig.tsbuildinfo +1 -0
  174. package/package.json +7 -6
  175. package/src/index.ts +6 -5
  176. package/src/iterators/batch-iterators/timed-batch-iterator.ts +4 -1
  177. package/src/iterators/make-stream/make-dom-stream.ts +2 -1
  178. package/src/iterators/make-stream/make-node-stream.ts +5 -2
  179. package/src/javascript-utils/is-type.ts +12 -8
  180. package/src/lib/api/encode-table.ts +3 -3
  181. package/src/lib/api/encode.ts +31 -12
  182. package/src/lib/api/load-in-batches.ts +54 -11
  183. package/src/lib/api/load.ts +22 -14
  184. package/src/lib/api/parse-in-batches.ts +45 -17
  185. package/src/lib/api/parse-sync.ts +38 -17
  186. package/src/lib/api/parse.ts +41 -17
  187. package/src/lib/api/save.ts +2 -2
  188. package/src/lib/api/select-loader.ts +24 -13
  189. package/src/lib/fetch/fetch-file.node.ts +61 -0
  190. package/src/lib/fetch/fetch-file.ts +28 -16
  191. package/src/lib/filesystems/browser-filesystem.ts +5 -5
  192. package/src/lib/filesystems/read-array-buffer.ts +6 -18
  193. package/src/lib/init.ts +1 -0
  194. package/src/lib/loader-utils/check-errors.ts +21 -4
  195. package/src/lib/loader-utils/get-data.ts +1 -1
  196. package/src/lib/loader-utils/get-fetch-function.ts +7 -7
  197. package/src/lib/loader-utils/loader-context.ts +8 -5
  198. package/src/lib/loader-utils/loggers.ts +10 -8
  199. package/src/lib/loader-utils/option-defaults.ts +1 -0
  200. package/src/lib/loader-utils/option-utils.ts +23 -14
  201. package/src/lib/progress/fetch-progress.ts +10 -2
  202. package/src/null-loader.ts +23 -17
  203. package/dist/bundle.d.ts.map +0 -1
  204. package/dist/bundle.js +0 -5
  205. package/dist/core-addons/write-file-browser.d.ts.map +0 -1
  206. package/dist/core-addons/write-file-browser.js +0 -60
  207. package/dist/es5/lib/filesystems/filesystem.js +0 -2
  208. package/dist/es5/lib/filesystems/filesystem.js.map +0 -1
  209. package/dist/esm/lib/filesystems/filesystem.js +0 -2
  210. package/dist/esm/lib/filesystems/filesystem.js.map +0 -1
  211. package/dist/index.d.ts.map +0 -1
  212. package/dist/index.js +0 -108
  213. package/dist/iterators/batch-iterators/timed-batch-iterator.d.ts +0 -5
  214. package/dist/iterators/batch-iterators/timed-batch-iterator.d.ts.map +0 -1
  215. package/dist/iterators/batch-iterators/timed-batch-iterator.js +0 -22
  216. package/dist/iterators/make-iterator/make-array-buffer-iterator.d.ts.map +0 -1
  217. package/dist/iterators/make-iterator/make-array-buffer-iterator.js +0 -27
  218. package/dist/iterators/make-iterator/make-blob-iterator.d.ts.map +0 -1
  219. package/dist/iterators/make-iterator/make-blob-iterator.js +0 -21
  220. package/dist/iterators/make-iterator/make-iterator.d.ts.map +0 -1
  221. package/dist/iterators/make-iterator/make-iterator.js +0 -37
  222. package/dist/iterators/make-iterator/make-stream-iterator.d.ts.map +0 -1
  223. package/dist/iterators/make-iterator/make-stream-iterator.js +0 -96
  224. package/dist/iterators/make-iterator/make-string-iterator.d.ts.map +0 -1
  225. package/dist/iterators/make-iterator/make-string-iterator.js +0 -24
  226. package/dist/iterators/make-stream/make-dom-stream.d.ts.map +0 -1
  227. package/dist/iterators/make-stream/make-dom-stream.js +0 -46
  228. package/dist/iterators/make-stream/make-node-stream.d.ts.map +0 -1
  229. package/dist/iterators/make-stream/make-node-stream.js +0 -82
  230. package/dist/javascript-utils/is-type.d.ts.map +0 -1
  231. package/dist/javascript-utils/is-type.js +0 -41
  232. package/dist/lib/api/encode-table.d.ts.map +0 -1
  233. package/dist/lib/api/encode-table.js +0 -54
  234. package/dist/lib/api/encode.d.ts +0 -26
  235. package/dist/lib/api/encode.d.ts.map +0 -1
  236. package/dist/lib/api/encode.js +0 -121
  237. package/dist/lib/api/load-in-batches.d.ts.map +0 -1
  238. package/dist/lib/api/load-in-batches.js +0 -33
  239. package/dist/lib/api/load.d.ts +0 -15
  240. package/dist/lib/api/load.d.ts.map +0 -1
  241. package/dist/lib/api/load.js +0 -43
  242. package/dist/lib/api/loader-options.d.ts.map +0 -1
  243. package/dist/lib/api/loader-options.js +0 -7
  244. package/dist/lib/api/parse-in-batches.d.ts +0 -10
  245. package/dist/lib/api/parse-in-batches.d.ts.map +0 -1
  246. package/dist/lib/api/parse-in-batches.js +0 -117
  247. package/dist/lib/api/parse-sync.d.ts +0 -10
  248. package/dist/lib/api/parse-sync.d.ts.map +0 -1
  249. package/dist/lib/api/parse-sync.js +0 -59
  250. package/dist/lib/api/parse.d.ts.map +0 -1
  251. package/dist/lib/api/parse.js +0 -84
  252. package/dist/lib/api/register-loaders.d.ts.map +0 -1
  253. package/dist/lib/api/register-loaders.js +0 -35
  254. package/dist/lib/api/save.d.ts +0 -4
  255. package/dist/lib/api/save.d.ts.map +0 -1
  256. package/dist/lib/api/save.js +0 -15
  257. package/dist/lib/api/select-loader.d.ts.map +0 -1
  258. package/dist/lib/api/select-loader.js +0 -253
  259. package/dist/lib/common.d.ts.map +0 -1
  260. package/dist/lib/common.js +0 -2
  261. package/dist/lib/fetch/fetch-error-message.d.ts.map +0 -1
  262. package/dist/lib/fetch/fetch-error-message.js +0 -25
  263. package/dist/lib/fetch/fetch-file.d.ts +0 -13
  264. package/dist/lib/fetch/fetch-file.d.ts.map +0 -1
  265. package/dist/lib/fetch/fetch-file.js +0 -27
  266. package/dist/lib/fetch/read-array-buffer.d.ts.map +0 -1
  267. package/dist/lib/fetch/read-array-buffer.js +0 -41
  268. package/dist/lib/fetch/read-file.d.ts.map +0 -1
  269. package/dist/lib/fetch/read-file.js +0 -29
  270. package/dist/lib/fetch/write-file.d.ts.map +0 -1
  271. package/dist/lib/fetch/write-file.js +0 -22
  272. package/dist/lib/filesystems/browser-filesystem.d.ts.map +0 -1
  273. package/dist/lib/filesystems/browser-filesystem.js +0 -126
  274. package/dist/lib/filesystems/filesystem.d.ts +0 -46
  275. package/dist/lib/filesystems/filesystem.d.ts.map +0 -1
  276. package/dist/lib/filesystems/filesystem.js +0 -2
  277. package/dist/lib/filesystems/read-array-buffer.d.ts +0 -19
  278. package/dist/lib/filesystems/read-array-buffer.d.ts.map +0 -1
  279. package/dist/lib/filesystems/read-array-buffer.js +0 -29
  280. package/dist/lib/init.js +0 -16
  281. package/dist/lib/loader-utils/check-errors.d.ts +0 -3
  282. package/dist/lib/loader-utils/check-errors.d.ts.map +0 -1
  283. package/dist/lib/loader-utils/check-errors.js +0 -30
  284. package/dist/lib/loader-utils/get-data.d.ts.map +0 -1
  285. package/dist/lib/loader-utils/get-data.js +0 -129
  286. package/dist/lib/loader-utils/get-fetch-function.d.ts +0 -9
  287. package/dist/lib/loader-utils/get-fetch-function.d.ts.map +0 -1
  288. package/dist/lib/loader-utils/get-fetch-function.js +0 -31
  289. package/dist/lib/loader-utils/loader-context.d.ts.map +0 -1
  290. package/dist/lib/loader-utils/loader-context.js +0 -59
  291. package/dist/lib/loader-utils/loggers.d.ts +0 -17
  292. package/dist/lib/loader-utils/loggers.d.ts.map +0 -1
  293. package/dist/lib/loader-utils/loggers.js +0 -41
  294. package/dist/lib/loader-utils/normalize-loader.d.ts.map +0 -1
  295. package/dist/lib/loader-utils/normalize-loader.js +0 -52
  296. package/dist/lib/loader-utils/option-defaults.d.ts.map +0 -1
  297. package/dist/lib/loader-utils/option-defaults.js +0 -43
  298. package/dist/lib/loader-utils/option-utils.d.ts.map +0 -1
  299. package/dist/lib/loader-utils/option-utils.js +0 -160
  300. package/dist/lib/progress/fetch-progress.d.ts.map +0 -1
  301. package/dist/lib/progress/fetch-progress.js +0 -59
  302. package/dist/lib/utils/log.d.ts.map +0 -1
  303. package/dist/lib/utils/log.js +0 -6
  304. package/dist/lib/utils/mime-type-utils.d.ts.map +0 -1
  305. package/dist/lib/utils/mime-type-utils.js +0 -42
  306. package/dist/lib/utils/resource-utils.d.ts.map +0 -1
  307. package/dist/lib/utils/resource-utils.js +0 -90
  308. package/dist/lib/utils/response-utils.d.ts.map +0 -1
  309. package/dist/lib/utils/response-utils.js +0 -115
  310. package/dist/lib/utils/url-utils.d.ts.map +0 -1
  311. package/dist/lib/utils/url-utils.js +0 -14
  312. package/dist/null-loader.d.ts +0 -10
  313. package/dist/null-loader.d.ts.map +0 -1
  314. package/dist/null-loader.js +0 -56
  315. package/dist/workers/null-worker.d.ts.map +0 -1
  316. package/dist/workers/null-worker.js +0 -5
  317. package/src/lib/filesystems/filesystem.ts +0 -49
  318. /package/dist/{bundle.d.ts → src/bundle.d.ts} +0 -0
  319. /package/dist/{core-addons → src/core-addons}/write-file-browser.d.ts +0 -0
  320. /package/dist/{iterators → src/iterators}/make-iterator/make-array-buffer-iterator.d.ts +0 -0
  321. /package/dist/{iterators → src/iterators}/make-iterator/make-blob-iterator.d.ts +0 -0
  322. /package/dist/{iterators → src/iterators}/make-iterator/make-iterator.d.ts +0 -0
  323. /package/dist/{iterators → src/iterators}/make-iterator/make-stream-iterator.d.ts +0 -0
  324. /package/dist/{iterators → src/iterators}/make-iterator/make-string-iterator.d.ts +0 -0
  325. /package/dist/{iterators → src/iterators}/make-stream/make-dom-stream.d.ts +0 -0
  326. /package/dist/{iterators → src/iterators}/make-stream/make-node-stream.d.ts +0 -0
  327. /package/dist/{lib → src/lib}/api/encode-table.d.ts +0 -0
  328. /package/dist/{lib → src/lib}/api/loader-options.d.ts +0 -0
  329. /package/dist/{lib → src/lib}/api/register-loaders.d.ts +0 -0
  330. /package/dist/{lib → src/lib}/api/select-loader.d.ts +0 -0
  331. /package/dist/{lib → src/lib}/common.d.ts +0 -0
  332. /package/dist/{lib → src/lib}/fetch/fetch-error-message.d.ts +0 -0
  333. /package/dist/{lib → src/lib}/fetch/read-array-buffer.d.ts +0 -0
  334. /package/dist/{lib → src/lib}/fetch/write-file.d.ts +0 -0
  335. /package/dist/{lib → src/lib}/init.d.ts +0 -0
  336. /package/dist/{lib → src/lib}/loader-utils/get-data.d.ts +0 -0
  337. /package/dist/{lib → src/lib}/loader-utils/normalize-loader.d.ts +0 -0
  338. /package/dist/{lib → src/lib}/loader-utils/option-defaults.d.ts +0 -0
  339. /package/dist/{lib → src/lib}/utils/log.d.ts +0 -0
  340. /package/dist/{lib → src/lib}/utils/mime-type-utils.d.ts +0 -0
  341. /package/dist/{lib → src/lib}/utils/resource-utils.d.ts +0 -0
  342. /package/dist/{lib → src/lib}/utils/response-utils.d.ts +0 -0
  343. /package/dist/{lib → src/lib}/utils/url-utils.d.ts +0 -0
  344. /package/dist/{workers → src/workers}/null-worker.d.ts +0 -0
@@ -18,37 +18,45 @@ import {parse} from './parse';
18
18
  * @param context
19
19
  */
20
20
 
21
- export async function load<LoaderT extends Loader>(
21
+ export async function load<
22
+ LoaderT extends Loader,
23
+ OptionsT extends LoaderOptions = LoaderOptionsType<LoaderT>
24
+ >(
22
25
  url: string | DataType,
23
26
  loader: LoaderT,
24
- options?: LoaderOptionsType<LoaderT>,
27
+ options?: OptionsT,
25
28
  context?: LoaderContext
26
29
  ): Promise<LoaderReturnType<LoaderT>>;
27
30
 
28
- export async function load<
29
- LoaderT extends Loader, // eslint-disable-line @typescript-eslint/no-unused-vars
30
- LoaderOptionsT extends LoaderOptions = LoaderOptions
31
- >(
31
+ export async function load(
32
32
  url: string | DataType,
33
- loaders: Loader[] | LoaderOptions,
34
- options?: LoaderOptionsT,
33
+ loaders: Loader[],
34
+ options?: LoaderOptions,
35
35
  context?: LoaderContext
36
- ): Promise<any>;
36
+ ): Promise<unknown>;
37
+
38
+ export async function load(
39
+ url: string | DataType,
40
+ loaders?: LoaderOptions,
41
+ context?: LoaderContext
42
+ ): Promise<unknown>;
43
+
44
+ export async function load(url: string | DataType, loaders: LoaderOptions): Promise<any>;
37
45
 
38
46
  // implementation signature
39
- export async function load<LoaderOptionsT extends LoaderOptions>(
47
+ export async function load(
40
48
  url: string | DataType,
41
49
  loaders?: Loader[] | LoaderOptions,
42
- options?: LoaderOptionsT,
50
+ options?: LoaderOptions,
43
51
  context?: LoaderContext
44
- ): Promise<any> {
52
+ ): Promise<unknown> {
45
53
  let resolvedLoaders: Loader | Loader[];
46
- let resolvedOptions: LoaderOptionsT | undefined;
54
+ let resolvedOptions: LoaderOptions | undefined;
47
55
 
48
56
  // Signature: load(url, options)
49
57
  if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {
50
58
  resolvedLoaders = [];
51
- resolvedOptions = loaders as LoaderOptionsT;
59
+ resolvedOptions = loaders as LoaderOptions;
52
60
  context = undefined; // context not supported in short signature
53
61
  } else {
54
62
  resolvedLoaders = loaders as Loader | Loader[];
@@ -1,12 +1,10 @@
1
+ // loaders.gl, MIT license
2
+
1
3
  import type {Batch} from '@loaders.gl/schema';
2
- import type {
3
- BatchableDataType,
4
- Loader,
5
- LoaderWithParser,
6
- LoaderContext,
7
- LoaderOptions
8
- } from '@loaders.gl/loader-utils';
9
- import {assert, concatenateArrayBuffersAsync} from '@loaders.gl/loader-utils';
4
+ import type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
5
+ import type {LoaderContext, BatchableDataType} from '@loaders.gl/loader-utils';
6
+ import type {LoaderBatchType, LoaderOptionsType} from '@loaders.gl/loader-utils';
7
+ import {concatenateArrayBuffersAsync} from '@loaders.gl/loader-utils';
10
8
  import {isLoaderObject} from '../loader-utils/normalize-loader';
11
9
  import {normalizeOptions} from '../loader-utils/option-utils';
12
10
  import {getLoaderContext} from '../loader-utils/loader-context';
@@ -17,6 +15,37 @@ import {selectLoader} from './select-loader';
17
15
  // Ensure `parse` is available in context if loader falls back to `parse`
18
16
  import {parse} from './parse';
19
17
 
18
+ /**
19
+ * Parses `data` synchronously using a specified loader
20
+ */
21
+ export async function parseInBatches<
22
+ LoaderT extends Loader,
23
+ OptionsT extends LoaderOptions = LoaderOptionsType<LoaderT>
24
+ >(
25
+ data: BatchableDataType,
26
+ loader: LoaderT,
27
+ options?: OptionsT,
28
+ context?: LoaderContext
29
+ ): Promise<AsyncIterable<LoaderBatchType<LoaderT>>>;
30
+
31
+ /**
32
+ * Parses `data` using one of the supplied loaders
33
+ */
34
+ export async function parseInBatches(
35
+ data: BatchableDataType,
36
+ loaders: Loader[],
37
+ options?: LoaderOptions,
38
+ context?: LoaderContext
39
+ ): Promise<AsyncIterable<unknown>>;
40
+
41
+ /**
42
+ * Parses `data` in batches by selecting a pre-registered loader
43
+ */
44
+ export async function parseInBatches(
45
+ data: BatchableDataType,
46
+ options?: LoaderOptions
47
+ ): Promise<AsyncIterable<unknown>>;
48
+
20
49
  /**
21
50
  * Parses `data` using a specified loader
22
51
  * @param data
@@ -29,9 +58,7 @@ export async function parseInBatches(
29
58
  loaders?: Loader | Loader[] | LoaderOptions,
30
59
  options?: LoaderOptions,
31
60
  context?: LoaderContext
32
- ): Promise<AsyncIterable<any>> {
33
- assert(!context || typeof context === 'object'); // parseInBatches no longer accepts final url
34
-
61
+ ): Promise<AsyncIterable<unknown> | Iterable<unknown>> {
35
62
  const loaderArray = Array.isArray(loaders) ? loaders : undefined;
36
63
 
37
64
  // Signature: parseInBatches(data, options, url) - Uses registered loaders
@@ -52,14 +79,13 @@ export async function parseInBatches(
52
79
  const loader = await selectLoader(data as ArrayBuffer, loaders as Loader | Loader[], options);
53
80
  // Note: if options.nothrow was set, it is possible that no loader was found, if so just return null
54
81
  if (!loader) {
55
- // @ts-ignore
56
- return null;
82
+ return [];
57
83
  }
58
84
 
59
85
  // Normalize options
60
86
  options = normalizeOptions(options, loader, loaderArray, url);
61
87
  context = getLoaderContext(
62
- {url, parseInBatches, parse, loaders: loaderArray},
88
+ {url, _parseInBatches: parseInBatches, _parse: parse, loaders: loaderArray},
63
89
  options,
64
90
  context || null
65
91
  );
@@ -75,7 +101,7 @@ async function parseWithLoaderInBatches(
75
101
  data: BatchableDataType,
76
102
  options: LoaderOptions,
77
103
  context: LoaderContext
78
- ): Promise<AsyncIterable<any>> {
104
+ ): Promise<AsyncIterable<unknown>> {
79
105
  const outputIterator = await parseToOutputIterator(loader, data, options, context);
80
106
 
81
107
  // Generate metadata batch if requested
@@ -94,7 +120,9 @@ async function parseWithLoaderInBatches(
94
120
  bytesUsed: 0
95
121
  };
96
122
 
97
- async function* makeMetadataBatchIterator(iterator) {
123
+ async function* makeMetadataBatchIterator(
124
+ iterator: Iterable<unknown> | AsyncIterable<unknown>
125
+ ): AsyncIterable<unknown> {
98
126
  yield metadataBatch;
99
127
  yield* iterator;
100
128
  }
@@ -112,7 +140,7 @@ async function parseToOutputIterator(
112
140
  data: BatchableDataType,
113
141
  options: LoaderOptions,
114
142
  context: LoaderContext
115
- ): Promise<AsyncIterable<any>> {
143
+ ): Promise<AsyncIterable<unknown>> {
116
144
  // Get an iterator from the input
117
145
  const inputIterator = await getAsyncIterableFromData(data, options);
118
146
 
@@ -1,11 +1,8 @@
1
- import type {
2
- SyncDataType,
3
- Loader,
4
- LoaderWithParser,
5
- LoaderContext,
6
- LoaderOptions
7
- } from '@loaders.gl/loader-utils';
8
- import {assert} from '@loaders.gl/loader-utils';
1
+ // loaders.gl, MIT license
2
+
3
+ import type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
4
+ import type {LoaderContext, SyncDataType} from '@loaders.gl/loader-utils';
5
+ import type {LoaderOptionsType, LoaderReturnType} from '@loaders.gl/loader-utils';
9
6
  import {selectLoaderSync} from './select-loader';
10
7
  import {isLoaderObject} from '../loader-utils/normalize-loader';
11
8
  import {normalizeOptions} from '../loader-utils/option-utils';
@@ -13,21 +10,45 @@ import {getArrayBufferOrStringFromDataSync} from '../loader-utils/get-data';
13
10
  import {getLoaderContext, getLoadersFromContext} from '../loader-utils/loader-context';
14
11
  import {getResourceUrl} from '../utils/resource-utils';
15
12
 
13
+ // OVERLOADS
14
+
15
+ /**
16
+ * Parses `data` synchronously using the specified loader
17
+ */
18
+ export function parseSync<
19
+ LoaderT extends Loader,
20
+ OptionsT extends LoaderOptions = LoaderOptionsType<LoaderT>
21
+ >(
22
+ data: SyncDataType,
23
+ loader: LoaderT,
24
+ options?: OptionsT,
25
+ context?: LoaderContext
26
+ ): LoaderReturnType<LoaderT>;
27
+
28
+ /**
29
+ * Parses `data` synchronously by matching one of the supplied loaders
30
+ */
31
+ export function parseSync(
32
+ data: SyncDataType,
33
+ loaders: Loader[],
34
+ options?: LoaderOptions,
35
+ context?: LoaderContext
36
+ ): unknown;
37
+
38
+ /**
39
+ * Parses `data` synchronously by matching a pre=registered loader
40
+ */
41
+ export function parseSync(data: SyncDataType, options?: LoaderOptions): unknown;
42
+
16
43
  /**
17
44
  * Parses `data` synchronously using a specified loader
18
- * @param data
19
- * @param loaders
20
- * @param options
21
- * @param context
22
45
  */
23
46
  export function parseSync(
24
47
  data: SyncDataType,
25
48
  loaders?: Loader | Loader[] | LoaderOptions,
26
49
  options?: LoaderOptions,
27
50
  context?: LoaderContext
28
- ): any {
29
- assert(!context || typeof context === 'object'); // parseSync no longer accepts final url
30
-
51
+ ): unknown {
31
52
  // Signature: parseSync(data, options)
32
53
  // Uses registered loaders
33
54
  if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {
@@ -49,7 +70,7 @@ export function parseSync(
49
70
  }
50
71
 
51
72
  // Normalize options
52
- options = normalizeOptions(options, loader, candidateLoaders);
73
+ options = normalizeOptions(options, loader, candidateLoaders as Loader[] | undefined);
53
74
 
54
75
  // Extract a url for auto detection
55
76
  const url = getResourceUrl(data);
@@ -58,7 +79,7 @@ export function parseSync(
58
79
  throw new Error('parseSync called parse (which is async');
59
80
  };
60
81
  context = getLoaderContext(
61
- {url, parseSync, parse, loaders: loaders as Loader[]},
82
+ {url, _parseSync: parse, _parse: parse, loaders: loaders as Loader[]},
62
83
  options,
63
84
  context || null
64
85
  );
@@ -1,12 +1,14 @@
1
1
  // loaders.gl, MIT license
2
2
 
3
- import type {DataType, Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';
3
+ import type {Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';
4
+ import type {DataType, LoaderWithParser} from '@loaders.gl/loader-utils';
4
5
  import type {LoaderOptionsType, LoaderReturnType} from '@loaders.gl/loader-utils';
5
- import {assert, validateWorkerVersion} from '@loaders.gl/worker-utils';
6
6
  import {parseWithWorker, canParseWithWorker} from '@loaders.gl/loader-utils';
7
+ import {assert, validateWorkerVersion} from '@loaders.gl/worker-utils';
7
8
  import {isLoaderObject} from '../loader-utils/normalize-loader';
8
9
  import {isResponse} from '../../javascript-utils/is-type';
9
10
  import {normalizeOptions} from '../loader-utils/option-utils';
11
+ import {mergeLoaderOptions} from '@loaders.gl/loader-utils';
10
12
  import {getArrayBufferOrStringFromData} from '../loader-utils/get-data';
11
13
  import {getLoaderContext, getLoadersFromContext} from '../loader-utils/loader-context';
12
14
  import {getResourceUrl} from '../utils/resource-utils';
@@ -14,6 +16,9 @@ import {selectLoader} from './select-loader';
14
16
 
15
17
  // type LoaderArrayType<T> = T extends (infer Loader)[] ? LoaderOptionsType<Loader> : T
16
18
 
19
+ /**
20
+ * Parses `data` asynchronously using the supplied loader
21
+ */
17
22
  export async function parse<
18
23
  LoaderT extends Loader,
19
24
  OptionsT extends LoaderOptions = LoaderOptionsType<LoaderT>
@@ -24,17 +29,23 @@ export async function parse<
24
29
  context?: LoaderContext
25
30
  ): Promise<LoaderReturnType<LoaderT>>;
26
31
 
32
+ /**
33
+ * Parses `data` asynchronously by matching one of the supplied loader
34
+ */
27
35
  export async function parse(
28
36
  data: DataType | Promise<DataType>,
29
37
  loaders: Loader[],
30
38
  options?: LoaderOptions,
31
39
  context?: LoaderContext
32
- ): Promise<any>;
40
+ ): Promise<unknown>;
33
41
 
42
+ /**
43
+ * Parses data asynchronously by matching a pre-registered loader
44
+ */
34
45
  export async function parse(
35
46
  data: DataType | Promise<DataType>,
36
47
  options?: LoaderOptions
37
- ): Promise<any>;
48
+ ): Promise<unknown>;
38
49
 
39
50
  /**
40
51
  * Parses `data` using a specified loader
@@ -49,9 +60,7 @@ export async function parse(
49
60
  loaders?: Loader | Loader[] | LoaderOptions,
50
61
  options?: LoaderOptions,
51
62
  context?: LoaderContext
52
- ): Promise<any> {
53
- assert(!context || typeof context === 'object'); // parse no longer accepts final url
54
-
63
+ ): Promise<unknown> {
55
64
  // Signature: parse(data, options, context | url)
56
65
  // Uses registered loaders
57
66
  if (loaders && !Array.isArray(loaders) && !isLoaderObject(loaders)) {
@@ -78,33 +87,48 @@ export async function parse(
78
87
  }
79
88
 
80
89
  // Normalize options
90
+ // @ts-expect-error
81
91
  options = normalizeOptions(options, loader, candidateLoaders, url); // Could be invalid...
82
92
 
83
93
  // Get a context (if already present, will be unchanged)
84
- context = getLoaderContext({url, parse, loaders: candidateLoaders}, options, context || null);
94
+ context = getLoaderContext(
95
+ // @ts-expect-error
96
+ {url, _parse: parse, loaders: candidateLoaders},
97
+ options,
98
+ context || null
99
+ );
85
100
 
86
101
  return await parseWithLoader(loader, data, options, context);
87
102
  }
88
103
 
89
104
  // TODO: support progress and abort
90
105
  // TODO - should accept loader.parseAsyncIterator and concatenate.
91
- async function parseWithLoader(loader, data, options, context) {
106
+ async function parseWithLoader(
107
+ loader: Loader,
108
+ data,
109
+ options: LoaderOptions,
110
+ context: LoaderContext
111
+ ): Promise<unknown> {
92
112
  validateWorkerVersion(loader);
93
113
 
114
+ options = mergeLoaderOptions(loader.options, options);
115
+
94
116
  if (isResponse(data)) {
95
117
  // Serialize to support passing the response to web worker
96
118
  const response = data as Response;
97
119
  const {ok, redirected, status, statusText, type, url} = response;
98
120
  const headers = Object.fromEntries(response.headers.entries());
121
+ // @ts-expect-error TODO - fix this
99
122
  context.response = {headers, ok, redirected, status, statusText, type, url};
100
123
  }
101
124
 
102
125
  data = await getArrayBufferOrStringFromData(data, loader, options);
103
126
 
127
+ const loaderWithParser = loader as LoaderWithParser;
128
+
104
129
  // First check for synchronous text parser, wrap results in promises
105
- if (loader.parseTextSync && typeof data === 'string') {
106
- options.dataType = 'text';
107
- return loader.parseTextSync(data, options, context, loader);
130
+ if (loaderWithParser.parseTextSync && typeof data === 'string') {
131
+ return loaderWithParser.parseTextSync(data, options, context);
108
132
  }
109
133
 
110
134
  // If we have a workerUrl and the loader can parse the given options efficiently in a worker
@@ -113,16 +137,16 @@ async function parseWithLoader(loader, data, options, context) {
113
137
  }
114
138
 
115
139
  // Check for asynchronous parser
116
- if (loader.parseText && typeof data === 'string') {
117
- return await loader.parseText(data, options, context, loader);
140
+ if (loaderWithParser.parseText && typeof data === 'string') {
141
+ return await loaderWithParser.parseText(data, options, context);
118
142
  }
119
143
 
120
- if (loader.parse) {
121
- return await loader.parse(data, options, context, loader);
144
+ if (loaderWithParser.parse) {
145
+ return await loaderWithParser.parse(data, options, context);
122
146
  }
123
147
 
124
148
  // This should not happen, all sync loaders should also offer `parse` function
125
- assert(!loader.parseSync);
149
+ assert(!loaderWithParser.parseSync);
126
150
 
127
151
  // TBD - If asynchronous parser not available, return null
128
152
  throw new Error(`${loader.id} loader - no parser found and worker is disabled`);
@@ -2,12 +2,12 @@ import type {Writer, WriterOptions} from '@loaders.gl/loader-utils';
2
2
  import {encode, encodeSync} from './encode';
3
3
  import {writeFile, writeFileSync} from '../fetch/write-file';
4
4
 
5
- export async function save(data, url, writer: Writer, options: WriterOptions) {
5
+ export async function save(data: unknown, url: string, writer: Writer, options: WriterOptions) {
6
6
  const encodedData = await encode(data, writer, options);
7
7
  return await writeFile(url, encodedData);
8
8
  }
9
9
 
10
- export function saveSync(data, url, writer, options) {
10
+ export function saveSync(data: unknown, url: string, writer: Writer, options: WriterOptions) {
11
11
  const encodedData = encodeSync(data, writer, options);
12
12
  return writeFileSync(url, encodedData);
13
13
  }
@@ -6,6 +6,7 @@ import {getResourceUrl, getResourceMIMEType} from '../utils/resource-utils';
6
6
  import {getRegisteredLoaders} from './register-loaders';
7
7
  import {isBlob} from '../../javascript-utils/is-type';
8
8
  import {stripQueryString} from '../utils/url-utils';
9
+ import {TypedArray} from '@loaders.gl/schema';
9
10
 
10
11
  const EXT_PATTERN = /\.([^.]+)$/;
11
12
 
@@ -135,12 +136,16 @@ function selectLoaderInternal(
135
136
  reason = reason || (loader ? `matched MIME type ${type}` : '');
136
137
 
137
138
  // Look for loader via initial bytes (Note: not always accessible (e.g. Response, stream, async iterator)
139
+ // @ts-ignore Blob | Response
138
140
  loader = loader || findLoaderByInitialBytes(loaders, data);
141
+ // @ts-ignore Blob | Response
139
142
  reason = reason || (loader ? `matched initial data ${getFirstCharacters(data)}` : '');
140
143
 
141
144
  // Look up loader by fallback mime type
142
- loader = loader || findLoaderByMIMEType(loaders, options?.fallbackMimeType);
143
- reason = reason || (loader ? `matched fallback MIME type ${type}` : '');
145
+ if (options?.fallbackMimeType) {
146
+ loader = loader || findLoaderByMIMEType(loaders, options?.fallbackMimeType);
147
+ reason = reason || (loader ? `matched fallback MIME type ${type}` : '');
148
+ }
144
149
 
145
150
  if (reason) {
146
151
  log.log(1, `selectLoader selected ${loader?.name}: ${reason}.`);
@@ -150,7 +155,7 @@ function selectLoaderInternal(
150
155
  }
151
156
 
152
157
  /** Check HTTP Response */
153
- function validHTTPResponse(data: any): boolean {
158
+ function validHTTPResponse(data: unknown): boolean {
154
159
  // HANDLE HTTP status
155
160
  if (data instanceof Response) {
156
161
  // 204 - NO CONTENT. This handles cases where e.g. a tile server responds with 204 for a missing tile
@@ -162,7 +167,7 @@ function validHTTPResponse(data: any): boolean {
162
167
  }
163
168
 
164
169
  /** Generate a helpful message to help explain why loader selection failed. */
165
- function getNoValidLoaderMessage(data): string {
170
+ function getNoValidLoaderMessage(data: string | ArrayBuffer | Response | Blob): string {
166
171
  const url = getResourceUrl(data);
167
172
  const type = getResourceMIMEType(data);
168
173
 
@@ -170,6 +175,7 @@ function getNoValidLoaderMessage(data): string {
170
175
  message += url ? `${path.filename(url)}, ` : 'no url provided, ';
171
176
  message += `MIME type: ${type ? `"${type}"` : 'not provided'}, `;
172
177
  // First characters are only accessible when called on data (string or arrayBuffer).
178
+ // @ts-ignore Blob | Response
173
179
  const firstCharacters: string = data ? getFirstCharacters(data) : '';
174
180
  message += firstCharacters ? ` first bytes: "${firstCharacters}"` : 'first bytes: not available';
175
181
  message += ')';
@@ -204,7 +210,7 @@ function findLoaderByExtension(loaders: Loader[], extension: string): Loader | n
204
210
  return null;
205
211
  }
206
212
 
207
- function findLoaderByMIMEType(loaders, mimeType) {
213
+ function findLoaderByMIMEType(loaders: Loader[], mimeType: string): Loader | null {
208
214
  for (const loader of loaders) {
209
215
  if (loader.mimeTypes && loader.mimeTypes.includes(mimeType)) {
210
216
  return loader;
@@ -219,7 +225,7 @@ function findLoaderByMIMEType(loaders, mimeType) {
219
225
  return null;
220
226
  }
221
227
 
222
- function findLoaderByInitialBytes(loaders, data) {
228
+ function findLoaderByInitialBytes(loaders: Loader[], data: string | ArrayBuffer): Loader | null {
223
229
  if (!data) {
224
230
  return null;
225
231
  }
@@ -245,27 +251,32 @@ function findLoaderByInitialBytes(loaders, data) {
245
251
  return null;
246
252
  }
247
253
 
248
- function testDataAgainstText(data, loader) {
254
+ function testDataAgainstText(data: string, loader: Loader): boolean {
249
255
  if (loader.testText) {
250
256
  return loader.testText(data);
251
257
  }
252
258
 
253
259
  const tests = Array.isArray(loader.tests) ? loader.tests : [loader.tests];
254
- return tests.some((test) => data.startsWith(test));
260
+ return tests.some((test) => data.startsWith(test as string));
255
261
  }
256
262
 
257
- function testDataAgainstBinary(data, byteOffset, loader) {
263
+ function testDataAgainstBinary(data: ArrayBuffer, byteOffset: number, loader: Loader): boolean {
258
264
  const tests = Array.isArray(loader.tests) ? loader.tests : [loader.tests];
259
265
  return tests.some((test) => testBinary(data, byteOffset, loader, test));
260
266
  }
261
267
 
262
- function testBinary(data, byteOffset, loader, test) {
268
+ function testBinary(
269
+ data: ArrayBuffer,
270
+ byteOffset: number,
271
+ loader: Loader,
272
+ test?: ArrayBuffer | string | ((b: ArrayBuffer) => boolean)
273
+ ): boolean {
263
274
  if (test instanceof ArrayBuffer) {
264
275
  return compareArrayBuffers(test, data, test.byteLength);
265
276
  }
266
277
  switch (typeof test) {
267
278
  case 'function':
268
- return test(data, loader);
279
+ return test(data);
269
280
 
270
281
  case 'string':
271
282
  // Magic bytes check: If `test` is a string, check if binary data starts with that strings
@@ -277,7 +288,7 @@ function testBinary(data, byteOffset, loader, test) {
277
288
  }
278
289
  }
279
290
 
280
- function getFirstCharacters(data, length: number = 5) {
291
+ function getFirstCharacters(data: string | ArrayBuffer | TypedArray, length: number = 5) {
281
292
  if (typeof data === 'string') {
282
293
  return data.slice(0, length);
283
294
  } else if (ArrayBuffer.isView(data)) {
@@ -290,7 +301,7 @@ function getFirstCharacters(data, length: number = 5) {
290
301
  return '';
291
302
  }
292
303
 
293
- function getMagicString(arrayBuffer, byteOffset, length) {
304
+ function getMagicString(arrayBuffer: ArrayBuffer, byteOffset: number, length: number): string {
294
305
  if (arrayBuffer.byteLength < byteOffset + length) {
295
306
  return '';
296
307
  }
@@ -0,0 +1,61 @@
1
+ // loaders.gl, MIT license
2
+
3
+ import {fs} from '@loaders.gl/loader-utils';
4
+
5
+ /**
6
+ * Enables
7
+ * @param url
8
+ * @param options
9
+ * @returns
10
+ */
11
+ export async function fetchFileNode(url: string, options): Promise<Response> {
12
+ // Support `file://` protocol
13
+ const FILE_PROTOCOL_REGEX = /^file:\/\//;
14
+ url.replace(FILE_PROTOCOL_REGEX, '/');
15
+
16
+ const noqueryUrl = url.split('?')[0];
17
+
18
+ try {
19
+ // Now open the stream
20
+ const body = await new Promise<fs.ReadStream>((resolve, reject) => {
21
+ // @ts-ignore
22
+ const stream = fs.createReadStream(noqueryUrl, {encoding: null});
23
+ stream.once('readable', () => resolve(stream));
24
+ stream.on('error', (error) => reject(error));
25
+ });
26
+
27
+ const status = 200;
28
+ const statusText = 'OK';
29
+ const headers = getHeadersForFile(noqueryUrl);
30
+ // @ts-expect-error
31
+ const response = new Response(body, {headers, status, statusText});
32
+ Object.defineProperty(response, 'url', {value: url});
33
+ return response;
34
+ } catch (error) {
35
+ const errorMessage = (error as Error).message;
36
+ const status = 400;
37
+ const statusText = errorMessage;
38
+ const headers = {};
39
+ const response = new Response(errorMessage, {headers, status, statusText});
40
+ Object.defineProperty(response, 'url', {value: url});
41
+ return response;
42
+ }
43
+ }
44
+
45
+ function getHeadersForFile(noqueryUrl: string): Headers {
46
+ const headers = {};
47
+
48
+ // Fix up content length if we can for best progress experience
49
+ if (!headers['content-length']) {
50
+ const stats = fs.statSync(noqueryUrl);
51
+ headers['content-length'] = stats.size;
52
+ }
53
+
54
+ // Automatically decompress gzipped files with .gz extension
55
+ if (noqueryUrl.endsWith('.gz')) {
56
+ noqueryUrl = noqueryUrl.slice(0, -3);
57
+ headers['content-encoding'] = 'gzip';
58
+ }
59
+
60
+ return new Headers(headers);
61
+ }
@@ -1,30 +1,42 @@
1
+ // loaders.gl, MIT license
2
+
1
3
  import {resolvePath} from '@loaders.gl/loader-utils';
2
4
  import {makeResponse} from '../utils/response-utils';
3
- // import {getErrorMessageFromResponse} from './fetch-error-message';
5
+ import * as node from './fetch-file.node';
6
+
7
+ export function isNodePath(url: string): boolean {
8
+ return !isRequestURL(url) && !isDataURL(url);
9
+ }
10
+
11
+ export function isRequestURL(url: string): boolean {
12
+ return url.startsWith('http:') || url.startsWith('https:');
13
+ }
14
+
15
+ export function isDataURL(url: string): boolean {
16
+ return url.startsWith('data:');
17
+ }
4
18
 
5
19
  /**
6
- * fetch compatible function
7
- * Reads file data from:
8
- * - http/http urls
9
- * - data urls
10
- * - File/Blob objects
11
- * Leverages `@loaders.gl/polyfills` for Node.js support
12
- * Respects pathPrefix and file aliases
20
+ * fetch API compatible function
21
+ * - Supports fetching from Node.js local file system paths
22
+ * - Respects pathPrefix and file aliases
13
23
  */
14
24
  export async function fetchFile(
15
- url: string | Blob,
16
- options?: RequestInit & {fetch?: RequestInit | Function}
25
+ urlOrData: string | Blob,
26
+ fetchOptions?: RequestInit
17
27
  ): Promise<Response> {
18
- if (typeof url === 'string') {
19
- url = resolvePath(url);
28
+ if (typeof urlOrData === 'string') {
29
+ const url = resolvePath(urlOrData);
20
30
 
21
- let fetchOptions: RequestInit = options as RequestInit;
22
- if (options?.fetch && typeof options?.fetch !== 'function') {
23
- fetchOptions = options.fetch;
31
+ // Support fetching from local file system
32
+ if (isNodePath(url) && node?.fetchFileNode) {
33
+ return node.fetchFileNode(url, fetchOptions);
24
34
  }
25
35
 
36
+ // Call global fetch
26
37
  return await fetch(url, fetchOptions);
27
38
  }
28
39
 
29
- return await makeResponse(url);
40
+ // TODO - should we still call fetch on non-URL inputs?
41
+ return await makeResponse(urlOrData);
30
42
  }