@loaders.gl/polyfills 4.2.0-alpha.4 → 4.2.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/buffer/btoa.node.js +5 -3
  2. package/dist/buffer/to-array-buffer.node.js +6 -6
  3. package/dist/crypto/node-hash.js +41 -45
  4. package/dist/fetch/decode-data-uri.js +56 -41
  5. package/dist/fetch/fetch-polyfill.d.ts +1 -1
  6. package/dist/fetch/fetch-polyfill.d.ts.map +1 -1
  7. package/dist/fetch/fetch-polyfill.js +118 -103
  8. package/dist/fetch/headers-polyfill.js +90 -89
  9. package/dist/fetch/response-polyfill.d.ts +1 -1
  10. package/dist/fetch/response-polyfill.d.ts.map +1 -1
  11. package/dist/fetch/response-polyfill.js +65 -57
  12. package/dist/fetch/utils/decode-data-uri.node.js +56 -41
  13. package/dist/file/blob-stream-controller.js +54 -38
  14. package/dist/file/blob-stream.d.ts +1 -1
  15. package/dist/file/blob-stream.d.ts.map +1 -1
  16. package/dist/file/blob-stream.js +29 -15
  17. package/dist/file/blob.d.ts +1 -1
  18. package/dist/file/blob.d.ts.map +1 -1
  19. package/dist/file/blob.js +146 -109
  20. package/dist/file/file-reader.js +22 -50
  21. package/dist/file/file.js +30 -15
  22. package/dist/file/install-blob-polyfills.js +6 -5
  23. package/dist/file/install-file-polyfills.js +11 -8
  24. package/dist/file/readable-stream.js +5 -2
  25. package/dist/filesystems/fetch-node.js +78 -68
  26. package/dist/filesystems/node-file.js +119 -87
  27. package/dist/filesystems/node-filesystem.d.ts +1 -1
  28. package/dist/filesystems/node-filesystem.d.ts.map +1 -1
  29. package/dist/filesystems/node-filesystem.js +39 -35
  30. package/dist/filesystems/stream-utils.node.js +88 -55
  31. package/dist/images/encode-image-node.js +25 -12
  32. package/dist/images/encode-image.node.js +25 -12
  33. package/dist/images/parse-image-node.js +30 -23
  34. package/dist/images/parse-image.node.js +30 -23
  35. package/dist/index.browser.js +8 -3
  36. package/dist/index.cjs +13 -65091
  37. package/dist/index.cjs.map +7 -0
  38. package/dist/index.d.ts +4 -4
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +45 -15
  41. package/dist/libs/encoding-indexes-asian.js +6 -7
  42. package/dist/load-library/require-utils.node.js +70 -44
  43. package/dist/streams/make-node-stream.js +48 -46
  44. package/dist/text-encoder/encoding-indexes.js +31 -28
  45. package/dist/text-encoder/text-encoder.js +2604 -1033
  46. package/dist/utils/assert.js +3 -4
  47. package/dist/utils/is-browser.js +7 -2
  48. package/package.json +10 -8
  49. package/dist/buffer/btoa.node.js.map +0 -1
  50. package/dist/buffer/to-array-buffer.node.js.map +0 -1
  51. package/dist/crypto/node-hash.js.map +0 -1
  52. package/dist/dist.dev.js +0 -45
  53. package/dist/fetch/decode-data-uri.js.map +0 -1
  54. package/dist/fetch/fetch-polyfill.js.map +0 -1
  55. package/dist/fetch/headers-polyfill.js.map +0 -1
  56. package/dist/fetch/response-polyfill.js.map +0 -1
  57. package/dist/fetch/utils/decode-data-uri.node.js.map +0 -1
  58. package/dist/file/blob-stream-controller.js.map +0 -1
  59. package/dist/file/blob-stream.js.map +0 -1
  60. package/dist/file/blob.js.map +0 -1
  61. package/dist/file/file-reader.js.map +0 -1
  62. package/dist/file/file.js.map +0 -1
  63. package/dist/file/install-blob-polyfills.js.map +0 -1
  64. package/dist/file/install-file-polyfills.js.map +0 -1
  65. package/dist/file/readable-stream.js.map +0 -1
  66. package/dist/filesystems/fetch-node.js.map +0 -1
  67. package/dist/filesystems/node-file.js.map +0 -1
  68. package/dist/filesystems/node-filesystem.js.map +0 -1
  69. package/dist/filesystems/stream-utils.node.js.map +0 -1
  70. package/dist/images/encode-image-node.js.map +0 -1
  71. package/dist/images/encode-image.node.js.map +0 -1
  72. package/dist/images/parse-image-node.js.map +0 -1
  73. package/dist/images/parse-image.node.js.map +0 -1
  74. package/dist/index.browser.js.map +0 -1
  75. package/dist/index.js.map +0 -1
  76. package/dist/load-library/require-utils.node.js.map +0 -1
  77. package/dist/streams/make-node-stream.js.map +0 -1
  78. package/dist/text-encoder/encoding-indexes.js.map +0 -1
  79. package/dist/text-encoder/text-encoder.js.map +0 -1
  80. package/dist/utils/assert.js.map +0 -1
  81. package/dist/utils/is-browser.js.map +0 -1
@@ -1,6 +1,5 @@
1
1
  export function assert(condition, message) {
2
- if (!condition) {
3
- throw new Error(`@loaders.gl/polyfills assertion ${message}`);
4
- }
2
+ if (!condition) {
3
+ throw new Error(`@loaders.gl/polyfills assertion ${message}`);
4
+ }
5
5
  }
6
- //# sourceMappingURL=assert.js.map
@@ -1,2 +1,7 @@
1
- export const isBrowser = typeof process !== 'object' || String(process) !== '[object process]' || process.browser;
2
- //# sourceMappingURL=is-browser.js.map
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ /* eslint-disable no-restricted-globals */
5
+ export const isBrowser =
6
+ // @ts-ignore process.browser
7
+ typeof process !== 'object' || String(process) !== '[object process]' || process.browser;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/polyfills",
3
- "version": "4.2.0-alpha.4",
3
+ "version": "4.2.0-alpha.5",
4
4
  "description": "Polyfills for TextEncoder/TextDecoder",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -40,14 +40,13 @@
40
40
  "./dist/index.js": "./dist/index.browser.js"
41
41
  },
42
42
  "scripts": {
43
- "pre-build": "npm run build-bundle && npm run build-bundle -- --env=dev && npm run build-node-bundle",
44
- "build-bundle": "ocular-bundle ./src/index.ts",
45
- "build-node-bundle": "esbuild src/index.ts --outfile=dist/index.cjs --bundle --platform=node --target=node16 --define:__VERSION__=\\\"$npm_package_version\\\""
43
+ "pre-build": "npm run build-bundle && npm run build-bundle-dev",
44
+ "build-bundle": "# ocular-bundle ./bundle.ts --output=dist/dist.min.js",
45
+ "build-bundle-dev": "# ocular-bundle ./bundle.ts --env=dev --output=dist/dist.dev.js"
46
46
  },
47
47
  "dependencies": {
48
- "@babel/runtime": "^7.3.1",
49
- "@loaders.gl/crypto": "4.2.0-alpha.4",
50
- "@loaders.gl/loader-utils": "4.2.0-alpha.4",
48
+ "@loaders.gl/crypto": "4.2.0-alpha.5",
49
+ "@loaders.gl/loader-utils": "4.2.0-alpha.5",
51
50
  "buffer": "^6.0.3",
52
51
  "get-pixels": "^3.3.3",
53
52
  "ndarray": "^1.0.19",
@@ -56,5 +55,8 @@
56
55
  "through": "^2.3.8",
57
56
  "web-streams-polyfill": "^3.2.1"
58
57
  },
