@loaders.gl/core 4.0.0-alpha.4 → 4.0.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) 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 +3874 -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 +277 -0
  43. package/dist/es5/lib/api/parse-in-batches.js.map +1 -0
  44. package/dist/es5/lib/api/parse-sync.js +54 -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 +303 -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 +41 -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 +58 -0
  97. package/dist/es5/lib/utils/resource-utils.js.map +1 -0
  98. package/dist/es5/lib/utils/response-utils.js +196 -0
  99. package/dist/es5/lib/utils/response-utils.js.map +1 -0
  100. package/dist/es5/null-loader.js +139 -0
  101. package/dist/es5/null-loader.js.map +1 -0
  102. package/dist/es5/workers/null-worker.js +6 -0
  103. package/dist/es5/workers/null-worker.js.map +1 -0
  104. package/dist/esm/bundle.js +4 -0
  105. package/dist/esm/bundle.js.map +1 -0
  106. package/dist/esm/core-addons/README.md +1 -0
  107. package/dist/esm/core-addons/write-file-browser.js +2 -0
  108. package/dist/esm/core-addons/write-file-browser.js.map +1 -0
  109. package/dist/esm/index.js +30 -0
  110. package/dist/esm/index.js.map +1 -0
  111. package/dist/esm/iterators/batch-iterators/timed-batch-iterator.js +16 -0
  112. package/dist/esm/iterators/batch-iterators/timed-batch-iterator.js.map +1 -0
  113. package/dist/esm/iterators/make-iterator/make-array-buffer-iterator.js +20 -0
  114. package/dist/esm/iterators/make-iterator/make-array-buffer-iterator.js.map +1 -0
  115. package/dist/esm/iterators/make-iterator/make-blob-iterator.js +12 -0
  116. package/dist/esm/iterators/make-iterator/make-blob-iterator.js.map +1 -0
  117. package/dist/esm/iterators/make-iterator/make-iterator.js +25 -0
  118. package/dist/esm/iterators/make-iterator/make-iterator.js.map +1 -0
  119. package/dist/esm/iterators/make-iterator/make-stream-iterator.js +32 -0
  120. package/dist/esm/iterators/make-iterator/make-stream-iterator.js.map +1 -0
  121. package/dist/esm/iterators/make-iterator/make-string-iterator.js +13 -0
  122. package/dist/esm/iterators/make-iterator/make-string-iterator.js.map +1 -0
  123. package/dist/esm/iterators/make-stream/make-dom-stream.js +29 -0
  124. package/dist/esm/iterators/make-stream/make-dom-stream.js.map +1 -0
  125. package/dist/esm/iterators/make-stream/make-node-stream.js +57 -0
  126. package/dist/esm/iterators/make-stream/make-node-stream.js.map +1 -0
  127. package/dist/esm/javascript-utils/is-type.js +19 -0
  128. package/dist/esm/javascript-utils/is-type.js.map +1 -0
  129. package/dist/esm/lib/api/encode-table.js +45 -0
  130. package/dist/esm/lib/api/encode-table.js.map +1 -0
  131. package/dist/esm/lib/api/encode.js +87 -0
  132. package/dist/esm/lib/api/encode.js.map +1 -0
  133. package/dist/esm/lib/api/load-in-batches.js +25 -0
  134. package/dist/esm/lib/api/load-in-batches.js.map +1 -0
  135. package/dist/esm/lib/api/load.js +26 -0
  136. package/dist/esm/lib/api/load.js.map +1 -0
  137. package/dist/esm/lib/api/loader-options.js +3 -0
  138. package/dist/esm/lib/api/loader-options.js.map +1 -0
  139. package/dist/esm/lib/api/parse-in-batches.js +85 -0
  140. package/dist/esm/lib/api/parse-in-batches.js.map +1 -0
  141. package/dist/esm/lib/api/parse-sync.js +47 -0
  142. package/dist/esm/lib/api/parse-sync.js.map +1 -0
  143. package/dist/esm/lib/api/parse.js +76 -0
  144. package/dist/esm/lib/api/parse.js.map +1 -0
  145. package/dist/esm/lib/api/register-loaders.js +25 -0
  146. package/dist/esm/lib/api/register-loaders.js.map +1 -0
  147. package/dist/esm/lib/api/save.js +11 -0
  148. package/dist/esm/lib/api/save.js.map +1 -0
  149. package/dist/esm/lib/api/select-loader.js +204 -0
  150. package/dist/esm/lib/api/select-loader.js.map +1 -0
  151. package/dist/esm/lib/common.js +2 -0
  152. package/dist/esm/lib/common.js.map +1 -0
  153. package/dist/esm/lib/fetch/fetch-error-message.js +18 -0
  154. package/dist/esm/lib/fetch/fetch-error-message.js.map +1 -0
  155. package/dist/esm/lib/fetch/fetch-file.js +14 -0
  156. package/dist/esm/lib/fetch/fetch-file.js.map +1 -0
  157. package/dist/esm/lib/fetch/read-array-buffer.js +23 -0
  158. package/dist/esm/lib/fetch/read-array-buffer.js.map +1 -0
  159. package/dist/esm/lib/fetch/read-file.js +15 -0
  160. package/dist/esm/lib/fetch/read-file.js.map +1 -0
  161. package/dist/esm/lib/fetch/write-file.js +21 -0
  162. package/dist/esm/lib/fetch/write-file.js.map +1 -0
  163. package/dist/esm/lib/filesystems/browser-filesystem.js +92 -0
  164. package/dist/esm/lib/filesystems/browser-filesystem.js.map +1 -0
  165. package/dist/esm/lib/filesystems/filesystem.js +2 -0
  166. package/dist/esm/lib/filesystems/filesystem.js.map +1 -0
  167. package/dist/esm/lib/filesystems/read-array-buffer.js +8 -0
  168. package/dist/esm/lib/filesystems/read-array-buffer.js.map +1 -0
  169. package/dist/esm/lib/init.js +11 -0
  170. package/dist/esm/lib/init.js.map +1 -0
  171. package/dist/esm/lib/loader-utils/check-errors.js +22 -0
  172. package/dist/esm/lib/loader-utils/check-errors.js.map +1 -0
  173. package/dist/esm/lib/loader-utils/get-data.js +103 -0
  174. package/dist/esm/lib/loader-utils/get-data.js.map +1 -0
  175. package/dist/esm/lib/loader-utils/get-fetch-function.js +18 -0
  176. package/dist/esm/lib/loader-utils/get-fetch-function.js.map +1 -0
  177. package/dist/esm/lib/loader-utils/loader-context.js +30 -0
  178. package/dist/esm/lib/loader-utils/loader-context.js.map +1 -0
  179. package/dist/esm/lib/loader-utils/loggers.js +50 -0
  180. package/dist/esm/lib/loader-utils/loggers.js.map +1 -0
  181. package/dist/esm/lib/loader-utils/normalize-loader.js +37 -0
  182. package/dist/esm/lib/loader-utils/normalize-loader.js.map +1 -0
  183. package/dist/esm/lib/loader-utils/option-defaults.js +39 -0
  184. package/dist/esm/lib/loader-utils/option-defaults.js.map +1 -0
  185. package/dist/esm/lib/loader-utils/option-utils.js +106 -0
  186. package/dist/esm/lib/loader-utils/option-utils.js.map +1 -0
  187. package/dist/esm/lib/progress/fetch-progress.js +52 -0
  188. package/dist/esm/lib/progress/fetch-progress.js.map +1 -0
  189. package/dist/esm/lib/utils/log.js +5 -0
  190. package/dist/esm/lib/utils/log.js.map +1 -0
  191. package/dist/esm/lib/utils/mime-type-utils.js +17 -0
  192. package/dist/esm/lib/utils/mime-type-utils.js.map +1 -0
  193. package/dist/esm/lib/utils/resource-utils.js +51 -0
  194. package/dist/esm/lib/utils/resource-utils.js.map +1 -0
  195. package/dist/esm/lib/utils/response-utils.js +91 -0
  196. package/dist/esm/lib/utils/response-utils.js.map +1 -0
  197. package/dist/esm/null-loader.js +45 -0
  198. package/dist/esm/null-loader.js.map +1 -0
  199. package/dist/esm/workers/null-worker.js +4 -0
  200. package/dist/esm/workers/null-worker.js.map +1 -0
  201. package/dist/index.d.ts +31 -0
  202. package/dist/index.d.ts.map +1 -0
  203. package/dist/index.js +108 -31
  204. package/dist/iterators/batch-iterators/timed-batch-iterator.d.ts +5 -0
  205. package/dist/iterators/batch-iterators/timed-batch-iterator.d.ts.map +1 -0
  206. package/dist/iterators/batch-iterators/timed-batch-iterator.js +20 -17
  207. package/dist/iterators/make-iterator/make-array-buffer-iterator.d.ts +9 -0
  208. package/dist/iterators/make-iterator/make-array-buffer-iterator.d.ts.map +1 -0
  209. package/dist/iterators/make-iterator/make-array-buffer-iterator.js +25 -16
  210. package/dist/iterators/make-iterator/make-blob-iterator.d.ts +9 -0
  211. package/dist/iterators/make-iterator/make-blob-iterator.d.ts.map +1 -0
  212. package/dist/iterators/make-iterator/make-blob-iterator.js +20 -12
  213. package/dist/iterators/make-iterator/make-iterator.d.ts +19 -0
  214. package/dist/iterators/make-iterator/make-iterator.d.ts.map +1 -0
  215. package/dist/iterators/make-iterator/make-iterator.js +36 -29
  216. package/dist/iterators/make-iterator/make-stream-iterator.d.ts +11 -0
  217. package/dist/iterators/make-iterator/make-stream-iterator.d.ts.map +1 -0
  218. package/dist/iterators/make-iterator/make-stream-iterator.js +89 -32
  219. package/dist/iterators/make-iterator/make-string-iterator.d.ts +9 -0
  220. package/dist/iterators/make-iterator/make-string-iterator.d.ts.map +1 -0
  221. package/dist/iterators/make-iterator/make-string-iterator.js +22 -12
  222. package/dist/iterators/make-stream/make-dom-stream.d.ts +14 -0
  223. package/dist/iterators/make-stream/make-dom-stream.d.ts.map +1 -0
  224. package/dist/iterators/make-stream/make-dom-stream.js +44 -32
  225. package/dist/iterators/make-stream/make-node-stream.d.ts +11 -0
  226. package/dist/iterators/make-stream/make-node-stream.d.ts.map +1 -0
  227. package/dist/iterators/make-stream/make-node-stream.js +75 -70
  228. package/dist/javascript-utils/is-type.d.ts +22 -0
  229. package/dist/javascript-utils/is-type.d.ts.map +1 -0
  230. package/dist/javascript-utils/is-type.js +41 -21
  231. package/dist/lib/api/encode-table.d.ts +6 -0
  232. package/dist/lib/api/encode-table.d.ts.map +1 -0
  233. package/dist/lib/api/encode-table.js +54 -0
  234. package/dist/lib/api/encode.d.ts +26 -0
  235. package/dist/lib/api/encode.d.ts.map +1 -0
  236. package/dist/lib/api/encode.js +111 -81
  237. package/dist/lib/api/load-in-batches.d.ts +13 -0
  238. package/dist/lib/api/load-in-batches.d.ts.map +1 -0
  239. package/dist/lib/api/load-in-batches.js +30 -27
  240. package/dist/lib/api/load.d.ts +14 -0
  241. package/dist/lib/api/load.d.ts.map +1 -0
  242. package/dist/lib/api/load.js +42 -24
  243. package/dist/lib/api/loader-options.d.ts +3 -0
  244. package/dist/lib/api/loader-options.d.ts.map +1 -0
  245. package/dist/lib/api/loader-options.js +7 -0
  246. package/dist/lib/api/parse-in-batches.d.ts +10 -0
  247. package/dist/lib/api/parse-in-batches.d.ts.map +1 -0
  248. package/dist/lib/api/parse-in-batches.js +113 -92
  249. package/dist/lib/api/parse-sync.d.ts +10 -0
  250. package/dist/lib/api/parse-sync.d.ts.map +1 -0
  251. package/dist/lib/api/parse-sync.js +56 -54
  252. package/dist/lib/api/parse.d.ts +6 -0
  253. package/dist/lib/api/parse.d.ts.map +1 -0
  254. package/dist/lib/api/parse.js +81 -61
  255. package/dist/lib/api/register-loaders.d.ts +7 -0
  256. package/dist/lib/api/register-loaders.d.ts.map +1 -0
  257. package/dist/lib/api/register-loaders.js +29 -23
  258. package/dist/lib/api/save.d.ts +4 -0
  259. package/dist/lib/api/save.d.ts.map +1 -0
  260. package/dist/lib/api/save.js +13 -9
  261. package/dist/lib/api/select-loader.d.ts +22 -0
  262. package/dist/lib/api/select-loader.d.ts.map +1 -0
  263. package/dist/lib/api/select-loader.js +216 -194
  264. package/dist/lib/common.d.ts +2 -0
  265. package/dist/lib/common.d.ts.map +1 -0
  266. package/dist/lib/common.js +2 -2
  267. package/dist/lib/fetch/fetch-error-message.d.ts +3 -0
  268. package/dist/lib/fetch/fetch-error-message.d.ts.map +1 -0
  269. package/dist/lib/fetch/fetch-error-message.js +21 -17
  270. package/dist/lib/fetch/fetch-file.d.ts +13 -0
  271. package/dist/lib/fetch/fetch-file.d.ts.map +1 -0
  272. package/dist/lib/fetch/fetch-file.js +25 -15
  273. package/dist/lib/fetch/read-array-buffer.d.ts +17 -0
  274. package/dist/lib/fetch/read-array-buffer.d.ts.map +1 -0
  275. package/dist/lib/fetch/read-array-buffer.js +39 -27
  276. package/dist/lib/fetch/read-file.d.ts +5 -0
  277. package/dist/lib/fetch/read-file.d.ts.map +1 -0
  278. package/dist/lib/fetch/read-file.js +28 -16
  279. package/dist/lib/fetch/write-file.d.ts +3 -0
  280. package/dist/lib/fetch/write-file.d.ts.map +1 -0
  281. package/dist/lib/fetch/write-file.js +20 -23
  282. package/dist/lib/filesystems/browser-filesystem.d.ts +58 -0
  283. package/dist/lib/filesystems/browser-filesystem.d.ts.map +1 -0
  284. package/dist/lib/filesystems/browser-filesystem.js +118 -107
  285. package/dist/lib/filesystems/filesystem.d.ts +46 -0
  286. package/dist/lib/filesystems/filesystem.d.ts.map +1 -0
  287. package/dist/lib/filesystems/filesystem.js +2 -2
  288. package/dist/lib/filesystems/read-array-buffer.d.ts +19 -0
  289. package/dist/lib/filesystems/read-array-buffer.d.ts.map +1 -0
  290. package/dist/lib/filesystems/read-array-buffer.js +28 -8
  291. package/dist/lib/init.d.ts +3 -0
  292. package/dist/lib/init.d.ts.map +1 -0
  293. package/dist/lib/init.js +16 -6
  294. package/dist/lib/loader-utils/check-errors.d.ts +3 -0
  295. package/dist/lib/loader-utils/check-errors.d.ts.map +1 -0
  296. package/dist/lib/loader-utils/check-errors.js +26 -22
  297. package/dist/lib/loader-utils/get-data.d.ts +6 -0
  298. package/dist/lib/loader-utils/get-data.d.ts.map +1 -0
  299. package/dist/lib/loader-utils/get-data.js +122 -122
  300. package/dist/lib/loader-utils/get-fetch-function.d.ts +9 -0
  301. package/dist/lib/loader-utils/get-fetch-function.d.ts.map +1 -0
  302. package/dist/lib/loader-utils/get-fetch-function.js +31 -0
  303. package/dist/lib/loader-utils/loader-context.d.ts +13 -0
  304. package/dist/lib/loader-utils/loader-context.d.ts.map +1 -0
  305. package/dist/lib/loader-utils/loader-context.js +47 -34
  306. package/dist/lib/loader-utils/loggers.d.ts +17 -0
  307. package/dist/lib/loader-utils/loggers.d.ts.map +1 -0
  308. package/dist/lib/loader-utils/loggers.js +39 -46
  309. package/dist/lib/loader-utils/normalize-loader.d.ts +4 -0
  310. package/dist/lib/loader-utils/normalize-loader.d.ts.map +1 -0
  311. package/dist/lib/loader-utils/normalize-loader.js +50 -41
  312. package/dist/lib/loader-utils/option-defaults.d.ts +20 -0
  313. package/dist/lib/loader-utils/option-defaults.d.ts.map +1 -0
  314. package/dist/lib/loader-utils/option-defaults.js +41 -35
  315. package/dist/lib/loader-utils/option-utils.d.ts +34 -0
  316. package/dist/lib/loader-utils/option-utils.d.ts.map +1 -0
  317. package/dist/lib/loader-utils/option-utils.js +140 -120
  318. package/dist/lib/progress/fetch-progress.d.ts +6 -0
  319. package/dist/lib/progress/fetch-progress.d.ts.map +1 -0
  320. package/dist/lib/progress/fetch-progress.js +54 -56
  321. package/dist/lib/utils/log.d.ts +3 -0
  322. package/dist/lib/utils/log.d.ts.map +1 -0
  323. package/dist/lib/utils/log.js +6 -0
  324. package/dist/lib/utils/mime-type-utils.d.ts +20 -0
  325. package/dist/lib/utils/mime-type-utils.d.ts.map +1 -0
  326. package/dist/lib/utils/mime-type-utils.js +38 -17
  327. package/dist/lib/utils/resource-utils.d.ts +21 -0
  328. package/dist/lib/utils/resource-utils.d.ts.map +1 -0
  329. package/dist/lib/utils/resource-utils.js +70 -52
  330. package/dist/lib/utils/response-utils.d.ts +18 -0
  331. package/dist/lib/utils/response-utils.d.ts.map +1 -0
  332. package/dist/lib/utils/response-utils.js +104 -105
  333. package/dist/null-loader.d.ts +10 -0
  334. package/dist/null-loader.d.ts.map +1 -0
  335. package/dist/null-loader.js +53 -31
  336. package/dist/null-worker.js +61 -21
  337. package/dist/workers/null-worker.d.ts +2 -0
  338. package/dist/workers/null-worker.d.ts.map +1 -0
  339. package/dist/workers/null-worker.js +5 -4
  340. package/package.json +16 -15
  341. package/src/index.ts +20 -4
  342. package/src/iterators/make-stream/make-dom-stream.ts +10 -5
  343. package/src/iterators/make-stream/make-node-stream.ts +10 -9
  344. package/src/lib/api/encode-table.ts +71 -0
  345. package/src/lib/api/encode.ts +15 -5
  346. package/src/lib/api/load-in-batches.ts +1 -1
  347. package/src/lib/api/load.ts +39 -8
  348. package/src/lib/api/loader-options.ts +2 -0
  349. package/src/lib/api/parse.ts +39 -2
  350. package/src/lib/api/register-loaders.ts +1 -1
  351. package/src/lib/api/select-loader.ts +16 -0
  352. package/src/lib/init.ts +17 -0
  353. package/src/lib/loader-utils/get-fetch-function.ts +38 -0
  354. package/src/lib/loader-utils/loader-context.ts +1 -1
  355. package/src/lib/loader-utils/loggers.ts +1 -1
  356. package/src/lib/loader-utils/option-defaults.ts +3 -1
  357. package/src/lib/loader-utils/option-utils.ts +22 -46
  358. package/src/lib/progress/fetch-progress.ts +2 -2
  359. package/src/lib/utils/log.ts +4 -0
  360. package/src/lib/utils/response-utils.ts +2 -2
  361. package/src/null-loader.ts +17 -5
  362. package/dist/bundle.js.map +0 -1
  363. package/dist/core-addons/write-file-browser.js.map +0 -1
  364. package/dist/index.js.map +0 -1
  365. package/dist/iterators/batch-iterators/timed-batch-iterator.js.map +0 -1
  366. package/dist/iterators/make-iterator/make-array-buffer-iterator.js.map +0 -1
  367. package/dist/iterators/make-iterator/make-blob-iterator.js.map +0 -1
  368. package/dist/iterators/make-iterator/make-iterator.js.map +0 -1
  369. package/dist/iterators/make-iterator/make-stream-iterator.js.map +0 -1
  370. package/dist/iterators/make-iterator/make-string-iterator.js.map +0 -1
  371. package/dist/iterators/make-stream/make-dom-stream.js.map +0 -1
  372. package/dist/iterators/make-stream/make-node-stream.js.map +0 -1
  373. package/dist/iterators/make-stream/make-stream.js +0 -7
  374. package/dist/iterators/make-stream/make-stream.js.map +0 -1
  375. package/dist/javascript-utils/is-type.js.map +0 -1
  376. package/dist/lib/api/encode.js.map +0 -1
  377. package/dist/lib/api/load-in-batches.js.map +0 -1
  378. package/dist/lib/api/load.js.map +0 -1
  379. package/dist/lib/api/parse-in-batches.js.map +0 -1
  380. package/dist/lib/api/parse-sync.js.map +0 -1
  381. package/dist/lib/api/parse.js.map +0 -1
  382. package/dist/lib/api/register-loaders.js.map +0 -1
  383. package/dist/lib/api/save.js.map +0 -1
  384. package/dist/lib/api/select-loader.js.map +0 -1
  385. package/dist/lib/api/set-loader-options.js +0 -5
  386. package/dist/lib/api/set-loader-options.js.map +0 -1
  387. package/dist/lib/common.js.map +0 -1
  388. package/dist/lib/fetch/fetch-error-message.js.map +0 -1
  389. package/dist/lib/fetch/fetch-file.js.map +0 -1
  390. package/dist/lib/fetch/read-array-buffer.js.map +0 -1
  391. package/dist/lib/fetch/read-file.js.map +0 -1
  392. package/dist/lib/fetch/write-file.js.map +0 -1
  393. package/dist/lib/filesystems/browser-filesystem.js.map +0 -1
  394. package/dist/lib/filesystems/filesystem.js.map +0 -1
  395. package/dist/lib/filesystems/read-array-buffer.js.map +0 -1
  396. package/dist/lib/init.js.map +0 -1
  397. package/dist/lib/loader-utils/check-errors.js.map +0 -1
  398. package/dist/lib/loader-utils/get-data.js.map +0 -1
  399. package/dist/lib/loader-utils/loader-context.js.map +0 -1
  400. package/dist/lib/loader-utils/loggers.js.map +0 -1
  401. package/dist/lib/loader-utils/normalize-loader.js.map +0 -1
  402. package/dist/lib/loader-utils/option-defaults.js.map +0 -1
  403. package/dist/lib/loader-utils/option-utils.js.map +0 -1
  404. package/dist/lib/progress/fetch-progress.js.map +0 -1
  405. package/dist/lib/utils/mime-type-utils.js.map +0 -1
  406. package/dist/lib/utils/resource-utils.js.map +0 -1
  407. package/dist/lib/utils/response-utils.js.map +0 -1
  408. package/dist/null-loader.js.map +0 -1
  409. package/dist/workers/null-worker.js.map +0 -1
  410. package/src/iterators/make-stream/make-stream.ts +0 -19
  411. package/src/lib/api/set-loader-options.ts +0 -9
  412. package/src/lib/init.js +0 -10
  413. /package/dist/{core-addons → es5/core-addons}/README.md +0 -0
