@loaders.gl/core 4.0.0-alpha.20 → 4.0.0-alpha.21
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 +19 -21
- package/dist/es5/index.js +7 -0
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/iterators/batch-iterators/timed-batch-iterator.js.map +1 -1
- package/dist/es5/iterators/make-stream/make-dom-stream.js.map +1 -1
- package/dist/es5/javascript-utils/is-type.js +1 -1
- package/dist/es5/javascript-utils/is-type.js.map +1 -1
- package/dist/es5/lib/api/encode-table.js.map +1 -1
- package/dist/es5/lib/api/encode.js.map +1 -1
- package/dist/es5/lib/api/load-in-batches.js +6 -3
- package/dist/es5/lib/api/load-in-batches.js.map +1 -1
- package/dist/es5/lib/api/load.js.map +1 -1
- package/dist/es5/lib/api/parse-in-batches.js.map +1 -1
- package/dist/es5/lib/api/parse-sync.js.map +1 -1
- package/dist/es5/lib/api/parse.js +10 -10
- package/dist/es5/lib/api/parse.js.map +1 -1
- package/dist/es5/lib/filesystems/filesystem.js.map +1 -1
- package/dist/es5/lib/init.js +1 -1
- package/dist/es5/lib/loader-utils/get-fetch-function.js.map +1 -1
- package/dist/es5/null-loader.js +6 -14
- package/dist/es5/null-loader.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/iterators/batch-iterators/timed-batch-iterator.js.map +1 -1
- package/dist/esm/iterators/make-stream/make-dom-stream.js.map +1 -1
- package/dist/esm/javascript-utils/is-type.js +1 -1
- package/dist/esm/javascript-utils/is-type.js.map +1 -1
- package/dist/esm/lib/api/encode-table.js.map +1 -1
- package/dist/esm/lib/api/encode.js.map +1 -1
- package/dist/esm/lib/api/load-in-batches.js +6 -3
- package/dist/esm/lib/api/load-in-batches.js.map +1 -1
- package/dist/esm/lib/api/load.js.map +1 -1
- package/dist/esm/lib/api/parse-in-batches.js.map +1 -1
- package/dist/esm/lib/api/parse-sync.js.map +1 -1
- package/dist/esm/lib/api/parse.js +9 -9
- package/dist/esm/lib/api/parse.js.map +1 -1
- package/dist/esm/lib/filesystems/filesystem.js.map +1 -1
- package/dist/esm/lib/init.js +1 -1
- package/dist/esm/lib/loader-utils/get-fetch-function.js.map +1 -1
- package/dist/esm/null-loader.js +6 -14
- package/dist/esm/null-loader.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/iterators/batch-iterators/timed-batch-iterator.d.ts +1 -1
- package/dist/iterators/batch-iterators/timed-batch-iterator.d.ts.map +1 -1
- package/dist/iterators/make-stream/make-dom-stream.d.ts.map +1 -1
- package/dist/iterators/make-stream/make-dom-stream.js +1 -0
- package/dist/javascript-utils/is-type.d.ts +5 -5
- package/dist/javascript-utils/is-type.d.ts.map +1 -1
- package/dist/javascript-utils/is-type.js +1 -1
- package/dist/lib/api/encode.d.ts +5 -5
- package/dist/lib/api/encode.d.ts.map +1 -1
- package/dist/lib/api/load-in-batches.d.ts +5 -0
- package/dist/lib/api/load-in-batches.d.ts.map +1 -1
- package/dist/lib/api/load-in-batches.js +10 -3
- package/dist/lib/api/load.d.ts +1 -2
- package/dist/lib/api/load.d.ts.map +1 -1
- package/dist/lib/api/parse-in-batches.d.ts +13 -7
- package/dist/lib/api/parse-in-batches.d.ts.map +1 -1
- package/dist/lib/api/parse-in-batches.js +1 -0
- package/dist/lib/api/parse-sync.d.ts +13 -7
- package/dist/lib/api/parse-sync.d.ts.map +1 -1
- package/dist/lib/api/parse-sync.js +0 -4
- package/dist/lib/api/parse.d.ts +11 -1
- package/dist/lib/api/parse.d.ts.map +1 -1
- package/dist/lib/api/parse.js +10 -9
- package/dist/lib/filesystems/filesystem.d.ts +3 -3
- package/dist/lib/filesystems/filesystem.d.ts.map +1 -1
- package/dist/lib/loader-utils/get-fetch-function.d.ts +2 -2
- package/dist/lib/loader-utils/get-fetch-function.d.ts.map +1 -1
- package/dist/null-loader.d.ts +6 -3
- package/dist/null-loader.d.ts.map +1 -1
- package/dist/null-loader.js +9 -14
- package/dist/null-worker-node.js +6 -11
- package/dist/null-worker.js +6 -11
- package/package.json +4 -4
- package/src/index.ts +1 -0
- package/src/iterators/batch-iterators/timed-batch-iterator.ts +4 -1
- package/src/iterators/make-stream/make-dom-stream.ts +2 -1
- package/src/javascript-utils/is-type.ts +12 -8
- package/src/lib/api/encode-table.ts +1 -1
- package/src/lib/api/encode.ts +10 -10
- package/src/lib/api/load-in-batches.ts +45 -7
- package/src/lib/api/load.ts +2 -5
- package/src/lib/api/parse-in-batches.ts +39 -10
- package/src/lib/api/parse-sync.ts +34 -12
- package/src/lib/api/parse.ts +29 -12
- package/src/lib/filesystems/filesystem.ts +3 -3
- package/src/lib/loader-utils/get-fetch-function.ts +2 -2
- package/src/null-loader.ts +23 -17
package/src/lib/api/parse.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// loaders.gl, MIT license
|
|
2
2
|
|
|
3
|
-
import type {
|
|
3
|
+
import type {Loader, LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';
|
|
4
|
+
import type {DataType, LoaderWithParser} from '@loaders.gl/loader-utils';
|
|
4
5
|
import type {LoaderOptionsType, LoaderReturnType} from '@loaders.gl/loader-utils';
|
|
5
|
-
import {assert, validateWorkerVersion} from '@loaders.gl/worker-utils';
|
|
6
6
|
import {parseWithWorker, canParseWithWorker} from '@loaders.gl/loader-utils';
|
|
7
|
+
import {assert, validateWorkerVersion} from '@loaders.gl/worker-utils';
|
|
7
8
|
import {isLoaderObject} from '../loader-utils/normalize-loader';
|
|
8
9
|
import {isResponse} from '../../javascript-utils/is-type';
|
|
9
10
|
import {normalizeOptions} from '../loader-utils/option-utils';
|
|
@@ -14,6 +15,9 @@ import {selectLoader} from './select-loader';
|
|
|
14
15
|
|
|
15
16
|
// type LoaderArrayType<T> = T extends (infer Loader)[] ? LoaderOptionsType<Loader> : T
|
|
16
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Parses `data` asynchronously using the supplied loaders
|
|
20
|
+
*/
|
|
17
21
|
export async function parse<
|
|
18
22
|
LoaderT extends Loader,
|
|
19
23
|
OptionsT extends LoaderOptions = LoaderOptionsType<LoaderT>
|
|
@@ -24,6 +28,9 @@ export async function parse<
|
|
|
24
28
|
context?: LoaderContext
|
|
25
29
|
): Promise<LoaderReturnType<LoaderT>>;
|
|
26
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Parses `data` asynchronously by matching one of the supplied loaders
|
|
33
|
+
*/
|
|
27
34
|
export async function parse(
|
|
28
35
|
data: DataType | Promise<DataType>,
|
|
29
36
|
loaders: Loader[],
|
|
@@ -31,6 +38,9 @@ export async function parse(
|
|
|
31
38
|
context?: LoaderContext
|
|
32
39
|
): Promise<any>;
|
|
33
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Parses data asynchronously by matching a pre-registered loader
|
|
43
|
+
*/
|
|
34
44
|
export async function parse(
|
|
35
45
|
data: DataType | Promise<DataType>,
|
|
36
46
|
options?: LoaderOptions
|
|
@@ -49,7 +59,7 @@ export async function parse(
|
|
|
49
59
|
loaders?: Loader | Loader[] | LoaderOptions,
|
|
50
60
|
options?: LoaderOptions,
|
|
51
61
|
context?: LoaderContext
|
|
52
|
-
): Promise<
|
|
62
|
+
): Promise<unknown> {
|
|
53
63
|
assert(!context || typeof context === 'object'); // parse no longer accepts final url
|
|
54
64
|
|
|
55
65
|
// Signature: parse(data, options, context | url)
|
|
@@ -88,7 +98,12 @@ export async function parse(
|
|
|
88
98
|
|
|
89
99
|
// TODO: support progress and abort
|
|
90
100
|
// TODO - should accept loader.parseAsyncIterator and concatenate.
|
|
91
|
-
async function parseWithLoader(
|
|
101
|
+
async function parseWithLoader(
|
|
102
|
+
loader: Loader,
|
|
103
|
+
data,
|
|
104
|
+
options: LoaderOptions,
|
|
105
|
+
context: LoaderContext
|
|
106
|
+
): Promise<unknown> {
|
|
92
107
|
validateWorkerVersion(loader);
|
|
93
108
|
|
|
94
109
|
if (isResponse(data)) {
|
|
@@ -96,15 +111,17 @@ async function parseWithLoader(loader, data, options, context) {
|
|
|
96
111
|
const response = data as Response;
|
|
97
112
|
const {ok, redirected, status, statusText, type, url} = response;
|
|
98
113
|
const headers = Object.fromEntries(response.headers.entries());
|
|
114
|
+
// @ts-expect-error TODO - fix this
|
|
99
115
|
context.response = {headers, ok, redirected, status, statusText, type, url};
|
|
100
116
|
}
|
|
101
117
|
|
|
102
118
|
data = await getArrayBufferOrStringFromData(data, loader, options);
|
|
103
119
|
|
|
120
|
+
const loaderWithParser = loader as LoaderWithParser;
|
|
121
|
+
|
|
104
122
|
// First check for synchronous text parser, wrap results in promises
|
|
105
|
-
if (
|
|
106
|
-
|
|
107
|
-
return loader.parseTextSync(data, options, context, loader);
|
|
123
|
+
if (loaderWithParser.parseTextSync && typeof data === 'string') {
|
|
124
|
+
return loaderWithParser.parseTextSync(data, options, context);
|
|
108
125
|
}
|
|
109
126
|
|
|
110
127
|
// If we have a workerUrl and the loader can parse the given options efficiently in a worker
|
|
@@ -113,16 +130,16 @@ async function parseWithLoader(loader, data, options, context) {
|
|
|
113
130
|
}
|
|
114
131
|
|
|
115
132
|
// Check for asynchronous parser
|
|
116
|
-
if (
|
|
117
|
-
return await
|
|
133
|
+
if (loaderWithParser.parseText && typeof data === 'string') {
|
|
134
|
+
return await loaderWithParser.parseText(data, options, context);
|
|
118
135
|
}
|
|
119
136
|
|
|
120
|
-
if (
|
|
121
|
-
return await
|
|
137
|
+
if (loaderWithParser.parse) {
|
|
138
|
+
return await loaderWithParser.parse(data, options, context);
|
|
122
139
|
}
|
|
123
140
|
|
|
124
141
|
// This should not happen, all sync loaders should also offer `parse` function
|
|
125
|
-
assert(!
|
|
142
|
+
assert(!loaderWithParser.parseSync);
|
|
126
143
|
|
|
127
144
|
// TBD - If asynchronous parser not available, return null
|
|
128
145
|
throw new Error(`${loader.id} loader - no parser found and worker is disabled`);
|
|
@@ -36,9 +36,9 @@ export interface FileSystem {
|
|
|
36
36
|
* A random access file system
|
|
37
37
|
*/
|
|
38
38
|
export interface RandomAccessReadFileSystem extends FileSystem {
|
|
39
|
-
open(path: string, flags, mode
|
|
40
|
-
close(fd:
|
|
41
|
-
fstat(fd:
|
|
39
|
+
open(path: string, flags: unknown, mode?: unknown): Promise<any>;
|
|
40
|
+
close(fd: unknown): Promise<void>;
|
|
41
|
+
fstat(fd: unknown): Promise<Stat>;
|
|
42
42
|
read(
|
|
43
43
|
fd: any,
|
|
44
44
|
buffer: ArrayBuffer | ArrayBufferView,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// loaders.gl, MIT license
|
|
2
2
|
|
|
3
|
-
import type {LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';
|
|
3
|
+
import type {LoaderContext, LoaderOptions, FetchLike} from '@loaders.gl/loader-utils';
|
|
4
4
|
import {isObject} from '../../javascript-utils/is-type';
|
|
5
5
|
import {fetchFile} from '../fetch/fetch-file';
|
|
6
6
|
import {getGlobalLoaderOptions} from './option-utils';
|
|
@@ -13,7 +13,7 @@ import {getGlobalLoaderOptions} from './option-utils';
|
|
|
13
13
|
export function getFetchFunction(
|
|
14
14
|
options?: LoaderOptions,
|
|
15
15
|
context?: Omit<LoaderContext, 'fetch'> & Partial<Pick<LoaderContext, 'fetch'>>
|
|
16
|
-
) {
|
|
16
|
+
): FetchLike {
|
|
17
17
|
const globalOptions = getGlobalLoaderOptions();
|
|
18
18
|
|
|
19
19
|
const loaderOptions = options || globalOptions;
|
package/src/null-loader.ts
CHANGED
|
@@ -2,12 +2,17 @@
|
|
|
2
2
|
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
3
3
|
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
|
|
4
4
|
|
|
5
|
-
import {Loader, LoaderWithParser} from '@loaders.gl/loader-utils';
|
|
5
|
+
import type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
|
|
6
|
+
import {LoaderContext} from 'modules/loader-utils/dist';
|
|
7
|
+
|
|
8
|
+
export type NullLoaderOptions = LoaderOptions & {
|
|
9
|
+
null?: {};
|
|
10
|
+
};
|
|
6
11
|
|
|
7
12
|
/**
|
|
8
13
|
* Loads any data and returns null (or optionally passes through data unparsed)
|
|
9
14
|
*/
|
|
10
|
-
export const NullWorkerLoader: Loader = {
|
|
15
|
+
export const NullWorkerLoader: Loader<null, never, NullLoaderOptions> = {
|
|
11
16
|
name: 'Null loader',
|
|
12
17
|
id: 'null',
|
|
13
18
|
module: 'core',
|
|
@@ -21,27 +26,18 @@ export const NullWorkerLoader: Loader = {
|
|
|
21
26
|
}
|
|
22
27
|
};
|
|
23
28
|
|
|
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
|
-
|
|
34
29
|
/**
|
|
35
30
|
* Loads any data and returns null (or optionally passes through data unparsed)
|
|
36
31
|
*/
|
|
37
|
-
export const NullLoader: LoaderWithParser = {
|
|
32
|
+
export const NullLoader: LoaderWithParser<null, null, NullLoaderOptions> = {
|
|
38
33
|
name: 'Null loader',
|
|
39
34
|
id: 'null',
|
|
40
35
|
module: 'core',
|
|
41
36
|
version: VERSION,
|
|
42
37
|
mimeTypes: ['application/x.empty'],
|
|
43
38
|
extensions: ['null'],
|
|
44
|
-
parse: async (arrayBuffer, options, context) =>
|
|
39
|
+
parse: async (arrayBuffer: ArrayBuffer, options?: NullLoaderOptions, context?: LoaderContext) =>
|
|
40
|
+
parseSync(arrayBuffer, options || {}, context),
|
|
45
41
|
parseSync,
|
|
46
42
|
parseInBatches: async function* generator(asyncIterator, options, context) {
|
|
47
43
|
for await (const batch of asyncIterator) {
|
|
@@ -50,8 +46,18 @@ export const NullLoader: LoaderWithParser = {
|
|
|
50
46
|
},
|
|
51
47
|
tests: [() => false],
|
|
52
48
|
options: {
|
|
53
|
-
null: {
|
|
54
|
-
echoParameters: false
|
|
55
|
-
}
|
|
49
|
+
null: {}
|
|
56
50
|
}
|
|
57
51
|
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Returns arguments passed to the parse API in a format that can be transferred to a
|
|
55
|
+
* web worker. The `context` parameter is stripped using JSON.stringify & parse.
|
|
56
|
+
*/
|
|
57
|
+
function parseSync(
|
|
58
|
+
arrayBuffer: ArrayBuffer,
|
|
59
|
+
options?: NullLoaderOptions,
|
|
60
|
+
context?: LoaderContext
|
|
61
|
+
): null {
|
|
62
|
+
return null;
|
|
63
|
+
}
|