@loaders.gl/core 3.2.0-alpha.1 → 3.2.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.min.js +161 -36
- package/dist/es5/index.js +8 -2
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/api/encode.js +75 -50
- package/dist/es5/lib/api/encode.js.map +1 -1
- package/dist/es5/lib/api/loader-options.js +20 -0
- package/dist/es5/lib/api/loader-options.js.map +1 -0
- package/dist/es5/lib/api/parse.js +36 -17
- package/dist/es5/lib/api/parse.js.map +1 -1
- package/dist/es5/lib/init.js +1 -1
- package/dist/es5/lib/loader-utils/option-utils.js +3 -0
- package/dist/es5/lib/loader-utils/option-utils.js.map +1 -1
- package/dist/es5/lib/utils/response-utils.js +2 -2
- package/dist/es5/lib/utils/response-utils.js.map +1 -1
- package/dist/es5/null-loader.js +22 -11
- package/dist/es5/null-loader.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/api/encode.js +12 -0
- package/dist/esm/lib/api/encode.js.map +1 -1
- package/dist/esm/lib/api/loader-options.js +3 -0
- package/dist/esm/lib/api/loader-options.js.map +1 -0
- package/dist/esm/lib/api/parse.js +24 -0
- package/dist/esm/lib/api/parse.js.map +1 -1
- package/dist/esm/lib/init.js +1 -1
- package/dist/esm/lib/loader-utils/option-utils.js +1 -3
- package/dist/esm/lib/loader-utils/option-utils.js.map +1 -1
- package/dist/esm/lib/utils/response-utils.js +2 -2
- package/dist/esm/lib/utils/response-utils.js.map +1 -1
- package/dist/esm/null-loader.js +19 -6
- package/dist/esm/null-loader.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/lib/api/encode.d.ts +1 -1
- package/dist/lib/api/encode.d.ts.map +1 -1
- package/dist/lib/api/encode.js +13 -5
- package/dist/lib/api/loader-options.d.ts +3 -0
- package/dist/lib/api/loader-options.d.ts.map +1 -0
- package/dist/lib/api/loader-options.js +7 -0
- package/dist/lib/api/parse.d.ts.map +1 -1
- package/dist/lib/api/parse.js +8 -0
- package/dist/lib/loader-utils/option-utils.d.ts +8 -0
- package/dist/lib/loader-utils/option-utils.d.ts.map +1 -1
- package/dist/lib/loader-utils/option-utils.js +10 -6
- package/dist/lib/utils/response-utils.js +2 -2
- package/dist/null-loader.d.ts.map +1 -1
- package/dist/null-loader.js +17 -5
- package/dist/null-worker.js +16 -7
- package/package.json +4 -4
- package/src/index.ts +1 -1
- package/src/lib/api/encode.ts +9 -1
- package/src/lib/api/loader-options.ts +2 -0
- package/src/lib/api/parse.ts +9 -0
- package/src/lib/loader-utils/option-utils.ts +6 -3
- package/src/lib/utils/response-utils.ts +2 -2
- package/src/null-loader.ts +17 -5
- package/dist/es5/lib/api/set-loader-options.js +0 -13
- package/dist/es5/lib/api/set-loader-options.js.map +0 -1
- package/dist/esm/lib/api/set-loader-options.js +0 -5
- package/dist/esm/lib/api/set-loader-options.js.map +0 -1
- package/dist/lib/api/set-loader-options.d.ts +0 -6
- package/dist/lib/api/set-loader-options.d.ts.map +0 -1
- package/dist/lib/api/set-loader-options.js +0 -12
- package/src/lib/api/set-loader-options.ts +0 -9
package/dist/lib/api/encode.js
CHANGED
|
@@ -2,13 +2,21 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.encodeURLtoURL = exports.encodeInBatches = exports.encodeText = exports.encodeSync = exports.encode = void 0;
|
|
4
4
|
const loader_utils_1 = require("@loaders.gl/loader-utils");
|
|
5
|
+
const worker_utils_1 = require("@loaders.gl/worker-utils");
|
|
5
6
|
const loader_utils_2 = require("@loaders.gl/loader-utils");
|
|
7
|
+
const loader_utils_3 = require("@loaders.gl/loader-utils");
|
|
6
8
|
const write_file_1 = require("../fetch/write-file");
|
|
7
9
|
const fetch_file_1 = require("../fetch/fetch-file");
|
|
10
|
+
const loader_options_1 = require("./loader-options");
|
|
8
11
|
/**
|
|
9
12
|
* Encode loaded data into a binary ArrayBuffer using the specified Writer.
|
|
10
13
|
*/
|
|
11
14
|
async function encode(data, writer, options) {
|
|
15
|
+
const globalOptions = (0, loader_options_1.getLoaderOptions)();
|
|
16
|
+
options = { ...globalOptions, ...options };
|
|
17
|
+
if ((0, loader_utils_1.canEncodeWithWorker)(writer, options)) {
|
|
18
|
+
return await (0, worker_utils_1.processOnWorker)(writer, data, options);
|
|
19
|
+
}
|
|
12
20
|
// TODO Merge default writer options with options argument like it is done in load module.
|
|
13
21
|
if (writer.encode) {
|
|
14
22
|
return await writer.encode(data, options);
|
|
@@ -29,9 +37,9 @@ async function encode(data, writer, options) {
|
|
|
29
37
|
chunks.push(batch);
|
|
30
38
|
}
|
|
31
39
|
// @ts-ignore
|
|
32
|
-
return (0,
|
|
40
|
+
return (0, loader_utils_2.concatenateArrayBuffers)(...chunks);
|
|
33
41
|
}
|
|
34
|
-
if (!
|
|
42
|
+
if (!loader_utils_3.isBrowser && writer.encodeURLtoURL) {
|
|
35
43
|
// TODO - how to generate filenames with correct extensions?
|
|
36
44
|
const tmpInputFilename = getTemporaryFilename('input');
|
|
37
45
|
await (0, write_file_1.writeFile)(tmpInputFilename, data);
|
|
@@ -87,9 +95,9 @@ exports.encodeInBatches = encodeInBatches;
|
|
|
87
95
|
* @note Node.js only. This function enables using command-line converters as "writers".
|
|
88
96
|
*/
|
|
89
97
|
async function encodeURLtoURL(inputUrl, outputUrl, writer, options) {
|
|
90
|
-
inputUrl = (0,
|
|
91
|
-
outputUrl = (0,
|
|
92
|
-
if (
|
|
98
|
+
inputUrl = (0, loader_utils_2.resolvePath)(inputUrl);
|
|
99
|
+
outputUrl = (0, loader_utils_2.resolvePath)(outputUrl);
|
|
100
|
+
if (loader_utils_3.isBrowser || !writer.encodeURLtoURL) {
|
|
93
101
|
throw new Error();
|
|
94
102
|
}
|
|
95
103
|
const outputFilename = await writer.encodeURLtoURL(inputUrl, outputUrl, options);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader-options.d.ts","sourceRoot":"","sources":["../../../src/lib/api/loader-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,IAAI,gBAAgB,EAAC,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAC,sBAAsB,IAAI,gBAAgB,EAAC,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getLoaderOptions = exports.setLoaderOptions = void 0;
|
|
4
|
+
var option_utils_1 = require("../loader-utils/option-utils");
|
|
5
|
+
Object.defineProperty(exports, "setLoaderOptions", { enumerable: true, get: function () { return option_utils_1.setGlobalOptions; } });
|
|
6
|
+
var option_utils_2 = require("../loader-utils/option-utils");
|
|
7
|
+
Object.defineProperty(exports, "getLoaderOptions", { enumerable: true, get: function () { return option_utils_2.getGlobalLoaderOptions; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/lib/api/parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/lib/api/parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAW7F;;;;;;GAMG;AACH,wBAAsB,KAAK,CACzB,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,EAClC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,aAAa,EAC3C,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,GAAG,CAAC,CAmCd"}
|
package/dist/lib/api/parse.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.parse = void 0;
|
|
|
4
4
|
const worker_utils_1 = require("@loaders.gl/worker-utils");
|
|
5
5
|
const loader_utils_1 = require("@loaders.gl/loader-utils");
|
|
6
6
|
const normalize_loader_1 = require("../loader-utils/normalize-loader");
|
|
7
|
+
const is_type_1 = require("../../javascript-utils/is-type");
|
|
7
8
|
const option_utils_1 = require("../loader-utils/option-utils");
|
|
8
9
|
const get_data_1 = require("../loader-utils/get-data");
|
|
9
10
|
const loader_context_1 = require("../loader-utils/loader-context");
|
|
@@ -50,6 +51,13 @@ exports.parse = parse;
|
|
|
50
51
|
// TODO - should accept loader.parseAsyncIterator and concatenate.
|
|
51
52
|
async function parseWithLoader(loader, data, options, context) {
|
|
52
53
|
(0, worker_utils_1.validateWorkerVersion)(loader);
|
|
54
|
+
if ((0, is_type_1.isResponse)(data)) {
|
|
55
|
+
// Serialize to support passing the response to web worker
|
|
56
|
+
const response = data;
|
|
57
|
+
const { ok, redirected, status, statusText, type, url } = response;
|
|
58
|
+
const headers = Object.fromEntries(response.headers.entries());
|
|
59
|
+
context.response = { headers, ok, redirected, status, statusText, type, url };
|
|
60
|
+
}
|
|
53
61
|
data = await (0, get_data_1.getArrayBufferOrStringFromData)(data, loader, options);
|
|
54
62
|
// First check for synchronous text parser, wrap results in promises
|
|
55
63
|
if (loader.parseTextSync && typeof data === 'string') {
|
|
@@ -13,6 +13,14 @@ declare type GlobalLoaderState = {
|
|
|
13
13
|
* Wraps initialization of global variable in function to defeat overly aggressive tree-shakers
|
|
14
14
|
*/
|
|
15
15
|
export declare function getGlobalLoaderState(): GlobalLoaderState;
|
|
16
|
+
/**
|
|
17
|
+
* Store global loader options on the global object to increase chances of cross loaders-version interoperability
|
|
18
|
+
* NOTE: This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks
|
|
19
|
+
* @returns global loader options merged with default loader options
|
|
20
|
+
*/
|
|
21
|
+
export declare const getGlobalLoaderOptions: () => {
|
|
22
|
+
[key: string]: any;
|
|
23
|
+
};
|
|
16
24
|
/**
|
|
17
25
|
* Set global loader options
|
|
18
26
|
* @param options
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"option-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/loader-utils/option-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAKnF;;GAEG;AACH,aAAK,iBAAiB,GAAG;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CASxD;
|
|
1
|
+
{"version":3,"file":"option-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/loader-utils/option-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAKnF;;GAEG;AACH,aAAK,iBAAiB,GAAG;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CASxD;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;CAKlC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAItD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAAE,EAClB,GAAG,CAAC,EAAE,MAAM,GACX,MAAM,CAMR;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,OAuB/E"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getFetchFunction = exports.normalizeOptions = exports.setGlobalOptions = exports.getGlobalLoaderState = void 0;
|
|
3
|
+
exports.getFetchFunction = exports.normalizeOptions = exports.setGlobalOptions = exports.getGlobalLoaderOptions = exports.getGlobalLoaderState = void 0;
|
|
4
4
|
const is_type_1 = require("../../javascript-utils/is-type");
|
|
5
5
|
const fetch_file_1 = require("../fetch/fetch-file");
|
|
6
6
|
const loggers_1 = require("./loggers");
|
|
@@ -19,21 +19,25 @@ function getGlobalLoaderState() {
|
|
|
19
19
|
return loaders._state;
|
|
20
20
|
}
|
|
21
21
|
exports.getGlobalLoaderState = getGlobalLoaderState;
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Store global loader options on the global object to increase chances of cross loaders-version interoperability
|
|
24
|
+
* NOTE: This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks
|
|
25
|
+
* @returns global loader options merged with default loader options
|
|
26
|
+
*/
|
|
24
27
|
const getGlobalLoaderOptions = () => {
|
|
25
28
|
const state = getGlobalLoaderState();
|
|
26
29
|
// Ensure all default loader options from this library are mentioned
|
|
27
30
|
state.globalOptions = state.globalOptions || { ...option_defaults_1.DEFAULT_LOADER_OPTIONS };
|
|
28
31
|
return state.globalOptions;
|
|
29
32
|
};
|
|
33
|
+
exports.getGlobalLoaderOptions = getGlobalLoaderOptions;
|
|
30
34
|
/**
|
|
31
35
|
* Set global loader options
|
|
32
36
|
* @param options
|
|
33
37
|
*/
|
|
34
38
|
function setGlobalOptions(options) {
|
|
35
39
|
const state = getGlobalLoaderState();
|
|
36
|
-
const globalOptions = getGlobalLoaderOptions();
|
|
40
|
+
const globalOptions = (0, exports.getGlobalLoaderOptions)();
|
|
37
41
|
state.globalOptions = normalizeOptionsInternal(globalOptions, options);
|
|
38
42
|
}
|
|
39
43
|
exports.setGlobalOptions = setGlobalOptions;
|
|
@@ -57,7 +61,7 @@ exports.normalizeOptions = normalizeOptions;
|
|
|
57
61
|
* @param context
|
|
58
62
|
*/
|
|
59
63
|
function getFetchFunction(options, context) {
|
|
60
|
-
const globalOptions = getGlobalLoaderOptions();
|
|
64
|
+
const globalOptions = (0, exports.getGlobalLoaderOptions)();
|
|
61
65
|
const fetchOptions = options || globalOptions;
|
|
62
66
|
// options.fetch can be a function
|
|
63
67
|
if (typeof fetchOptions.fetch === 'function') {
|
|
@@ -141,7 +145,7 @@ function normalizeOptionsInternal(loader, options, url) {
|
|
|
141
145
|
if (mergedOptions.log === null) {
|
|
142
146
|
mergedOptions.log = new loggers_1.NullLog();
|
|
143
147
|
}
|
|
144
|
-
mergeNestedFields(mergedOptions, getGlobalLoaderOptions());
|
|
148
|
+
mergeNestedFields(mergedOptions, (0, exports.getGlobalLoaderOptions)());
|
|
145
149
|
mergeNestedFields(mergedOptions, options);
|
|
146
150
|
return mergedOptions;
|
|
147
151
|
}
|
|
@@ -61,7 +61,7 @@ exports.checkResponse = checkResponse;
|
|
|
61
61
|
function checkResponseSync(response) {
|
|
62
62
|
if (!response.ok) {
|
|
63
63
|
let message = `${response.status} ${response.statusText}`;
|
|
64
|
-
message = message.length > 60 ? `${message.slice(60)}...` : message;
|
|
64
|
+
message = message.length > 60 ? `${message.slice(0, 60)}...` : message;
|
|
65
65
|
throw new Error(message);
|
|
66
66
|
}
|
|
67
67
|
}
|
|
@@ -76,7 +76,7 @@ async function getResponseError(response) {
|
|
|
76
76
|
text += ` ${await response.text()}`;
|
|
77
77
|
}
|
|
78
78
|
message += text;
|
|
79
|
-
message = message.length > 60 ? `${message.slice(60)}...` : message;
|
|
79
|
+
message = message.length > 60 ? `${message.slice(0, 60)}...` : message;
|
|
80
80
|
}
|
|
81
81
|
catch (error) {
|
|
82
82
|
// eslint forbids return in a finally statement, so we just catch here
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"null-loader.d.ts","sourceRoot":"","sources":["../src/null-loader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAY9B,CAAC;
|
|
1
|
+
{"version":3,"file":"null-loader.d.ts","sourceRoot":"","sources":["../src/null-loader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAY9B,CAAC;AAYF;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,gBAoBxB,CAAC"}
|
package/dist/null-loader.js
CHANGED
|
@@ -20,6 +20,16 @@ exports.NullWorkerLoader = {
|
|
|
20
20
|
null: {}
|
|
21
21
|
}
|
|
22
22
|
};
|
|
23
|
+
/**
|
|
24
|
+
* Returns arguments passed to the parse API in a format that can be transfered to a
|
|
25
|
+
* web worker. The `context` parameter is stripped using JSON.stringify & parse.
|
|
26
|
+
*/
|
|
27
|
+
function parseSync(arrayBuffer, options, context) {
|
|
28
|
+
if (!options.null.echoParameters)
|
|
29
|
+
return null;
|
|
30
|
+
context = context && JSON.parse(JSON.stringify(context));
|
|
31
|
+
return { arrayBuffer, options, context };
|
|
32
|
+
}
|
|
23
33
|
/**
|
|
24
34
|
* Loads any data and returns null (or optionally passes through data unparsed)
|
|
25
35
|
*/
|
|
@@ -30,15 +40,17 @@ exports.NullLoader = {
|
|
|
30
40
|
version: VERSION,
|
|
31
41
|
mimeTypes: ['application/x.empty'],
|
|
32
42
|
extensions: ['null'],
|
|
33
|
-
parse: async (arrayBuffer) => arrayBuffer,
|
|
34
|
-
parseSync
|
|
35
|
-
parseInBatches: async function* generator(asyncIterator) {
|
|
43
|
+
parse: async (arrayBuffer, options, context) => parseSync(arrayBuffer, options, context),
|
|
44
|
+
parseSync,
|
|
45
|
+
parseInBatches: async function* generator(asyncIterator, options, context) {
|
|
36
46
|
for await (const batch of asyncIterator) {
|
|
37
|
-
yield batch;
|
|
47
|
+
yield parseSync(batch, options, context);
|
|
38
48
|
}
|
|
39
49
|
},
|
|
40
50
|
tests: [() => false],
|
|
41
51
|
options: {
|
|
42
|
-
null: {
|
|
52
|
+
null: {
|
|
53
|
+
echoParameters: false
|
|
54
|
+
}
|
|
43
55
|
}
|
|
44
56
|
};
|
package/dist/null-worker.js
CHANGED
|
@@ -118,12 +118,13 @@
|
|
|
118
118
|
switch (type) {
|
|
119
119
|
case "process":
|
|
120
120
|
try {
|
|
121
|
-
const { input, options = {} } = payload;
|
|
121
|
+
const { input, options = {}, context = {} } = payload;
|
|
122
122
|
const result = await parseData({
|
|
123
123
|
loader,
|
|
124
124
|
arrayBuffer: input,
|
|
125
125
|
options,
|
|
126
126
|
context: {
|
|
127
|
+
...context,
|
|
127
128
|
parse: parseOnMainThread
|
|
128
129
|
}
|
|
129
130
|
});
|
|
@@ -183,7 +184,13 @@
|
|
|
183
184
|
}
|
|
184
185
|
|
|
185
186
|
// src/null-loader.ts
|
|
186
|
-
var VERSION = true ? "3.2.0-alpha.
|
|
187
|
+
var VERSION = true ? "3.2.0-alpha.4" : "latest";
|
|
188
|
+
function parseSync(arrayBuffer, options, context) {
|
|
189
|
+
if (!options.null.echoParameters)
|
|
190
|
+
return null;
|
|
191
|
+
context = context && JSON.parse(JSON.stringify(context));
|
|
192
|
+
return { arrayBuffer, options, context };
|
|
193
|
+
}
|
|
187
194
|
var NullLoader = {
|
|
188
195
|
name: "Null loader",
|
|
189
196
|
id: "null",
|
|
@@ -191,16 +198,18 @@
|
|
|
191
198
|
version: VERSION,
|
|
192
199
|
mimeTypes: ["application/x.empty"],
|
|
193
200
|
extensions: ["null"],
|
|
194
|
-
parse: async (arrayBuffer) => arrayBuffer,
|
|
195
|
-
parseSync
|
|
196
|
-
parseInBatches: async function* generator(asyncIterator) {
|
|
201
|
+
parse: async (arrayBuffer, options, context) => parseSync(arrayBuffer, options, context),
|
|
202
|
+
parseSync,
|
|
203
|
+
parseInBatches: async function* generator(asyncIterator, options, context) {
|
|
197
204
|
for await (const batch of asyncIterator) {
|
|
198
|
-
yield batch;
|
|
205
|
+
yield parseSync(batch, options, context);
|
|
199
206
|
}
|
|
200
207
|
},
|
|
201
208
|
tests: [() => false],
|
|
202
209
|
options: {
|
|
203
|
-
null: {
|
|
210
|
+
null: {
|
|
211
|
+
echoParameters: false
|
|
212
|
+
}
|
|
204
213
|
}
|
|
205
214
|
};
|
|
206
215
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/core",
|
|
3
|
-
"version": "3.2.0-alpha.
|
|
3
|
+
"version": "3.2.0-alpha.4",
|
|
4
4
|
"description": "Framework-independent loaders for 3D graphics formats",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@babel/runtime": "^7.3.1",
|
|
45
|
-
"@loaders.gl/loader-utils": "3.2.0-alpha.
|
|
46
|
-
"@loaders.gl/worker-utils": "3.2.0-alpha.
|
|
45
|
+
"@loaders.gl/loader-utils": "3.2.0-alpha.4",
|
|
46
|
+
"@loaders.gl/worker-utils": "3.2.0-alpha.4",
|
|
47
47
|
"@probe.gl/log": "^3.5.0",
|
|
48
48
|
"probe.gl": "^3.4.0"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "f030d39d5cdedb137e43e757a9da10dd637857fd"
|
|
51
51
|
}
|
package/src/index.ts
CHANGED
|
@@ -6,7 +6,7 @@ export {readFileSync} from './lib/fetch/read-file';
|
|
|
6
6
|
export {writeFile, writeFileSync} from './lib/fetch/write-file';
|
|
7
7
|
|
|
8
8
|
// CONFIGURATION
|
|
9
|
-
export {setLoaderOptions} from './lib/api/
|
|
9
|
+
export {setLoaderOptions, getLoaderOptions} from './lib/api/loader-options';
|
|
10
10
|
export {registerLoaders} from './lib/api/register-loaders';
|
|
11
11
|
export {selectLoader, selectLoaderSync} from './lib/api/select-loader';
|
|
12
12
|
|
package/src/lib/api/encode.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import {Writer, LoaderOptions, canEncodeWithWorker} from '@loaders.gl/loader-utils';
|
|
2
|
+
import {processOnWorker} from '@loaders.gl/worker-utils';
|
|
2
3
|
import {concatenateArrayBuffers, resolvePath} from '@loaders.gl/loader-utils';
|
|
3
4
|
import {isBrowser} from '@loaders.gl/loader-utils';
|
|
4
5
|
import {writeFile} from '../fetch/write-file';
|
|
5
6
|
import {fetchFile} from '../fetch/fetch-file';
|
|
7
|
+
import {getLoaderOptions} from './loader-options';
|
|
6
8
|
|
|
7
9
|
/**
|
|
8
10
|
* Encode loaded data into a binary ArrayBuffer using the specified Writer.
|
|
@@ -12,6 +14,12 @@ export async function encode(
|
|
|
12
14
|
writer: Writer,
|
|
13
15
|
options?: LoaderOptions
|
|
14
16
|
): Promise<ArrayBuffer> {
|
|
17
|
+
const globalOptions = getLoaderOptions();
|
|
18
|
+
options = {...globalOptions, ...options};
|
|
19
|
+
if (canEncodeWithWorker(writer, options)) {
|
|
20
|
+
return await processOnWorker(writer, data, options);
|
|
21
|
+
}
|
|
22
|
+
|
|
15
23
|
// TODO Merge default writer options with options argument like it is done in load module.
|
|
16
24
|
if (writer.encode) {
|
|
17
25
|
return await writer.encode(data, options);
|
package/src/lib/api/parse.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type {DataType, Loader, LoaderContext, LoaderOptions} from '@loaders.gl/l
|
|
|
2
2
|
import {assert, validateWorkerVersion} from '@loaders.gl/worker-utils';
|
|
3
3
|
import {parseWithWorker, canParseWithWorker} from '@loaders.gl/loader-utils';
|
|
4
4
|
import {isLoaderObject} from '../loader-utils/normalize-loader';
|
|
5
|
+
import {isResponse} from '../../javascript-utils/is-type';
|
|
5
6
|
import {normalizeOptions} from '../loader-utils/option-utils';
|
|
6
7
|
import {getArrayBufferOrStringFromData} from '../loader-utils/get-data';
|
|
7
8
|
import {getLoaderContext, getLoadersFromContext} from '../loader-utils/loader-context';
|
|
@@ -62,6 +63,14 @@ export async function parse(
|
|
|
62
63
|
async function parseWithLoader(loader, data, options, context) {
|
|
63
64
|
validateWorkerVersion(loader);
|
|
64
65
|
|
|
66
|
+
if (isResponse(data)) {
|
|
67
|
+
// Serialize to support passing the response to web worker
|
|
68
|
+
const response = data as Response;
|
|
69
|
+
const {ok, redirected, status, statusText, type, url} = response;
|
|
70
|
+
const headers = Object.fromEntries(response.headers.entries());
|
|
71
|
+
context.response = {headers, ok, redirected, status, statusText, type, url};
|
|
72
|
+
}
|
|
73
|
+
|
|
65
74
|
data = await getArrayBufferOrStringFromData(data, loader, options);
|
|
66
75
|
|
|
67
76
|
// First check for synchronous text parser, wrap results in promises
|
|
@@ -26,9 +26,12 @@ export function getGlobalLoaderState(): GlobalLoaderState {
|
|
|
26
26
|
return loaders._state;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Store global loader options on the global object to increase chances of cross loaders-version interoperability
|
|
31
|
+
* NOTE: This use case is not reliable but can help when testing new versions of loaders.gl with existing frameworks
|
|
32
|
+
* @returns global loader options merged with default loader options
|
|
33
|
+
*/
|
|
34
|
+
export const getGlobalLoaderOptions = () => {
|
|
32
35
|
const state = getGlobalLoaderState();
|
|
33
36
|
// Ensure all default loader options from this library are mentioned
|
|
34
37
|
state.globalOptions = state.globalOptions || {...DEFAULT_LOADER_OPTIONS};
|
|
@@ -65,7 +65,7 @@ export async function checkResponse(response: Response): Promise<void> {
|
|
|
65
65
|
export function checkResponseSync(response: Response): void {
|
|
66
66
|
if (!response.ok) {
|
|
67
67
|
let message = `${response.status} ${response.statusText}`;
|
|
68
|
-
message = message.length > 60 ? `${message.slice(60)}...` : message;
|
|
68
|
+
message = message.length > 60 ? `${message.slice(0, 60)}...` : message;
|
|
69
69
|
throw new Error(message);
|
|
70
70
|
}
|
|
71
71
|
}
|
|
@@ -81,7 +81,7 @@ async function getResponseError(response): Promise<string> {
|
|
|
81
81
|
text += ` ${await response.text()}`;
|
|
82
82
|
}
|
|
83
83
|
message += text;
|
|
84
|
-
message = message.length > 60 ? `${message.slice(60)}...` : message;
|
|
84
|
+
message = message.length > 60 ? `${message.slice(0, 60)}...` : message;
|
|
85
85
|
} catch (error) {
|
|
86
86
|
// eslint forbids return in a finally statement, so we just catch here
|
|
87
87
|
}
|
package/src/null-loader.ts
CHANGED
|
@@ -21,6 +21,16 @@ export const NullWorkerLoader: Loader = {
|
|
|
21
21
|
}
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Returns arguments passed to the parse API in a format that can be transfered to a
|
|
26
|
+
* web worker. The `context` parameter is stripped using JSON.stringify & parse.
|
|
27
|
+
*/
|
|
28
|
+
function parseSync(arrayBuffer, options, context) {
|
|
29
|
+
if (!options.null.echoParameters) return null;
|
|
30
|
+
context = context && JSON.parse(JSON.stringify(context));
|
|
31
|
+
return {arrayBuffer, options, context};
|
|
32
|
+
}
|
|
33
|
+
|
|
24
34
|
/**
|
|
25
35
|
* Loads any data and returns null (or optionally passes through data unparsed)
|
|
26
36
|
*/
|
|
@@ -31,15 +41,17 @@ export const NullLoader: LoaderWithParser = {
|
|
|
31
41
|
version: VERSION,
|
|
32
42
|
mimeTypes: ['application/x.empty'],
|
|
33
43
|
extensions: ['null'],
|
|
34
|
-
parse: async (arrayBuffer) => arrayBuffer,
|
|
35
|
-
parseSync
|
|
36
|
-
parseInBatches: async function* generator(asyncIterator) {
|
|
44
|
+
parse: async (arrayBuffer, options, context) => parseSync(arrayBuffer, options, context),
|
|
45
|
+
parseSync,
|
|
46
|
+
parseInBatches: async function* generator(asyncIterator, options, context) {
|
|
37
47
|
for await (const batch of asyncIterator) {
|
|
38
|
-
yield batch;
|
|
48
|
+
yield parseSync(batch, options, context);
|
|
39
49
|
}
|
|
40
50
|
},
|
|
41
51
|
tests: [() => false],
|
|
42
52
|
options: {
|
|
43
|
-
null: {
|
|
53
|
+
null: {
|
|
54
|
+
echoParameters: false
|
|
55
|
+
}
|
|
44
56
|
}
|
|
45
57
|
};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.setLoaderOptions = setLoaderOptions;
|
|
7
|
-
|
|
8
|
-
var _optionUtils = require("../loader-utils/option-utils");
|
|
9
|
-
|
|
10
|
-
function setLoaderOptions(options) {
|
|
11
|
-
(0, _optionUtils.setGlobalOptions)(options);
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=set-loader-options.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/api/set-loader-options.ts"],"names":["setLoaderOptions","options"],"mappings":";;;;;;;AAAA;;AAMO,SAASA,gBAAT,CAA0BC,OAA1B,EAAiD;AACtD,qCAAiBA,OAAjB;AACD","sourcesContent":["import {setGlobalOptions} from '../loader-utils/option-utils';\n\n/**\n * Set global loader options\n * @param options\n */\nexport function setLoaderOptions(options: object): void {\n setGlobalOptions(options);\n}\n"],"file":"set-loader-options.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/api/set-loader-options.ts"],"names":["setGlobalOptions","setLoaderOptions","options"],"mappings":"AAAA,SAAQA,gBAAR,QAA+B,8BAA/B;AAMA,OAAO,SAASC,gBAAT,CAA0BC,OAA1B,EAAiD;AACtDF,EAAAA,gBAAgB,CAACE,OAAD,CAAhB;AACD","sourcesContent":["import {setGlobalOptions} from '../loader-utils/option-utils';\n\n/**\n * Set global loader options\n * @param options\n */\nexport function setLoaderOptions(options: object): void {\n setGlobalOptions(options);\n}\n"],"file":"set-loader-options.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"set-loader-options.d.ts","sourceRoot":"","sources":["../../../src/lib/api/set-loader-options.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEtD"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setLoaderOptions = void 0;
|
|
4
|
-
const option_utils_1 = require("../loader-utils/option-utils");
|
|
5
|
-
/**
|
|
6
|
-
* Set global loader options
|
|
7
|
-
* @param options
|
|
8
|
-
*/
|
|
9
|
-
function setLoaderOptions(options) {
|
|
10
|
-
(0, option_utils_1.setGlobalOptions)(options);
|
|
11
|
-
}
|
|
12
|
-
exports.setLoaderOptions = setLoaderOptions;
|