59
- "gitHead": "6c52dee5c3f005648a394cc4aee7fc37005c8e83"
58
+ "peerDependencies": {
59
+ "@loaders.gl/core": "^4.0.0"
60
+ },
61
+ "gitHead": "32d95a81971f104e4dfeb88ab57065f05321a76a"
60
62
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"btoa.node.js","names":["atob","string","Buffer","from","toString","btoa","base64"],"sources":["../../src/buffer/btoa.node.ts"],"sourcesContent":["// btoa, atob polyfills for Node.js\n// Note: The atob and btoa functions (not just the polyfills!) are not unicode safe\n// But still useful for unit testing\n\nexport function atob(string) {\n return Buffer.from(string).toString('base64');\n}\n\nexport function btoa(base64) {\n return Buffer.from(base64, 'base64').toString('ascii');\n}\n"],"mappings":"AAIA,OAAO,SAASA,IAAIA,CAACC,MAAM,EAAE;EAC3B,OAAOC,MAAM,CAACC,IAAI,CAACF,MAAM,CAAC,CAACG,QAAQ,CAAC,QAAQ,CAAC;AAC/C;AAEA,OAAO,SAASC,IAAIA,CAACC,MAAM,EAAE;EAC3B,OAAOJ,MAAM,CAACC,IAAI,CAACG,MAAM,EAAE,QAAQ,CAAC,CAACF,QAAQ,CAAC,OAAO,CAAC;AACxD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"to-array-buffer.node.js","names":["bufferToArrayBuffer","buffer","Buffer","isBuffer","typedArray","Uint8Array"],"sources":["../../src/buffer/to-array-buffer.node.ts"],"sourcesContent":["export function bufferToArrayBuffer(buffer) {\n // TODO - per docs we should just be able to call buffer.buffer, but there are issues\n if (Buffer.isBuffer(buffer)) {\n const typedArray = new Uint8Array(buffer);\n return typedArray.buffer;\n }\n return buffer;\n}\n"],"mappings":"AAAA,OAAO,SAASA,mBAAmBA,CAACC,MAAM,EAAE;EAE1C,IAAIC,MAAM,CAACC,QAAQ,CAACF,MAAM,CAAC,EAAE;IAC3B,MAAMG,UAAU,GAAG,IAAIC,UAAU,CAACJ,MAAM,CAAC;IACzC,OAAOG,UAAU,CAACH,MAAM;EAC1B;EACA,OAAOA,MAAM;AACf"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-hash.js","names":["Hash","crypto","NodeHash","constructor","options","_this$options","_this$options$crypto","name","_algorithm","_hash","algorithm","Error","hash","input","encoding","_this$options2","_this$options2$crypto","_this$options2$crypto2","toLowerCase","_crypto$createHash","createHash","call","inputArray","Uint8Array","update","digest","error","hashBatches","asyncIterator","_this","arguments","length","undefined","_crypto$createHash2","_this$options3","_this$options3$crypto","_this$options3$crypto2","_this$options4","_this$options4$crypto","_this$options4$crypto2","chunk","onEnd","e","Promise","reject"],"sources":["../../src/crypto/node-hash.ts"],"sourcesContent":["// This dependency is too big, application must provide it\nimport {Hash} from '@loaders.gl/crypto';\nimport * as crypto from 'crypto'; // Node.js builtin\n\ntype CryptoHashOptions = {\n crypto: {\n algorithm: string;\n onEnd?: (result: {hash: string}) => any;\n };\n};\n\n/**\n * Calculates Cryptographic Hash using Node.js crypto library\n * @deprecated Warning, experimental class\n */\nexport class NodeHash extends Hash {\n readonly name = 'crypto-node';\n\n options: CryptoHashOptions;\n // @ts-ignore\n private _algorithm;\n // @ts-ignore\n private _hash;\n\n constructor(options: CryptoHashOptions) {\n super();\n this.options = options;\n if (!this.options?.crypto?.algorithm) {\n throw new Error(this.name);\n }\n }\n\n /**\n * Atomic hash calculation\n * @returns base64 encoded hash\n */\n async hash(input: ArrayBuffer, encoding: 'hex' | 'base64'): Promise<string> {\n // await this.preload();\n const algorithm = this.options?.crypto?.algorithm?.toLowerCase();\n try {\n if (!crypto.createHash) {\n throw new Error('crypto.createHash not available');\n }\n const hash = crypto.createHash?.(algorithm);\n const inputArray = new Uint8Array(input);\n return hash.update(inputArray).digest('base64');\n } catch (error) {\n throw Error(`${algorithm} hash not available. ${error}`);\n }\n }\n\n async *hashBatches(\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n encoding: 'hex' | 'base64' = 'base64'\n ): AsyncIterable<ArrayBuffer> {\n // await this.preload();\n if (!crypto.createHash) {\n throw new Error('crypto.createHash not available');\n }\n const hash = crypto.createHash?.(this.options?.crypto?.algorithm?.toLowerCase());\n for await (const chunk of asyncIterator) {\n // https://stackoverflow.com/questions/25567468/how-to-decrypt-an-arraybuffer\n const inputArray = new Uint8Array(chunk);\n hash.update(inputArray);\n yield chunk;\n }\n // We can pass our encoding constant directly to Node.js digest as it already supports `hex` and `base64`\n const digest = hash.digest(encoding);\n this.options?.crypto?.onEnd?.({hash: digest});\n }\n}\n"],"mappings":"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"}
package/dist/dist.dev.js DELETED
@@ -1,45 +0,0 @@
1
- (function webpackUniversalModuleDefinition(root, factory) {
2
- if (typeof exports === 'object' && typeof module === 'object')
3
- module.exports = factory();
4
- else if (typeof define === 'function' && define.amd) define([], factory);
5
- else if (typeof exports === 'object') exports['loader'] = factory();
6
- else root['loader'] = factory();})(globalThis, function () {
7
- "use strict";
8
- var __exports__ = (() => {
9
- var __defProp = Object.defineProperty;
10
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11
- var __getOwnPropNames = Object.getOwnPropertyNames;
12
- var __hasOwnProp = Object.prototype.hasOwnProperty;
13
- var __export = (target, all) => {
14
- for (var name in all)
15
- __defProp(target, name, { get: all[name], enumerable: true });
16
- };
17
- var __copyProps = (to, from, except, desc) => {
18
- if (from && typeof from === "object" || typeof from === "function") {
19
- for (let key of __getOwnPropNames(from))
20
- if (!__hasOwnProp.call(to, key) && key !== except)
21
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
22
- }
23
- return to;
24
- };
25
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
26
-
27
- // src/index.browser.ts
28
- var index_browser_exports = {};
29
- __export(index_browser_exports, {
30
- NodeFileSystem: () => NodeFileSystem,
31
- fetchNode: () => fetchNode,
32
- installFilePolyfills: () => installFilePolyfills
33
- });
34
- function installFilePolyfills() {
35
- }
36
- var NodeFileSystem = null;
37
- function fetchNode(path, options) {
38
- throw new Error("fetchNode not available in browser");
39
- }
40
- globalThis.process = globalThis.process || {};
41
- globalThis.process.env = globalThis.process.env || {};
42
- return __toCommonJS(index_browser_exports);
43
- })();
44
- return __exports__;
45
- });
@@ -1 +0,0 @@
1
- {"version":3,"file":"decode-data-uri.js","names":["isArrayBuffer","x","ArrayBuffer","isBuffer","Buffer","decodeDataUri","uri","dataIndex","indexOf","buffer","mimeType","slice","from","trim","decodeURIComponent","startsWith","arrayBuffer","toArrayBuffer","data","typedArray","Uint8Array","isView","text","uint8Array","TextEncoder","encode","_toArrayBuffer","Error","JSON","stringify"],"sources":["../../src/fetch/decode-data-uri.ts"],"sourcesContent":["// Based on binary-gltf-utils under MIT license: Copyright (c) 2016-17 Karl Cheng\n\nconst isArrayBuffer = (x) => x && x instanceof ArrayBuffer;\nconst isBuffer = (x) => x && x instanceof Buffer;\n\n/**\n * Parses a data URI into a buffer, as well as retrieving its declared MIME type.\n *\n * @param {string} uri - a data URI (assumed to be valid)\n * @returns {Object} { buffer, mimeType }\n */\nexport function decodeDataUri(uri: string): {arrayBuffer: ArrayBuffer; mimeType: string} {\n const dataIndex = uri.indexOf(',');\n\n let buffer;\n let mimeType;\n if (uri.slice(dataIndex - 7, dataIndex) === ';base64') {\n buffer = Buffer.from(uri.slice(dataIndex + 1), 'base64');\n mimeType = uri.slice(5, dataIndex - 7).trim();\n } else {\n buffer = Buffer.from(decodeURIComponent(uri.slice(dataIndex + 1)));\n mimeType = uri.slice(5, dataIndex).trim();\n }\n\n if (!mimeType) {\n mimeType = 'text/plain;charset=US-ASCII';\n } else if (mimeType.startsWith(';')) {\n mimeType = `text/plain${mimeType}`;\n }\n\n return {arrayBuffer: toArrayBuffer(buffer), mimeType};\n}\n\n/**\n * @param data\n * @todo Duplicate of core\n */\nexport function toArrayBuffer(data: unknown): ArrayBuffer {\n if (isArrayBuffer(data)) {\n return data as ArrayBuffer;\n }\n\n // TODO - per docs we should just be able to call buffer.buffer, but there are issues\n if (isBuffer(data)) {\n // @ts-expect-error\n const typedArray = new Uint8Array(data);\n return typedArray.buffer;\n }\n\n // Careful - Node Buffers will look like ArrayBuffers (keep after isBuffer)\n if (ArrayBuffer.isView(data)) {\n return data.buffer;\n }\n\n if (typeof data === 'string') {\n const text = data;\n const uint8Array = new TextEncoder().encode(text);\n return uint8Array.buffer;\n }\n\n // HACK to support Blob polyfill\n // @ts-expect-error\n if (data && typeof data === 'object' && data._toArrayBuffer) {\n // @ts-expect-error\n return data._toArrayBuffer();\n }\n\n throw new Error(`toArrayBuffer(${JSON.stringify(data, null, 2).slice(10)})`);\n}\n"],"mappings":"AAEA,MAAMA,aAAa,GAAIC,CAAC,IAAKA,CAAC,IAAIA,CAAC,YAAYC,WAAW;AAC1D,MAAMC,QAAQ,GAAIF,CAAC,IAAKA,CAAC,IAAIA,CAAC,YAAYG,MAAM;AAQhD,OAAO,SAASC,aAAaA,CAACC,GAAW,EAAgD;EACvF,MAAMC,SAAS,GAAGD,GAAG,CAACE,OAAO,CAAC,GAAG,CAAC;EAElC,IAAIC,MAAM;EACV,IAAIC,QAAQ;EACZ,IAAIJ,GAAG,CAACK,KAAK,CAACJ,SAAS,GAAG,CAAC,EAAEA,SAAS,CAAC,KAAK,SAAS,EAAE;IACrDE,MAAM,GAAGL,MAAM,CAACQ,IAAI,CAACN,GAAG,CAACK,KAAK,CAACJ,SAAS,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;IACxDG,QAAQ,GAAGJ,GAAG,CAACK,KAAK,CAAC,CAAC,EAAEJ,SAAS,GAAG,CAAC,CAAC,CAACM,IAAI,CAAC,CAAC;EAC/C,CAAC,MAAM;IACLJ,MAAM,GAAGL,MAAM,CAACQ,IAAI,CAACE,kBAAkB,CAACR,GAAG,CAACK,KAAK,CAACJ,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;IAClEG,QAAQ,GAAGJ,GAAG,CAACK,KAAK,CAAC,CAAC,EAAEJ,SAAS,CAAC,CAACM,IAAI,CAAC,CAAC;EAC3C;EAEA,IAAI,CAACH,QAAQ,EAAE;IACbA,QAAQ,GAAG,6BAA6B;EAC1C,CAAC,MAAM,IAAIA,QAAQ,CAACK,UAAU,CAAC,GAAG,CAAC,EAAE;IACnCL,QAAQ,GAAI,aAAYA,QAAS,EAAC;EACpC;EAEA,OAAO;IAACM,WAAW,EAAEC,aAAa,CAACR,MAAM,CAAC;IAAEC;EAAQ,CAAC;AACvD;AAMA,OAAO,SAASO,aAAaA,CAACC,IAAa,EAAe;EACxD,IAAIlB,aAAa,CAACkB,IAAI,CAAC,EAAE;IACvB,OAAOA,IAAI;EACb;EAGA,IAAIf,QAAQ,CAACe,IAAI,CAAC,EAAE;IAElB,MAAMC,UAAU,GAAG,IAAIC,UAAU,CAACF,IAAI,CAAC;IACvC,OAAOC,UAAU,CAACV,MAAM;EAC1B;EAGA,IAAIP,WAAW,CAACmB,MAAM,CAACH,IAAI,CAAC,EAAE;IAC5B,OAAOA,IAAI,CAACT,MAAM;EACpB;EAEA,IAAI,OAAOS,IAAI,KAAK,QAAQ,EAAE;IAC5B,MAAMI,IAAI,GAAGJ,IAAI;IACjB,MAAMK,UAAU,GAAG,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAACH,IAAI,CAAC;IACjD,OAAOC,UAAU,CAACd,MAAM;EAC1B;EAIA,IAAIS,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAIA,IAAI,CAACQ,cAAc,EAAE;IAE3D,OAAOR,IAAI,CAACQ,cAAc,CAAC,CAAC;EAC9B;EAEA,MAAM,IAAIC,KAAK,CAAE,iBAAgBC,IAAI,CAACC,SAAS,CAACX,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAACP,KAAK,CAAC,EAAE,CAAE,GAAE,CAAC;AAC9E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetch-polyfill.js","names":["http","https","Response","Headers","decodeDataUri","isDataURL","url","startsWith","isRequestURL","fetchNode","options","globalThis","fetch","arrayBuffer","mimeType","response","headers","syntheticResponseHeaders","originalUrl","endsWith","slice","body","createHTTPRequestReadStream","getHeaders","status","statusText","getStatus","followRedirect","undefined","has","redirectUrl","generateRedirectUrl","get","error","String","Promise","resolve","reject","requestOptions","getRequestOptions","req","request","res","on","end","location","URL","pathname","href","originalHeaders","key","Object","keys","toLowerCase","urlObject","hostname","path","method","port","httpResponse","statusCode","statusMessage","additionalHeaders","arguments","length","httpHeaders","header","contentLength","getContentLength","Number","isFinite","assign"],"sources":["../../src/fetch/fetch-polyfill.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport http from 'http';\nimport https from 'https';\nimport {Response} from './response-polyfill';\nimport {Headers} from './headers-polyfill';\nimport {decodeDataUri} from './decode-data-uri';\n\nconst isDataURL = (url: string): boolean => url.startsWith('data:');\nconst isRequestURL = (url: string): boolean => url.startsWith('http:') || url.startsWith('https:');\n\n/**\n * Emulation of Browser fetch for Node.js\n * @param url\n * @param options\n */\n// eslint-disable-next-line complexity\nexport async function fetchNode(url: string, options: RequestInit): Promise<Response> {\n try {\n // Handle file streams in node\n // @ts-expect-error\n if (globalThis.fetch !== fetchNode && (isRequestURL(url) || isDataURL(url))) {\n // @ts-expect-error\n return await fetch(url, options);\n }\n\n // Handle data urls in node, to match `fetch``\n // Note - this loses the MIME type, data URIs are handled directly in fetch\n if (isDataURL(url)) {\n const {arrayBuffer, mimeType} = decodeDataUri(url);\n const response = new Response(arrayBuffer, {\n headers: {'content-type': mimeType},\n url\n });\n return response;\n }\n\n // Automatically decompress gzipped files with .gz extension\n const syntheticResponseHeaders = {};\n const originalUrl = url;\n if (url.endsWith('.gz')) {\n url = url.slice(0, -3);\n syntheticResponseHeaders['content-encoding'] = 'gzip';\n }\n\n // Need to create the stream in advance since Response constructor needs to be sync\n const body = await createHTTPRequestReadStream(originalUrl, options);\n const headers = getHeaders(url, body, syntheticResponseHeaders);\n const {status, statusText} = getStatus(body);\n\n const followRedirect =\n // @ts-expect-error\n !options || options.followRedirect || options.followRedirect === undefined;\n\n if (status >= 300 && status < 400 && headers.has('location') && followRedirect) {\n const redirectUrl = generateRedirectUrl(url, headers.get('location'));\n\n // Redirect\n return await fetchNode(redirectUrl, options);\n }\n return new Response(body, {headers, status, statusText, url});\n } catch (error) {\n // TODO - what error code to use here?\n return new Response(null, {status: 400, statusText: String(error), url});\n }\n}\n\n/** Returns a promise that resolves to a readable stream */\nexport async function createHTTPRequestReadStream(\n url: string,\n options\n): Promise<http.IncomingMessage> {\n // HANDLE HTTP/HTTPS REQUESTS IN NODE\n // TODO: THIS IS BAD SINCE WE RETURN A PROMISE INSTEAD OF A STREAM\n return await new Promise((resolve, reject) => {\n const requestOptions = getRequestOptions(url, options);\n const req = url.startsWith('https:')\n ? https.request(requestOptions, (res) => resolve(res))\n : http.request(requestOptions, (res) => resolve(res));\n req.on('error', (error) => reject(error));\n req.end();\n });\n}\n\n/**\n * Generate redirect url from location without origin and protocol.\n * @param originalUrl\n * @param redirectUrl\n */\nfunction generateRedirectUrl(originalUrl: string, location: string): string {\n if (location.startsWith('http')) {\n return location;\n }\n // If url doesn't have origin and protocol just extend current url origin with location.\n const url = new URL(originalUrl);\n url.pathname = location;\n\n return url.href;\n}\n\n// HELPER FUNCTIONS\n\nfunction getRequestOptions(url: string, options?: {fetch?: typeof fetch; headers?}) {\n // Ensure header keys are lower case so that we can merge without duplicates\n const originalHeaders = options?.headers || {};\n const headers = {};\n for (const key of Object.keys(originalHeaders)) {\n headers[key.toLowerCase()] = originalHeaders[key];\n }\n\n // Add default accept-encoding to headers\n headers['accept-encoding'] = headers['accept-encoding'] || 'gzip,br,deflate';\n\n const urlObject = new URL(url);\n return {\n hostname: urlObject.hostname,\n path: urlObject.pathname,\n method: 'GET',\n // Add options and user provided 'options.fetch' overrides if available\n ...options,\n ...options?.fetch,\n // Override with updated headers with accepted encodings:\n headers,\n port: urlObject.port\n };\n}\n\nfunction getStatus(httpResponse: http.IncomingMessage): {status: number; statusText: string} {\n if (httpResponse.statusCode) {\n return {status: httpResponse.statusCode, statusText: httpResponse.statusMessage || 'NA'};\n }\n return {status: 200, statusText: 'OK'};\n}\n\nfunction getHeaders(url, httpResponse, additionalHeaders = {}) {\n const headers = {};\n\n if (httpResponse && httpResponse.headers) {\n const httpHeaders = httpResponse.headers;\n for (const key in httpHeaders) {\n const header = httpHeaders[key];\n headers[key.toLowerCase()] = String(header);\n }\n }\n\n // Fix up content length if we can for best progress experience\n if (!headers['content-length']) {\n const contentLength = getContentLength(url);\n if (Number.isFinite(contentLength)) {\n headers['content-length'] = contentLength;\n }\n }\n\n Object.assign(headers, additionalHeaders);\n\n return new Headers(headers);\n}\n\n/** Needs to be read from actual headers */\nfunction getContentLength(url: string): number | null {\n // TODO - remove media type etc\n return isDataURL(url) ? url.length - 'data:'.length : null;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"headers-polyfill.js","names":["Symbol","iterator","Headers","constructor","headers","map","forEach","value","name","append","Array","isArray","header","Object","getOwnPropertyNames","normalizeName","normalizeValue","oldValue","delete","get","has","hasOwnProperty","set","visitor","thisArg","arguments","length","undefined","call","keys","items","push","iteratorFor","values","entries","_Symbol$iterator","String","test","TypeError","toLowerCase","next","shift","done"],"sources":["../../src/fetch/headers-polyfill.ts"],"sourcesContent":["/**\n * Polyfill for Browser Headers\n * Based on https://github.com/github/fetch under MIT license\n */\nexport class Headers {\n map: {};\n\n constructor(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach((value, name) => this.append(name, value));\n } else if (Array.isArray(headers)) {\n headers.forEach((header) => this.append(header[0], header[1]));\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach((name) => this.append(name, headers[name]));\n }\n }\n\n append(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n const oldValue = this.map[name];\n this.map[name] = oldValue ? `${oldValue}, ${value}` : value;\n }\n\n delete(name) {\n delete this.map[normalizeName(name)];\n }\n\n get(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null;\n }\n\n has(name) {\n return this.map.hasOwnProperty(normalizeName(name));\n }\n\n set(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n }\n\n forEach(visitor, thisArg = null) {\n for (const name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n if (thisArg) {\n visitor.call(thisArg, this.map[name], name, this);\n } else {\n visitor(this.map[name], name, this);\n }\n }\n }\n }\n\n keys() {\n const items: any[] = [];\n this.forEach(function (value, name) {\n items.push(name);\n });\n return iteratorFor(items);\n }\n\n values() {\n const items: any[] = [];\n this.forEach(function (value) {\n items.push(value);\n });\n return iteratorFor(items);\n }\n\n entries() {\n const items: any[] = [];\n this.forEach(function (value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items);\n }\n\n *[Symbol.iterator]() {\n // @ts-ignore must have a '[Symbol.iterator]()' method that returns an iterator.\n yield* this.entries();\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name');\n }\n return name.toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value;\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n const iterator = {\n next() {\n const value = items.shift();\n return {done: value === undefined, value};\n }\n };\n\n iterator[Symbol.iterator] = function () {\n return iterator;\n };\n\n return iterator;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"response-polyfill.js","names":["assert","decompressReadStream","concatenateReadStream","Headers","isBoolean","x","isFunction","isObject","isReadableNodeStream","read","pipe","readable","stream","Response","constructor","body","options","ok","status","statusText","headers","url","bodyUsed","_body","Readable","from","TextEncoder","encode","ArrayBuffer","arrayBuffer","data","text","textDecoder","TextDecoder","decode","json","JSON","parse","blob","Blob","Error"],"sources":["../../src/fetch/response-polyfill.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {assert} from '../utils/assert';\nimport {decompressReadStream, concatenateReadStream} from '../filesystems/stream-utils.node';\nimport {Headers} from './headers-polyfill';\n\nconst isBoolean = (x) => typeof x === 'boolean';\nconst isFunction = (x) => typeof x === 'function';\nconst isObject = (x) => x !== null && typeof x === 'object';\nconst isReadableNodeStream = (x) =>\n isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);\n\n/**\n * Polyfill for Browser Response\n *\n * Under Node.js we return a mock \"fetch response object\"\n * so that apps can use the same API as in the browser.\n *\n * Note: This is intended to be a \"lightweight\" implementation and will have limitations.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/Response\n */\nimport * as stream from 'stream';\n\nexport class Response {\n readonly ok: boolean;\n readonly status: number;\n readonly statusText: string;\n readonly headers: Headers;\n readonly url: string;\n bodyUsed: boolean = false;\n private readonly _body;\n\n // TODO - handle ArrayBuffer, ArrayBufferView, Buffer\n constructor(\n body,\n options: {\n headers?;\n status?: number;\n statusText?: string;\n url: string;\n }\n ) {\n const {headers, status = 200, statusText = 'OK', url} = options || {};\n\n this.url = url;\n this.ok = status === 200;\n this.status = status; // TODO - handle errors and set status\n this.statusText = statusText;\n this.headers = new Headers(options?.headers || {});\n\n // Check for content-encoding and create a decompression stream\n if (isReadableNodeStream(body)) {\n this._body = decompressReadStream(body, headers);\n } else if (typeof body === 'string') {\n this._body = stream.Readable.from([new TextEncoder().encode(body)]);\n } else {\n this._body = stream.Readable.from([body || new ArrayBuffer(0)]);\n }\n }\n\n // Subset of Properties\n\n // Returns a readable stream to the \"body\" of the response (or file)\n get body() {\n assert(!this.bodyUsed);\n assert(isReadableNodeStream(this._body)); // Not implemented: conversion of ArrayBuffer etc to stream\n this.bodyUsed = true;\n return this._body;\n }\n\n // Subset of Methods\n\n async arrayBuffer() {\n if (!isReadableNodeStream(this._body)) {\n return this._body || new ArrayBuffer(0);\n }\n const data = await concatenateReadStream(this._body);\n return data;\n }\n\n async text() {\n const arrayBuffer = await this.arrayBuffer();\n const textDecoder = new TextDecoder();\n return textDecoder.decode(arrayBuffer);\n }\n\n async json() {\n const text = await this.text();\n return JSON.parse(text);\n }\n\n async blob() {\n if (typeof Blob === 'undefined') {\n throw new Error('Blob polyfill not installed');\n }\n return new Blob([await this.arrayBuffer()]);\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"decode-data-uri.node.js","names":["isArrayBuffer","x","ArrayBuffer","isBuffer","Buffer","decodeDataUri","uri","dataIndex","indexOf","buffer","mimeType","slice","from","trim","decodeURIComponent","startsWith","arrayBuffer","toArrayBuffer","data","typedArray","Uint8Array","isView","text","uint8Array","TextEncoder","encode","_toArrayBuffer","Error","JSON","stringify"],"sources":["../../../src/fetch/utils/decode-data-uri.node.ts"],"sourcesContent":["// Based on binary-gltf-utils under MIT license: Copyright (c) 2016-17 Karl Cheng\n\nconst isArrayBuffer = (x) => x && x instanceof ArrayBuffer;\nconst isBuffer = (x) => x && x instanceof Buffer;\n\n/**\n * Parses a data URI into a buffer, as well as retrieving its declared MIME type.\n *\n * @param {string} uri - a data URI (assumed to be valid)\n * @returns {Object} { buffer, mimeType }\n */\nexport function decodeDataUri(uri: string): {arrayBuffer: ArrayBuffer; mimeType: string} {\n const dataIndex = uri.indexOf(',');\n\n let buffer;\n let mimeType;\n if (uri.slice(dataIndex - 7, dataIndex) === ';base64') {\n buffer = Buffer.from(uri.slice(dataIndex + 1), 'base64');\n mimeType = uri.slice(5, dataIndex - 7).trim();\n } else {\n buffer = Buffer.from(decodeURIComponent(uri.slice(dataIndex + 1)));\n mimeType = uri.slice(5, dataIndex).trim();\n }\n\n if (!mimeType) {\n mimeType = 'text/plain;charset=US-ASCII';\n } else if (mimeType.startsWith(';')) {\n mimeType = `text/plain${mimeType}`;\n }\n\n return {arrayBuffer: toArrayBuffer(buffer), mimeType};\n}\n\n/**\n * @param data\n * @todo Duplicate of core\n */\nexport function toArrayBuffer(data: unknown): ArrayBuffer {\n if (isArrayBuffer(data)) {\n return data as ArrayBuffer;\n }\n\n // TODO - per docs we should just be able to call buffer.buffer, but there are issues\n if (isBuffer(data)) {\n // @ts-expect-error\n const typedArray = new Uint8Array(data);\n return typedArray.buffer;\n }\n\n // Careful - Node Buffers will look like ArrayBuffers (keep after isBuffer)\n if (ArrayBuffer.isView(data)) {\n return data.buffer;\n }\n\n if (typeof data === 'string') {\n const text = data;\n const uint8Array = new TextEncoder().encode(text);\n return uint8Array.buffer;\n }\n\n // HACK to support Blob polyfill\n // @ts-expect-error\n if (data && typeof data === 'object' && data._toArrayBuffer) {\n // @ts-expect-error\n return data._toArrayBuffer();\n }\n\n throw new Error(`toArrayBuffer(${JSON.stringify(data, null, 2).slice(10)})`);\n}\n"],"mappings":"AAEA,MAAMA,aAAa,GAAIC,CAAC,IAAKA,CAAC,IAAIA,CAAC,YAAYC,WAAW;AAC1D,MAAMC,QAAQ,GAAIF,CAAC,IAAKA,CAAC,IAAIA,CAAC,YAAYG,MAAM;AAQhD,OAAO,SAASC,aAAaA,CAACC,GAAW,EAAgD;EACvF,MAAMC,SAAS,GAAGD,GAAG,CAACE,OAAO,CAAC,GAAG,CAAC;EAElC,IAAIC,MAAM;EACV,IAAIC,QAAQ;EACZ,IAAIJ,GAAG,CAACK,KAAK,CAACJ,SAAS,GAAG,CAAC,EAAEA,SAAS,CAAC,KAAK,SAAS,EAAE;IACrDE,MAAM,GAAGL,MAAM,CAACQ,IAAI,CAACN,GAAG,CAACK,KAAK,CAACJ,SAAS,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;IACxDG,QAAQ,GAAGJ,GAAG,CAACK,KAAK,CAAC,CAAC,EAAEJ,SAAS,GAAG,CAAC,CAAC,CAACM,IAAI,CAAC,CAAC;EAC/C,CAAC,MAAM;IACLJ,MAAM,GAAGL,MAAM,CAACQ,IAAI,CAACE,kBAAkB,CAACR,GAAG,CAACK,KAAK,CAACJ,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;IAClEG,QAAQ,GAAGJ,GAAG,CAACK,KAAK,CAAC,CAAC,EAAEJ,SAAS,CAAC,CAACM,IAAI,CAAC,CAAC;EAC3C;EAEA,IAAI,CAACH,QAAQ,EAAE;IACbA,QAAQ,GAAG,6BAA6B;EAC1C,CAAC,MAAM,IAAIA,QAAQ,CAACK,UAAU,CAAC,GAAG,CAAC,EAAE;IACnCL,QAAQ,GAAI,aAAYA,QAAS,EAAC;EACpC;EAEA,OAAO;IAACM,WAAW,EAAEC,aAAa,CAACR,MAAM,CAAC;IAAEC;EAAQ,CAAC;AACvD;AAMA,OAAO,SAASO,aAAaA,CAACC,IAAa,EAAe;EACxD,IAAIlB,aAAa,CAACkB,IAAI,CAAC,EAAE;IACvB,OAAOA,IAAI;EACb;EAGA,IAAIf,QAAQ,CAACe,IAAI,CAAC,EAAE;IAElB,MAAMC,UAAU,GAAG,IAAIC,UAAU,CAACF,IAAI,CAAC;IACvC,OAAOC,UAAU,CAACV,MAAM;EAC1B;EAGA,IAAIP,WAAW,CAACmB,MAAM,CAACH,IAAI,CAAC,EAAE;IAC5B,OAAOA,IAAI,CAACT,MAAM;EACpB;EAEA,IAAI,OAAOS,IAAI,KAAK,QAAQ,EAAE;IAC5B,MAAMI,IAAI,GAAGJ,IAAI;IACjB,MAAMK,UAAU,GAAG,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAACH,IAAI,CAAC;IACjD,OAAOC,UAAU,CAACd,MAAM;EAC1B;EAIA,IAAIS,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAIA,IAAI,CAACQ,cAAc,EAAE;IAE3D,OAAOR,IAAI,CAACQ,cAAc,CAAC,CAAC;EAC9B;EAEA,MAAM,IAAIC,KAAK,CAAE,iBAAgBC,IAAI,CAACC,SAAS,CAACX,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAACP,KAAK,CAAC,EAAE,CAAE,GAAE,CAAC;AAC9E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"blob-stream-controller.js","names":["BlobStreamController","constructor","chunks","isWorking","isCancelled","start","controller","work","desiredSize","next","error","done","enqueue","value","close","pull","cancel"],"sources":["../../src/file/blob-stream-controller.ts"],"sourcesContent":["/**\n * Forked from @gozala's web-blob under MIT license\n * @see https://github.com/Gozala/web-blob\n */\nexport class BlobStreamController {\n private chunks: Iterator<Uint8Array>;\n private isWorking: boolean = false;\n private isCancelled: boolean = false;\n\n /**\n * @param chunks\n */\n constructor(chunks: Iterator<Uint8Array>) {\n this.chunks = chunks;\n }\n\n /**\n * @param controller\n */\n start(controller: ReadableStreamDefaultController) {\n this.work(controller); // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n\n /**\n *\n * @param controller\n */\n async work(controller: ReadableStreamDefaultController) {\n const {chunks} = this;\n\n this.isWorking = true;\n while (!this.isCancelled && (controller.desiredSize || 0) > 0) {\n let next: {done?: boolean; value?: Uint8Array} | undefined;\n try {\n next = chunks.next();\n } catch (error) {\n controller.error(error);\n break;\n }\n\n if (next) {\n if (!next.done && !this.isCancelled) {\n controller.enqueue(next.value);\n } else {\n controller.close();\n }\n }\n }\n\n this.isWorking = false;\n }\n\n /**\n *\n * @param {ReadableStreamDefaultController} controller\n */\n pull(controller) {\n if (!this.isWorking) {\n this.work(controller); // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n }\n cancel() {\n this.isCancelled = true;\n }\n}\n"],"mappings":"AAIA,OAAO,MAAMA,oBAAoB,CAAC;EAQhCC,WAAWA,CAACC,MAA4B,EAAE;IAAA,KAPlCA,MAAM;IAAA,KACNC,SAAS,GAAY,KAAK;IAAA,KAC1BC,WAAW,GAAY,KAAK;IAMlC,IAAI,CAACF,MAAM,GAAGA,MAAM;EACtB;EAKAG,KAAKA,CAACC,UAA2C,EAAE;IACjD,IAAI,CAACC,IAAI,CAACD,UAAU,CAAC;EACvB;EAMA,MAAMC,IAAIA,CAACD,UAA2C,EAAE;IACtD,MAAM;MAACJ;IAAM,CAAC,GAAG,IAAI;IAErB,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB,OAAO,CAAC,IAAI,CAACC,WAAW,IAAI,CAACE,UAAU,CAACE,WAAW,IAAI,CAAC,IAAI,CAAC,EAAE;MAC7D,IAAIC,IAAsD;MAC1D,IAAI;QACFA,IAAI,GAAGP,MAAM,CAACO,IAAI,CAAC,CAAC;MACtB,CAAC,CAAC,OAAOC,KAAK,EAAE;QACdJ,UAAU,CAACI,KAAK,CAACA,KAAK,CAAC;QACvB;MACF;MAEA,IAAID,IAAI,EAAE;QACR,IAAI,CAACA,IAAI,CAACE,IAAI,IAAI,CAAC,IAAI,CAACP,WAAW,EAAE;UACnCE,UAAU,CAACM,OAAO,CAACH,IAAI,CAACI,KAAK,CAAC;QAChC,CAAC,MAAM;UACLP,UAAU,CAACQ,KAAK,CAAC,CAAC;QACpB;MACF;IACF;IAEA,IAAI,CAACX,SAAS,GAAG,KAAK;EACxB;EAMAY,IAAIA,CAACT,UAAU,EAAE;IACf,IAAI,CAAC,IAAI,CAACH,SAAS,EAAE;MACnB,IAAI,CAACI,IAAI,CAACD,UAAU,CAAC;IACvB;EACF;EACAU,MAAMA,CAAA,EAAG;IACP,IAAI,CAACZ,WAAW,GAAG,IAAI;EACzB;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"blob-stream.js","names":["ReadableStreamPolyfill","BlobStreamController","_Symbol$asyncIterator","Symbol","asyncIterator","BlobStream","constructor","chunks","values","type","_chunks","_options","reader","getReader","releaseLock"],"sources":["../../src/file/blob-stream.ts"],"sourcesContent":["/**\n * Forked from @gozala's web-blob under MIT license\n * @see https://github.com/Gozala/web-blob\n */\nimport {ReadableStreamPolyfill} from './readable-stream';\nimport {BlobStreamController} from './blob-stream-controller';\n\n/**\n * Blob stream is a `ReadableStream` extension optimized to have minimal\n * overhead when consumed as `AsyncIterable<Uint8Array>`.\n * extends {ReadableStream<Uint8Array>}\n * implements {AsyncIterable<Uint8Array>}\n */\n// @ts-ignore\nexport class BlobStream<T> extends ReadableStreamPolyfill<T> {\n private readonly _chunks: Uint8Array[];\n /**\n * @param chunks\n */\n constructor(chunks) {\n // @ts-ignore\n super(new BlobStreamController(chunks.values()), {type: 'bytes'});\n /** @private */\n this._chunks = chunks;\n }\n\n /**\n * @property [_options.preventCancel]\n */\n // @ts-ignore\n async *[Symbol.asyncIterator](_options?: {preventCancel?: boolean}): AsyncIterable<Uint8Array> {\n const reader = this.getReader();\n yield* this._chunks;\n reader.releaseLock();\n }\n}\n"],"mappings":";SAIQA,sBAAsB;AAAA,SACtBC,oBAAoB;AAAAC,qBAAA,GAyBlBC,MAAM,CAACC,aAAa;AAhB9B,OAAO,MAAMC,UAAU,SAAYL,sBAAsB,CAAI;EAK3DM,WAAWA,CAACC,MAAM,EAAE;IAElB,KAAK,CAAC,IAAIN,oBAAoB,CAACM,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAE;MAACC,IAAI,EAAE;IAAO,CAAC,CAAC;IAAC,KANnDC,OAAO;IAQtB,IAAI,CAACA,OAAO,GAAGH,MAAM;EACvB;EAMA,QAAAL,qBAAA,EAA8BS,QAAoC,EAA6B;IAC7F,MAAMC,MAAM,GAAG,IAAI,CAACC,SAAS,CAAC,CAAC;IAC/B,OAAO,IAAI,CAACH,OAAO;IACnBE,MAAM,CAACE,WAAW,CAAC,CAAC;EACtB;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"blob.js","names":["BlobStream","_Symbol$toStringTag","Symbol","toStringTag","BlobPolyfill","constructor","init","arguments","length","undefined","options","type","size","parts","part","bytes","TextEncoder","encode","push","byteLength","ArrayBuffer","Uint8Array","isView","buffer","byteOffset","String","readType","slice","start","end","offset","Math","max","min","limit","span","blob","blobSize","blobParts","chunk","subarray","arrayBuffer","_toArrayBuffer","text","decoder","TextDecoder","decode","stream","toString","set","input","toLowerCase","test"],"sources":["../../src/file/blob.ts"],"sourcesContent":["// Forked from @gozala's web-blob under MIT license https://github.com/Gozala/web-blob\nimport {BlobStream} from './blob-stream';\n\n/**\n * Forked from @gozala's web-blob under MIT license\n * @see https://github.com/Gozala/web-blob\n */\nexport class BlobPolyfill {\n // implements Blob {\n /** The MIME type of the data contained in the Blob. If type is unknown, string is empty. */\n readonly type: string;\n /** The size, in bytes, of the data contained in the Blob object. */\n size: number;\n private parts: Uint8Array[];\n /**\n * @param [init]\n * @param [options]\n */\n constructor(init: BlobPart[] = [], options: BlobPropertyBag = {}) {\n this.parts = [];\n\n this.size = 0;\n for (const part of init) {\n if (typeof part === 'string') {\n const bytes = new TextEncoder().encode(part);\n this.parts.push(bytes);\n this.size += bytes.byteLength;\n } else if (part instanceof BlobPolyfill) {\n this.size += part.size;\n // @ts-ignore - `parts` is marked private so TS will complain about\n // accessing it.\n this.parts.push(...part.parts);\n } else if (part instanceof ArrayBuffer) {\n this.parts.push(new Uint8Array(part));\n this.size += part.byteLength;\n } else if (part instanceof Uint8Array) {\n this.parts.push(part);\n this.size += part.byteLength;\n } else if (ArrayBuffer.isView(part)) {\n const {buffer, byteOffset, byteLength} = part;\n this.parts.push(new Uint8Array(buffer, byteOffset, byteLength));\n this.size += byteLength;\n } else {\n const bytes = new TextEncoder().encode(String(part));\n this.parts.push(bytes);\n this.size += bytes.byteLength;\n }\n }\n\n /** @private */\n this.type = readType(options.type);\n }\n\n /**\n * Returns a new Blob object containing the data in the specified range of\n * bytes of the blob on which it's called.\n * @param start=0 - An index into the Blob indicating the first\n * byte to include in the new Blob. If you specify a negative value, it's\n * treated as an offset from the end of the Blob toward the beginning. For\n * example, `-10` would be the 10th from last byte in the Blob. The default\n * value is `0`. If you specify a value for start that is larger than the\n * size of the source Blob, the returned Blob has size 0 and contains no\n * data.\n * @param end - An index into the `Blob` indicating the first byte\n * that will *not* be included in the new `Blob` (i.e. the byte exactly at\n * this index is not included). If you specify a negative value, it's treated\n * as an offset from the end of the Blob toward the beginning. For example,\n * `-10` would be the 10th from last byte in the `Blob`. The default value is\n * size.\n * @param type - The content type to assign to the new Blob;\n * this will be the value of its type property. The default value is an empty\n * string.\n */\n slice(start: number = 0, end: number = this.size, type: string = ''): Blob {\n const {size, parts: parts} = this;\n let offset = start < 0 ? Math.max(size + start, 0) : Math.min(start, size);\n\n let limit = end < 0 ? Math.max(size + end, 0) : Math.min(end, size);\n const span = Math.max(limit - offset, 0);\n const blob = new BlobPolyfill([], {type});\n\n if (span === 0) {\n // @ts-ignore\n return blob;\n }\n\n let blobSize = 0;\n const blobParts: Uint8Array[] = [];\n for (const part of parts) {\n const {byteLength} = part;\n if (offset > 0 && byteLength <= offset) {\n offset -= byteLength;\n limit -= byteLength;\n } else {\n const chunk = part.subarray(offset, Math.min(byteLength, limit));\n blobParts.push(chunk);\n blobSize += chunk.byteLength;\n // no longer need to take that into account\n offset = 0;\n\n // don't add the overflow to new blobParts\n if (blobSize >= span) {\n break;\n }\n }\n }\n\n blob.parts = blobParts;\n blob.size = blobSize;\n\n // @ts-ignore\n return blob;\n }\n\n /**\n * Returns a promise that resolves with an ArrayBuffer containing the entire\n * contents of the Blob as binary data.\n */\n // eslint-disable-next-line require-await\n async arrayBuffer(): Promise<ArrayBuffer> {\n return this._toArrayBuffer();\n }\n\n /**\n * Returns a promise that resolves with a USVString containing the entire\n * contents of the Blob interpreted as UTF-8 text.\n */\n // eslint-disable-next-line require-await\n async text(): Promise<string> {\n const decoder = new TextDecoder();\n let text = '';\n for (const part of this.parts) {\n text += decoder.decode(part);\n }\n return text;\n }\n\n /**\n */\n // @ts-ignore\n stream(): BlobStream<any> {\n return new BlobStream<any>(this.parts);\n }\n\n /**\n * @returns {string}\n */\n toString() {\n return '[object Blob]';\n }\n\n get [Symbol.toStringTag]() {\n return 'Blob';\n }\n\n _toArrayBuffer(): ArrayBuffer {\n const buffer = new ArrayBuffer(this.size);\n const bytes = new Uint8Array(buffer);\n let offset = 0;\n for (const part of this.parts) {\n bytes.set(part, offset);\n offset += part.byteLength;\n }\n return buffer;\n }\n}\n\n/**\n */\nfunction readType(input: string = ''): string {\n const type = String(input).toLowerCase();\n return /[^\\u0020-\\u007E]/.test(type) ? '' : type;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-reader.js","names":["atob","FileReaderPolyfill","constructor","onload","onabort","onerror","error","onloadstart","onloadend","onprogress","readyState","result","DONE","EMPTY","LOADING","addEventListener","removeEventListener","dispatchEvent","abort","readAsArrayBuffer","blob","arrayBuffer","target","readAsBinaryString","Error","readAsDataURL","text","dataUrl","readAsText"],"sources":["../../src/file/file-reader.ts"],"sourcesContent":["import {atob} from '../buffer/btoa.node';\n\nexport class FileReaderPolyfill implements FileReader {\n // onload: ({result: any}) => void;\n onload;\n onabort;\n onerror;\n error;\n onloadstart;\n onloadend;\n onprogress;\n\n readyState;\n result;\n DONE;\n EMPTY;\n LOADING;\n addEventListener;\n removeEventListener;\n dispatchEvent;\n\n constructor() {\n this.onload = null;\n }\n\n abort(): void {\n return;\n }\n\n async readAsArrayBuffer(blob: Blob): Promise<void> {\n const arrayBuffer = await blob.arrayBuffer();\n if (this.onload) {\n this.onload({target: {result: arrayBuffer}});\n }\n }\n\n async readAsBinaryString(blob) {\n throw Error('Not implemented');\n }\n\n async readAsDataURL(blob) {\n const text = await blob.text();\n const dataUrl = `data://;base64,${atob(text)}`;\n if (this.onload) {\n this.onload({target: {result: dataUrl}});\n }\n }\n\n async readAsText(blob) {\n const text = await blob.text();\n if (this.onload) {\n this.onload({target: {result: text}});\n }\n }\n}\n"],"mappings":"SAAQA,IAAI;AAEZ,OAAO,MAAMC,kBAAkB,CAAuB;EAmBpDC,WAAWA,CAAA,EAAG;IAAA,KAjBdC,MAAM;IAAA,KACNC,OAAO;IAAA,KACPC,OAAO;IAAA,KACPC,KAAK;IAAA,KACLC,WAAW;IAAA,KACXC,SAAS;IAAA,KACTC,UAAU;IAAA,KAEVC,UAAU;IAAA,KACVC,MAAM;IAAA,KACNC,IAAI;IAAA,KACJC,KAAK;IAAA,KACLC,OAAO;IAAA,KACPC,gBAAgB;IAAA,KAChBC,mBAAmB;IAAA,KACnBC,aAAa;IAGX,IAAI,CAACd,MAAM,GAAG,IAAI;EACpB;EAEAe,KAAKA,CAAA,EAAS;IACZ;EACF;EAEA,MAAMC,iBAAiBA,CAACC,IAAU,EAAiB;IACjD,MAAMC,WAAW,GAAG,MAAMD,IAAI,CAACC,WAAW,CAAC,CAAC;IAC5C,IAAI,IAAI,CAAClB,MAAM,EAAE;MACf,IAAI,CAACA,MAAM,CAAC;QAACmB,MAAM,EAAE;UAACX,MAAM,EAAEU;QAAW;MAAC,CAAC,CAAC;IAC9C;EACF;EAEA,MAAME,kBAAkBA,CAACH,IAAI,EAAE;IAC7B,MAAMI,KAAK,CAAC,iBAAiB,CAAC;EAChC;EAEA,MAAMC,aAAaA,CAACL,IAAI,EAAE;IACxB,MAAMM,IAAI,GAAG,MAAMN,IAAI,CAACM,IAAI,CAAC,CAAC;IAC9B,MAAMC,OAAO,GAAI,kBAAiB3B,IAAI,CAAC0B,IAAI,CAAE,EAAC;IAC9C,IAAI,IAAI,CAACvB,MAAM,EAAE;MACf,IAAI,CAACA,MAAM,CAAC;QAACmB,MAAM,EAAE;UAACX,MAAM,EAAEgB;QAAO;MAAC,CAAC,CAAC;IAC1C;EACF;EAEA,MAAMC,UAAUA,CAACR,IAAI,EAAE;IACrB,MAAMM,IAAI,GAAG,MAAMN,IAAI,CAACM,IAAI,CAAC,CAAC;IAC9B,IAAI,IAAI,CAACvB,MAAM,EAAE;MACf,IAAI,CAACA,MAAM,CAAC;QAACmB,MAAM,EAAE;UAACX,MAAM,EAAEe;QAAI;MAAC,CAAC,CAAC;IACvC;EACF;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"file.js","names":["Symbol","toStringTag","FilePolyfill","globalThis","Blob","constructor","init","name","options","arguments","length","undefined","webkitRelativePath","lastModified","String","replace","Date","now","_Symbol$toStringTag"],"sources":["../../src/file/file.ts"],"sourcesContent":["// Forked from @gozala's web-file under MIT license https://github.com/Gozala/web-file\n\n/**\n * Forked from @gozala's web-file under MIT license\n * @see https://github.com/Gozala/web-file\n */\n// @ts-ignore\nexport class FilePolyfill extends globalThis.Blob {\n // implements File {\n // public API\n /** The name of the file referenced by the File object. */\n name: string = '';\n /** The path the URL of the File is relative to. */\n webkitRelativePath: string = '';\n\n /**\n * Returns the last modified time of the file, in millisecond since the UNIX\n * epoch (January 1st, 1970 at Midnight).\n */\n lastModified: number;\n\n /**\n * @param init\n * @param name - A USVString representing the file name or the path\n * to the file.\n * @param [options]\n */\n constructor(init: BlobPart[], name: string, options: FilePropertyBag = {}) {\n super(init, options);\n // Per File API spec https://w3c.github.io/FileAPI/#file-constructor\n // Every \"/\" character of file name must be replaced with a \":\".\n /** @private */\n this.name = String(name).replace(/\\//g, ':');\n /** @private */\n this.lastModified = options?.lastModified || Date.now();\n }\n\n get [Symbol.toStringTag]() {\n return 'File';\n }\n}\n"],"mappings":";sBAqCOA,MAAM,CAACC,WAAW;AA9BzB,OAAO,MAAMC,YAAY,SAASC,UAAU,CAACC,IAAI,CAAC;EAoBhDC,WAAWA,CAACC,IAAgB,EAAEC,IAAY,EAAiC;IAAA,IAA/BC,OAAwB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IACvE,KAAK,CAACH,IAAI,EAAEE,OAAO,CAAC;IAAC,KAjBvBD,IAAI,GAAW,EAAE;IAAA,KAEjBK,kBAAkB,GAAW,EAAE;IAAA,KAM/BC,YAAY;IAaV,IAAI,CAACN,IAAI,GAAGO,MAAM,CAACP,IAAI,CAAC,CAACQ,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;IAE5C,IAAI,CAACF,YAAY,GAAG,CAAAL,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEK,YAAY,KAAIG,IAAI,CAACC,GAAG,CAAC,CAAC;EACzD;EAEA,KAAAC,mBAAA,IAA2B;IACzB,OAAO,MAAM;EACf;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"install-blob-polyfills.js","names":["BlobPolyfill","instalBlobPolyfills","Blob","globalThis","Blob_"],"sources":["../../src/file/install-blob-polyfills.ts"],"sourcesContent":["// import {ReadableStreamPolyfill} from './readable-stream';\nimport {BlobPolyfill} from './blob';\n\nexport function instalBlobPolyfills() {\n if (typeof Blob === 'undefined' && !globalThis.Blob) {\n // @ts-ignore;\n globalThis.Blob = BlobPolyfill;\n }\n\n return globalThis.Blob;\n}\n\nexport const Blob_ = instalBlobPolyfills();\n"],"mappings":"SACQA,YAAY;AAEpB,OAAO,SAASC,mBAAmBA,CAAA,EAAG;EACpC,IAAI,OAAOC,IAAI,KAAK,WAAW,IAAI,CAACC,UAAU,CAACD,IAAI,EAAE;IAEnDC,UAAU,CAACD,IAAI,GAAGF,YAAY;EAChC;EAEA,OAAOG,UAAU,CAACD,IAAI;AACxB;AAEA,OAAO,MAAME,KAAK,GAAGH,mBAAmB,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"install-file-polyfills.js","names":["FileReaderPolyfill","FilePolyfill","installFilePolyfills","FileReader","globalThis","File","global","File_"],"sources":["../../src/file/install-file-polyfills.ts"],"sourcesContent":["// import {ReadableStreamPolyfill} from './readable-stream';\nimport {FileReaderPolyfill} from './file-reader';\nimport {FilePolyfill} from './file';\n\nexport function installFilePolyfills() {\n if (typeof FileReader === 'undefined' && !globalThis.FileReader) {\n // @ts-ignore;\n globalThis.FileReader = FileReaderPolyfill;\n }\n\n // Install minimal Node.js File polyfill\n if (typeof File === 'undefined' && !globalThis.File) {\n // @ts-ignore;\n globalThis.File = FilePolyfill;\n }\n\n return global;\n}\n\nexport const File_ = installFilePolyfills();\n"],"mappings":"SACQA,kBAAkB;AAAA,SAClBC,YAAY;AAEpB,OAAO,SAASC,oBAAoBA,CAAA,EAAG;EACrC,IAAI,OAAOC,UAAU,KAAK,WAAW,IAAI,CAACC,UAAU,CAACD,UAAU,EAAE;IAE/DC,UAAU,CAACD,UAAU,GAAGH,kBAAkB;EAC5C;EAGA,IAAI,OAAOK,IAAI,KAAK,WAAW,IAAI,CAACD,UAAU,CAACC,IAAI,EAAE;IAEnDD,UAAU,CAACC,IAAI,GAAGJ,YAAY;EAChC;EAEA,OAAOK,MAAM;AACf;AAEA,OAAO,MAAMC,KAAK,GAAGL,oBAAoB,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readable-stream.js","names":["ReadableStream","WSPReadableStream","globalThis","ReadableStreamPolyfill"],"sources":["../../src/file/readable-stream.ts"],"sourcesContent":["import {ReadableStream as WSPReadableStream} from 'web-streams-polyfill';\n\n// Want a polyfill, but please don't install it\n// @ts-ignore\ndelete globalThis.ReadableStream;\n\n// @ts-ignore\nexport class ReadableStreamPolyfill<T> extends WSPReadableStream<T> implements ReadableStream {}\n"],"mappings":"AAAA,SAAQA,cAAc,IAAIC,iBAAiB,QAAO,sBAAsB;AAIxE,OAAOC,UAAU,CAACF,cAAc;AAGhC,OAAO,MAAMG,sBAAsB,SAAYF,iBAAiB,CAA8B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetch-node.js","names":["fs","Readable","resolvePath","decompressReadStream","isBoolean","x","isFunction","isObject","isReadableNodeStream","read","pipe","readable","fetchNode","url","options","FILE_PROTOCOL_REGEX","replace","noqueryUrl","split","responseHeaders","Headers","endsWith","body","Promise","resolve","reject","stream","createReadStream","encoding","once","on","error","bodyStream","from","TextEncoder","encode","ArrayBuffer","status","statusText","headers","getHeadersForFile","response","Response","Object","defineProperty","value","errorMessage","message","stats","statSync","size","slice"],"sources":["../../src/filesystems/fetch-node.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport fs from 'fs';\nimport {Readable} from 'stream';\nimport {resolvePath} from '@loaders.gl/loader-utils';\nimport {decompressReadStream} from './stream-utils.node';\n\nconst isBoolean = (x) => typeof x === 'boolean';\nconst isFunction = (x) => typeof x === 'function';\nconst isObject = (x) => x !== null && typeof x === 'object';\nconst isReadableNodeStream = (x) =>\n isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);\n\n/**\n * Enables\n * @param url\n * @param options\n * @returns\n */\n// eslint-disable-next-line max-statements\nexport async function fetchNode(url: string, options?: RequestInit): Promise<Response> {\n // Support `file://` protocol\n const FILE_PROTOCOL_REGEX = /^file:\\/\\//;\n url.replace(FILE_PROTOCOL_REGEX, '/');\n\n // Remove any query parameters, as they have no meaning\n let noqueryUrl = url.split('?')[0];\n noqueryUrl = resolvePath(noqueryUrl);\n\n const responseHeaders = new Headers();\n // Automatically decompress gzipped files with .gz extension\n if (url.endsWith('.gz')) {\n // url = url.slice(0, -3);\n responseHeaders['content-encoding'] = 'gzip';\n }\n if (url.endsWith('.br')) {\n // url = url.slice(0, -3);\n responseHeaders['content-encoding'] = 'br';\n }\n\n try {\n // Now open the stream\n const body = await new Promise<fs.ReadStream>((resolve, reject) => {\n // @ts-ignore\n const stream = fs.createReadStream(noqueryUrl, {encoding: null});\n stream.once('readable', () => resolve(stream));\n stream.on('error', (error) => reject(error));\n });\n\n let bodyStream: Readable = body;\n\n // Check for content-encoding and create a decompression stream\n if (isReadableNodeStream(body)) {\n bodyStream = decompressReadStream(body, responseHeaders);\n } else if (typeof body === 'string') {\n bodyStream = Readable.from([new TextEncoder().encode(body)]);\n } else {\n bodyStream = Readable.from([body || new ArrayBuffer(0)]);\n }\n\n const status = 200;\n const statusText = 'OK';\n const headers = getHeadersForFile(noqueryUrl);\n // @ts-expect-error\n const response = new Response(bodyStream, {headers, status, statusText});\n Object.defineProperty(response, 'url', {value: url});\n return response;\n } catch (error) {\n // console.error(error);\n const errorMessage = (error as Error).message;\n const status = 400;\n const statusText = errorMessage;\n const headers = {};\n const response = new Response(errorMessage, {headers, status, statusText});\n Object.defineProperty(response, 'url', {value: url});\n return response;\n }\n}\n\nfunction getHeadersForFile(noqueryUrl: string): Headers {\n const headers = {};\n\n // Fix up content length if we can for best progress experience\n if (!headers['content-length']) {\n const stats = fs.statSync(noqueryUrl);\n headers['content-length'] = stats.size;\n }\n\n // Automatically decompress gzipped files with .gz extension\n if (noqueryUrl.endsWith('.gz')) {\n noqueryUrl = noqueryUrl.slice(0, -3);\n headers['content-encoding'] = 'gzip';\n }\n\n return new Headers(headers);\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-file.js","names":["resolvePath","fs","NodeFile","constructor","path","flags","mode","handle","size","bigsize","url","openSync","stats","fstatSync","bigint","Number","close","Promise","resolve","reject","err","truncate","length","ftruncate","BigInt","append","data","appendFile","stat","fstat","info","isDirectory","read","offset","arrayBuffer","ArrayBuffer","bigOffset","totalBytesRead","uint8Array","Uint8Array","position","bytesRead","readBytes","undefined","slice","write","arguments","byteLength","nOffset","bytesWritten","fd"],"sources":["../../src/filesystems/node-file.ts"],"sourcesContent":["import type {ReadableFile, WritableFile, Stat} from '@loaders.gl/loader-utils';\nimport {resolvePath} from '@loaders.gl/loader-utils';\nimport fs from 'fs';\n\nexport class NodeFile implements ReadableFile, WritableFile {\n handle: number;\n size: number;\n bigsize: bigint;\n url: string;\n\n constructor(path: string, flags: 'r' | 'w' | 'wx' | 'a+', mode?: number) {\n path = resolvePath(path);\n this.handle = fs.openSync(path, flags, mode);\n const stats = fs.fstatSync(this.handle, {bigint: true});\n this.size = Number(stats.size);\n this.bigsize = stats.size;\n this.url = path;\n }\n\n async close(): Promise<void> {\n return new Promise((resolve, reject) => {\n fs.close(this.handle, (err) => (err ? reject(err) : resolve()));\n });\n }\n\n async truncate(length: number): Promise<void> {\n return new Promise((resolve, reject) => {\n fs.ftruncate(this.handle, length, (err) => {\n if (err) {\n reject(err);\n } else {\n this.bigsize = BigInt(length);\n this.size = Number(this.bigsize);\n resolve();\n }\n });\n });\n }\n\n async append(data: Uint8Array): Promise<void> {\n return new Promise((resolve, reject) => {\n fs.appendFile(this.handle, data, (err) => {\n if (err) {\n reject(err);\n } else {\n this.bigsize = this.bigsize + BigInt(data.length);\n this.size = Number(this.bigsize);\n resolve();\n }\n });\n });\n }\n\n async stat(): Promise<Stat> {\n return await new Promise((resolve, reject) =>\n fs.fstat(this.handle, {bigint: true}, (err, info) => {\n const stats: Stat = {\n size: Number(info.size),\n bigsize: info.size,\n isDirectory: info.isDirectory()\n };\n if (err) {\n reject(err);\n } else {\n resolve(stats);\n }\n })\n );\n }\n\n async read(offset: number | bigint, length: number): Promise<ArrayBuffer> {\n const arrayBuffer = new ArrayBuffer(length);\n let bigOffset = BigInt(offset);\n\n let totalBytesRead = 0;\n const uint8Array = new Uint8Array(arrayBuffer);\n\n let position;\n // Read in loop until we get required number of bytes\n while (length > 0) {\n const bytesRead = await readBytes(this.handle, uint8Array, 0, length, bigOffset);\n\n // Check if end of file reached\n if (bytesRead === 0) {\n break;\n }\n\n totalBytesRead += bytesRead;\n bigOffset += BigInt(bytesRead);\n length -= bytesRead;\n\n // Advance position unless we are using built-in position advancement\n if (position !== undefined) {\n position += bytesRead;\n }\n }\n return totalBytesRead < length ? arrayBuffer.slice(0, totalBytesRead) : arrayBuffer;\n }\n\n async write(\n arrayBuffer: ArrayBuffer,\n offset: number | bigint = 0,\n length: number = arrayBuffer.byteLength\n ): Promise<number> {\n return new Promise((resolve, reject) => {\n // TODO - Node.js doesn't offer write with bigint offsets???\n const nOffset = Number(offset);\n const uint8Array = new Uint8Array(arrayBuffer, Number(offset), length);\n fs.write(this.handle, uint8Array, 0, length, nOffset, (err, bytesWritten) =>\n err ? reject(err) : resolve(bytesWritten)\n );\n });\n }\n}\n\nasync function readBytes(\n fd: number,\n uint8Array: Uint8Array,\n offset: number,\n length: number,\n position: number | bigint | null\n): Promise<number> {\n return await new Promise<number>((resolve, reject) =>\n fs.read(fd, uint8Array, offset, length, position, (err, bytesRead) =>\n err ? reject(err) : resolve(bytesRead)\n )\n );\n}\n\n// TODO - implement streaming write\n/*\nexport interface WriteStreamOptions {\n flags?: string;\n encoding?: 'utf8';\n fd?: number;\n mode?: number;\n autoClose?: boolean;\n start?: number;\n}\n\nexport class NodeStreamWritableFile implements WritableFile {\n outputStream: fs.WriteStream | Writable;\n\n constructor(pathOrStream: string | Writable, options?: WriteStreamOptions) {\n this.outputStream =\n typeof pathOrStream === 'string' ? fs.createWriteStream(pathOrStream, options) : pathOrStream;\n }\n\n async write(buffer: ArrayBuffer): Promise<void> {\n return new Promise((resolve, reject) => {\n const uint8Array = new Uint8Array(buffer);\n this.outputStream.write(uint8Array, (err) => (err ? reject(err) : resolve()));\n });\n }\n\n async close(): Promise<void> {\n if (this.outputStream instanceof fs.WriteStream) {\n return new Promise((resolve, reject) => {\n const stream = this.outputStream as fs.WriteStream;\n stream.close((err) => (err ? reject(err) : resolve()));\n });\n }\n }\n}\n*/\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-filesystem.js","names":["fsPromise","NodeFile","fetchNode","NodeFileSystem","constructor","readable","writable","readdir","dirname","arguments","length","undefined","options","stat","path","info","bigint","size","Number","bigsize","isDirectory","unlink","fetch","openReadableFile","flags","openWritableFile","mode"],"sources":["../../src/filesystems/node-filesystem.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {Stat, RandomAccessFileSystem} from '@loaders.gl/loader-utils';\nimport fsPromise from 'fs/promises';\nimport {NodeFile} from './node-file';\nimport {fetchNode} from './fetch-node';\n\n// import {fetchFile} from \"../fetch/fetch-file\"\n// import {selectLoader} from \"../api/select-loader\";\n\n/**\n * FileSystem pass-through for Node.js\n * Compatible with BrowserFileSystem.\n * @param options\n */\nexport class NodeFileSystem implements RandomAccessFileSystem {\n readable: boolean = true;\n writable: boolean = true;\n\n // implements FileSystem\n constructor() {}\n\n async readdir(dirname = '.', options?: {}): Promise<any[]> {\n return await fsPromise.readdir(dirname, options);\n }\n\n async stat(path: string): Promise<Stat> {\n const info = await fsPromise.stat(path, {bigint: true});\n return {\n size: Number(info.size),\n bigsize: info.size,\n isDirectory: info.isDirectory()\n };\n }\n\n async unlink(path: string): Promise<void> {\n return await fsPromise.unlink(path);\n }\n\n async fetch(path: string, options: RequestInit): Promise<Response> {\n return await fetchNode(path, options);\n }\n\n // implements IRandomAccessFileSystem\n async openReadableFile(path: string, flags: 'r' = 'r'): Promise<NodeFile> {\n return new NodeFile(path, flags);\n }\n\n async openWritableFile(path: string, flags: 'w' | 'wx' = 'w', mode?: any): Promise<NodeFile> {\n return new NodeFile(path, flags, mode);\n }\n}\n"],"mappings":"AAKA,OAAOA,SAAS,MAAM,aAAa;AAAC,SAC5BC,QAAQ;AAAA,SACRC,SAAS;AAUjB,OAAO,MAAMC,cAAc,CAAmC;EAK5DC,WAAWA,CAAA,EAAG;IAAA,KAJdC,QAAQ,GAAY,IAAI;IAAA,KACxBC,QAAQ,GAAY,IAAI;EAGT;EAEf,MAAMC,OAAOA,CAAA,EAA8C;IAAA,IAA7CC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,GAAG;IAAA,IAAEG,OAAY,GAAAH,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;IACvC,OAAO,MAAMX,SAAS,CAACO,OAAO,CAACC,OAAO,EAAEI,OAAO,CAAC;EAClD;EAEA,MAAMC,IAAIA,CAACC,IAAY,EAAiB;IACtC,MAAMC,IAAI,GAAG,MAAMf,SAAS,CAACa,IAAI,CAACC,IAAI,EAAE;MAACE,MAAM,EAAE;IAAI,CAAC,CAAC;IACvD,OAAO;MACLC,IAAI,EAAEC,MAAM,CAACH,IAAI,CAACE,IAAI,CAAC;MACvBE,OAAO,EAAEJ,IAAI,CAACE,IAAI;MAClBG,WAAW,EAAEL,IAAI,CAACK,WAAW,CAAC;IAChC,CAAC;EACH;EAEA,MAAMC,MAAMA,CAACP,IAAY,EAAiB;IACxC,OAAO,MAAMd,SAAS,CAACqB,MAAM,CAACP,IAAI,CAAC;EACrC;EAEA,MAAMQ,KAAKA,CAACR,IAAY,EAAEF,OAAoB,EAAqB;IACjE,OAAO,MAAMV,SAAS,CAACY,IAAI,EAAEF,OAAO,CAAC;EACvC;EAGA,MAAMW,gBAAgBA,CAACT,IAAY,EAAuC;IAAA,IAArCU,KAAU,GAAAf,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,GAAG;IACnD,OAAO,IAAIR,QAAQ,CAACa,IAAI,EAAEU,KAAK,CAAC;EAClC;EAEA,MAAMC,gBAAgBA,CAACX,IAAY,EAA0D;IAAA,IAAxDU,KAAiB,GAAAf,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,GAAG;IAAA,IAAEiB,IAAU,GAAAjB,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;IACtE,OAAO,IAAIV,QAAQ,CAACa,IAAI,EAAEU,KAAK,EAAEE,IAAI,CAAC;EACxC;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream-utils.node.js","names":["zlib","isArrayBuffer","x","ArrayBuffer","isBuffer","Buffer","decompressReadStream","readStream","headers","get","pipe","createBrotliDecompress","createGunzip","createDeflate","concatenateReadStream","arrayBufferChunks","Promise","resolve","reject","on","error","read","chunk","Error","push","toArrayBuffer","arrayBuffer","concatenateArrayBuffers","sources","sourceArrays","map","source2","Uint8Array","byteLength","reduce","length","typedArray","result","offset","sourceArray","set","buffer","data","isView","text","uint8Array","TextEncoder","encode","_toArrayBuffer","JSON","stringify","slice"],"sources":["../../src/filesystems/stream-utils.node.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport zlib from 'zlib';\nimport {Readable} from 'stream';\n\nconst isArrayBuffer = (x) => x && x instanceof ArrayBuffer;\nconst isBuffer = (x) => x && x instanceof Buffer;\n\n/**\n *\n */\nexport function decompressReadStream(readStream: Readable, headers?: Headers) {\n switch (headers?.get('content-encoding')) {\n case 'br':\n return readStream.pipe(zlib.createBrotliDecompress());\n case 'gzip':\n return readStream.pipe(zlib.createGunzip());\n case 'deflate':\n return readStream.pipe(zlib.createDeflate());\n default:\n // No compression or an unknown one, just return it as is\n return readStream;\n }\n}\n\n/**\n *\n * @param readStream\n * @returns\n */\nexport async function concatenateReadStream(readStream): Promise<ArrayBuffer> {\n const arrayBufferChunks: ArrayBuffer[] = [];\n\n return await new Promise((resolve, reject) => {\n readStream.on('error', (error) => reject(error));\n\n // Once the readable callback has been added, stream switches to \"flowing mode\"\n // In Node 10 (but not 12 and 14) this causes `data` and `end` to never be called unless we read data here\n readStream.on('readable', () => readStream.read());\n\n readStream.on('data', (chunk) => {\n if (typeof chunk === 'string') {\n reject(new Error('Read stream not binary'));\n }\n arrayBufferChunks.push(toArrayBuffer(chunk));\n });\n\n readStream.on('end', () => {\n const arrayBuffer = concatenateArrayBuffers(arrayBufferChunks);\n resolve(arrayBuffer);\n });\n });\n}\n\n/**\n * Concatenate a sequence of ArrayBuffers\n * @return A concatenated ArrayBuffer\n * @note duplicates loader-utils since polyfills should be independent\n */\nexport function concatenateArrayBuffers(sources: (ArrayBuffer | Uint8Array)[]): ArrayBuffer {\n // Make sure all inputs are wrapped in typed arrays\n const sourceArrays = sources.map((source2) =>\n source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2\n );\n\n // Get length of all inputs\n const byteLength = sourceArrays.reduce((length, typedArray) => length + typedArray.byteLength, 0);\n\n // Allocate array with space for all inputs\n const result = new Uint8Array(byteLength);\n\n // Copy the subarrays\n let offset = 0;\n for (const sourceArray of sourceArrays) {\n result.set(sourceArray, offset);\n offset += sourceArray.byteLength;\n }\n\n // We work with ArrayBuffers, discard the typed array wrapper\n return result.buffer;\n}\n\n/**\n * @param data\n * @todo Duplicate of core\n */\nexport function toArrayBuffer(data: unknown): ArrayBuffer {\n if (isArrayBuffer(data)) {\n return data as ArrayBuffer;\n }\n\n // TODO - per docs we should just be able to call buffer.buffer, but there are issues\n if (isBuffer(data)) {\n // @ts-expect-error\n const typedArray = new Uint8Array(data);\n return typedArray.buffer;\n }\n\n // Careful - Node Buffers will look like ArrayBuffers (keep after isBuffer)\n if (ArrayBuffer.isView(data)) {\n return data.buffer;\n }\n\n if (typeof data === 'string') {\n const text = data;\n const uint8Array = new TextEncoder().encode(text);\n return uint8Array.buffer;\n }\n\n // HACK to support Blob polyfill\n // @ts-expect-error\n if (data && typeof data === 'object' && data._toArrayBuffer) {\n // @ts-expect-error\n return data._toArrayBuffer();\n }\n\n throw new Error(`toArrayBuffer(${JSON.stringify(data, null, 2).slice(10)})`);\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"encode-image-node.js","names":["savePixels","ndarray","bufferToArrayBuffer","encodeImageToStreamNode","image","options","type","replace","pixels","data","width","height","encodeImageNode","imageStream","Promise","resolve","buffers","on","buffer","push","Buffer","concat"],"sources":["../../src/images/encode-image-node.ts"],"sourcesContent":["// Use stackgl modules for DOM-less reading and writing of images\n\nimport savePixels from 'save-pixels';\nimport ndarray from 'ndarray';\nimport {bufferToArrayBuffer} from '../buffer/to-array-buffer.node';\n\n/**\n * Returns data bytes representing a compressed image in PNG or JPG format,\n * This data can be saved using file system (f) methods or\n * used in a request.\n * @param image to save\n * @param options\n * @param options.type='png' - png, jpg or image/png, image/jpg are valid\n * @param options.dataURI - Whether to include a data URI header\n * @return {*} bytes\n */\nexport function encodeImageToStreamNode(\n image: {data: any; width: number; height: number},\n options: {type?: string; dataURI?: string}\n) {\n // Support MIME type strings\n const type = options.type ? options.type.replace('image/', '') : 'jpeg';\n const pixels = ndarray(image.data, [image.width, image.height, 4], [4, image.width * 4, 1], 0);\n\n // Note: savePixels returns a stream\n return savePixels(pixels, type, options);\n}\n\nexport function encodeImageNode(image, options) {\n const imageStream = encodeImageToStreamNode(image, options);\n\n return new Promise((resolve) => {\n const buffers: any[] = [];\n imageStream.on('data', (buffer) => buffers.push(buffer));\n // TODO - convert to arraybuffer?\n imageStream.on('end', () => {\n const buffer = Buffer.concat(buffers);\n resolve(bufferToArrayBuffer(buffer));\n });\n });\n}\n"],"mappings":"AAEA,OAAOA,UAAU,MAAM,aAAa;AACpC,OAAOC,OAAO,MAAM,SAAS;AAAC,SACtBC,mBAAmB;AAY3B,OAAO,SAASC,uBAAuBA,CACrCC,KAAiD,EACjDC,OAA0C,EAC1C;EAEA,MAAMC,IAAI,GAAGD,OAAO,CAACC,IAAI,GAAGD,OAAO,CAACC,IAAI,CAACC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,MAAM;EACvE,MAAMC,MAAM,GAAGP,OAAO,CAACG,KAAK,CAACK,IAAI,EAAE,CAACL,KAAK,CAACM,KAAK,EAAEN,KAAK,CAACO,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAEP,KAAK,CAACM,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;EAG9F,OAAOV,UAAU,CAACQ,MAAM,EAAEF,IAAI,EAAED,OAAO,CAAC;AAC1C;AAEA,OAAO,SAASO,eAAeA,CAACR,KAAK,EAAEC,OAAO,EAAE;EAC9C,MAAMQ,WAAW,GAAGV,uBAAuB,CAACC,KAAK,EAAEC,OAAO,CAAC;EAE3D,OAAO,IAAIS,OAAO,CAAEC,OAAO,IAAK;IAC9B,MAAMC,OAAc,GAAG,EAAE;IACzBH,WAAW,CAACI,EAAE,CAAC,MAAM,EAAGC,MAAM,IAAKF,OAAO,CAACG,IAAI,CAACD,MAAM,CAAC,CAAC;IAExDL,WAAW,CAACI,EAAE,CAAC,KAAK,EAAE,MAAM;MAC1B,MAAMC,MAAM,GAAGE,MAAM,CAACC,MAAM,CAACL,OAAO,CAAC;MACrCD,OAAO,CAACb,mBAAmB,CAACgB,MAAM,CAAC,CAAC;IACtC,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"encode-image.node.js","names":["savePixels","ndarray","bufferToArrayBuffer","encodeImageToStreamNode","image","options","type","replace","pixels","data","width","height","encodeImageNode","imageStream","Promise","resolve","buffers","on","buffer","push","Buffer","concat"],"sources":["../../src/images/encode-image.node.ts"],"sourcesContent":["// Use stackgl modules for DOM-less reading and writing of images\n\nimport savePixels from 'save-pixels';\nimport ndarray from 'ndarray';\nimport {bufferToArrayBuffer} from '../buffer/to-array-buffer.node';\n\n/**\n * Returns data bytes representing a compressed image in PNG or JPG format,\n * This data can be saved using file system (f) methods or\n * used in a request.\n * @param image to save\n * @param options\n * @param options.type='png' - png, jpg or image/png, image/jpg are valid\n * @param options.dataURI - Whether to include a data URI header\n * @return {*} bytes\n */\nexport function encodeImageToStreamNode(\n image: {data: any; width: number; height: number},\n options: {type?: string; dataURI?: string}\n) {\n // Support MIME type strings\n const type = options.type ? options.type.replace('image/', '') : 'jpeg';\n const pixels = ndarray(image.data, [image.width, image.height, 4], [4, image.width * 4, 1], 0);\n\n // Note: savePixels returns a stream\n return savePixels(pixels, type, options);\n}\n\nexport function encodeImageNode(image, options) {\n const imageStream = encodeImageToStreamNode(image, options);\n\n return new Promise((resolve) => {\n const buffers: any[] = [];\n imageStream.on('data', (buffer) => buffers.push(buffer));\n // TODO - convert to arraybuffer?\n imageStream.on('end', () => {\n const buffer = Buffer.concat(buffers);\n resolve(bufferToArrayBuffer(buffer));\n });\n });\n}\n"],"mappings":"AAEA,OAAOA,UAAU,MAAM,aAAa;AACpC,OAAOC,OAAO,MAAM,SAAS;AAAC,SACtBC,mBAAmB;AAY3B,OAAO,SAASC,uBAAuBA,CACrCC,KAAiD,EACjDC,OAA0C,EAC1C;EAEA,MAAMC,IAAI,GAAGD,OAAO,CAACC,IAAI,GAAGD,OAAO,CAACC,IAAI,CAACC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,MAAM;EACvE,MAAMC,MAAM,GAAGP,OAAO,CAACG,KAAK,CAACK,IAAI,EAAE,CAACL,KAAK,CAACM,KAAK,EAAEN,KAAK,CAACO,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAEP,KAAK,CAACM,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;EAG9F,OAAOV,UAAU,CAACQ,MAAM,EAAEF,IAAI,EAAED,OAAO,CAAC;AAC1C;AAEA,OAAO,SAASO,eAAeA,CAACR,KAAK,EAAEC,OAAO,EAAE;EAC9C,MAAMQ,WAAW,GAAGV,uBAAuB,CAACC,KAAK,EAAEC,OAAO,CAAC;EAE3D,OAAO,IAAIS,OAAO,CAAEC,OAAO,IAAK;IAC9B,MAAMC,OAAc,GAAG,EAAE;IACzBH,WAAW,CAACI,EAAE,CAAC,MAAM,EAAGC,MAAM,IAAKF,OAAO,CAACG,IAAI,CAACD,MAAM,CAAC,CAAC;IAExDL,WAAW,CAACI,EAAE,CAAC,KAAK,EAAE,MAAM;MAC1B,MAAMC,MAAM,GAAGE,MAAM,CAACC,MAAM,CAACL,OAAO,CAAC;MACrCD,OAAO,CAACb,mBAAmB,CAACgB,MAAM,CAAC,CAAC;IACtC,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-image-node.js","names":["getPixels","NODE_FORMAT_SUPPORT","parseImageNode","arrayBuffer","mimeType","Error","buffer","Buffer","from","ndarray","getPixelsAsync","Promise","resolve","err","shape","layers","length","shift","data","Uint8Array","width","height","components"],"sources":["../../src/images/parse-image-node.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport getPixels from 'get-pixels';\n\n/** Declares which image format mime types this loader polyfill supports */\nexport const NODE_FORMAT_SUPPORT = ['image/png', 'image/jpeg', 'image/gif'];\n\n// Note: These types are also defined in @loaders.gl/images and need to be kept in sync\ntype NDArray = {\n shape: number[];\n data: Uint8Array;\n width: number;\n height: number;\n components: number;\n layers: number[];\n};\n\nexport async function parseImageNode(arrayBuffer: ArrayBuffer, mimeType: string): Promise<NDArray> {\n if (!mimeType) {\n throw new Error('MIMEType is required to parse image under Node.js');\n }\n\n const buffer = arrayBuffer instanceof Buffer ? arrayBuffer : Buffer.from(arrayBuffer);\n const ndarray = await getPixelsAsync(buffer, mimeType);\n return ndarray;\n}\n\n// TODO - check if getPixels callback is asynchronous if provided with buffer input\n// if not, parseImage can be a sync function\nfunction getPixelsAsync(buffer: Buffer, mimeType: string): Promise<NDArray> {\n return new Promise<NDArray>((resolve) =>\n getPixels(buffer, mimeType, (err, ndarray) => {\n if (err) {\n throw err;\n }\n\n const shape = [...ndarray.shape];\n const layers = ndarray.shape.length === 4 ? ndarray.shape.shift() : 1;\n const data = ndarray.data instanceof Buffer ? new Uint8Array(ndarray.data) : ndarray.data;\n\n // extract width/height etc\n resolve({\n shape,\n data,\n width: ndarray.shape[0],\n height: ndarray.shape[1],\n components: ndarray.shape[2],\n // TODO - error\n layers: layers ? [layers] : []\n });\n })\n );\n}\n"],"mappings":"AAIA,OAAOA,SAAS,MAAM,YAAY;AAGlC,OAAO,MAAMC,mBAAmB,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC;AAY3E,OAAO,eAAeC,cAAcA,CAACC,WAAwB,EAAEC,QAAgB,EAAoB;EACjG,IAAI,CAACA,QAAQ,EAAE;IACb,MAAM,IAAIC,KAAK,CAAC,mDAAmD,CAAC;EACtE;EAEA,MAAMC,MAAM,GAAGH,WAAW,YAAYI,MAAM,GAAGJ,WAAW,GAAGI,MAAM,CAACC,IAAI,CAACL,WAAW,CAAC;EACrF,MAAMM,OAAO,GAAG,MAAMC,cAAc,CAACJ,MAAM,EAAEF,QAAQ,CAAC;EACtD,OAAOK,OAAO;AAChB;AAIA,SAASC,cAAcA,CAACJ,MAAc,EAAEF,QAAgB,EAAoB;EAC1E,OAAO,IAAIO,OAAO,CAAWC,OAAO,IAClCZ,SAAS,CAACM,MAAM,EAAEF,QAAQ,EAAE,CAACS,GAAG,EAAEJ,OAAO,KAAK;IAC5C,IAAII,GAAG,EAAE;MACP,MAAMA,GAAG;IACX;IAEA,MAAMC,KAAK,GAAG,CAAC,GAAGL,OAAO,CAACK,KAAK,CAAC;IAChC,MAAMC,MAAM,GAAGN,OAAO,CAACK,KAAK,CAACE,MAAM,KAAK,CAAC,GAAGP,OAAO,CAACK,KAAK,CAACG,KAAK,CAAC,CAAC,GAAG,CAAC;IACrE,MAAMC,IAAI,GAAGT,OAAO,CAACS,IAAI,YAAYX,MAAM,GAAG,IAAIY,UAAU,CAACV,OAAO,CAACS,IAAI,CAAC,GAAGT,OAAO,CAACS,IAAI;IAGzFN,OAAO,CAAC;MACNE,KAAK;MACLI,IAAI;MACJE,KAAK,EAAEX,OAAO,CAACK,KAAK,CAAC,CAAC,CAAC;MACvBO,MAAM,EAAEZ,OAAO,CAACK,KAAK,CAAC,CAAC,CAAC;MACxBQ,UAAU,EAAEb,OAAO,CAACK,KAAK,CAAC,CAAC,CAAC;MAE5BC,MAAM,EAAEA,MAAM,GAAG,CAACA,MAAM,CAAC,GAAG;IAC9B,CAAC,CAAC;EACJ,CAAC,CACH,CAAC;AACH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-image.node.js","names":["getPixels","NODE_FORMAT_SUPPORT","parseImageNode","arrayBuffer","mimeType","Error","buffer","Buffer","from","ndarray","getPixelsAsync","Promise","resolve","err","shape","layers","length","shift","data","Uint8Array","width","height","components"],"sources":["../../src/images/parse-image.node.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport getPixels from 'get-pixels';\n\n/** Declares which image format mime types this loader polyfill supports */\nexport const NODE_FORMAT_SUPPORT = ['image/png', 'image/jpeg', 'image/gif'];\n\n// Note: These types are also defined in @loaders.gl/images and need to be kept in sync\ntype NDArray = {\n shape: number[];\n data: Uint8Array;\n width: number;\n height: number;\n components: number;\n layers: number[];\n};\n\nexport async function parseImageNode(arrayBuffer: ArrayBuffer, mimeType: string): Promise<NDArray> {\n if (!mimeType) {\n throw new Error('MIMEType is required to parse image under Node.js');\n }\n\n const buffer = arrayBuffer instanceof Buffer ? arrayBuffer : Buffer.from(arrayBuffer);\n const ndarray = await getPixelsAsync(buffer, mimeType);\n return ndarray;\n}\n\n// TODO - check if getPixels callback is asynchronous if provided with buffer input\n// if not, parseImage can be a sync function\nfunction getPixelsAsync(buffer: Buffer, mimeType: string): Promise<NDArray> {\n return new Promise<NDArray>((resolve) =>\n getPixels(buffer, mimeType, (err, ndarray) => {\n if (err) {\n throw err;\n }\n\n const shape = [...ndarray.shape];\n const layers = ndarray.shape.length === 4 ? ndarray.shape.shift() : 1;\n const data = ndarray.data instanceof Buffer ? new Uint8Array(ndarray.data) : ndarray.data;\n\n // extract width/height etc\n resolve({\n shape,\n data,\n width: ndarray.shape[0],\n height: ndarray.shape[1],\n components: ndarray.shape[2],\n // TODO - error\n layers: layers ? [layers] : []\n });\n })\n );\n}\n"],"mappings":"AAIA,OAAOA,SAAS,MAAM,YAAY;AAGlC,OAAO,MAAMC,mBAAmB,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC;AAY3E,OAAO,eAAeC,cAAcA,CAACC,WAAwB,EAAEC,QAAgB,EAAoB;EACjG,IAAI,CAACA,QAAQ,EAAE;IACb,MAAM,IAAIC,KAAK,CAAC,mDAAmD,CAAC;EACtE;EAEA,MAAMC,MAAM,GAAGH,WAAW,YAAYI,MAAM,GAAGJ,WAAW,GAAGI,MAAM,CAACC,IAAI,CAACL,WAAW,CAAC;EACrF,MAAMM,OAAO,GAAG,MAAMC,cAAc,CAACJ,MAAM,EAAEF,QAAQ,CAAC;EACtD,OAAOK,OAAO;AAChB;AAIA,SAASC,cAAcA,CAACJ,MAAc,EAAEF,QAAgB,EAAoB;EAC1E,OAAO,IAAIO,OAAO,CAAWC,OAAO,IAClCZ,SAAS,CAACM,MAAM,EAAEF,QAAQ,EAAE,CAACS,GAAG,EAAEJ,OAAO,KAAK;IAC5C,IAAII,GAAG,EAAE;MACP,MAAMA,GAAG;IACX;IAEA,MAAMC,KAAK,GAAG,CAAC,GAAGL,OAAO,CAACK,KAAK,CAAC;IAChC,MAAMC,MAAM,GAAGN,OAAO,CAACK,KAAK,CAACE,MAAM,KAAK,CAAC,GAAGP,OAAO,CAACK,KAAK,CAACG,KAAK,CAAC,CAAC,GAAG,CAAC;IACrE,MAAMC,IAAI,GAAGT,OAAO,CAACS,IAAI,YAAYX,MAAM,GAAG,IAAIY,UAAU,CAACV,OAAO,CAACS,IAAI,CAAC,GAAGT,OAAO,CAACS,IAAI;IAGzFN,OAAO,CAAC;MACNE,KAAK;MACLI,IAAI;MACJE,KAAK,EAAEX,OAAO,CAACK,KAAK,CAAC,CAAC,CAAC;MACvBO,MAAM,EAAEZ,OAAO,CAACK,KAAK,CAAC,CAAC,CAAC;MACxBQ,UAAU,EAAEb,OAAO,CAACK,KAAK,CAAC,CAAC,CAAC;MAE5BC,MAAM,EAAEA,MAAM,GAAG,CAACA,MAAM,CAAC,GAAG;IAC9B,CAAC,CAAC;EACJ,CAAC,CACH,CAAC;AACH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.browser.js","names":["installFilePolyfills","NodeFileSystem","fetchNode","path","options","Error","globalThis","process","env"],"sources":["../src/index.browser.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n\nexport function installFilePolyfills() {}\n\n// Dummy export to avoid import errors in browser tests\nexport const NodeFileSystem = null;\n\nexport function fetchNode(path: string, options: RequestInit): Promise<Response> {\n throw new Error('fetchNode not available in browser');\n}\n\n// Ensure process and process.env are defined, as Node code tends to crash on these\n// @ts-ignore\nglobalThis.process = globalThis.process || {};\n// @ts-ignore\nglobalThis.process.env = globalThis.process.env || {};\n"],"mappings":"AAGA,OAAO,SAASA,oBAAoBA,CAAA,EAAG,CAAC;AAGxC,OAAO,MAAMC,cAAc,GAAG,IAAI;AAElC,OAAO,SAASC,SAASA,CAACC,IAAY,EAAEC,OAAoB,EAAqB;EAC/E,MAAM,IAAIC,KAAK,CAAC,oCAAoC,CAAC;AACvD;AAIAC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAE7CD,UAAU,CAACC,OAAO,CAACC,GAAG,GAAGF,UAAU,CAACC,OAAO,CAACC,GAAG,IAAI,CAAC,CAAC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["isBrowser","TextDecoder","TextEncoder","atob","btoa","encodeImageNode","parseImageNode","NODE_FORMAT_SUPPORT","NodeFile","NodeFileSystem","fetchNode","NodeHash","versions","nodeVersion","parseInt","node","split","makeNodeStream","Blob_","Blob","File_","File","console","error","globalThis","loaders","imageFormatsNode","_parseImageNode","_imageFormatsNode","readFileAsArrayBuffer","readFileAsText","requireFromFile","requireFromString","installFilePolyfills","Headers","HeadersNode","Response","ResponseNode","fetchNodePolyfill","fetch"],"sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable dot-notation */\nimport {isBrowser} from './utils/is-browser';\n\nimport {TextDecoder, TextEncoder} from './text-encoder/text-encoder';\n\n// Node specific\nimport {atob, btoa} from './buffer/btoa.node';\n\nimport {encodeImageNode} from './images/encode-image-node';\nimport {parseImageNode, NODE_FORMAT_SUPPORT} from './images/parse-image-node';\n\n// FILESYSTEM POLYFILLS\nimport {NodeFile} from './filesystems/node-file';\nimport {NodeFileSystem} from './filesystems/node-filesystem';\nimport {fetchNode} from './filesystems/fetch-node';\n\nimport {NodeHash} from './crypto/node-hash';\n\n// NODE VERSION\nimport {versions} from 'node:process';\nexport const nodeVersion = parseInt(versions.node.split('.')[0]);\n\n// STREAM POLYFILLS\nimport {makeNodeStream} from './streams/make-node-stream';\n\n// BLOB AND FILE POLYFILLS\nexport {Blob_ as Blob} from './file/install-blob-polyfills';\nexport {File_ as File} from './file/install-file-polyfills';\n\nif (isBrowser) {\n // eslint-disable-next-line no-console\n console.error(\n 'loaders.gl: The @loaders.gl/polyfills should only be used in Node.js environments'\n );\n}\n\nglobalThis.loaders = globalThis.loaders || {};\n\n// STREAM POLYFILLS\nexport {makeNodeStream} from './streams/make-node-stream';\nglobalThis.loaders.makeNodeStream = makeNodeStream;\n\n// FILESYSTEM POLYFILLS\nglobalThis.loaders.NodeFile = NodeFile;\nglobalThis.loaders.NodeFileSystem = NodeFileSystem;\nglobalThis.loaders.fetchNode = fetchNode;\n\n// CRYPTO POLYFILLS\nglobalThis.loaders.NodeHash = NodeHash;\n\n// POLYFILLS: TextEncoder, TextDecoder\n// - Recent Node versions have these classes but virtually no encodings unless special build.\n// - Browser: Edge, IE11 do not have these\n\nif (!globalThis.TextEncoder) {\n // @ts-expect-error\n globalThis.TextEncoder = TextEncoder;\n}\n\nif (!globalThis.TextDecoder) {\n // @ts-expect-error\n globalThis.TextDecoder = TextDecoder;\n}\n\n// POLYFILLS: btoa, atob\n// - Node: Yes\n// - Browser: No\n\nif (!('atob' in globalThis) && atob) {\n globalThis['atob'] = atob;\n}\nif (!('btoa' in globalThis) && btoa) {\n globalThis['btoa'] = btoa;\n}\n\n// NODE IMAGE FUNCTIONS:\n// These are not official polyfills but used by the @loaders.gl/images module if installed\n// TODO - is there an appropriate Image API we could polyfill using an adapter?\n\nglobalThis.loaders.encodeImageNode = encodeImageNode;\nglobalThis.loaders.parseImageNode = parseImageNode;\nglobalThis.loaders.imageFormatsNode = NODE_FORMAT_SUPPORT;\n\n// Deprecated, remove after republish\nglobalThis._parseImageNode = parseImageNode;\nglobalThis._imageFormatsNode = NODE_FORMAT_SUPPORT;\n\n// LOAD LIBRARY\n\nimport {\n readFileAsArrayBuffer,\n readFileAsText,\n requireFromFile,\n requireFromString\n} from './load-library/require-utils.node';\n\nglobalThis.loaders.readFileAsArrayBuffer = readFileAsArrayBuffer;\nglobalThis.loaders.readFileAsText = readFileAsText;\nglobalThis.loaders.requireFromFile = requireFromFile;\nglobalThis.loaders.requireFromString = requireFromString;\n\nexport {installFilePolyfills} from './file/install-file-polyfills';\n\n// DEPRECATED POLYFILL:\n// - Node v18+: No, not needed\n// - Node v16 and lower: Yes\n// - Browsers (evergreen): Not needed.\n// - IE11: No. This polyfill is node only, install external polyfill\nimport {Headers as HeadersNode} from './fetch/headers-polyfill';\nimport {Response as ResponseNode} from './fetch/response-polyfill';\nimport {fetchNode as fetchNodePolyfill} from './fetch/fetch-polyfill';\n\nif (nodeVersion < 18) {\n if (!('Headers' in globalThis) && HeadersNode) {\n // @ts-ignore\n globalThis.Headers = HeadersNode;\n }\n\n if (!('Response' in globalThis) && ResponseNode) {\n // @ts-ignore\n globalThis.Response = ResponseNode;\n }\n\n if (!('fetch' in globalThis) && fetchNodePolyfill) {\n // @ts-ignore\n globalThis.fetch = fetchNodePolyfill;\n }\n}\n"],"mappings":"SACQA,SAAS;AAAA,SAETC,WAAW,EAAEC,WAAW;AAAA,SAGxBC,IAAI,EAAEC,IAAI;AAAA,SAEVC,eAAe;AAAA,SACfC,cAAc,EAAEC,mBAAmB;AAAA,SAGnCC,QAAQ;AAAA,SACRC,cAAc;AAAA,SACdC,SAAS;AAAA,SAETC,QAAQ;AAGhB,SAAQC,QAAQ,QAAO,cAAc;AACrC,OAAO,MAAMC,WAAW,GAAGC,QAAQ,CAACF,QAAQ,CAACG,IAAI,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAAC,SAGzDC,cAAc;AAAA,SAGdC,KAAK,IAAIC,IAAI;AAAA,SACbC,KAAK,IAAIC,IAAI;AAErB,IAAIrB,SAAS,EAAE;EAEbsB,OAAO,CAACC,KAAK,CACX,mFACF,CAAC;AACH;AAEAC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAAC,SAGtCR,cAAc;AACtBO,UAAU,CAACC,OAAO,CAACR,cAAc,GAAGA,cAAc;AAGlDO,UAAU,CAACC,OAAO,CAACjB,QAAQ,GAAGA,QAAQ;AACtCgB,UAAU,CAACC,OAAO,CAAChB,cAAc,GAAGA,cAAc;AAClDe,UAAU,CAACC,OAAO,CAACf,SAAS,GAAGA,SAAS;AAGxCc,UAAU,CAACC,OAAO,CAACd,QAAQ,GAAGA,QAAQ;AAMtC,IAAI,CAACa,UAAU,CAACtB,WAAW,EAAE;EAE3BsB,UAAU,CAACtB,WAAW,GAAGA,WAAW;AACtC;AAEA,IAAI,CAACsB,UAAU,CAACvB,WAAW,EAAE;EAE3BuB,UAAU,CAACvB,WAAW,GAAGA,WAAW;AACtC;AAMA,IAAI,EAAE,MAAM,IAAIuB,UAAU,CAAC,IAAIrB,IAAI,EAAE;EACnCqB,UAAU,CAAC,MAAM,CAAC,GAAGrB,IAAI;AAC3B;AACA,IAAI,EAAE,MAAM,IAAIqB,UAAU,CAAC,IAAIpB,IAAI,EAAE;EACnCoB,UAAU,CAAC,MAAM,CAAC,GAAGpB,IAAI;AAC3B;AAMAoB,UAAU,CAACC,OAAO,CAACpB,eAAe,GAAGA,eAAe;AACpDmB,UAAU,CAACC,OAAO,CAACnB,cAAc,GAAGA,cAAc;AAClDkB,UAAU,CAACC,OAAO,CAACC,gBAAgB,GAAGnB,mBAAmB;AAGzDiB,UAAU,CAACG,eAAe,GAAGrB,cAAc;AAC3CkB,UAAU,CAACI,iBAAiB,GAAGrB,mBAAmB;AAAC,SAKjDsB,qBAAqB,EACrBC,cAAc,EACdC,eAAe,EACfC,iBAAiB;AAGnBR,UAAU,CAACC,OAAO,CAACI,qBAAqB,GAAGA,qBAAqB;AAChEL,UAAU,CAACC,OAAO,CAACK,cAAc,GAAGA,cAAc;AAClDN,UAAU,CAACC,OAAO,CAACM,eAAe,GAAGA,eAAe;AACpDP,UAAU,CAACC,OAAO,CAACO,iBAAiB,GAAGA,iBAAiB;AAAC,SAEjDC,oBAAoB;AAAA,SAOpBC,OAAO,IAAIC,WAAW;AAAA,SACtBC,QAAQ,IAAIC,YAAY;AAAA,SACxB3B,SAAS,IAAI4B,iBAAiB;AAEtC,IAAIzB,WAAW,GAAG,EAAE,EAAE;EACpB,IAAI,EAAE,SAAS,IAAIW,UAAU,CAAC,IAAIW,WAAW,EAAE;IAE7CX,UAAU,CAACU,OAAO,GAAGC,WAAW;EAClC;EAEA,IAAI,EAAE,UAAU,IAAIX,UAAU,CAAC,IAAIa,YAAY,EAAE;IAE/Cb,UAAU,CAACY,QAAQ,GAAGC,YAAY;EACpC;EAEA,IAAI,EAAE,OAAO,IAAIb,UAAU,CAAC,IAAIc,iBAAiB,EAAE;IAEjDd,UAAU,CAACe,KAAK,GAAGD,iBAAiB;EACtC;AACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"require-utils.node.js","names":["Module","path","fs","readFileAsArrayBuffer","filename","startsWith","response","fetch","arrayBuffer","buffer","readFileSync","readFileAsText","text","requireFromFile","code","requireFromString","process","cwd","_module","_options","_options2","arguments","length","undefined","options","replace","Error","paths","_nodeModulePaths","dirname","parent","module","newModule","concat","prependPaths","appendPaths","_compile","children","splice","indexOf","exports"],"sources":["../../src/load-library/require-utils.node.ts"],"sourcesContent":["// Fork of https://github.com/floatdrop/require-from-string/blob/master/index.js\n// Copyright (c) Vsevolod Strukchinsky <floatdrop@gmail.com> (github.com/floatdrop)\n// MIT license\n\n// this file is not visible to webpack (it is excluded in the package.json \"browser\" field).\n\nimport Module from 'module';\nimport path from 'path';\nimport fs from 'fs';\n\n/**\n * Load a file from local file system\n * @param filename\n * @returns\n */\nexport async function readFileAsArrayBuffer(filename: string): Promise<ArrayBuffer> {\n if (filename.startsWith('http')) {\n const response = await fetch(filename);\n return await response.arrayBuffer();\n }\n const buffer = fs.readFileSync(filename);\n return buffer.buffer;\n}\n\n/**\n * Load a file from local file system\n * @param filename\n * @returns\n */\nexport async function readFileAsText(filename: string): Promise<string> {\n if (filename.startsWith('http')) {\n const response = await fetch(filename);\n return await response.text();\n }\n const text = fs.readFileSync(filename, 'utf8');\n return text;\n}\n\n// Node.js Dynamically require from file\n// Relative names are resolved relative to cwd\n// This indirect function is provided because webpack will try to bundle `module.require`.\n// this file is not visible to webpack (it is excluded in the package.json \"browser\" field).\nexport async function requireFromFile(filename: string): Promise<any> {\n if (filename.startsWith('http')) {\n const response = await fetch(filename);\n const code = await response.text();\n return requireFromString(code);\n }\n\n if (!filename.startsWith('/')) {\n filename = `${process.cwd()}/${filename}`;\n }\n const code = await fs.readFileSync(filename, 'utf8');\n return requireFromString(code);\n}\n\n// Dynamically require from string\n// - `code` - Required - Type: string - Module code.\n// - `filename` - Type: string - Default: '' - Optional filename.\n// - `options.appendPaths` Type: Array List of paths, that will be appended to module paths.\n// Useful, when you want to be able require modules from these paths.\n// - `options.prependPaths` Type: Array Same as appendPaths, but paths will be prepended.\nexport function requireFromString(\n code: string,\n filename = '',\n options?: {\n prependPaths?: string[];\n appendPaths?: string[];\n }\n): any {\n if (typeof filename === 'object') {\n options = filename;\n filename = '';\n }\n filename = filename.replace('file://', '');\n\n if (typeof code !== 'string') {\n throw new Error(`code must be a string, not ${typeof code}`);\n }\n\n // @ts-ignore\n const paths = Module._nodeModulePaths(path.dirname(filename));\n\n const parent = typeof module !== 'undefined' && module?.parent;\n\n // @ts-ignore\n const newModule = new Module(filename, parent);\n newModule.filename = filename;\n newModule.paths = ([] as string[])\n .concat(options?.prependPaths || [])\n .concat(paths)\n .concat(options?.appendPaths || []);\n // @ts-ignore\n newModule._compile(code, filename);\n\n if (parent && parent.children) {\n parent.children.splice(parent.children.indexOf(newModule), 1);\n }\n\n return newModule.exports;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"make-node-stream.js","names":["Stream","_Readable","Readable","makeNodeStream","source","options","iterator","Symbol","asyncIterator","AsyncIterableReadable","constructor","it","_pulling","_bytesMode","_iterator","objectMode","_read","size","_pull","_destroy","error","cb","_this$_iterator","_this$_iterator$throw","throw","call","_this$_iterator2","_this$_iterator2$retu","return","_r","bm","r","readable","next","done","ArrayBuffer","isView","value","byteLength","push","Uint8Array","_it$return"],"sources":["../../src/streams/make-node-stream.ts"],"sourcesContent":["import type {ReadableOptions} from 'stream';\nimport * as Stream from 'stream';\n\nclass _Readable {}\n\ntype ReadableType = Stream.Readable | _Readable;\nconst Readable = Stream.Readable || _Readable;\n\nexport type MakeStreamOptions = ReadableOptions;\n\n/** Builds a node stream from an iterator */\nexport function makeNodeStream<ArrayBuffer>(\n source: Iterable<ArrayBuffer> | AsyncIterable<ArrayBuffer>,\n options?: ReadableOptions\n): ReadableType {\n // @ts-ignore AsyncGenerator\n const iterator = source[Symbol.asyncIterator]\n ? // @ts-ignore AsyncGenerator\n source[Symbol.asyncIterator]()\n : // @ts-ignore AsyncGenerator\n source[Symbol.iterator]();\n return new AsyncIterableReadable(iterator, options);\n}\n\nclass AsyncIterableReadable extends Readable {\n private _pulling: boolean;\n private _bytesMode: boolean;\n private _iterator: AsyncIterator<ArrayBuffer>;\n\n constructor(it: AsyncIterator<ArrayBuffer>, options?: ReadableOptions) {\n super(options);\n this._iterator = it;\n this._pulling = false;\n this._bytesMode = !options || !options.objectMode;\n }\n\n async _read(size: number): Promise<void> {\n if (!this._pulling) {\n this._pulling = true;\n this._pulling = await this._pull(size, this._iterator);\n }\n }\n\n async _destroy(error: Error | null, cb: (e: Error | null) => void): Promise<void> {\n if (!this._iterator) {\n return;\n }\n if (error) {\n await this._iterator?.throw?.(error);\n } else {\n await this._iterator?.return?.(error);\n }\n cb?.(null);\n }\n\n // eslint-disable-next-line complexity\n private async _pull(size: number, it: AsyncIterator<ArrayBuffer>): Promise<boolean> {\n const bm = this._bytesMode;\n let r: IteratorResult<ArrayBuffer> | null = null;\n // while (this.readable && !(r = await it.next(bm ? size : null)).done) {\n while (this.readable && !(r = await it.next()).done) {\n if (size !== null) {\n size -= bm && ArrayBuffer.isView(r.value) ? r.value.byteLength : 1;\n }\n if (!this.push(new Uint8Array(r.value)) || size <= 0) {\n break;\n }\n }\n if ((r?.done || !this.readable) && (this.push(null) || true)) {\n it?.return?.();\n }\n return !this.readable;\n }\n}\n"],"mappings":"AACA,OAAO,KAAKA,MAAM,MAAM,QAAQ;AAEhC,MAAMC,SAAS,CAAC;AAGhB,MAAMC,QAAQ,GAAGF,MAAM,CAACE,QAAQ,IAAID,SAAS;AAK7C,OAAO,SAASE,cAAcA,CAC5BC,MAA0D,EAC1DC,OAAyB,EACX;EAEd,MAAMC,QAAQ,GAAGF,MAAM,CAACG,MAAM,CAACC,aAAa,CAAC,GAEzCJ,MAAM,CAACG,MAAM,CAACC,aAAa,CAAC,CAAC,CAAC,GAE9BJ,MAAM,CAACG,MAAM,CAACD,QAAQ,CAAC,CAAC,CAAC;EAC7B,OAAO,IAAIG,qBAAqB,CAACH,QAAQ,EAAED,OAAO,CAAC;AACrD;AAEA,MAAMI,qBAAqB,SAASP,QAAQ,CAAC;EAK3CQ,WAAWA,CAACC,EAA8B,EAAEN,OAAyB,EAAE;IACrE,KAAK,CAACA,OAAO,CAAC;IAAC,KALTO,QAAQ;IAAA,KACRC,UAAU;IAAA,KACVC,SAAS;IAIf,IAAI,CAACA,SAAS,GAAGH,EAAE;IACnB,IAAI,CAACC,QAAQ,GAAG,KAAK;IACrB,IAAI,CAACC,UAAU,GAAG,CAACR,OAAO,IAAI,CAACA,OAAO,CAACU,UAAU;EACnD;EAEA,MAAMC,KAAKA,CAACC,IAAY,EAAiB;IACvC,IAAI,CAAC,IAAI,CAACL,QAAQ,EAAE;MAClB,IAAI,CAACA,QAAQ,GAAG,IAAI;MACpB,IAAI,CAACA,QAAQ,GAAG,MAAM,IAAI,CAACM,KAAK,CAACD,IAAI,EAAE,IAAI,CAACH,SAAS,CAAC;IACxD;EACF;EAEA,MAAMK,QAAQA,CAACC,KAAmB,EAAEC,EAA6B,EAAiB;IAChF,IAAI,CAAC,IAAI,CAACP,SAAS,EAAE;MACnB;IACF;IACA,IAAIM,KAAK,EAAE;MAAA,IAAAE,eAAA,EAAAC,qBAAA;MACT,QAAAD,eAAA,GAAM,IAAI,CAACR,SAAS,cAAAQ,eAAA,wBAAAC,qBAAA,GAAdD,eAAA,CAAgBE,KAAK,cAAAD,qBAAA,uBAArBA,qBAAA,CAAAE,IAAA,CAAAH,eAAA,EAAwBF,KAAK,CAAC;IACtC,CAAC,MAAM;MAAA,IAAAM,gBAAA,EAAAC,qBAAA;MACL,QAAAD,gBAAA,GAAM,IAAI,CAACZ,SAAS,cAAAY,gBAAA,wBAAAC,qBAAA,GAAdD,gBAAA,CAAgBE,MAAM,cAAAD,qBAAA,uBAAtBA,qBAAA,CAAAF,IAAA,CAAAC,gBAAA,EAAyBN,KAAK,CAAC;IACvC;IACAC,EAAE,aAAFA,EAAE,uBAAFA,EAAE,CAAG,IAAI,CAAC;EACZ;EAGA,MAAcH,KAAKA,CAACD,IAAY,EAAEN,EAA8B,EAAoB;IAAA,IAAAkB,EAAA;IAClF,MAAMC,EAAE,GAAG,IAAI,CAACjB,UAAU;IAC1B,IAAIkB,CAAqC,GAAG,IAAI;IAEhD,OAAO,IAAI,CAACC,QAAQ,IAAI,CAAC,CAACD,CAAC,GAAG,MAAMpB,EAAE,CAACsB,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE;MACnD,IAAIjB,IAAI,KAAK,IAAI,EAAE;QACjBA,IAAI,IAAIa,EAAE,IAAIK,WAAW,CAACC,MAAM,CAACL,CAAC,CAACM,KAAK,CAAC,GAAGN,CAAC,CAACM,KAAK,CAACC,UAAU,GAAG,CAAC;MACpE;MACA,IAAI,CAAC,IAAI,CAACC,IAAI,CAAC,IAAIC,UAAU,CAACT,CAAC,CAACM,KAAK,CAAC,CAAC,IAAIpB,IAAI,IAAI,CAAC,EAAE;QACpD;MACF;IACF;IACA,IAAI,CAAC,CAAAY,EAAA,GAAAE,CAAC,cAAAF,EAAA,eAADA,EAAA,CAAGK,IAAI,IAAI,CAAC,IAAI,CAACF,QAAQ,MAAM,IAAI,CAACO,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;MAAA,IAAAE,UAAA;MAC5D9B,EAAE,aAAFA,EAAE,wBAAA8B,UAAA,GAAF9B,EAAE,CAAEiB,MAAM,cAAAa,UAAA,uBAAVA,UAAA,CAAAhB,IAAA,CAAAd,EAAa,CAAC;IAChB;IACA,OAAO,CAAC,IAAI,CAACqB,QAAQ;EACvB;AACF"}