@loaders.gl/core 4.0.0 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.dev.js +8 -4
- package/dist/index.cjs +3 -3
- package/dist/lib/api/encode-table.js +1 -1
- package/dist/lib/api/encode-table.js.map +1 -1
- package/dist/lib/api/encode.js +1 -1
- package/dist/lib/api/encode.js.map +1 -1
- package/dist/lib/utils/response-utils.d.ts +1 -1
- package/dist/lib/utils/response-utils.d.ts.map +1 -1
- package/dist/lib/utils/response-utils.js +1 -1
- package/dist/lib/utils/response-utils.js.map +1 -1
- package/dist/null-worker-node.js +32 -24
- package/dist/null-worker.js +32 -24
- package/dist/workers/null-worker-node.d.ts +2 -0
- package/dist/workers/null-worker-node.d.ts.map +1 -0
- package/dist/workers/null-worker-node.js +4 -0
- package/dist/workers/null-worker-node.js.map +1 -0
- package/package.json +8 -5
- package/src/lib/api/encode-table.ts +1 -1
- package/src/lib/api/encode.ts +1 -1
- package/src/lib/utils/response-utils.ts +9 -7
- package/src/workers/null-worker-node.ts +7 -0
package/dist/dist.dev.js
CHANGED
|
@@ -591,7 +591,11 @@ var __exports__ = (() => {
|
|
|
591
591
|
url = options.workerUrl;
|
|
592
592
|
}
|
|
593
593
|
if (options._workerType === "test") {
|
|
594
|
-
|
|
594
|
+
if (isBrowser2) {
|
|
595
|
+
url = `modules/${worker.module}/dist/${workerFile}`;
|
|
596
|
+
} else {
|
|
597
|
+
url = `modules/${worker.module}/src/workers/${worker.id}-worker-node.ts`;
|
|
598
|
+
}
|
|
595
599
|
}
|
|
596
600
|
if (!url) {
|
|
597
601
|
let version = worker.version;
|
|
@@ -1607,7 +1611,7 @@ var __exports__ = (() => {
|
|
|
1607
1611
|
try {
|
|
1608
1612
|
const contentType = response.headers.get("Content-Type");
|
|
1609
1613
|
let text = response.statusText;
|
|
1610
|
-
if (contentType
|
|
1614
|
+
if (contentType?.includes("application/json")) {
|
|
1611
1615
|
text += ` ${await response.text()}`;
|
|
1612
1616
|
}
|
|
1613
1617
|
message += text;
|
|
@@ -3140,7 +3144,7 @@ var __exports__ = (() => {
|
|
|
3140
3144
|
if (writer.text && writer.encodeText) {
|
|
3141
3145
|
return await writer.encodeText(data, options);
|
|
3142
3146
|
}
|
|
3143
|
-
if (writer.text
|
|
3147
|
+
if (writer.text) {
|
|
3144
3148
|
const arrayBuffer = await encodeTable(data, writer, options);
|
|
3145
3149
|
return new TextDecoder().decode(arrayBuffer);
|
|
3146
3150
|
}
|
|
@@ -3210,7 +3214,7 @@ var __exports__ = (() => {
|
|
|
3210
3214
|
if (writer.text && writer.encodeText) {
|
|
3211
3215
|
return await writer.encodeText(data, options);
|
|
3212
3216
|
}
|
|
3213
|
-
if (writer.text
|
|
3217
|
+
if (writer.text) {
|
|
3214
3218
|
const arrayBuffer = await encode(data, writer, options);
|
|
3215
3219
|
return new TextDecoder().decode(arrayBuffer);
|
|
3216
3220
|
}
|
package/dist/index.cjs
CHANGED
|
@@ -216,7 +216,7 @@ async function getResponseError(response) {
|
|
|
216
216
|
try {
|
|
217
217
|
const contentType = response.headers.get("Content-Type");
|
|
218
218
|
let text = response.statusText;
|
|
219
|
-
if (contentType.includes("application/json")) {
|
|
219
|
+
if (contentType == null ? void 0 : contentType.includes("application/json")) {
|
|
220
220
|
text += ` ${await response.text()}`;
|
|
221
221
|
}
|
|
222
222
|
message += text;
|
|
@@ -1232,7 +1232,7 @@ async function encodeTableAsText(data, writer, options) {
|
|
|
1232
1232
|
if (writer.text && writer.encodeText) {
|
|
1233
1233
|
return await writer.encodeText(data, options);
|
|
1234
1234
|
}
|
|
1235
|
-
if (writer.text
|
|
1235
|
+
if (writer.text) {
|
|
1236
1236
|
const arrayBuffer = await encodeTable(data, writer, options);
|
|
1237
1237
|
return new TextDecoder().decode(arrayBuffer);
|
|
1238
1238
|
}
|
|
@@ -1304,7 +1304,7 @@ async function encodeText(data, writer, options) {
|
|
|
1304
1304
|
if (writer.text && writer.encodeText) {
|
|
1305
1305
|
return await writer.encodeText(data, options);
|
|
1306
1306
|
}
|
|
1307
|
-
if (writer.text
|
|
1307
|
+
if (writer.text) {
|
|
1308
1308
|
const arrayBuffer = await encode(data, writer, options);
|
|
1309
1309
|
return new TextDecoder().decode(arrayBuffer);
|
|
1310
1310
|
}
|
|
@@ -21,7 +21,7 @@ export async function encodeTableAsText(data, writer, options) {
|
|
|
21
21
|
if (writer.text && writer.encodeText) {
|
|
22
22
|
return await writer.encodeText(data, options);
|
|
23
23
|
}
|
|
24
|
-
if (writer.text
|
|
24
|
+
if (writer.text) {
|
|
25
25
|
const arrayBuffer = await encodeTable(data, writer, options);
|
|
26
26
|
return new TextDecoder().decode(arrayBuffer);
|
|
27
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode-table.js","names":["concatenateArrayBuffers","encodeTable","data","writer","options","encode","encodeText","text","TextEncoder","encodeInBatches","batches","encodeTableInBatches","chunks","batch","push","Error","encodeTableAsText","arrayBuffer","TextDecoder","decode","name","dataIterator","getIterator","start","end","length"],"sources":["../../../src/lib/api/encode-table.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n// Copyright 2022 Foursquare Labs, Inc\n\n/* global TextEncoder, TextDecoder */\nimport {concatenateArrayBuffers, Writer, WriterOptionsType} from '@loaders.gl/loader-utils';\nimport {Table} from '@loaders.gl/schema';\n\nexport async function encodeTable<WriterT extends Writer = Writer>(\n data: Table,\n writer: WriterT,\n options?: WriterOptionsType<WriterT>\n): Promise<ArrayBuffer> {\n if (writer.encode) {\n return await writer.encode(data, options);\n }\n\n if (writer.encodeText) {\n const text = await writer.encodeText(data, options);\n return new TextEncoder().encode(text);\n }\n\n if (writer.encodeInBatches) {\n // Create an iterator representing the data\n // TODO - Assumes this is a table\n const batches = encodeTableInBatches(data, writer, options);\n\n // Concatenate the output\n const chunks: ArrayBuffer[] = [];\n for await (const batch of batches) {\n chunks.push(batch);\n }\n return concatenateArrayBuffers(...chunks);\n }\n\n throw new Error('Writer could not encode data');\n}\n\nexport async function encodeTableAsText<WriterT extends Writer = Writer>(\n data: Table,\n writer: WriterT,\n options?: WriterOptionsType<WriterT>\n): Promise<string> {\n if (writer.text && writer.encodeText) {\n return await writer.encodeText(data, options);\n }\n\n if (writer.text
|
|
1
|
+
{"version":3,"file":"encode-table.js","names":["concatenateArrayBuffers","encodeTable","data","writer","options","encode","encodeText","text","TextEncoder","encodeInBatches","batches","encodeTableInBatches","chunks","batch","push","Error","encodeTableAsText","arrayBuffer","TextDecoder","decode","name","dataIterator","getIterator","start","end","length"],"sources":["../../../src/lib/api/encode-table.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n// Copyright 2022 Foursquare Labs, Inc\n\n/* global TextEncoder, TextDecoder */\nimport {concatenateArrayBuffers, Writer, WriterOptionsType} from '@loaders.gl/loader-utils';\nimport {Table} from '@loaders.gl/schema';\n\nexport async function encodeTable<WriterT extends Writer = Writer>(\n data: Table,\n writer: WriterT,\n options?: WriterOptionsType<WriterT>\n): Promise<ArrayBuffer> {\n if (writer.encode) {\n return await writer.encode(data, options);\n }\n\n if (writer.encodeText) {\n const text = await writer.encodeText(data, options);\n return new TextEncoder().encode(text);\n }\n\n if (writer.encodeInBatches) {\n // Create an iterator representing the data\n // TODO - Assumes this is a table\n const batches = encodeTableInBatches(data, writer, options);\n\n // Concatenate the output\n const chunks: ArrayBuffer[] = [];\n for await (const batch of batches) {\n chunks.push(batch);\n }\n return concatenateArrayBuffers(...chunks);\n }\n\n throw new Error('Writer could not encode data');\n}\n\nexport async function encodeTableAsText<WriterT extends Writer = Writer>(\n data: Table,\n writer: WriterT,\n options?: WriterOptionsType<WriterT>\n): Promise<string> {\n if (writer.text && writer.encodeText) {\n return await writer.encodeText(data, options);\n }\n\n if (writer.text) {\n const arrayBuffer = await encodeTable(data, writer, options);\n return new TextDecoder().decode(arrayBuffer);\n }\n throw new Error(`Writer ${writer.name} could not encode data as text`);\n}\n\nexport function encodeTableInBatches<WriterT extends Writer = Writer>(\n data: Table,\n writer: WriterT,\n options?: WriterOptionsType<WriterT>\n): AsyncIterable<ArrayBuffer> {\n if (writer.encodeInBatches) {\n const dataIterator = getIterator(data);\n // @ts-expect-error\n return writer.encodeInBatches(dataIterator, options);\n }\n // TODO -fall back to atomic encode?\n throw new Error('Writer could not encode data in batches');\n}\n\nfunction getIterator(data: any): Iterable<{start: number; end: number}> {\n const dataIterator = [{...data, start: 0, end: data.length}];\n return dataIterator;\n}\n"],"mappings":"AAKA,SAAQA,uBAAuB,QAAkC,0BAA0B;AAG3F,OAAO,eAAeC,WAAWA,CAC/BC,IAAW,EACXC,MAAe,EACfC,OAAoC,EACd;EACtB,IAAID,MAAM,CAACE,MAAM,EAAE;IACjB,OAAO,MAAMF,MAAM,CAACE,MAAM,CAACH,IAAI,EAAEE,OAAO,CAAC;EAC3C;EAEA,IAAID,MAAM,CAACG,UAAU,EAAE;IACrB,MAAMC,IAAI,GAAG,MAAMJ,MAAM,CAACG,UAAU,CAACJ,IAAI,EAAEE,OAAO,CAAC;IACnD,OAAO,IAAII,WAAW,CAAC,CAAC,CAACH,MAAM,CAACE,IAAI,CAAC;EACvC;EAEA,IAAIJ,MAAM,CAACM,eAAe,EAAE;IAG1B,MAAMC,OAAO,GAAGC,oBAAoB,CAACT,IAAI,EAAEC,MAAM,EAAEC,OAAO,CAAC;IAG3D,MAAMQ,MAAqB,GAAG,EAAE;IAChC,WAAW,MAAMC,KAAK,IAAIH,OAAO,EAAE;MACjCE,MAAM,CAACE,IAAI,CAACD,KAAK,CAAC;IACpB;IACA,OAAOb,uBAAuB,CAAC,GAAGY,MAAM,CAAC;EAC3C;EAEA,MAAM,IAAIG,KAAK,CAAC,8BAA8B,CAAC;AACjD;AAEA,OAAO,eAAeC,iBAAiBA,CACrCd,IAAW,EACXC,MAAe,EACfC,OAAoC,EACnB;EACjB,IAAID,MAAM,CAACI,IAAI,IAAIJ,MAAM,CAACG,UAAU,EAAE;IACpC,OAAO,MAAMH,MAAM,CAACG,UAAU,CAACJ,IAAI,EAAEE,OAAO,CAAC;EAC/C;EAEA,IAAID,MAAM,CAACI,IAAI,EAAE;IACf,MAAMU,WAAW,GAAG,MAAMhB,WAAW,CAACC,IAAI,EAAEC,MAAM,EAAEC,OAAO,CAAC;IAC5D,OAAO,IAAIc,WAAW,CAAC,CAAC,CAACC,MAAM,CAACF,WAAW,CAAC;EAC9C;EACA,MAAM,IAAIF,KAAK,CAAE,UAASZ,MAAM,CAACiB,IAAK,gCAA+B,CAAC;AACxE;AAEA,OAAO,SAAST,oBAAoBA,CAClCT,IAAW,EACXC,MAAe,EACfC,OAAoC,EACR;EAC5B,IAAID,MAAM,CAACM,eAAe,EAAE;IAC1B,MAAMY,YAAY,GAAGC,WAAW,CAACpB,IAAI,CAAC;IAEtC,OAAOC,MAAM,CAACM,eAAe,CAACY,YAAY,EAAEjB,OAAO,CAAC;EACtD;EAEA,MAAM,IAAIW,KAAK,CAAC,yCAAyC,CAAC;AAC5D;AAEA,SAASO,WAAWA,CAACpB,IAAS,EAA0C;EACtE,MAAMmB,YAAY,GAAG,CAAC;IAAC,GAAGnB,IAAI;IAAEqB,KAAK,EAAE,CAAC;IAAEC,GAAG,EAAEtB,IAAI,CAACuB;EAAM,CAAC,CAAC;EAC5D,OAAOJ,YAAY;AACrB"}
|
package/dist/lib/api/encode.js
CHANGED
|
@@ -51,7 +51,7 @@ export async function encodeText(data, writer, options) {
|
|
|
51
51
|
if (writer.text && writer.encodeText) {
|
|
52
52
|
return await writer.encodeText(data, options);
|
|
53
53
|
}
|
|
54
|
-
if (writer.text
|
|
54
|
+
if (writer.text) {
|
|
55
55
|
const arrayBuffer = await encode(data, writer, options);
|
|
56
56
|
return new TextDecoder().decode(arrayBuffer);
|
|
57
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode.js","names":["canEncodeWithWorker","concatenateArrayBuffers","resolvePath","NodeFile","processOnWorker","isBrowser","fetchFile","getLoaderOptions","encode","data","writer","options","globalOptions","encodeSync","encodeText","TextEncoder","encodeInBatches","batches","chunks","batch","push","encodeURLtoURL","tmpInputFilename","getTemporaryFilename","file","write","tmpOutputFilename","outputFilename","response","arrayBuffer","Error","text","TextDecoder","decode","name","encodeTextSync","dataIterator","getIterator","inputUrl","outputUrl","start","end","length","filename"],"sources":["../../../src/lib/api/encode.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {Writer, WriterOptions, canEncodeWithWorker} from '@loaders.gl/loader-utils';\nimport {concatenateArrayBuffers, resolvePath, NodeFile} from '@loaders.gl/loader-utils';\nimport {processOnWorker} from '@loaders.gl/worker-utils';\nimport {isBrowser} from '@loaders.gl/loader-utils';\nimport {fetchFile} from '../fetch/fetch-file';\nimport {getLoaderOptions} from './loader-options';\n\n/**\n * Encode loaded data into a binary ArrayBuffer using the specified Writer.\n */\nexport async function encode(\n data: unknown,\n writer: Writer,\n options?: WriterOptions\n): Promise<ArrayBuffer> {\n const globalOptions = getLoaderOptions() as WriterOptions;\n // const globalOptions: WriterOptions = {}; // getWriterOptions();\n options = {...globalOptions, ...options};\n if (canEncodeWithWorker(writer, options)) {\n return await processOnWorker(writer, data, options);\n }\n\n // TODO Merge default writer options with options argument like it is done in load module.\n if (writer.encode) {\n return await writer.encode(data, options);\n }\n\n if (writer.encodeSync) {\n return writer.encodeSync(data, options);\n }\n\n if (writer.encodeText) {\n return new TextEncoder().encode(await writer.encodeText(data, options));\n }\n\n if (writer.encodeInBatches) {\n // Create an iterator representing the data\n // TODO - Assumes this is a table\n const batches = encodeInBatches(data, writer, options);\n\n // Concatenate the output\n const chunks: unknown[] = [];\n for await (const batch of batches) {\n chunks.push(batch);\n }\n // @ts-ignore\n return concatenateArrayBuffers(...chunks);\n }\n\n if (!isBrowser && writer.encodeURLtoURL) {\n // TODO - how to generate filenames with correct extensions?\n const tmpInputFilename = getTemporaryFilename('input');\n const file = new NodeFile(tmpInputFilename, 'w');\n await file.write(data as ArrayBuffer);\n\n const tmpOutputFilename = getTemporaryFilename('output');\n\n const outputFilename = await encodeURLtoURL(\n tmpInputFilename,\n tmpOutputFilename,\n writer,\n options\n );\n\n const response = await fetchFile(outputFilename);\n return response.arrayBuffer();\n }\n\n throw new Error('Writer could not encode data');\n}\n\n/**\n * Encode loaded data into a binary ArrayBuffer using the specified Writer.\n */\nexport function encodeSync(data: unknown, writer: Writer, options?: WriterOptions): ArrayBuffer {\n if (writer.encodeSync) {\n return writer.encodeSync(data, options);\n }\n throw new Error('Writer could not synchronously encode data');\n}\n\n/**\n * Encode loaded data to text using the specified Writer\n * @note This is a convenience function not intended for production use on large input data.\n * It is not optimized for performance. Data maybe converted from text to binary and back.\n * @throws if the writer does not generate text output\n */\nexport async function encodeText(\n data: unknown,\n writer: Writer,\n options?: WriterOptions\n): Promise<string> {\n if (writer.text && writer.encodeText) {\n return await writer.encodeText(data, options);\n }\n\n if (writer.text
|
|
1
|
+
{"version":3,"file":"encode.js","names":["canEncodeWithWorker","concatenateArrayBuffers","resolvePath","NodeFile","processOnWorker","isBrowser","fetchFile","getLoaderOptions","encode","data","writer","options","globalOptions","encodeSync","encodeText","TextEncoder","encodeInBatches","batches","chunks","batch","push","encodeURLtoURL","tmpInputFilename","getTemporaryFilename","file","write","tmpOutputFilename","outputFilename","response","arrayBuffer","Error","text","TextDecoder","decode","name","encodeTextSync","dataIterator","getIterator","inputUrl","outputUrl","start","end","length","filename"],"sources":["../../../src/lib/api/encode.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {Writer, WriterOptions, canEncodeWithWorker} from '@loaders.gl/loader-utils';\nimport {concatenateArrayBuffers, resolvePath, NodeFile} from '@loaders.gl/loader-utils';\nimport {processOnWorker} from '@loaders.gl/worker-utils';\nimport {isBrowser} from '@loaders.gl/loader-utils';\nimport {fetchFile} from '../fetch/fetch-file';\nimport {getLoaderOptions} from './loader-options';\n\n/**\n * Encode loaded data into a binary ArrayBuffer using the specified Writer.\n */\nexport async function encode(\n data: unknown,\n writer: Writer,\n options?: WriterOptions\n): Promise<ArrayBuffer> {\n const globalOptions = getLoaderOptions() as WriterOptions;\n // const globalOptions: WriterOptions = {}; // getWriterOptions();\n options = {...globalOptions, ...options};\n if (canEncodeWithWorker(writer, options)) {\n return await processOnWorker(writer, data, options);\n }\n\n // TODO Merge default writer options with options argument like it is done in load module.\n if (writer.encode) {\n return await writer.encode(data, options);\n }\n\n if (writer.encodeSync) {\n return writer.encodeSync(data, options);\n }\n\n if (writer.encodeText) {\n return new TextEncoder().encode(await writer.encodeText(data, options));\n }\n\n if (writer.encodeInBatches) {\n // Create an iterator representing the data\n // TODO - Assumes this is a table\n const batches = encodeInBatches(data, writer, options);\n\n // Concatenate the output\n const chunks: unknown[] = [];\n for await (const batch of batches) {\n chunks.push(batch);\n }\n // @ts-ignore\n return concatenateArrayBuffers(...chunks);\n }\n\n if (!isBrowser && writer.encodeURLtoURL) {\n // TODO - how to generate filenames with correct extensions?\n const tmpInputFilename = getTemporaryFilename('input');\n const file = new NodeFile(tmpInputFilename, 'w');\n await file.write(data as ArrayBuffer);\n\n const tmpOutputFilename = getTemporaryFilename('output');\n\n const outputFilename = await encodeURLtoURL(\n tmpInputFilename,\n tmpOutputFilename,\n writer,\n options\n );\n\n const response = await fetchFile(outputFilename);\n return response.arrayBuffer();\n }\n\n throw new Error('Writer could not encode data');\n}\n\n/**\n * Encode loaded data into a binary ArrayBuffer using the specified Writer.\n */\nexport function encodeSync(data: unknown, writer: Writer, options?: WriterOptions): ArrayBuffer {\n if (writer.encodeSync) {\n return writer.encodeSync(data, options);\n }\n throw new Error('Writer could not synchronously encode data');\n}\n\n/**\n * Encode loaded data to text using the specified Writer\n * @note This is a convenience function not intended for production use on large input data.\n * It is not optimized for performance. Data maybe converted from text to binary and back.\n * @throws if the writer does not generate text output\n */\nexport async function encodeText(\n data: unknown,\n writer: Writer,\n options?: WriterOptions\n): Promise<string> {\n if (writer.text && writer.encodeText) {\n return await writer.encodeText(data, options);\n }\n\n if (writer.text) {\n const arrayBuffer = await encode(data, writer, options);\n return new TextDecoder().decode(arrayBuffer);\n }\n\n throw new Error(`Writer ${writer.name} could not encode data as text`);\n}\n\n/**\n * Encode loaded data to text using the specified Writer\n * @note This is a convenience function not intended for production use on large input data.\n * It is not optimized for performance. Data maybe converted from text to binary and back.\n * @throws if the writer does not generate text output\n */\nexport function encodeTextSync(data: unknown, writer: Writer, options?: WriterOptions): string {\n if (writer.text && writer.encodeTextSync) {\n return writer.encodeTextSync(data, options);\n }\n\n if (writer.text && writer.encodeSync) {\n const arrayBuffer = encodeSync(data, writer, options);\n return new TextDecoder().decode(arrayBuffer);\n }\n\n throw new Error(`Writer ${writer.name} could not encode data as text`);\n}\n\n/**\n * Encode loaded data into a sequence (iterator) of binary ArrayBuffers using the specified Writer.\n */\nexport function encodeInBatches(\n data: unknown,\n writer: Writer,\n options?: WriterOptions\n): AsyncIterable<ArrayBuffer> {\n if (writer.encodeInBatches) {\n const dataIterator = getIterator(data);\n // @ts-expect-error\n return writer.encodeInBatches(dataIterator, options);\n }\n // TODO -fall back to atomic encode?\n throw new Error('Writer could not encode data in batches');\n}\n\n/**\n * Encode data stored in a file (on disk) to another file.\n * @note Node.js only. This function enables using command-line converters as \"writers\".\n */\nexport async function encodeURLtoURL(\n inputUrl: string,\n outputUrl: string,\n writer: Writer,\n options?: WriterOptions\n): Promise<string> {\n inputUrl = resolvePath(inputUrl);\n outputUrl = resolvePath(outputUrl);\n if (isBrowser || !writer.encodeURLtoURL) {\n throw new Error();\n }\n const outputFilename = await writer.encodeURLtoURL(inputUrl, outputUrl, options);\n return outputFilename;\n}\n\n/**\n * @todo TODO - this is an unacceptable hack!!!\n */\nfunction getIterator(data: any): Iterable<{table: any; start: number; end: number}> {\n const dataIterator = [{...data, start: 0, end: data.length}];\n return dataIterator;\n}\n\n/**\n * @todo Move to utils\n */\nfunction getTemporaryFilename(filename: string): string {\n return `/tmp/${filename}`;\n}\n"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @param resource
|
|
6
6
|
*/
|
|
7
|
-
export declare function makeResponse(resource:
|
|
7
|
+
export declare function makeResponse(resource: unknown): Promise<Response>;
|
|
8
8
|
/**
|
|
9
9
|
* Checks response status (async) and throws a helpful error message if status is not OK.
|
|
10
10
|
* @param response
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/response-utils.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"response-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/response-utils.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAuCvE;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAKrE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAM1D"}
|
|
@@ -47,7 +47,7 @@ async function getResponseError(response) {
|
|
|
47
47
|
try {
|
|
48
48
|
const contentType = response.headers.get('Content-Type');
|
|
49
49
|
let text = response.statusText;
|
|
50
|
-
if (contentType.includes('application/json')) {
|
|
50
|
+
if (contentType !== null && contentType !== void 0 && contentType.includes('application/json')) {
|
|
51
51
|
text += ` ${await response.text()}`;
|
|
52
52
|
}
|
|
53
53
|
message += text;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-utils.js","names":["isResponse","getResourceContentLength","getResourceUrl","getResourceMIMEType","makeResponse","resource","headers","contentLength","String","url","type","initialDataUrl","getInitialDataUrl","TextEncoder","encode","response","Response","Object","defineProperty","value","checkResponse","ok","message","getResponseError","Error","checkResponseSync","status","statusText","length","slice","contentType","get","text","includes","error","INITIAL_DATA_LENGTH","Blob","blobSlice","Promise","resolve","reader","FileReader","onload","event","_event$target","target","result","readAsDataURL","ArrayBuffer","base64","arrayBufferToBase64","buffer","binary","bytes","Uint8Array","i","byteLength","fromCharCode","btoa"],"sources":["../../../src/lib/utils/response-utils.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {isResponse} from '../../javascript-utils/is-type';\nimport {getResourceContentLength, getResourceUrl, getResourceMIMEType} from './resource-utils';\n\n/**\n * Returns a Response object\n * Adds content-length header when possible\n *\n * @param resource\n */\nexport async function makeResponse(resource:
|
|
1
|
+
{"version":3,"file":"response-utils.js","names":["isResponse","getResourceContentLength","getResourceUrl","getResourceMIMEType","makeResponse","resource","headers","contentLength","String","url","type","initialDataUrl","getInitialDataUrl","TextEncoder","encode","response","Response","Object","defineProperty","value","checkResponse","ok","message","getResponseError","Error","checkResponseSync","status","statusText","length","slice","contentType","get","text","includes","error","INITIAL_DATA_LENGTH","Blob","blobSlice","Promise","resolve","reader","FileReader","onload","event","_event$target","target","result","readAsDataURL","ArrayBuffer","base64","arrayBufferToBase64","buffer","binary","bytes","Uint8Array","i","byteLength","fromCharCode","btoa"],"sources":["../../../src/lib/utils/response-utils.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {isResponse} from '../../javascript-utils/is-type';\nimport {getResourceContentLength, getResourceUrl, getResourceMIMEType} from './resource-utils';\n\n/**\n * Returns a Response object\n * Adds content-length header when possible\n *\n * @param resource\n */\nexport async function makeResponse(resource: unknown): Promise<Response> {\n if (isResponse(resource)) {\n return resource as Response;\n }\n\n // Add content-length header if possible\n const headers: {[header: string]: string} = {};\n\n const contentLength = getResourceContentLength(resource);\n if (contentLength >= 0) {\n headers['content-length'] = String(contentLength);\n }\n\n // `new Response(File)` does not preserve content-type and URL\n // so we add them here\n const url = getResourceUrl(resource);\n const type = getResourceMIMEType(resource);\n if (type) {\n headers['content-type'] = type;\n }\n\n // Add a custom header with initial bytes if available\n const initialDataUrl = await getInitialDataUrl(resource);\n if (initialDataUrl) {\n headers['x-first-bytes'] = initialDataUrl;\n }\n\n // TODO - is this the best way of handling strings?\n // Maybe package as data URL instead?\n if (typeof resource === 'string') {\n // Convert to ArrayBuffer to avoid Response treating it as a URL\n resource = new TextEncoder().encode(resource);\n }\n\n // Attempt to create a Response from the resource, adding headers and setting url\n const response = new Response(resource as any, {headers});\n // We can't control `Response.url` via constructor, use a property override to record URL.\n Object.defineProperty(response, 'url', {value: url});\n return response;\n}\n\n/**\n * Checks response status (async) and throws a helpful error message if status is not OK.\n * @param response\n */\nexport async function checkResponse(response: Response): Promise<void> {\n if (!response.ok) {\n const message = await getResponseError(response);\n throw new Error(message);\n }\n}\n\n/**\n * Checks response status (sync) and throws a helpful error message if status is not OK.\n * @param response\n */\nexport function checkResponseSync(response: Response): void {\n if (!response.ok) {\n let message = `${response.status} ${response.statusText}`;\n message = message.length > 60 ? `${message.slice(0, 60)}...` : message;\n throw new Error(message);\n }\n}\n\n// HELPERS\n\nasync function getResponseError(response: Response): Promise<string> {\n let message = `Failed to fetch resource ${response.url} (${response.status}): `;\n try {\n const contentType = response.headers.get('Content-Type');\n let text = response.statusText;\n if (contentType?.includes('application/json')) {\n text += ` ${await response.text()}`;\n }\n message += text;\n message = message.length > 60 ? `${message.slice(0, 60)}...` : message;\n } catch (error) {\n // eslint forbids return in a finally statement, so we just catch here\n }\n return message;\n}\n\nasync function getInitialDataUrl(\n resource: string | Blob | ArrayBuffer | unknown\n): Promise<string | null> {\n const INITIAL_DATA_LENGTH = 5;\n if (typeof resource === 'string') {\n return `data:,${resource.slice(0, INITIAL_DATA_LENGTH)}`;\n }\n if (resource instanceof Blob) {\n const blobSlice = resource.slice(0, 5);\n return await new Promise((resolve) => {\n const reader = new FileReader();\n reader.onload = (event) => resolve(event?.target?.result as string);\n reader.readAsDataURL(blobSlice);\n });\n }\n if (resource instanceof ArrayBuffer) {\n const slice = resource.slice(0, INITIAL_DATA_LENGTH);\n const base64 = arrayBufferToBase64(slice);\n return `data:base64,${base64}`;\n }\n return null;\n}\n\n// https://stackoverflow.com/questions/9267899/arraybuffer-to-base64-encoded-string\nfunction arrayBufferToBase64(buffer: ArrayBuffer): string {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n}\n"],"mappings":"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"}
|
package/dist/null-worker-node.js
CHANGED
|
@@ -36,61 +36,69 @@ function isTransferable(object) {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
// ../worker-utils/src/lib/worker-farm/worker-body.ts
|
|
39
|
-
function getParentPort() {
|
|
39
|
+
async function getParentPort() {
|
|
40
40
|
let parentPort;
|
|
41
41
|
try {
|
|
42
42
|
eval("globalThis.parentPort = require('worker_threads').parentPort");
|
|
43
43
|
parentPort = globalThis.parentPort;
|
|
44
44
|
} catch {
|
|
45
|
+
try {
|
|
46
|
+
eval("globalThis.workerThreadsPromise = import('worker_threads')");
|
|
47
|
+
const workerThreads = await globalThis.workerThreadsPromise;
|
|
48
|
+
parentPort = workerThreads.parentPort;
|
|
49
|
+
} catch (error) {
|
|
50
|
+
console.error(error.message);
|
|
51
|
+
}
|
|
45
52
|
}
|
|
46
53
|
return parentPort;
|
|
47
54
|
}
|
|
48
55
|
var onMessageWrapperMap = /* @__PURE__ */ new Map();
|
|
49
56
|
var WorkerBody = class {
|
|
50
57
|
/** Check that we are actually in a worker thread */
|
|
51
|
-
static inWorkerThread() {
|
|
52
|
-
return typeof self !== "undefined" || Boolean(getParentPort());
|
|
58
|
+
static async inWorkerThread() {
|
|
59
|
+
return typeof self !== "undefined" || Boolean(await getParentPort());
|
|
53
60
|
}
|
|
54
61
|
/*
|
|
55
62
|
* (type: WorkerMessageType, payload: WorkerMessagePayload) => any
|
|
56
63
|
*/
|
|
57
64
|
static set onmessage(onMessage) {
|
|
58
|
-
function handleMessage(message) {
|
|
59
|
-
const
|
|
60
|
-
const { type, payload } =
|
|
65
|
+
async function handleMessage(message) {
|
|
66
|
+
const parentPort2 = await getParentPort();
|
|
67
|
+
const { type, payload } = parentPort2 ? message : message.data;
|
|
61
68
|
onMessage(type, payload);
|
|
62
69
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
getParentPort().then((parentPort2) => {
|
|
71
|
+
if (parentPort2) {
|
|
72
|
+
parentPort2.on("message", handleMessage);
|
|
73
|
+
parentPort2.on("exit", () => console.debug("Node worker closing"));
|
|
74
|
+
} else {
|
|
75
|
+
globalThis.onmessage = handleMessage;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
70
78
|
}
|
|
71
|
-
static addEventListener(onMessage) {
|
|
79
|
+
static async addEventListener(onMessage) {
|
|
72
80
|
let onMessageWrapper = onMessageWrapperMap.get(onMessage);
|
|
73
81
|
if (!onMessageWrapper) {
|
|
74
|
-
onMessageWrapper = (message) => {
|
|
82
|
+
onMessageWrapper = async (message) => {
|
|
75
83
|
if (!isKnownMessage(message)) {
|
|
76
84
|
return;
|
|
77
85
|
}
|
|
78
|
-
const parentPort3 = getParentPort();
|
|
86
|
+
const parentPort3 = await getParentPort();
|
|
79
87
|
const { type, payload } = parentPort3 ? message : message.data;
|
|
80
88
|
onMessage(type, payload);
|
|
81
89
|
};
|
|
82
90
|
}
|
|
83
|
-
const parentPort2 = getParentPort();
|
|
91
|
+
const parentPort2 = await getParentPort();
|
|
84
92
|
if (parentPort2) {
|
|
85
93
|
console.error("not implemented");
|
|
86
94
|
} else {
|
|
87
95
|
globalThis.addEventListener("message", onMessageWrapper);
|
|
88
96
|
}
|
|
89
97
|
}
|
|
90
|
-
static removeEventListener(onMessage) {
|
|
98
|
+
static async removeEventListener(onMessage) {
|
|
91
99
|
const onMessageWrapper = onMessageWrapperMap.get(onMessage);
|
|
92
100
|
onMessageWrapperMap.delete(onMessage);
|
|
93
|
-
const parentPort2 = getParentPort();
|
|
101
|
+
const parentPort2 = await getParentPort();
|
|
94
102
|
if (parentPort2) {
|
|
95
103
|
console.error("not implemented");
|
|
96
104
|
} else {
|
|
@@ -102,10 +110,10 @@ var WorkerBody = class {
|
|
|
102
110
|
* @param type
|
|
103
111
|
* @param payload
|
|
104
112
|
*/
|
|
105
|
-
static postMessage(type, payload) {
|
|
113
|
+
static async postMessage(type, payload) {
|
|
106
114
|
const data = { source: "loaders.gl", type, payload };
|
|
107
115
|
const transferList = getTransferList(payload);
|
|
108
|
-
const parentPort2 = getParentPort();
|
|
116
|
+
const parentPort2 = await getParentPort();
|
|
109
117
|
if (parentPort2) {
|
|
110
118
|
parentPort2.postMessage(data, transferList);
|
|
111
119
|
} else {
|
|
@@ -120,8 +128,8 @@ function isKnownMessage(message) {
|
|
|
120
128
|
|
|
121
129
|
// ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
|
|
122
130
|
var requestId = 0;
|
|
123
|
-
function createLoaderWorker(loader) {
|
|
124
|
-
if (!WorkerBody.inWorkerThread()) {
|
|
131
|
+
async function createLoaderWorker(loader) {
|
|
132
|
+
if (!await WorkerBody.inWorkerThread()) {
|
|
125
133
|
return;
|
|
126
134
|
}
|
|
127
135
|
WorkerBody.onmessage = async (type, payload) => {
|
|
@@ -200,7 +208,7 @@ async function parseData({
|
|
|
200
208
|
}
|
|
201
209
|
|
|
202
210
|
// src/null-loader.ts
|
|
203
|
-
var VERSION = true ? "4.0.
|
|
211
|
+
var VERSION = true ? "4.0.2" : "latest";
|
|
204
212
|
var NullLoader = {
|
|
205
213
|
name: "Null loader",
|
|
206
214
|
id: "null",
|
package/dist/null-worker.js
CHANGED
|
@@ -36,61 +36,69 @@
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
// ../worker-utils/src/lib/worker-farm/worker-body.ts
|
|
39
|
-
function getParentPort() {
|
|
39
|
+
async function getParentPort() {
|
|
40
40
|
let parentPort;
|
|
41
41
|
try {
|
|
42
42
|
eval("globalThis.parentPort = require('worker_threads').parentPort");
|
|
43
43
|
parentPort = globalThis.parentPort;
|
|
44
44
|
} catch {
|
|
45
|
+
try {
|
|
46
|
+
eval("globalThis.workerThreadsPromise = import('worker_threads')");
|
|
47
|
+
const workerThreads = await globalThis.workerThreadsPromise;
|
|
48
|
+
parentPort = workerThreads.parentPort;
|
|
49
|
+
} catch (error) {
|
|
50
|
+
console.error(error.message);
|
|
51
|
+
}
|
|
45
52
|
}
|
|
46
53
|
return parentPort;
|
|
47
54
|
}
|
|
48
55
|
var onMessageWrapperMap = /* @__PURE__ */ new Map();
|
|
49
56
|
var WorkerBody = class {
|
|
50
57
|
/** Check that we are actually in a worker thread */
|
|
51
|
-
static inWorkerThread() {
|
|
52
|
-
return typeof self !== "undefined" || Boolean(getParentPort());
|
|
58
|
+
static async inWorkerThread() {
|
|
59
|
+
return typeof self !== "undefined" || Boolean(await getParentPort());
|
|
53
60
|
}
|
|
54
61
|
/*
|
|
55
62
|
* (type: WorkerMessageType, payload: WorkerMessagePayload) => any
|
|
56
63
|
*/
|
|
57
64
|
static set onmessage(onMessage) {
|
|
58
|
-
function handleMessage(message) {
|
|
59
|
-
const
|
|
60
|
-
const { type, payload } =
|
|
65
|
+
async function handleMessage(message) {
|
|
66
|
+
const parentPort2 = await getParentPort();
|
|
67
|
+
const { type, payload } = parentPort2 ? message : message.data;
|
|
61
68
|
onMessage(type, payload);
|
|
62
69
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
getParentPort().then((parentPort2) => {
|
|
71
|
+
if (parentPort2) {
|
|
72
|
+
parentPort2.on("message", handleMessage);
|
|
73
|
+
parentPort2.on("exit", () => console.debug("Node worker closing"));
|
|
74
|
+
} else {
|
|
75
|
+
globalThis.onmessage = handleMessage;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
70
78
|
}
|
|
71
|
-
static addEventListener(onMessage) {
|
|
79
|
+
static async addEventListener(onMessage) {
|
|
72
80
|
let onMessageWrapper = onMessageWrapperMap.get(onMessage);
|
|
73
81
|
if (!onMessageWrapper) {
|
|
74
|
-
onMessageWrapper = (message) => {
|
|
82
|
+
onMessageWrapper = async (message) => {
|
|
75
83
|
if (!isKnownMessage(message)) {
|
|
76
84
|
return;
|
|
77
85
|
}
|
|
78
|
-
const parentPort3 = getParentPort();
|
|
86
|
+
const parentPort3 = await getParentPort();
|
|
79
87
|
const { type, payload } = parentPort3 ? message : message.data;
|
|
80
88
|
onMessage(type, payload);
|
|
81
89
|
};
|
|
82
90
|
}
|
|
83
|
-
const parentPort2 = getParentPort();
|
|
91
|
+
const parentPort2 = await getParentPort();
|
|
84
92
|
if (parentPort2) {
|
|
85
93
|
console.error("not implemented");
|
|
86
94
|
} else {
|
|
87
95
|
globalThis.addEventListener("message", onMessageWrapper);
|
|
88
96
|
}
|
|
89
97
|
}
|
|
90
|
-
static removeEventListener(onMessage) {
|
|
98
|
+
static async removeEventListener(onMessage) {
|
|
91
99
|
const onMessageWrapper = onMessageWrapperMap.get(onMessage);
|
|
92
100
|
onMessageWrapperMap.delete(onMessage);
|
|
93
|
-
const parentPort2 = getParentPort();
|
|
101
|
+
const parentPort2 = await getParentPort();
|
|
94
102
|
if (parentPort2) {
|
|
95
103
|
console.error("not implemented");
|
|
96
104
|
} else {
|
|
@@ -102,10 +110,10 @@
|
|
|
102
110
|
* @param type
|
|
103
111
|
* @param payload
|
|
104
112
|
*/
|
|
105
|
-
static postMessage(type, payload) {
|
|
113
|
+
static async postMessage(type, payload) {
|
|
106
114
|
const data = { source: "loaders.gl", type, payload };
|
|
107
115
|
const transferList = getTransferList(payload);
|
|
108
|
-
const parentPort2 = getParentPort();
|
|
116
|
+
const parentPort2 = await getParentPort();
|
|
109
117
|
if (parentPort2) {
|
|
110
118
|
parentPort2.postMessage(data, transferList);
|
|
111
119
|
} else {
|
|
@@ -120,8 +128,8 @@
|
|
|
120
128
|
|
|
121
129
|
// ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
|
|
122
130
|
var requestId = 0;
|
|
123
|
-
function createLoaderWorker(loader) {
|
|
124
|
-
if (!WorkerBody.inWorkerThread()) {
|
|
131
|
+
async function createLoaderWorker(loader) {
|
|
132
|
+
if (!await WorkerBody.inWorkerThread()) {
|
|
125
133
|
return;
|
|
126
134
|
}
|
|
127
135
|
WorkerBody.onmessage = async (type, payload) => {
|
|
@@ -200,7 +208,7 @@
|
|
|
200
208
|
}
|
|
201
209
|
|
|
202
210
|
// src/null-loader.ts
|
|
203
|
-
var VERSION = true ? "4.0.
|
|
211
|
+
var VERSION = true ? "4.0.2" : "latest";
|
|
204
212
|
var NullLoader = {
|
|
205
213
|
name: "Null loader",
|
|
206
214
|
id: "null",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"null-worker-node.d.ts","sourceRoot":"","sources":["../../src/workers/null-worker-node.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"null-worker-node.js","names":["createLoaderWorker","NullLoader"],"sources":["../../src/workers/null-worker-node.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {NullLoader} from '../null-loader';\n\ncreateLoaderWorker(NullLoader);\n"],"mappings":"AAGA,SAAQA,kBAAkB,QAAO,0BAA0B;AAAC,SACpDC,UAAU;AAElBD,kBAAkB,CAACC,UAAU,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/core",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.2",
|
|
4
4
|
"description": "The core API for working with loaders.gl loaders and writers",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -31,7 +31,10 @@
|
|
|
31
31
|
"sideEffects": false,
|
|
32
32
|
"browser": {
|
|
33
33
|
"fs": false,
|
|
34
|
-
"stream": false
|
|
34
|
+
"stream": false,
|
|
35
|
+
"./src/iterators/make-stream/make-node-stream.ts": "./src/iterators/make-stream/make-dom-stream.ts",
|
|
36
|
+
"./src/iterators/make-stream/make-node-stream.js": "./src/iterators/make-stream/make-dom-stream.js",
|
|
37
|
+
"./dist/iterators/make-stream/make-node-stream.js": "./dist/iterators/make-stream/make-dom-stream.js"
|
|
35
38
|
},
|
|
36
39
|
"files": [
|
|
37
40
|
"src",
|
|
@@ -46,9 +49,9 @@
|
|
|
46
49
|
},
|
|
47
50
|
"dependencies": {
|
|
48
51
|
"@babel/runtime": "^7.3.1",
|
|
49
|
-
"@loaders.gl/loader-utils": "4.0.
|
|
50
|
-
"@loaders.gl/worker-utils": "4.0.
|
|
52
|
+
"@loaders.gl/loader-utils": "4.0.2",
|
|
53
|
+
"@loaders.gl/worker-utils": "4.0.2",
|
|
51
54
|
"@probe.gl/log": "^4.0.2"
|
|
52
55
|
},
|
|
53
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "471058d109d5652f28c32c1f296fd632f9a5c806"
|
|
54
57
|
}
|
|
@@ -45,7 +45,7 @@ export async function encodeTableAsText<WriterT extends Writer = Writer>(
|
|
|
45
45
|
return await writer.encodeText(data, options);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
if (writer.text
|
|
48
|
+
if (writer.text) {
|
|
49
49
|
const arrayBuffer = await encodeTable(data, writer, options);
|
|
50
50
|
return new TextDecoder().decode(arrayBuffer);
|
|
51
51
|
}
|
package/src/lib/api/encode.ts
CHANGED
|
@@ -97,7 +97,7 @@ export async function encodeText(
|
|
|
97
97
|
return await writer.encodeText(data, options);
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
if (writer.text
|
|
100
|
+
if (writer.text) {
|
|
101
101
|
const arrayBuffer = await encode(data, writer, options);
|
|
102
102
|
return new TextDecoder().decode(arrayBuffer);
|
|
103
103
|
}
|
|
@@ -10,9 +10,9 @@ import {getResourceContentLength, getResourceUrl, getResourceMIMEType} from './r
|
|
|
10
10
|
*
|
|
11
11
|
* @param resource
|
|
12
12
|
*/
|
|
13
|
-
export async function makeResponse(resource:
|
|
13
|
+
export async function makeResponse(resource: unknown): Promise<Response> {
|
|
14
14
|
if (isResponse(resource)) {
|
|
15
|
-
return resource;
|
|
15
|
+
return resource as Response;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
// Add content-length header if possible
|
|
@@ -45,7 +45,7 @@ export async function makeResponse(resource: any): Promise<Response> {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
// Attempt to create a Response from the resource, adding headers and setting url
|
|
48
|
-
const response = new Response(resource, {headers});
|
|
48
|
+
const response = new Response(resource as any, {headers});
|
|
49
49
|
// We can't control `Response.url` via constructor, use a property override to record URL.
|
|
50
50
|
Object.defineProperty(response, 'url', {value: url});
|
|
51
51
|
return response;
|
|
@@ -76,12 +76,12 @@ export function checkResponseSync(response: Response): void {
|
|
|
76
76
|
|
|
77
77
|
// HELPERS
|
|
78
78
|
|
|
79
|
-
async function getResponseError(response): Promise<string> {
|
|
79
|
+
async function getResponseError(response: Response): Promise<string> {
|
|
80
80
|
let message = `Failed to fetch resource ${response.url} (${response.status}): `;
|
|
81
81
|
try {
|
|
82
82
|
const contentType = response.headers.get('Content-Type');
|
|
83
83
|
let text = response.statusText;
|
|
84
|
-
if (contentType
|
|
84
|
+
if (contentType?.includes('application/json')) {
|
|
85
85
|
text += ` ${await response.text()}`;
|
|
86
86
|
}
|
|
87
87
|
message += text;
|
|
@@ -92,7 +92,9 @@ async function getResponseError(response): Promise<string> {
|
|
|
92
92
|
return message;
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
async function getInitialDataUrl(
|
|
95
|
+
async function getInitialDataUrl(
|
|
96
|
+
resource: string | Blob | ArrayBuffer | unknown
|
|
97
|
+
): Promise<string | null> {
|
|
96
98
|
const INITIAL_DATA_LENGTH = 5;
|
|
97
99
|
if (typeof resource === 'string') {
|
|
98
100
|
return `data:,${resource.slice(0, INITIAL_DATA_LENGTH)}`;
|
|
@@ -114,7 +116,7 @@ async function getInitialDataUrl(resource): Promise<string | null> {
|
|
|
114
116
|
}
|
|
115
117
|
|
|
116
118
|
// https://stackoverflow.com/questions/9267899/arraybuffer-to-base64-encoded-string
|
|
117
|
-
function arrayBufferToBase64(buffer) {
|
|
119
|
+
function arrayBufferToBase64(buffer: ArrayBuffer): string {
|
|
118
120
|
let binary = '';
|
|
119
121
|
const bytes = new Uint8Array(buffer);
|
|
120
122
|
for (let i = 0; i < bytes.byteLength; i++) {
|