@@ -35,16 +35,33 @@
35
35
  }
36
36
 
37
37
  // ../worker-utils/src/lib/worker-farm/worker-body.ts
38
+ function getParentPort() {
39
+ let parentPort;
40
+ try {
41
+ eval("globalThis.parentPort = require('worker_threads').parentPort");
42
+ parentPort = globalThis.parentPort;
43
+ } catch {
44
+ }
45
+ return parentPort;
46
+ }
38
47
  var onMessageWrapperMap = new Map();
39
48
  var WorkerBody = class {
49
+ static inWorkerThread() {
50
+ return typeof self !== "undefined" || Boolean(getParentPort());
51
+ }
40
52
  static set onmessage(onMessage) {
41
- self.onmessage = (message) => {
42
- if (!isKnownMessage(message)) {
43
- return;
44
- }
45
- const { type, payload } = message.data;
53
+ function handleMessage(message) {
54
+ const parentPort3 = getParentPort();
55
+ const { type, payload } = parentPort3 ? message : message.data;
46
56
  onMessage(type, payload);
47
- };
57
+ }
58
+ const parentPort2 = getParentPort();
59
+ if (parentPort2) {
60
+ parentPort2.on("message", handleMessage);
61
+ parentPort2.on("exit", () => console.debug("Node worker closing"));
62
+ } else {
63
+ globalThis.onmessage = handleMessage;
64
+ }
48
65
  }
49
66
  static addEventListener(onMessage) {
50
67
  let onMessageWrapper = onMessageWrapperMap.get(onMessage);
@@ -53,22 +70,36 @@
53
70
  if (!isKnownMessage(message)) {
54
71
  return;
55
72
  }
56
- const { type, payload } = message.data;
73
+ const parentPort3 = getParentPort();
74
+ const { type, payload } = parentPort3 ? message : message.data;
57
75
  onMessage(type, payload);
58
76
  };
59
77
  }
