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