@loaders.gl/core 4.0.0-alpha.1 → 4.0.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +2 -2
- package/dist/core-addons/write-file-browser.d.ts +1 -0
- package/dist/core-addons/write-file-browser.d.ts.map +1 -0
- package/dist/core-addons/write-file-browser.js +59 -1
- package/dist/dist.min.js +3906 -0
- package/dist/es5/bundle.js +6 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/es5/core-addons/write-file-browser.js +2 -0
- package/dist/es5/core-addons/write-file-browser.js.map +1 -0
- package/dist/es5/index.js +377 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/iterators/batch-iterators/timed-batch-iterator.js +94 -0
- package/dist/es5/iterators/batch-iterators/timed-batch-iterator.js.map +1 -0
- package/dist/es5/iterators/make-iterator/make-array-buffer-iterator.js +42 -0
- package/dist/es5/iterators/make-iterator/make-array-buffer-iterator.js.map +1 -0
- package/dist/es5/iterators/make-iterator/make-blob-iterator.js +47 -0
- package/dist/es5/iterators/make-iterator/make-blob-iterator.js.map +1 -0
- package/dist/es5/iterators/make-iterator/make-iterator.js +31 -0
- package/dist/es5/iterators/make-iterator/make-iterator.js.map +1 -0
- package/dist/es5/iterators/make-iterator/make-stream-iterator.js +133 -0
- package/dist/es5/iterators/make-iterator/make-stream-iterator.js.map +1 -0
- package/dist/es5/iterators/make-iterator/make-string-iterator.js +38 -0
- package/dist/es5/iterators/make-iterator/make-string-iterator.js.map +1 -0
- package/dist/es5/iterators/make-stream/make-dom-stream.js +67 -0
- package/dist/es5/iterators/make-stream/make-dom-stream.js.map +1 -0
- package/dist/es5/iterators/make-stream/make-node-stream.js +168 -0
- package/dist/es5/iterators/make-stream/make-node-stream.js.map +1 -0
- package/dist/es5/javascript-utils/is-type.js +79 -0
- package/dist/es5/javascript-utils/is-type.js.map +1 -0
- package/dist/es5/lib/api/encode-table.js +159 -0
- package/dist/es5/lib/api/encode-table.js.map +1 -0
- package/dist/es5/lib/api/encode.js +244 -0
- package/dist/es5/lib/api/encode.js.map +1 -0
- package/dist/es5/lib/api/load-in-batches.js +63 -0
- package/dist/es5/lib/api/load-in-batches.js.map +1 -0
- package/dist/es5/lib/api/load.js +76 -0
- package/dist/es5/lib/api/load.js.map +1 -0
- package/dist/es5/lib/api/loader-options.js +19 -0
- package/dist/es5/lib/api/loader-options.js.map +1 -0
- package/dist/es5/lib/api/parse-in-batches.js +278 -0
- package/dist/es5/lib/api/parse-in-batches.js.map +1 -0
- package/dist/es5/lib/api/parse-sync.js +53 -0
- package/dist/es5/lib/api/parse-sync.js.map +1 -0
- package/dist/es5/lib/api/parse.js +143 -0
- package/dist/es5/lib/api/parse.js.map +1 -0
- package/dist/es5/lib/api/register-loaders.js +50 -0
- package/dist/es5/lib/api/register-loaders.js.map +1 -0
- package/dist/es5/lib/api/save.js +42 -0
- package/dist/es5/lib/api/save.js.map +1 -0
- package/dist/es5/lib/api/select-loader.js +302 -0
- package/dist/es5/lib/api/select-loader.js.map +1 -0
- package/dist/es5/lib/common.js +2 -0
- package/dist/es5/lib/common.js.map +1 -0
- package/dist/es5/lib/fetch/fetch-error-message.js +56 -0
- package/dist/es5/lib/fetch/fetch-error-message.js.map +1 -0
- package/dist/es5/lib/fetch/fetch-file.js +47 -0
- package/dist/es5/lib/fetch/fetch-file.js.map +1 -0
- package/dist/es5/lib/fetch/read-array-buffer.js +76 -0
- package/dist/es5/lib/fetch/read-array-buffer.js.map +1 -0
- package/dist/es5/lib/fetch/read-file.js +20 -0
- package/dist/es5/lib/fetch/read-file.js.map +1 -0
- package/dist/es5/lib/fetch/write-file.js +48 -0
- package/dist/es5/lib/fetch/write-file.js.map +1 -0
- package/dist/es5/lib/filesystems/browser-filesystem.js +249 -0
- package/dist/es5/lib/filesystems/browser-filesystem.js.map +1 -0
- package/dist/es5/lib/filesystems/filesystem.js +2 -0
- package/dist/es5/lib/filesystems/filesystem.js.map +1 -0
- package/dist/es5/lib/filesystems/read-array-buffer.js +41 -0
- package/dist/es5/lib/filesystems/read-array-buffer.js.map +1 -0
- package/dist/es5/lib/init.js +18 -0
- package/dist/es5/lib/init.js.map +1 -0
- package/dist/es5/lib/loader-utils/check-errors.js +57 -0
- package/dist/es5/lib/loader-utils/check-errors.js.map +1 -0
- package/dist/es5/lib/loader-utils/get-data.js +237 -0
- package/dist/es5/lib/loader-utils/get-data.js.map +1 -0
- package/dist/es5/lib/loader-utils/get-fetch-function.js +26 -0
- package/dist/es5/lib/loader-utils/get-fetch-function.js.map +1 -0
- package/dist/es5/lib/loader-utils/loader-context.js +49 -0
- package/dist/es5/lib/loader-utils/loader-context.js.map +1 -0
- package/dist/es5/lib/loader-utils/loggers.js +90 -0
- package/dist/es5/lib/loader-utils/loggers.js.map +1 -0
- package/dist/es5/lib/loader-utils/normalize-loader.js +44 -0
- package/dist/es5/lib/loader-utils/normalize-loader.js.map +1 -0
- package/dist/es5/lib/loader-utils/option-defaults.js +47 -0
- package/dist/es5/lib/loader-utils/option-defaults.js.map +1 -0
- package/dist/es5/lib/loader-utils/option-utils.js +132 -0
- package/dist/es5/lib/loader-utils/option-utils.js.map +1 -0
- package/dist/es5/lib/progress/fetch-progress.js +134 -0
- package/dist/es5/lib/progress/fetch-progress.js.map +1 -0
- package/dist/es5/lib/utils/log.js +12 -0
- package/dist/es5/lib/utils/log.js.map +1 -0
- package/dist/es5/lib/utils/mime-type-utils.js +24 -0
- package/dist/es5/lib/utils/mime-type-utils.js.map +1 -0
- package/dist/es5/lib/utils/resource-utils.js +62 -0
- package/dist/es5/lib/utils/resource-utils.js.map +1 -0
- package/dist/es5/lib/utils/response-utils.js +197 -0
- package/dist/es5/lib/utils/response-utils.js.map +1 -0
- package/dist/es5/lib/utils/url-utils.js +16 -0
- package/dist/es5/lib/utils/url-utils.js.map +1 -0
- package/dist/es5/null-loader.js +139 -0
- package/dist/es5/null-loader.js.map +1 -0
- package/dist/es5/workers/null-worker.js +6 -0
- package/dist/es5/workers/null-worker.js.map +1 -0
- package/dist/esm/bundle.js +4 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/esm/core-addons/README.md +1 -0
- package/dist/esm/core-addons/write-file-browser.js +2 -0
- package/dist/esm/core-addons/write-file-browser.js.map +1 -0
- package/dist/esm/index.js +30 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/iterators/batch-iterators/timed-batch-iterator.js +16 -0
- package/dist/esm/iterators/batch-iterators/timed-batch-iterator.js.map +1 -0
- package/dist/esm/iterators/make-iterator/make-array-buffer-iterator.js +20 -0
- package/dist/esm/iterators/make-iterator/make-array-buffer-iterator.js.map +1 -0
- package/dist/esm/iterators/make-iterator/make-blob-iterator.js +12 -0
- package/dist/esm/iterators/make-iterator/make-blob-iterator.js.map +1 -0
- package/dist/esm/iterators/make-iterator/make-iterator.js +25 -0
- package/dist/esm/iterators/make-iterator/make-iterator.js.map +1 -0
- package/dist/esm/iterators/make-iterator/make-stream-iterator.js +32 -0
- package/dist/esm/iterators/make-iterator/make-stream-iterator.js.map +1 -0
- package/dist/esm/iterators/make-iterator/make-string-iterator.js +13 -0
- package/dist/esm/iterators/make-iterator/make-string-iterator.js.map +1 -0
- package/dist/esm/iterators/make-stream/make-dom-stream.js +29 -0
- package/dist/esm/iterators/make-stream/make-dom-stream.js.map +1 -0
- package/dist/esm/iterators/make-stream/make-node-stream.js +57 -0
- package/dist/esm/iterators/make-stream/make-node-stream.js.map +1 -0
- package/dist/esm/javascript-utils/is-type.js +19 -0
- package/dist/esm/javascript-utils/is-type.js.map +1 -0
- package/dist/esm/lib/api/encode-table.js +45 -0
- package/dist/esm/lib/api/encode-table.js.map +1 -0
- package/dist/esm/lib/api/encode.js +87 -0
- package/dist/esm/lib/api/encode.js.map +1 -0
- package/dist/esm/lib/api/load-in-batches.js +25 -0
- package/dist/esm/lib/api/load-in-batches.js.map +1 -0
- package/dist/esm/lib/api/load.js +26 -0
- package/dist/esm/lib/api/load.js.map +1 -0
- package/dist/esm/lib/api/loader-options.js +3 -0
- package/dist/esm/lib/api/loader-options.js.map +1 -0
- package/dist/esm/lib/api/parse-in-batches.js +84 -0
- package/dist/esm/lib/api/parse-in-batches.js.map +1 -0
- package/dist/esm/lib/api/parse-sync.js +45 -0
- package/dist/esm/lib/api/parse-sync.js.map +1 -0
- package/dist/esm/lib/api/parse.js +74 -0
- package/dist/esm/lib/api/parse.js.map +1 -0
- package/dist/esm/lib/api/register-loaders.js +25 -0
- package/dist/esm/lib/api/register-loaders.js.map +1 -0
- package/dist/esm/lib/api/save.js +11 -0
- package/dist/esm/lib/api/save.js.map +1 -0
- package/dist/esm/lib/api/select-loader.js +201 -0
- package/dist/esm/lib/api/select-loader.js.map +1 -0
- package/dist/esm/lib/common.js +2 -0
- package/dist/esm/lib/common.js.map +1 -0
- package/dist/esm/lib/fetch/fetch-error-message.js +18 -0
- package/dist/esm/lib/fetch/fetch-error-message.js.map +1 -0
- package/dist/esm/lib/fetch/fetch-file.js +14 -0
- package/dist/esm/lib/fetch/fetch-file.js.map +1 -0
- package/dist/esm/lib/fetch/read-array-buffer.js +23 -0
- package/dist/esm/lib/fetch/read-array-buffer.js.map +1 -0
- package/dist/esm/lib/fetch/read-file.js +15 -0
- package/dist/esm/lib/fetch/read-file.js.map +1 -0
- package/dist/esm/lib/fetch/write-file.js +21 -0
- package/dist/esm/lib/fetch/write-file.js.map +1 -0
- package/dist/esm/lib/filesystems/browser-filesystem.js +92 -0
- package/dist/esm/lib/filesystems/browser-filesystem.js.map +1 -0
- package/dist/esm/lib/filesystems/filesystem.js +2 -0
- package/dist/esm/lib/filesystems/filesystem.js.map +1 -0
- package/dist/esm/lib/filesystems/read-array-buffer.js +8 -0
- package/dist/esm/lib/filesystems/read-array-buffer.js.map +1 -0
- package/dist/esm/lib/init.js +11 -0
- package/dist/esm/lib/init.js.map +1 -0
- package/dist/esm/lib/loader-utils/check-errors.js +22 -0
- package/dist/esm/lib/loader-utils/check-errors.js.map +1 -0
- package/dist/esm/lib/loader-utils/get-data.js +103 -0
- package/dist/esm/lib/loader-utils/get-data.js.map +1 -0
- package/dist/esm/lib/loader-utils/get-fetch-function.js +18 -0
- package/dist/esm/lib/loader-utils/get-fetch-function.js.map +1 -0
- package/dist/esm/lib/loader-utils/loader-context.js +38 -0
- package/dist/esm/lib/loader-utils/loader-context.js.map +1 -0
- package/dist/esm/lib/loader-utils/loggers.js +50 -0
- package/dist/esm/lib/loader-utils/loggers.js.map +1 -0
- package/dist/esm/lib/loader-utils/normalize-loader.js +37 -0
- package/dist/esm/lib/loader-utils/normalize-loader.js.map +1 -0
- package/dist/esm/lib/loader-utils/option-defaults.js +39 -0
- package/dist/esm/lib/loader-utils/option-defaults.js.map +1 -0
- package/dist/esm/lib/loader-utils/option-utils.js +106 -0
- package/dist/esm/lib/loader-utils/option-utils.js.map +1 -0
- package/dist/esm/lib/progress/fetch-progress.js +52 -0
- package/dist/esm/lib/progress/fetch-progress.js.map +1 -0
- package/dist/esm/lib/utils/log.js +5 -0
- package/dist/esm/lib/utils/log.js.map +1 -0
- package/dist/esm/lib/utils/mime-type-utils.js +17 -0
- package/dist/esm/lib/utils/mime-type-utils.js.map +1 -0
- package/dist/esm/lib/utils/resource-utils.js +54 -0
- package/dist/esm/lib/utils/resource-utils.js.map +1 -0
- package/dist/esm/lib/utils/response-utils.js +89 -0
- package/dist/esm/lib/utils/response-utils.js.map +1 -0
- package/dist/esm/lib/utils/url-utils.js +9 -0
- package/dist/esm/lib/utils/url-utils.js.map +1 -0
- package/dist/esm/null-loader.js +45 -0
- package/dist/esm/null-loader.js.map +1 -0
- package/dist/esm/workers/null-worker.js +4 -0
- package/dist/esm/workers/null-worker.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +108 -31
- package/dist/iterators/batch-iterators/timed-batch-iterator.d.ts +5 -0
- package/dist/iterators/batch-iterators/timed-batch-iterator.d.ts.map +1 -0
- package/dist/iterators/batch-iterators/timed-batch-iterator.js +20 -17
- package/dist/iterators/make-iterator/make-array-buffer-iterator.d.ts +9 -0
- package/dist/iterators/make-iterator/make-array-buffer-iterator.d.ts.map +1 -0
- package/dist/iterators/make-iterator/make-array-buffer-iterator.js +25 -16
- package/dist/iterators/make-iterator/make-blob-iterator.d.ts +9 -0
- package/dist/iterators/make-iterator/make-blob-iterator.d.ts.map +1 -0
- package/dist/iterators/make-iterator/make-blob-iterator.js +20 -12
- package/dist/iterators/make-iterator/make-iterator.d.ts +19 -0
- package/dist/iterators/make-iterator/make-iterator.d.ts.map +1 -0
- package/dist/iterators/make-iterator/make-iterator.js +36 -29
- package/dist/iterators/make-iterator/make-stream-iterator.d.ts +11 -0
- package/dist/iterators/make-iterator/make-stream-iterator.d.ts.map +1 -0
- package/dist/iterators/make-iterator/make-stream-iterator.js +89 -32
- package/dist/iterators/make-iterator/make-string-iterator.d.ts +9 -0
- package/dist/iterators/make-iterator/make-string-iterator.d.ts.map +1 -0
- package/dist/iterators/make-iterator/make-string-iterator.js +22 -12
- package/dist/iterators/make-stream/make-dom-stream.d.ts +14 -0
- package/dist/iterators/make-stream/make-dom-stream.d.ts.map +1 -0
- package/dist/iterators/make-stream/make-dom-stream.js +44 -32
- package/dist/iterators/make-stream/make-node-stream.d.ts +11 -0
- package/dist/iterators/make-stream/make-node-stream.d.ts.map +1 -0
- package/dist/iterators/make-stream/make-node-stream.js +75 -70
- package/dist/javascript-utils/is-type.d.ts +22 -0
- package/dist/javascript-utils/is-type.d.ts.map +1 -0
- package/dist/javascript-utils/is-type.js +41 -21
- package/dist/lib/api/encode-table.d.ts +6 -0
- package/dist/lib/api/encode-table.d.ts.map +1 -0
- package/dist/lib/api/encode-table.js +54 -0
- package/dist/lib/api/encode.d.ts +26 -0
- package/dist/lib/api/encode.d.ts.map +1 -0
- package/dist/lib/api/encode.js +111 -81
- package/dist/lib/api/load-in-batches.d.ts +13 -0
- package/dist/lib/api/load-in-batches.d.ts.map +1 -0
- package/dist/lib/api/load-in-batches.js +30 -27
- package/dist/lib/api/load.d.ts +15 -0
- package/dist/lib/api/load.d.ts.map +1 -0
- package/dist/lib/api/load.js +42 -24
- package/dist/lib/api/loader-options.d.ts +3 -0
- package/dist/lib/api/loader-options.d.ts.map +1 -0
- package/dist/lib/api/loader-options.js +7 -0
- package/dist/lib/api/parse-in-batches.d.ts +10 -0
- package/dist/lib/api/parse-in-batches.d.ts.map +1 -0
- package/dist/lib/api/parse-in-batches.js +110 -92
- package/dist/lib/api/parse-sync.d.ts +10 -0
- package/dist/lib/api/parse-sync.d.ts.map +1 -0
- package/dist/lib/api/parse-sync.js +56 -54
- package/dist/lib/api/parse.d.ts +6 -0
- package/dist/lib/api/parse.d.ts.map +1 -0
- package/dist/lib/api/parse.js +81 -61
- package/dist/lib/api/register-loaders.d.ts +7 -0
- package/dist/lib/api/register-loaders.d.ts.map +1 -0
- package/dist/lib/api/register-loaders.js +29 -23
- package/dist/lib/api/save.d.ts +4 -0
- package/dist/lib/api/save.d.ts.map +1 -0
- package/dist/lib/api/save.js +13 -9
- package/dist/lib/api/select-loader.d.ts +22 -0
- package/dist/lib/api/select-loader.d.ts.map +1 -0
- package/dist/lib/api/select-loader.js +219 -194
- package/dist/lib/common.d.ts +2 -0
- package/dist/lib/common.d.ts.map +1 -0
- package/dist/lib/common.js +2 -2
- package/dist/lib/fetch/fetch-error-message.d.ts +3 -0
- package/dist/lib/fetch/fetch-error-message.d.ts.map +1 -0
- package/dist/lib/fetch/fetch-error-message.js +21 -17
- package/dist/lib/fetch/fetch-file.d.ts +13 -0
- package/dist/lib/fetch/fetch-file.d.ts.map +1 -0
- package/dist/lib/fetch/fetch-file.js +25 -15
- package/dist/lib/fetch/read-array-buffer.d.ts +17 -0
- package/dist/lib/fetch/read-array-buffer.d.ts.map +1 -0
- package/dist/lib/fetch/read-array-buffer.js +39 -27
- package/dist/lib/fetch/read-file.d.ts +5 -0
- package/dist/lib/fetch/read-file.d.ts.map +1 -0
- package/dist/lib/fetch/read-file.js +28 -16
- package/dist/lib/fetch/write-file.d.ts +3 -0
- package/dist/lib/fetch/write-file.d.ts.map +1 -0
- package/dist/lib/fetch/write-file.js +20 -23
- package/dist/lib/filesystems/browser-filesystem.d.ts +58 -0
- package/dist/lib/filesystems/browser-filesystem.d.ts.map +1 -0
- package/dist/lib/filesystems/browser-filesystem.js +118 -107
- package/dist/lib/filesystems/filesystem.d.ts +46 -0
- package/dist/lib/filesystems/filesystem.d.ts.map +1 -0
- package/dist/lib/filesystems/filesystem.js +2 -2
- package/dist/lib/filesystems/read-array-buffer.d.ts +19 -0
- package/dist/lib/filesystems/read-array-buffer.d.ts.map +1 -0
- package/dist/lib/filesystems/read-array-buffer.js +28 -8
- package/dist/lib/init.d.ts +3 -0
- package/dist/lib/init.d.ts.map +1 -0
- package/dist/lib/init.js +16 -6
- package/dist/lib/loader-utils/check-errors.d.ts +3 -0
- package/dist/lib/loader-utils/check-errors.d.ts.map +1 -0
- package/dist/lib/loader-utils/check-errors.js +26 -22
- package/dist/lib/loader-utils/get-data.d.ts +6 -0
- package/dist/lib/loader-utils/get-data.d.ts.map +1 -0
- package/dist/lib/loader-utils/get-data.js +122 -122
- package/dist/lib/loader-utils/get-fetch-function.d.ts +9 -0
- package/dist/lib/loader-utils/get-fetch-function.d.ts.map +1 -0
- package/dist/lib/loader-utils/get-fetch-function.js +31 -0
- package/dist/lib/loader-utils/loader-context.d.ts +13 -0
- package/dist/lib/loader-utils/loader-context.d.ts.map +1 -0
- package/dist/lib/loader-utils/loader-context.js +57 -34
- package/dist/lib/loader-utils/loggers.d.ts +17 -0
- package/dist/lib/loader-utils/loggers.d.ts.map +1 -0
- package/dist/lib/loader-utils/loggers.js +39 -46
- package/dist/lib/loader-utils/normalize-loader.d.ts +4 -0
- package/dist/lib/loader-utils/normalize-loader.d.ts.map +1 -0
- package/dist/lib/loader-utils/normalize-loader.js +50 -41
- package/dist/lib/loader-utils/option-defaults.d.ts +20 -0
- package/dist/lib/loader-utils/option-defaults.d.ts.map +1 -0
- package/dist/lib/loader-utils/option-defaults.js +41 -35
- package/dist/lib/loader-utils/option-utils.d.ts +34 -0
- package/dist/lib/loader-utils/option-utils.d.ts.map +1 -0
- package/dist/lib/loader-utils/option-utils.js +140 -120
- package/dist/lib/progress/fetch-progress.d.ts +6 -0
- package/dist/lib/progress/fetch-progress.d.ts.map +1 -0
- package/dist/lib/progress/fetch-progress.js +54 -56
- package/dist/lib/utils/log.d.ts +3 -0
- package/dist/lib/utils/log.d.ts.map +1 -0
- package/dist/lib/utils/log.js +6 -0
- package/dist/lib/utils/mime-type-utils.d.ts +20 -0
- package/dist/lib/utils/mime-type-utils.d.ts.map +1 -0
- package/dist/lib/utils/mime-type-utils.js +38 -17
- package/dist/lib/utils/resource-utils.d.ts +30 -0
- package/dist/lib/utils/resource-utils.d.ts.map +1 -0
- package/dist/lib/utils/resource-utils.js +86 -56
- package/dist/lib/utils/response-utils.d.ts +18 -0
- package/dist/lib/utils/response-utils.d.ts.map +1 -0
- package/dist/lib/utils/response-utils.js +105 -105
- package/dist/lib/utils/url-utils.d.ts +3 -0
- package/dist/lib/utils/url-utils.d.ts.map +1 -0
- package/dist/lib/utils/url-utils.js +14 -0
- package/dist/null-loader.d.ts +10 -0
- package/dist/null-loader.d.ts.map +1 -0
- package/dist/null-loader.js +53 -31
- package/dist/null-worker-node.js +234 -0
- package/dist/null-worker.js +61 -21
- package/dist/workers/null-worker.d.ts +2 -0
- package/dist/workers/null-worker.d.ts.map +1 -0
- package/dist/workers/null-worker.js +5 -4
- package/package.json +18 -16
- package/src/index.ts +20 -4
- package/src/iterators/make-stream/make-dom-stream.ts +10 -5
- package/src/iterators/make-stream/make-node-stream.ts +10 -9
- package/src/lib/api/encode-table.ts +71 -0
- package/src/lib/api/encode.ts +15 -5
- package/src/lib/api/load-in-batches.ts +1 -1
- package/src/lib/api/load.ts +39 -8
- package/src/lib/api/loader-options.ts +2 -0
- package/src/lib/api/parse-in-batches.ts +8 -9
- package/src/lib/api/parse-sync.ts +8 -4
- package/src/lib/api/parse.ts +42 -5
- package/src/lib/api/register-loaders.ts +1 -1
- package/src/lib/api/select-loader.ts +23 -4
- package/src/lib/init.ts +17 -0
- package/src/lib/loader-utils/get-fetch-function.ts +38 -0
- package/src/lib/loader-utils/loader-context.ts +20 -9
- package/src/lib/loader-utils/loggers.ts +1 -1
- package/src/lib/loader-utils/option-defaults.ts +3 -1
- package/src/lib/loader-utils/option-utils.ts +22 -46
- package/src/lib/progress/fetch-progress.ts +2 -2
- package/src/lib/utils/log.ts +4 -0
- package/src/lib/utils/resource-utils.ts +54 -34
- package/src/lib/utils/response-utils.ts +5 -4
- package/src/lib/utils/url-utils.ts +12 -0
- package/src/null-loader.ts +17 -5
- package/dist/bundle.js.map +0 -1
- package/dist/core-addons/write-file-browser.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/iterators/batch-iterators/timed-batch-iterator.js.map +0 -1
- package/dist/iterators/make-iterator/make-array-buffer-iterator.js.map +0 -1
- package/dist/iterators/make-iterator/make-blob-iterator.js.map +0 -1
- package/dist/iterators/make-iterator/make-iterator.js.map +0 -1
- package/dist/iterators/make-iterator/make-stream-iterator.js.map +0 -1
- package/dist/iterators/make-iterator/make-string-iterator.js.map +0 -1
- package/dist/iterators/make-stream/make-dom-stream.js.map +0 -1
- package/dist/iterators/make-stream/make-node-stream.js.map +0 -1
- package/dist/iterators/make-stream/make-stream.js +0 -7
- package/dist/iterators/make-stream/make-stream.js.map +0 -1
- package/dist/javascript-utils/is-type.js.map +0 -1
- package/dist/lib/api/encode.js.map +0 -1
- package/dist/lib/api/load-in-batches.js.map +0 -1
- package/dist/lib/api/load.js.map +0 -1
- package/dist/lib/api/parse-in-batches.js.map +0 -1
- package/dist/lib/api/parse-sync.js.map +0 -1
- package/dist/lib/api/parse.js.map +0 -1
- package/dist/lib/api/register-loaders.js.map +0 -1
- package/dist/lib/api/save.js.map +0 -1
- package/dist/lib/api/select-loader.js.map +0 -1
- package/dist/lib/api/set-loader-options.js +0 -5
- package/dist/lib/api/set-loader-options.js.map +0 -1
- package/dist/lib/common.js.map +0 -1
- package/dist/lib/fetch/fetch-error-message.js.map +0 -1
- package/dist/lib/fetch/fetch-file.js.map +0 -1
- package/dist/lib/fetch/read-array-buffer.js.map +0 -1
- package/dist/lib/fetch/read-file.js.map +0 -1
- package/dist/lib/fetch/write-file.js.map +0 -1
- package/dist/lib/filesystems/browser-filesystem.js.map +0 -1
- package/dist/lib/filesystems/filesystem.js.map +0 -1
- package/dist/lib/filesystems/read-array-buffer.js.map +0 -1
- package/dist/lib/init.js.map +0 -1
- package/dist/lib/loader-utils/check-errors.js.map +0 -1
- package/dist/lib/loader-utils/get-data.js.map +0 -1
- package/dist/lib/loader-utils/loader-context.js.map +0 -1
- package/dist/lib/loader-utils/loggers.js.map +0 -1
- package/dist/lib/loader-utils/normalize-loader.js.map +0 -1
- package/dist/lib/loader-utils/option-defaults.js.map +0 -1
- package/dist/lib/loader-utils/option-utils.js.map +0 -1
- package/dist/lib/progress/fetch-progress.js.map +0 -1
- package/dist/lib/utils/mime-type-utils.js.map +0 -1
- package/dist/lib/utils/resource-utils.js.map +0 -1
- package/dist/lib/utils/response-utils.js.map +0 -1
- package/dist/null-loader.js.map +0 -1
- package/dist/workers/null-worker.js.map +0 -1
- package/src/iterators/make-stream/make-stream.ts +0 -19
- package/src/lib/api/set-loader-options.ts +0 -9
- package/src/lib/init.js +0 -10
- /package/dist/{core-addons → es5/core-addons}/README.md +0 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
// Copyright 2022 Foursquare Labs, Inc
|
|
3
|
+
|
|
4
|
+
/* global TextEncoder, TextDecoder */
|
|
5
|
+
import {concatenateArrayBuffers, Writer, WriterOptionsType} from '@loaders.gl/loader-utils';
|
|
6
|
+
import {Table} from '@loaders.gl/schema';
|
|
7
|
+
|
|
8
|
+
export async function encodeTable<WriterT extends Writer = Writer>(
|
|
9
|
+
data: Table,
|
|
10
|
+
writer: WriterT,
|
|
11
|
+
options?: WriterOptionsType<WriterT>
|
|
12
|
+
): Promise<ArrayBuffer> {
|
|
13
|
+
if (writer.encode) {
|
|
14
|
+
return await writer.encode(data, options);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (writer.encodeText) {
|
|
18
|
+
const text = await writer.encodeText(data, options);
|
|
19
|
+
return new TextEncoder().encode(text);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (writer.encodeInBatches) {
|
|
23
|
+
// Create an iterator representing the data
|
|
24
|
+
// TODO - Assumes this is a table
|
|
25
|
+
const batches = encodeTableInBatches(data, writer, options);
|
|
26
|
+
|
|
27
|
+
// Concatenate the output
|
|
28
|
+
const chunks: ArrayBuffer[] = [];
|
|
29
|
+
for await (const batch of batches) {
|
|
30
|
+
chunks.push(batch);
|
|
31
|
+
}
|
|
32
|
+
return concatenateArrayBuffers(...chunks);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
throw new Error('Writer could not encode data');
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export async function encodeTableAsText<WriterT extends Writer = Writer>(
|
|
39
|
+
data: Table,
|
|
40
|
+
writer: WriterT,
|
|
41
|
+
options?: WriterOptionsType<WriterT>
|
|
42
|
+
): Promise<string> {
|
|
43
|
+
if (writer.text && writer.encodeText) {
|
|
44
|
+
return await writer.encodeText(data, options);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (writer.text && (writer.encode || writer.encodeInBatches)) {
|
|
48
|
+
const arrayBuffer = await encodeTable(data, writer, options);
|
|
49
|
+
return new TextDecoder().decode(arrayBuffer);
|
|
50
|
+
}
|
|
51
|
+
throw new Error('Writer could not encode data as text');
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function encodeTableInBatches<WriterT extends Writer = Writer>(
|
|
55
|
+
data: Table,
|
|
56
|
+
writer: WriterT,
|
|
57
|
+
options?: WriterOptionsType<WriterT>
|
|
58
|
+
): AsyncIterable<ArrayBuffer> {
|
|
59
|
+
if (writer.encodeInBatches) {
|
|
60
|
+
const dataIterator = getIterator(data);
|
|
61
|
+
// @ts-expect-error
|
|
62
|
+
return writer.encodeInBatches(dataIterator, options);
|
|
63
|
+
}
|
|
64
|
+
// TODO -fall back to atomic encode?
|
|
65
|
+
throw new Error('Writer could not encode data in batches');
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function getIterator(data) {
|
|
69
|
+
const dataIterator = [{table: data, start: 0, end: data.length}];
|
|
70
|
+
return dataIterator;
|
|
71
|
+
}
|
package/src/lib/api/encode.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import
|
|
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?:
|
|
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?:
|
|
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?:
|
|
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?:
|
|
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/
|
|
3
|
+
import {getFetchFunction} from '../loader-utils/get-fetch-function';
|
|
4
4
|
|
|
5
5
|
import {parseInBatches} from './parse-in-batches';
|
|
6
6
|
|
package/src/lib/api/load.ts
CHANGED
|
@@ -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/
|
|
7
|
+
import {getFetchFunction} from '../loader-utils/get-fetch-function';
|
|
5
8
|
|
|
6
9
|
import {parse} from './parse';
|
|
7
10
|
|
|
@@ -14,22 +17,46 @@ import {parse} from './parse';
|
|
|
14
17
|
* @param options
|
|
15
18
|
* @param context
|
|
16
19
|
*/
|
|
20
|
+
|
|
21
|
+
export async function load<LoaderT extends Loader>(
|
|
22
|
+
url: string | DataType,
|
|
23
|
+
loader: LoaderT,
|
|
24
|
+
options?: LoaderOptionsType<LoaderT>,
|
|
25
|
+
context?: LoaderContext
|
|
26
|
+
): Promise<LoaderReturnType<LoaderT>>;
|
|
27
|
+
|
|
28
|
+
export async function load<
|
|
29
|
+
LoaderT extends Loader, // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
30
|
+
LoaderOptionsT extends LoaderOptions = LoaderOptions
|
|
31
|
+
>(
|
|
32
|
+
url: string | DataType,
|
|
33
|
+
loaders: Loader[] | LoaderOptions,
|
|
34
|
+
options?: LoaderOptionsT,
|
|
35
|
+
context?: LoaderContext
|
|
36
|
+
): Promise<any>;
|
|
37
|
+
|
|
17
38
|
// implementation signature
|
|
18
|
-
export async function load(
|
|
39
|
+
export async function load<LoaderOptionsT extends LoaderOptions>(
|
|
19
40
|
url: string | DataType,
|
|
20
|
-
loaders?: Loader
|
|
21
|
-
options?:
|
|
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
|
-
|
|
28
|
-
|
|
53
|
+
} else {
|
|
54
|
+
resolvedLoaders = loaders as Loader | Loader[];
|
|
55
|
+
resolvedOptions = options;
|
|
29
56
|
}
|
|
30
57
|
|
|
31
58
|
// Select fetch function
|
|
32
|
-
const fetch = getFetchFunction(
|
|
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
|
}
|
|
@@ -11,7 +11,7 @@ import {isLoaderObject} from '../loader-utils/normalize-loader';
|
|
|
11
11
|
import {normalizeOptions} from '../loader-utils/option-utils';
|
|
12
12
|
import {getLoaderContext} from '../loader-utils/loader-context';
|
|
13
13
|
import {getAsyncIterableFromData} from '../loader-utils/get-data';
|
|
14
|
-
import {
|
|
14
|
+
import {getResourceUrl} from '../utils/resource-utils';
|
|
15
15
|
import {selectLoader} from './select-loader';
|
|
16
16
|
|
|
17
17
|
// Ensure `parse` is available in context if loader falls back to `parse`
|
|
@@ -32,6 +32,8 @@ export async function parseInBatches(
|
|
|
32
32
|
): Promise<AsyncIterable<any>> {
|
|
33
33
|
assert(!context || typeof context === 'object'); // parseInBatches no longer accepts final url
|
|
34
34
|
|
|
35
|
+
const loaderArray = Array.isArray(loaders) ? loaders : undefined;
|
|
36
|
+
|
|
35
37
|
// Signature: parseInBatches(data, options, url) - Uses registered loaders
|
|
36
38
|
if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {
|
|
37
39
|
context = undefined; // context not supported in short signature
|
|
@@ -43,11 +45,11 @@ export async function parseInBatches(
|
|
|
43
45
|
options = options || {};
|
|
44
46
|
|
|
45
47
|
// Extract a url for auto detection
|
|
46
|
-
const
|
|
48
|
+
const url = getResourceUrl(data);
|
|
47
49
|
|
|
48
50
|
// Chooses a loader and normalizes it
|
|
49
51
|
// Note - only uses URL and contentType for streams and iterator inputs
|
|
50
|
-
const loader = await selectLoader(data as ArrayBuffer, loaders as Loader[], options);
|
|
52
|
+
const loader = await selectLoader(data as ArrayBuffer, loaders as Loader | Loader[], options);
|
|
51
53
|
// Note: if options.nothrow was set, it is possible that no loader was found, if so just return null
|
|
52
54
|
if (!loader) {
|
|
53
55
|
// @ts-ignore
|
|
@@ -55,14 +57,11 @@ export async function parseInBatches(
|
|
|
55
57
|
}
|
|
56
58
|
|
|
57
59
|
// Normalize options
|
|
58
|
-
|
|
59
|
-
options = normalizeOptions(options, loader, loaders, url);
|
|
60
|
-
// @ts-ignore
|
|
60
|
+
options = normalizeOptions(options, loader, loaderArray, url);
|
|
61
61
|
context = getLoaderContext(
|
|
62
|
-
|
|
63
|
-
{url, parseInBatches, parse, loaders: loaders as Loader[]},
|
|
62
|
+
{url, parseInBatches, parse, loaders: loaderArray},
|
|
64
63
|
options,
|
|
65
|
-
context
|
|
64
|
+
context || null
|
|
66
65
|
);
|
|
67
66
|
|
|
68
67
|
return await parseWithLoaderInBatches(loader as LoaderWithParser, data, options, context);
|
|
@@ -11,7 +11,7 @@ import {isLoaderObject} from '../loader-utils/normalize-loader';
|
|
|
11
11
|
import {normalizeOptions} from '../loader-utils/option-utils';
|
|
12
12
|
import {getArrayBufferOrStringFromDataSync} from '../loader-utils/get-data';
|
|
13
13
|
import {getLoaderContext, getLoadersFromContext} from '../loader-utils/loader-context';
|
|
14
|
-
import {
|
|
14
|
+
import {getResourceUrl} from '../utils/resource-utils';
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* Parses `data` synchronously using a specified loader
|
|
@@ -52,12 +52,16 @@ export function parseSync(
|
|
|
52
52
|
options = normalizeOptions(options, loader, candidateLoaders);
|
|
53
53
|
|
|
54
54
|
// Extract a url for auto detection
|
|
55
|
-
const
|
|
55
|
+
const url = getResourceUrl(data);
|
|
56
56
|
|
|
57
57
|
const parse = () => {
|
|
58
|
-
throw new Error('parseSync called parse');
|
|
58
|
+
throw new Error('parseSync called parse (which is async');
|
|
59
59
|
};
|
|
60
|
-
context = getLoaderContext(
|
|
60
|
+
context = getLoaderContext(
|
|
61
|
+
{url, parseSync, parse, loaders: loaders as Loader[]},
|
|
62
|
+
options,
|
|
63
|
+
context || null
|
|
64
|
+
);
|
|
61
65
|
|
|
62
66
|
return parseWithLoaderSync(loader as LoaderWithParser, data, options, context);
|
|
63
67
|
}
|
package/src/lib/api/parse.ts
CHANGED
|
@@ -1,13 +1,41 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
1
3
|
import type {DataType, Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';
|
|
4
|
+
import type {LoaderOptionsType, LoaderReturnType} from '@loaders.gl/loader-utils';
|
|
2
5
|
import {assert, validateWorkerVersion} from '@loaders.gl/worker-utils';
|
|
3
6
|
import {parseWithWorker, canParseWithWorker} from '@loaders.gl/loader-utils';
|
|
4
7
|
import {isLoaderObject} from '../loader-utils/normalize-loader';
|
|
8
|
+
import {isResponse} from '../../javascript-utils/is-type';
|
|
5
9
|
import {normalizeOptions} from '../loader-utils/option-utils';
|
|
6
10
|
import {getArrayBufferOrStringFromData} from '../loader-utils/get-data';
|
|
7
11
|
import {getLoaderContext, getLoadersFromContext} from '../loader-utils/loader-context';
|
|
8
|
-
import {
|
|
12
|
+
import {getResourceUrl} from '../utils/resource-utils';
|
|
9
13
|
import {selectLoader} from './select-loader';
|
|
10
14
|
|
|
15
|
+
// type LoaderArrayType<T> = T extends (infer Loader)[] ? LoaderOptionsType<Loader> : T
|
|
16
|
+
|
|
17
|
+
export async function parse<
|
|
18
|
+
LoaderT extends Loader,
|
|
19
|
+
OptionsT extends LoaderOptions = LoaderOptionsType<LoaderT>
|
|
20
|
+
>(
|
|
21
|
+
data: DataType | Promise<DataType>,
|
|
22
|
+
loader: LoaderT,
|
|
23
|
+
options?: OptionsT,
|
|
24
|
+
context?: LoaderContext
|
|
25
|
+
): Promise<LoaderReturnType<LoaderT>>;
|
|
26
|
+
|
|
27
|
+
export async function parse(
|
|
28
|
+
data: DataType | Promise<DataType>,
|
|
29
|
+
loaders: Loader[],
|
|
30
|
+
options?: LoaderOptions,
|
|
31
|
+
context?: LoaderContext
|
|
32
|
+
): Promise<any>;
|
|
33
|
+
|
|
34
|
+
export async function parse(
|
|
35
|
+
data: DataType | Promise<DataType>,
|
|
36
|
+
options?: LoaderOptions
|
|
37
|
+
): Promise<any>;
|
|
38
|
+
|
|
11
39
|
/**
|
|
12
40
|
* Parses `data` using a specified loader
|
|
13
41
|
* @param data
|
|
@@ -15,6 +43,7 @@ import {selectLoader} from './select-loader';
|
|
|
15
43
|
* @param options
|
|
16
44
|
* @param context
|
|
17
45
|
*/
|
|
46
|
+
// implementation signature
|
|
18
47
|
export async function parse(
|
|
19
48
|
data: DataType | Promise<DataType>,
|
|
20
49
|
loaders?: Loader | Loader[] | LoaderOptions,
|
|
@@ -32,10 +61,10 @@ export async function parse(
|
|
|
32
61
|
}
|
|
33
62
|
|
|
34
63
|
data = await data; // Resolve any promise
|
|
35
|
-
options = options || {};
|
|
64
|
+
options = options || ({} as LoaderOptions); // Could be invalid...
|
|
36
65
|
|
|
37
66
|
// Extract a url for auto detection
|
|
38
|
-
const
|
|
67
|
+
const url = getResourceUrl(data);
|
|
39
68
|
|
|
40
69
|
// Chooses a loader (and normalizes it)
|
|
41
70
|
// Also use any loaders in the context, new loaders take priority
|
|
@@ -49,10 +78,10 @@ export async function parse(
|
|
|
49
78
|
}
|
|
50
79
|
|
|
51
80
|
// Normalize options
|
|
52
|
-
options = normalizeOptions(options, loader, candidateLoaders, url);
|
|
81
|
+
options = normalizeOptions(options, loader, candidateLoaders, url); // Could be invalid...
|
|
53
82
|
|
|
54
83
|
// Get a context (if already present, will be unchanged)
|
|
55
|
-
context = getLoaderContext({url, parse, loaders: candidateLoaders}, options, context);
|
|
84
|
+
context = getLoaderContext({url, parse, loaders: candidateLoaders}, options, context || null);
|
|
56
85
|
|
|
57
86
|
return await parseWithLoader(loader, data, options, context);
|
|
58
87
|
}
|
|
@@ -62,6 +91,14 @@ export async function parse(
|
|
|
62
91
|
async function parseWithLoader(loader, data, options, context) {
|
|
63
92
|
validateWorkerVersion(loader);
|
|
64
93
|
|
|
94
|
+
if (isResponse(data)) {
|
|
95
|
+
// Serialize to support passing the response to web worker
|
|
96
|
+
const response = data as Response;
|
|
97
|
+
const {ok, redirected, status, statusText, type, url} = response;
|
|
98
|
+
const headers = Object.fromEntries(response.headers.entries());
|
|
99
|
+
context.response = {headers, ok, redirected, status, statusText, type, url};
|
|
100
|
+
}
|
|
101
|
+
|
|
65
102
|
data = await getArrayBufferOrStringFromData(data, loader, options);
|
|
66
103
|
|
|
67
104
|
// First check for synchronous text parser, wrap results in promises
|
|
@@ -11,7 +11,7 @@ const getGlobalLoaderRegistry = () => {
|
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
/** Register a list of global loaders */
|
|
14
|
-
export function registerLoaders(loaders: Loader[]) {
|
|
14
|
+
export function registerLoaders(loaders: Loader[] | Loader) {
|
|
15
15
|
const loaderRegistry = getGlobalLoaderRegistry();
|
|
16
16
|
|
|
17
17
|
loaders = Array.isArray(loaders) ? loaders : [loaders];
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type {LoaderContext, LoaderOptions, Loader} from '@loaders.gl/loader-utils';
|
|
2
2
|
import {compareArrayBuffers, path} from '@loaders.gl/loader-utils';
|
|
3
3
|
import {normalizeLoader} from '../loader-utils/normalize-loader';
|
|
4
|
-
import {
|
|
4
|
+
import {log} from '../utils/log';
|
|
5
|
+
import {getResourceUrl, getResourceMIMEType} from '../utils/resource-utils';
|
|
5
6
|
import {getRegisteredLoaders} from './register-loaders';
|
|
6
7
|
import {isBlob} from '../../javascript-utils/is-type';
|
|
8
|
+
import {stripQueryString} from '../utils/url-utils';
|
|
7
9
|
|
|
8
10
|
const EXT_PATTERN = /\.([^.]+)$/;
|
|
9
11
|
|
|
@@ -103,30 +105,46 @@ export function selectLoaderSync(
|
|
|
103
105
|
}
|
|
104
106
|
|
|
105
107
|
/** Implements loaders selection logic */
|
|
108
|
+
// eslint-disable-next-line complexity
|
|
106
109
|
function selectLoaderInternal(
|
|
107
110
|
data: Response | Blob | ArrayBuffer | string,
|
|
108
111
|
loaders: Loader[],
|
|
109
112
|
options?: LoaderOptions,
|
|
110
113
|
context?: LoaderContext
|
|
111
114
|
) {
|
|
112
|
-
const
|
|
115
|
+
const url = getResourceUrl(data);
|
|
116
|
+
const type = getResourceMIMEType(data);
|
|
113
117
|
|
|
114
|
-
const testUrl = url || context?.url;
|
|
118
|
+
const testUrl = stripQueryString(url) || context?.url;
|
|
115
119
|
|
|
116
120
|
let loader: Loader | null = null;
|
|
121
|
+
let reason: string = '';
|
|
117
122
|
|
|
118
123
|
// if options.mimeType is supplied, it takes precedence
|
|
119
124
|
if (options?.mimeType) {
|
|
120
125
|
loader = findLoaderByMIMEType(loaders, options?.mimeType);
|
|
126
|
+
reason = `match forced by supplied MIME type ${options?.mimeType}`;
|
|
121
127
|
}
|
|
128
|
+
|
|
122
129
|
// Look up loader by url
|
|
123
130
|
loader = loader || findLoaderByUrl(loaders, testUrl);
|
|
131
|
+
reason = reason || (loader ? `matched url ${testUrl}` : '');
|
|
132
|
+
|
|
124
133
|
// Look up loader by mime type
|
|
125
134
|
loader = loader || findLoaderByMIMEType(loaders, type);
|
|
135
|
+
reason = reason || (loader ? `matched MIME type ${type}` : '');
|
|
136
|
+
|
|
126
137
|
// Look for loader via initial bytes (Note: not always accessible (e.g. Response, stream, async iterator)
|
|
127
138
|
loader = loader || findLoaderByInitialBytes(loaders, data);
|
|
139
|
+
reason = reason || (loader ? `matched initial data ${getFirstCharacters(data)}` : '');
|
|
140
|
+
|
|
128
141
|
// Look up loader by fallback mime type
|
|
129
142
|
loader = loader || findLoaderByMIMEType(loaders, options?.fallbackMimeType);
|
|
143
|
+
reason = reason || (loader ? `matched fallback MIME type ${type}` : '');
|
|
144
|
+
|
|
145
|
+
if (reason) {
|
|
146
|
+
log.log(1, `selectLoader selected ${loader?.name}: ${reason}.`);
|
|
147
|
+
}
|
|
130
148
|
|
|
131
149
|
return loader;
|
|
132
150
|
}
|
|
@@ -145,7 +163,8 @@ function validHTTPResponse(data: any): boolean {
|
|
|
145
163
|
|
|
146
164
|
/** Generate a helpful message to help explain why loader selection failed. */
|
|
147
165
|
function getNoValidLoaderMessage(data): string {
|
|
148
|
-
const
|
|
166
|
+
const url = getResourceUrl(data);
|
|
167
|
+
const type = getResourceMIMEType(data);
|
|
149
168
|
|
|
150
169
|
let message = 'No valid loader found (';
|
|
151
170
|
message += url ? `${path.filename(url)}, ` : 'no url provided, ';
|
package/src/lib/init.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
import {log} from './utils/log';
|
|
3
|
+
|
|
4
|
+
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
5
|
+
const version = typeof __VERSION__ !== 'undefined' ? __VERSION__ : '';
|
|
6
|
+
|
|
7
|
+
// @ts-ignore
|
|
8
|
+
if (!globalThis.loaders) {
|
|
9
|
+
log.log(1, `loaders.gl ${version}`)();
|
|
10
|
+
|
|
11
|
+
globalThis.loaders = Object.assign(globalThis.loaders || {}, {
|
|
12
|
+
VERSION: version,
|
|
13
|
+
log
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
export default globalThis.loaders;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
3
|
+
import type {LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';
|
|
4
|
+
import {isObject} from '../../javascript-utils/is-type';
|
|
5
|
+
import {fetchFile} from '../fetch/fetch-file';
|
|
6
|
+
import {getGlobalLoaderOptions} from './option-utils';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Gets the current fetch function from options and context
|
|
10
|
+
* @param options
|
|
11
|
+
* @param context
|
|
12
|
+
*/
|
|
13
|
+
export function getFetchFunction(
|
|
14
|
+
options?: LoaderOptions,
|
|
15
|
+
context?: Omit<LoaderContext, 'fetch'> & Partial<Pick<LoaderContext, 'fetch'>>
|
|
16
|
+
) {
|
|
17
|
+
const globalOptions = getGlobalLoaderOptions();
|
|
18
|
+
|
|
19
|
+
const fetchOptions = options || globalOptions;
|
|
20
|
+
|
|
21
|
+
// options.fetch can be a function
|
|
22
|
+
if (typeof fetchOptions.fetch === 'function') {
|
|
23
|
+
return fetchOptions.fetch;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// options.fetch can be an options object
|
|
27
|
+
if (isObject(fetchOptions.fetch)) {
|
|
28
|
+
return (url) => fetchFile(url, fetchOptions as RequestInit);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// else refer to context (from parent loader) if available
|
|
32
|
+
if (context?.fetch) {
|
|
33
|
+
return context?.fetch;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// else return the default fetch function
|
|
37
|
+
return fetchFile;
|
|
38
|
+
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type {Loader, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';
|
|
2
|
-
import {getFetchFunction} from './
|
|
2
|
+
import {getFetchFunction} from './get-fetch-function';
|
|
3
|
+
import {extractQueryString, stripQueryString} from '../utils/url-utils';
|
|
4
|
+
import {path} from '@loaders.gl/loader-utils';
|
|
3
5
|
|
|
4
6
|
/**
|
|
5
7
|
* "sub" loaders invoked by other loaders get a "context" injected on `this`
|
|
@@ -12,26 +14,35 @@ import {getFetchFunction} from './option-utils';
|
|
|
12
14
|
*/
|
|
13
15
|
export function getLoaderContext(
|
|
14
16
|
context: Omit<LoaderContext, 'fetch'> & Partial<Pick<LoaderContext, 'fetch'>>,
|
|
15
|
-
options
|
|
16
|
-
|
|
17
|
+
options: LoaderOptions,
|
|
18
|
+
parentContext: LoaderContext | null
|
|
17
19
|
): LoaderContext {
|
|
18
20
|
// For recursive calls, we already have a context
|
|
19
21
|
// TODO - add any additional loaders to context?
|
|
20
|
-
if (
|
|
21
|
-
return
|
|
22
|
+
if (parentContext) {
|
|
23
|
+
return parentContext;
|
|
22
24
|
}
|
|
23
25
|
|
|
24
|
-
const
|
|
26
|
+
const newContext: LoaderContext = {
|
|
25
27
|
fetch: getFetchFunction(options, context),
|
|
26
28
|
...context
|
|
27
29
|
};
|
|
28
30
|
|
|
31
|
+
// Parse URLs so that subloaders can easily generate correct strings
|
|
32
|
+
if (newContext.url) {
|
|
33
|
+
const baseUrl = stripQueryString(newContext.url);
|
|
34
|
+
newContext.baseUrl = baseUrl;
|
|
35
|
+
newContext.queryString = extractQueryString(newContext.url);
|
|
36
|
+
newContext.filename = path.filename(baseUrl);
|
|
37
|
+
newContext.baseUrl = path.dirname(baseUrl);
|
|
38
|
+
}
|
|
39
|
+
|
|
29
40
|
// Recursive loading does not use single loader
|
|
30
|
-
if (!Array.isArray(
|
|
31
|
-
|
|
41
|
+
if (!Array.isArray(newContext.loaders)) {
|
|
42
|
+
newContext.loaders = null;
|
|
32
43
|
}
|
|
33
44
|
|
|
34
|
-
return
|
|
45
|
+
return newContext;
|
|
35
46
|
}
|
|
36
47
|
|
|
37
48
|
// eslint-disable-next-line complexity
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type {LoaderOptions} from '@loaders.gl/loader-utils';
|
|
2
|
+
import {isBrowser} from '@loaders.gl/loader-utils';
|
|
2
3
|
import {ConsoleLog} from './loggers';
|
|
3
4
|
|
|
4
5
|
export const DEFAULT_LOADER_OPTIONS: LoaderOptions = {
|
|
@@ -12,7 +13,8 @@ export const DEFAULT_LOADER_OPTIONS: LoaderOptions = {
|
|
|
12
13
|
worker: true, // By default, use worker if provided by loader.
|
|
13
14
|
maxConcurrency: 3, // How many worker instances should be created for each loader.
|
|
14
15
|
maxMobileConcurrency: 1, // How many worker instances should be created for each loader on mobile devices.
|
|
15
|
-
reuseWorkers:
|
|
16
|
+
reuseWorkers: isBrowser, // By default reuse workers in browser (Node.js refuses to terminate if browsers are running)
|
|
17
|
+
_nodeWorkers: false, // By default do not support node workers
|
|
16
18
|
_workerType: '', // 'test' to use locally generated workers
|
|
17
19
|
|
|
18
20
|
limit: 0,
|