60
- self.addEventListener("message", onMessageWrapper);
78
+ const parentPort2 = getParentPort();
79
+ if (parentPort2) {
80
+ console.error("not implemented");
81
+ } else {
82
+ globalThis.addEventListener("message", onMessageWrapper);
83
+ }
61
84
  }
62
85
  static removeEventListener(onMessage) {
63
86
  const onMessageWrapper = onMessageWrapperMap.get(onMessage);
64
87
  onMessageWrapperMap.delete(onMessage);
65
- self.removeEventListener("message", onMessageWrapper);
88
+ const parentPort2 = getParentPort();
89
+ if (parentPort2) {
90
+ console.error("not implemented");
91
+ } else {
92
+ globalThis.removeEventListener("message", onMessageWrapper);
93
+ }
66
94
  }
67
95
  static postMessage(type, payload) {
68
- if (self) {
69
- const data = { source: "loaders.gl", type, payload };
70
- const transferList = getTransferList(payload);
71
- self.postMessage(data, transferList);
96
+ const data = { source: "loaders.gl", type, payload };
97
+ const transferList = getTransferList(payload);
98
+ const parentPort2 = getParentPort();
99
+ if (parentPort2) {
100
+ parentPort2.postMessage(data, transferList);
101
+ } else {
102
+ globalThis.postMessage(data, transferList);
72
103
  }
73
104
  }
74
105
  };
