@loaders.gl/core 4.0.0-alpha.5 → 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.
- package/dist/bundle.js +2 -2
- package/dist/core-addons/write-file-browser.js +59 -1
- package/dist/dist.min.js +855 -404
- 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 +277 -0
- package/dist/es5/lib/api/parse-in-batches.js.map +1 -0
- package/dist/es5/lib/api/parse-sync.js +54 -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 +303 -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 +41 -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 +58 -0
- package/dist/es5/lib/utils/resource-utils.js.map +1 -0
- package/dist/es5/lib/utils/response-utils.js +196 -0
- package/dist/es5/lib/utils/response-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 +85 -0
- package/dist/esm/lib/api/parse-in-batches.js.map +1 -0
- package/dist/esm/lib/api/parse-sync.js +47 -0
- package/dist/esm/lib/api/parse-sync.js.map +1 -0
- package/dist/esm/lib/api/parse.js +76 -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 +204 -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 +30 -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 +51 -0
- package/dist/esm/lib/utils/resource-utils.js.map +1 -0
- package/dist/esm/lib/utils/response-utils.js +91 -0
- package/dist/esm/lib/utils/response-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 +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +108 -29
- package/dist/iterators/batch-iterators/timed-batch-iterator.js +20 -17
- package/dist/iterators/make-iterator/make-array-buffer-iterator.js +25 -16
- package/dist/iterators/make-iterator/make-blob-iterator.js +20 -12
- package/dist/iterators/make-iterator/make-iterator.d.ts +1 -1
- package/dist/iterators/make-iterator/make-iterator.d.ts.map +1 -1
- package/dist/iterators/make-iterator/make-iterator.js +36 -29
- package/dist/iterators/make-iterator/make-stream-iterator.d.ts +1 -1
- package/dist/iterators/make-iterator/make-stream-iterator.d.ts.map +1 -1
- package/dist/iterators/make-iterator/make-stream-iterator.js +89 -32
- package/dist/iterators/make-iterator/make-string-iterator.js +22 -12
- package/dist/iterators/make-stream/make-dom-stream.d.ts +1 -1
- package/dist/iterators/make-stream/make-dom-stream.d.ts.map +1 -1
- package/dist/iterators/make-stream/make-dom-stream.js +44 -32
- package/dist/iterators/make-stream/make-node-stream.d.ts +8 -3
- package/dist/iterators/make-stream/make-node-stream.d.ts.map +1 -1
- package/dist/iterators/make-stream/make-node-stream.js +75 -67
- package/dist/javascript-utils/is-type.d.ts +1 -1
- package/dist/javascript-utils/is-type.d.ts.map +1 -1
- 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 +5 -5
- package/dist/lib/api/encode.d.ts.map +1 -1
- package/dist/lib/api/encode.js +111 -81
- package/dist/lib/api/load-in-batches.d.ts +1 -1
- package/dist/lib/api/load-in-batches.d.ts.map +1 -1
- package/dist/lib/api/load-in-batches.js +30 -27
- package/dist/lib/api/load.d.ts +3 -1
- package/dist/lib/api/load.d.ts.map +1 -1
- 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.js +113 -92
- package/dist/lib/api/parse-sync.js +56 -54
- package/dist/lib/api/parse.d.ts +4 -8
- package/dist/lib/api/parse.d.ts.map +1 -1
- package/dist/lib/api/parse.js +81 -61
- package/dist/lib/api/register-loaders.d.ts +1 -1
- package/dist/lib/api/register-loaders.d.ts.map +1 -1
- package/dist/lib/api/register-loaders.js +29 -23
- package/dist/lib/api/save.js +13 -9
- package/dist/lib/api/select-loader.d.ts.map +1 -1
- package/dist/lib/api/select-loader.js +216 -194
- package/dist/lib/common.js +2 -2
- package/dist/lib/fetch/fetch-error-message.js +21 -17
- package/dist/lib/fetch/fetch-file.js +25 -15
- package/dist/lib/fetch/read-array-buffer.js +39 -27
- package/dist/lib/fetch/read-file.js +28 -16
- package/dist/lib/fetch/write-file.js +20 -23
- package/dist/lib/filesystems/browser-filesystem.d.ts +1 -1
- package/dist/lib/filesystems/browser-filesystem.d.ts.map +1 -1
- package/dist/lib/filesystems/browser-filesystem.js +118 -107
- package/dist/lib/filesystems/filesystem.d.ts +2 -2
- package/dist/lib/filesystems/filesystem.d.ts.map +1 -1
- package/dist/lib/filesystems/filesystem.js +2 -2
- package/dist/lib/filesystems/read-array-buffer.js +28 -8
- package/dist/lib/init.d.ts.map +1 -1
- package/dist/lib/init.js +16 -6
- package/dist/lib/loader-utils/check-errors.js +26 -22
- 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.js +47 -34
- package/dist/lib/loader-utils/loggers.d.ts +2 -1
- package/dist/lib/loader-utils/loggers.d.ts.map +1 -1
- package/dist/lib/loader-utils/loggers.js +39 -46
- package/dist/lib/loader-utils/normalize-loader.js +50 -41
- package/dist/lib/loader-utils/option-defaults.d.ts.map +1 -1
- package/dist/lib/loader-utils/option-defaults.js +41 -35
- package/dist/lib/loader-utils/option-utils.d.ts +11 -13
- package/dist/lib/loader-utils/option-utils.d.ts.map +1 -1
- package/dist/lib/loader-utils/option-utils.js +140 -120
- 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.js +38 -17
- package/dist/lib/utils/resource-utils.js +70 -52
- package/dist/lib/utils/response-utils.js +104 -105
- package/dist/null-loader.d.ts.map +1 -1
- package/dist/null-loader.js +53 -31
- package/dist/null-worker.js +61 -21
- package/dist/workers/null-worker.js +5 -4
- package/package.json +8 -8
- package/src/index.ts +19 -1
- package/src/iterators/make-stream/make-dom-stream.ts +1 -1
- package/src/iterators/make-stream/make-node-stream.ts +8 -2
- 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.ts +39 -2
- package/src/lib/api/register-loaders.ts +1 -1
- package/src/lib/api/select-loader.ts +16 -0
- package/src/lib/init.ts +10 -3
- package/src/lib/loader-utils/get-fetch-function.ts +38 -0
- package/src/lib/loader-utils/loader-context.ts +1 -1
- 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/response-utils.ts +2 -2
- 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/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.d.ts +0 -6
- package/dist/lib/api/set-loader-options.d.ts.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/lib/api/set-loader-options.ts +0 -9
- /package/dist/{core-addons → es5/core-addons}/README.md +0 -0
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/
|
|
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
|
|
|
@@ -24,7 +24,6 @@ export function makeStream<ArrayBuffer>(
|
|
|
24
24
|
// Create a byte stream (enables `Response(stream).arrayBuffer()`)
|
|
25
25
|
// Only supported on Chrome
|
|
26
26
|
// See: https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController
|
|
27
|
-
// @ts-expect-error Only Chrome supports byte streams
|
|
28
27
|
type: 'bytes',
|
|
29
28
|
|
|
30
29
|
async pull(controller) {
|
|
@@ -34,6 +33,7 @@ export function makeStream<ArrayBuffer>(
|
|
|
34
33
|
controller.close();
|
|
35
34
|
} else {
|
|
36
35
|
// TODO - ignores controller.desiredSize
|
|
36
|
+
// @ts-expect-error Unclear why value is not correctly typed
|
|
37
37
|
controller.enqueue(new Uint8Array(value));
|
|
38
38
|
}
|
|
39
39
|
} catch (error) {
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type {ReadableOptions} from 'stream';
|
|
2
|
+
import * as Stream from 'stream';
|
|
3
|
+
|
|
4
|
+
class _Readable {}
|
|
5
|
+
|
|
6
|
+
type ReadableType = Stream.Readable | _Readable;
|
|
7
|
+
const Readable = Stream.Readable || _Readable;
|
|
2
8
|
|
|
3
9
|
export type MakeStreamOptions = ReadableOptions;
|
|
4
10
|
|
|
@@ -6,7 +12,7 @@ export type MakeStreamOptions = ReadableOptions;
|
|
|
6
12
|
export function makeStream<ArrayBuffer>(
|
|
7
13
|
source: Iterable<ArrayBuffer> | AsyncIterable<ArrayBuffer>,
|
|
8
14
|
options?: ReadableOptions
|
|
9
|
-
):
|
|
15
|
+
): ReadableType {
|
|
10
16
|
const iterator = source[Symbol.asyncIterator]
|
|
11
17
|
? source[Symbol.asyncIterator]()
|
|
12
18
|
: source[Symbol.iterator]();
|
|
@@ -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,
|
|
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
|
}
|
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
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];
|
|
@@ -1,6 +1,7 @@
|
|
|
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 {log} from '../utils/log';
|
|
4
5
|
import {getResourceUrlAndType} from '../utils/resource-utils';
|
|
5
6
|
import {getRegisteredLoaders} from './register-loaders';
|
|
6
7
|
import {isBlob} from '../../javascript-utils/is-type';
|
|
@@ -103,6 +104,7 @@ export function selectLoaderSync(
|
|
|
103
104
|
}
|
|
104
105
|
|
|
105
106
|
/** Implements loaders selection logic */
|
|
107
|
+
// eslint-disable-next-line complexity
|
|
106
108
|
function selectLoaderInternal(
|
|
107
109
|
data: Response | Blob | ArrayBuffer | string,
|
|
108
110
|
loaders: Loader[],
|
|
@@ -114,19 +116,33 @@ function selectLoaderInternal(
|
|
|
114
116
|
const testUrl = url || context?.url;
|
|
115
117
|
|
|
116
118
|
let loader: Loader | null = null;
|
|
119
|
+
let reason: string = '';
|
|
117
120
|
|
|
118
121
|
// if options.mimeType is supplied, it takes precedence
|
|
119
122
|
if (options?.mimeType) {
|
|
120
123
|
loader = findLoaderByMIMEType(loaders, options?.mimeType);
|
|
124
|
+
reason = `match forced by supplied MIME type ${options?.mimeType}`;
|
|
121
125
|
}
|
|
126
|
+
|
|
122
127
|
// Look up loader by url
|
|
123
128
|
loader = loader || findLoaderByUrl(loaders, testUrl);
|
|
129
|
+
reason = reason || (loader ? `matched url ${testUrl}` : '');
|
|
130
|
+
|
|
124
131
|
// Look up loader by mime type
|
|
125
132
|
loader = loader || findLoaderByMIMEType(loaders, type);
|
|
133
|
+
reason = reason || (loader ? `matched MIME type ${type}` : '');
|
|
134
|
+
|
|
126
135
|
// Look for loader via initial bytes (Note: not always accessible (e.g. Response, stream, async iterator)
|
|
127
136
|
loader = loader || findLoaderByInitialBytes(loaders, data);
|
|
137
|
+
reason = reason || (loader ? `matched initial data ${getFirstCharacters(data)}` : '');
|
|
138
|
+
|
|
128
139
|
// Look up loader by fallback mime type
|
|
129
140
|
loader = loader || findLoaderByMIMEType(loaders, options?.fallbackMimeType);
|
|
141
|
+
reason = reason || (loader ? `matched fallback MIME type ${type}` : '');
|
|
142
|
+
|
|
143
|
+
if (reason) {
|
|
144
|
+
log.log(1, `selectLoader selected ${loader?.name}: ${reason}.`);
|
|
145
|
+
}
|
|
130
146
|
|
|
131
147
|
return loader;
|
|
132
148
|
}
|
package/src/lib/init.ts
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
import {log} from './utils/log';
|
|
3
|
+
|
|
1
4
|
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
2
5
|
const version = typeof __VERSION__ !== 'undefined' ? __VERSION__ : '';
|
|
3
6
|
|
|
4
7
|
// @ts-ignore
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
});
|
|
8
|
+
if (!globalThis.loaders) {
|
|
9
|
+
log.log(1, `loaders.gl ${version}`)();
|
|
8
10
|
|
|
11
|
+
globalThis.loaders = Object.assign(globalThis.loaders || {}, {
|
|
12
|
+
VERSION: version,
|
|
13
|
+
log
|
|
14
|
+
});
|
|
15
|
+
}
|
|
9
16
|
// @ts-ignore
|
|
10
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,5 @@
|
|
|
1
1
|
import type {Loader, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';
|
|
2
|
-
import {getFetchFunction} from './
|
|
2
|
+
import {getFetchFunction} from './get-fetch-function';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* "sub" loaders invoked by other loaders get a "context" injected on `this`
|
|
@@ -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,
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
3
|
+
import type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';
|
|
2
4
|
import {isPureObject, isObject} from '../../javascript-utils/is-type';
|
|
3
|
-
import {fetchFile} from '../fetch/fetch-file';
|
|
4
5
|
import {probeLog, NullLog} from './loggers';
|
|
5
6
|
import {DEFAULT_LOADER_OPTIONS, REMOVED_LOADER_OPTIONS} from './option-defaults';
|
|
7
|
+
|
|
6
8
|
/**
|
|
7
9
|
* Global state for loaders.gl. Stored on `global.loaders._state`
|
|
8
10
|
*/
|
|
9
11
|
type GlobalLoaderState = {
|
|
10
12
|
loaderRegistry: Loader[];
|
|
11
|
-
globalOptions:
|
|
13
|
+
globalOptions: LoaderOptions;
|
|
12
14
|
};
|
|
13
15
|
|
|
14
16
|
/**
|
|
@@ -26,9 +28,12 @@ export function getGlobalLoaderState(): GlobalLoaderState {
|
|
|
26
28
|
return loaders._state;
|
|
27
29
|
}
|
|
28
30
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Store global loader options on the global object to increase chances of cross loaders-version interoperability
|
|
33
|
+
* NOTE: This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks
|
|
34
|
+
* @returns global loader options merged with default loader options
|
|
35
|
+
*/
|
|
36
|
+
export const getGlobalLoaderOptions = (): LoaderOptions => {
|
|
32
37
|
const state = getGlobalLoaderState();
|
|
33
38
|
// Ensure all default loader options from this library are mentioned
|
|
34
39
|
state.globalOptions = state.globalOptions || {...DEFAULT_LOADER_OPTIONS};
|
|
@@ -39,7 +44,7 @@ const getGlobalLoaderOptions = () => {
|
|
|
39
44
|
* Set global loader options
|
|
40
45
|
* @param options
|
|
41
46
|
*/
|
|
42
|
-
export function setGlobalOptions(options:
|
|
47
|
+
export function setGlobalOptions(options: LoaderOptions): void {
|
|
43
48
|
const state = getGlobalLoaderState();
|
|
44
49
|
const globalOptions = getGlobalLoaderOptions();
|
|
45
50
|
state.globalOptions = normalizeOptionsInternal(globalOptions, options);
|
|
@@ -53,11 +58,11 @@ export function setGlobalOptions(options: object): void {
|
|
|
53
58
|
* @param url
|
|
54
59
|
*/
|
|
55
60
|
export function normalizeOptions(
|
|
56
|
-
options:
|
|
61
|
+
options: LoaderOptions,
|
|
57
62
|
loader: Loader,
|
|
58
63
|
loaders?: Loader[],
|
|
59
64
|
url?: string
|
|
60
|
-
):
|
|
65
|
+
): LoaderOptions {
|
|
61
66
|
loaders = loaders || [];
|
|
62
67
|
loaders = Array.isArray(loaders) ? loaders : [loaders];
|
|
63
68
|
|
|
@@ -65,38 +70,6 @@ export function normalizeOptions(
|
|
|
65
70
|
return normalizeOptionsInternal(loader, options, url);
|
|
66
71
|
}
|
|
67
72
|
|
|
68
|
-
/**
|
|
69
|
-
* Gets the current fetch function from options and context
|
|
70
|
-
* @param options
|
|
71
|
-
* @param context
|
|
72
|
-
*/
|
|
73
|
-
export function getFetchFunction(
|
|
74
|
-
options?: LoaderOptions,
|
|
75
|
-
context?: Omit<LoaderContext, 'fetch'> & Partial<Pick<LoaderContext, 'fetch'>>
|
|
76
|
-
) {
|
|
77
|
-
const globalOptions = getGlobalLoaderOptions();
|
|
78
|
-
|
|
79
|
-
const fetchOptions = options || globalOptions;
|
|
80
|
-
|
|
81
|
-
// options.fetch can be a function
|
|
82
|
-
if (typeof fetchOptions.fetch === 'function') {
|
|
83
|
-
return fetchOptions.fetch;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// options.fetch can be an options object
|
|
87
|
-
if (isObject(fetchOptions.fetch)) {
|
|
88
|
-
return (url) => fetchFile(url, fetchOptions);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
// else refer to context (from parent loader) if available
|
|
92
|
-
if (context?.fetch) {
|
|
93
|
-
return context?.fetch;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// else return the default fetch function
|
|
97
|
-
return fetchFile;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
73
|
// VALIDATE OPTIONS
|
|
101
74
|
|
|
102
75
|
/**
|
|
@@ -211,11 +184,14 @@ function mergeNestedFields(mergedOptions, options) {
|
|
|
211
184
|
}
|
|
212
185
|
}
|
|
213
186
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
187
|
+
/**
|
|
188
|
+
* Harvest information from the url
|
|
189
|
+
* @deprecated This is mainly there to support a hack in the GLTFLoader
|
|
190
|
+
* TODO - baseUri should be a directory, i.e. remove file component from baseUri
|
|
191
|
+
* TODO - extract extension?
|
|
192
|
+
* TODO - extract query parameters?
|
|
193
|
+
* TODO - should these be injected on context instead of options?
|
|
194
|
+
*/
|
|
219
195
|
function addUrlOptions(options, url?: string) {
|
|
220
196
|
if (url && !('baseUri' in options)) {
|
|
221
197
|
options.baseUri = url;
|
|
@@ -20,8 +20,8 @@ export default async function fetchProgress(
|
|
|
20
20
|
return response;
|
|
21
21
|
}
|
|
22
22
|
const contentLength = response.headers.get('content-length') || 0;
|
|
23
|
-
const totalBytes = contentLength
|
|
24
|
-
if (!(
|
|
23
|
+
const totalBytes = contentLength ? parseInt(contentLength) : 0;
|
|
24
|
+
if (!(totalBytes > 0)) {
|
|
25
25
|
return response;
|
|
26
26
|
}
|
|
27
27
|
// Currently override only implemented in browser
|