@@ -80,19 +111,20 @@
80
111
  // ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
81
112
  var requestId = 0;
82
113
  function createLoaderWorker(loader) {
83
- if (typeof self === "undefined") {
114
+ if (!WorkerBody.inWorkerThread()) {
84
115
  return;
85
116
  }
86
117
  WorkerBody.onmessage = async (type, payload) => {
87
118
  switch (type) {
88
119
  case "process":
89
120
  try {
90
- const { input, options = {} } = payload;
121
+ const { input, options = {}, context = {} } = payload;
91
122
  const result = await parseData({
92
123
  loader,
93
124
  arrayBuffer: input,
94
125
  options,
95
126
  context: {
127
+ ...context,
96
128
  parse: parseOnMainThread
97
129
  }
98
130
  });
@@ -152,7 +184,13 @@
152
184
  }
153
185
 
154
186
  // src/null-loader.ts
155
- var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
187
+ var VERSION = true ? "4.0.0-alpha.6" : "latest";
188
+ function parseSync(arrayBuffer, options, context) {
189
+ if (!options.null.echoParameters)
190
+ return null;
191
+ context = context && JSON.parse(JSON.stringify(context));
192
+ return { arrayBuffer, options, context };
193
+ }
156
194
  var NullLoader = {
157
195
  name: "Null loader",
158
196
  id: "null",
@@ -160,16 +198,18 @@
160
198
  version: VERSION,
161
199
  mimeTypes: ["application/x.empty"],
162
200
  extensions: ["null"],
163
- parse: async (arrayBuffer) => arrayBuffer,
164
- parseSync: (arrayBuffer) => arrayBuffer,
165
- parseInBatches: async function* generator(asyncIterator) {
201
+ parse: async (arrayBuffer, options, context) => parseSync(arrayBuffer, options, context),
202
+ parseSync,
203
+ parseInBatches: async function* generator(asyncIterator, options, context) {
166
204
  for await (const batch of asyncIterator) {
167
- yield batch;
205
+ yield parseSync(batch, options, context);
168
206
  }
169
207
  },
170
208
  tests: [() => false],
171
209
  options: {
172
- null: {}
210
+ null: {
211
+ echoParameters: false
212
+ }
173
213
  }
174
214
  };
175
215
 
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=null-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null-worker.d.ts","sourceRoot":"","sources":["../../src/workers/null-worker.ts"],"names":[],"mappings":""}
@@ -1,4 +1,5 @@
1
- import { createLoaderWorker } from '@loaders.gl/loader-utils';
2
- import { NullLoader } from '../null-loader';
3
- createLoaderWorker(NullLoader);
4
- //# sourceMappingURL=null-worker.js.map
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const loader_utils_1 = require("@loaders.gl/loader-utils");
4
+ const null_loader_1 = require("../null-loader");
5
+ (0, loader_utils_1.createLoaderWorker)(null_loader_1.NullLoader);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@loaders.gl/core",
3
- "version": "4.0.0-alpha.4",
4
- "description": "Framework-independent loaders for 3D graphics formats",
3
+ "version": "4.0.0-alpha.6",
4
+ "description": "The core API for working with loaders.gl loaders and writers",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
7
7
  "access": "public"
@@ -17,17 +17,18 @@
17
17
  "mesh",
18
18
  "point cloud"
19
19
  ],
20
- "types": "src/index.ts",
21
- "main": "dist/index.js",
22
- "module": "dist/index.js",
20
+ "types": "dist/index.d.ts",
21
+ "main": "dist/es5/index.js",
22
+ "module": "dist/esm/index.js",
23
23
  "sideEffects": false,
24
24
  "browser": {
25
25
  "fs": false,
26
26
  "stream": false,
27
- "./src/iterators/make-stream/make-node-stream.ts": false,
28
- "./src/iterators/make-stream/make-node-stream.js": false,
29
- "./dist/es5/iterators/make-stream/make-node-stream.js": false,
30
- "./dist/esm/iterators/make-stream/make-node-stream.js": false
27
+ "./src/iterators/make-stream/make-node-stream.ts": "./src/iterators/make-stream/make-dom-stream.ts",
28
+ "./src/iterators/make-stream/make-node-stream.js": "./src/iterators/make-stream/make-dom-stream.js",
29
+ "./dist/iterators/make-stream/make-node-stream.js": "./dist/iterators/make-stream/make-dom-stream.js",
30
+ "./dist/es5/iterators/make-stream/make-node-stream.js": "./dist/es5/iterators/make-stream/make-dom-stream.js",
31
+ "./dist/esm/iterators/make-stream/make-node-stream.js": "./dist/esm/iterators/make-stream/make-dom-stream.js"
31
32
  },
32
33
  "files": [
33
34
  "src",
@@ -36,14 +37,14 @@
36
37
  ],
37
38
  "scripts": {
38
39
  "pre-build": "npm run build-bundle && npm run build-worker",
39
- "build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/bundle.js",
40
- "build-worker": "esbuild src/workers/null-worker.ts --bundle --outfile=dist/null-worker.js"
40
+ "build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/dist.min.js",
41
+ "build-worker": "esbuild src/workers/null-worker.ts --bundle --outfile=dist/null-worker.js --define:__VERSION__=\\\"$npm_package_version\\\""
41
42
  },
42
43
  "dependencies": {
43
44
  "@babel/runtime": "^7.3.1",
44
- "@loaders.gl/loader-utils": "4.0.0-alpha.4",
45
- "@loaders.gl/worker-utils": "4.0.0-alpha.4",
46
- "probe.gl": "^3.4.0"
45
+ "@loaders.gl/loader-utils": "4.0.0-alpha.6",
46
+ "@loaders.gl/worker-utils": "4.0.0-alpha.6",
47
+ "@probe.gl/log": "^4.0.2"
47
48
  },
48
- "gitHead": "53026061b3c8871f7e96d3a5826125cc6613bddc"
49
+ "gitHead": "acc1985050dfaa0f1f0c066f8da5bce7454a046c"
49
50
  }
package/src/index.ts CHANGED
@@ -1,3 +1,20 @@
1
+ // loaders.gl, MIT license
2
+
3
+ // TYPES
4
+ export type {
5
+ Loader,
6
+ LoaderWithParser,
7
+ LoaderContext,
8
+ LoaderOptions,
9
+ Writer,
10
+ WriterOptions,
11
+ DataType,
12
+ SyncDataType,
13
+ BatchableDataType,
14
+ IFileSystem,
15
+ IRandomAccessReadFileSystem
16
+ } from '@loaders.gl/loader-utils';
17
+
1
18
  // FILE READING AND WRITING
2
19
  export {fetchFile} from './lib/fetch/fetch-file';
3
20
 
@@ -6,7 +23,7 @@ export {readFileSync} from './lib/fetch/read-file';
6
23
  export {writeFile, writeFileSync} from './lib/fetch/write-file';
7
24
 
8
25
  // CONFIGURATION
9
- export {setLoaderOptions} from './lib/api/set-loader-options';
26
+ export {setLoaderOptions, getLoaderOptions} from './lib/api/loader-options';
10
27
  export {registerLoaders} from './lib/api/register-loaders';
11
28
  export {selectLoader, selectLoaderSync} from './lib/api/select-loader';
12
29
 
@@ -19,6 +36,7 @@ export {load} from './lib/api/load';
19
36
  export {loadInBatches} from './lib/api/load-in-batches';
20
37
 
21
38
  // ENCODING (ENCODING AND WRITING)
39
+ export {encodeTable, encodeTableAsText, encodeTableInBatches} from './lib/api/encode-table';
22
40
  export {encode, encodeSync, encodeInBatches, encodeText, encodeURLtoURL} from './lib/api/encode';
23
41
  export {save, saveSync} from './lib/api/save';
24
42
 
@@ -28,9 +46,7 @@ export {RequestScheduler} from '@loaders.gl/loader-utils';
28
46
 
29
47
  // ITERATOR UTILS
30
48
  export {makeIterator} from './iterators/make-iterator/make-iterator';
31
- export {makeStream} from './iterators/make-stream/make-stream';
32
- export {makeDOMStream} from './iterators/make-stream/make-dom-stream';
33
- export {default as makeNodeStream} from './iterators/make-stream/make-node-stream';
49
+ export {makeStream} from './iterators/make-stream/make-node-stream';
34
50
 
35
51
  // CORE LOADERS
36
52
  export {NullWorkerLoader, NullLoader} from './null-loader';
@@ -1,14 +1,19 @@
1
- export type MakeDOMStreamOptions = {
1
+ export type MakeStreamOptions = {
2
2
  /** Stream allocates an arrayBuffer. Enables use of a default reader. */
3
3
  autoAllocateChunkSize?: number;
4
4
  /** Total number of chunks in queue before back pressure is applied */
5
5
  highWaterMark?: number;
6
6
  };
7
7
 
8
- /** Builds a DOM stream from an iterator */
9
- export function makeDOMStream<ArrayBuffer>(
8
+ /**
9
+ * Builds a DOM stream from an iterator
10
+ * This stream is currently used in browsers only,
11
+ * but note that Web stream support is present in Node from Node 16
12
+ * https://nodejs.org/api/webstreams.html#webstreams_web_streams_api
13
+ */
14
+ export function makeStream<ArrayBuffer>(
10
15
  source: Iterable<ArrayBuffer> | AsyncIterable<ArrayBuffer>,
11
- options?: MakeDOMStreamOptions
16
+ options?: MakeStreamOptions
12
17
  ): ReadableStream {
13
18
  const iterator = source[Symbol.asyncIterator]
14
19
  ? (source as AsyncIterable<ArrayBuffer>)[Symbol.asyncIterator]()
@@ -19,7 +24,6 @@ export function makeDOMStream<ArrayBuffer>(
19
24
  // Create a byte stream (enables `Response(stream).arrayBuffer()`)
20
25
  // Only supported on Chrome
21
26
  // See: https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController
22
- // @ts-expect-error Only Chrome supports byte streams
23
27
  type: 'bytes',
24
28
 
25
29
  async pull(controller) {
@@ -29,6 +33,7 @@ export function makeDOMStream<ArrayBuffer>(
29
33
  controller.close();
30
34
  } else {
31
35
  // TODO - ignores controller.desiredSize
36
+ // @ts-expect-error Unclear why value is not correctly typed
32
37
  controller.enqueue(new Uint8Array(value));
33
38
  }
34
39
  } catch (error) {
@@ -1,12 +1,18 @@
1
- import {Readable, ReadableOptions} from 'stream';
1
+ import type {ReadableOptions} from 'stream';
2
+ import * as Stream from 'stream';
2
3
 
3
- export type MakeNodeStreamOptions = ReadableOptions;
4
+ class _Readable {}
5
+
6
+ type ReadableType = Stream.Readable | _Readable;
7
+ const Readable = Stream.Readable || _Readable;
8
+
9
+ export type MakeStreamOptions = ReadableOptions;
4
10
 
5
11
  /** Builds a node stream from an iterator */
6
- function makeNodeStream<ArrayBuffer>(
12
+ export function makeStream<ArrayBuffer>(
7
13
  source: Iterable<ArrayBuffer> | AsyncIterable<ArrayBuffer>,
8
14
  options?: ReadableOptions
9
- ): Readable {
15
+ ): ReadableType {
10
16
  const iterator = source[Symbol.asyncIterator]
11
17
  ? source[Symbol.asyncIterator]()
12
18
  : source[Symbol.iterator]();
@@ -63,8 +69,3 @@ class AsyncIterableReadable extends Readable {
63
69
  return !this.readable;
64
70
  }
65
71
  }
66
-
67
- // This module is marked `false` in the the "browser" field of the `package.json` for
68
- // `@loaders.gl/core`. We avoid using named exports so that bundlers have an easier
69
- // time resolving this "empty" module.
70
- export default makeNodeStream;
@@ -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,
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';
@@ -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
12
  import {getResourceUrlAndType} 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,7 +61,7 @@ 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
67
  const {url} = getResourceUrlAndType(data);
@@ -49,7 +78,7 @@ 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
84
  context = getLoaderContext({url, parse, loaders: candidateLoaders}, options, context);
@@ -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];