@loaders.gl/textures 3.3.0-alpha.5 → 3.3.0-alpha.7
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/basis-nodejs-worker.js +1762 -2429
- package/dist/basis-worker.js +3 -3
- package/dist/compressed-texture-worker.js +3 -3
- package/dist/crunch-worker.js +2 -2
- package/dist/dist.min.js +7 -5
- package/dist/es5/basis-loader.js +4 -12
- package/dist/es5/basis-loader.js.map +1 -1
- package/dist/es5/bundle.js +0 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/compressed-texture-loader.js +8 -21
- package/dist/es5/compressed-texture-loader.js.map +1 -1
- package/dist/es5/compressed-texture-writer.js +1 -3
- package/dist/es5/compressed-texture-writer.js.map +1 -1
- package/dist/es5/crunch-loader.js +2 -2
- package/dist/es5/crunch-loader.js.map +1 -1
- package/dist/es5/index.js +22 -35
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/ktx2-basis-writer-nodejs.js +0 -2
- package/dist/es5/ktx2-basis-writer-nodejs.js.map +1 -1
- package/dist/es5/ktx2-basis-writer.js +1 -3
- package/dist/es5/ktx2-basis-writer.js.map +1 -1
- package/dist/es5/lib/encoders/encode-ktx.js +0 -2
- package/dist/es5/lib/encoders/encode-ktx.js.map +1 -1
- package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js +15 -26
- package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js.map +1 -1
- package/dist/es5/lib/encoders/encode-texture.js +2 -9
- package/dist/es5/lib/encoders/encode-texture.js.map +1 -1
- package/dist/es5/lib/gl-extensions.js +8 -0
- package/dist/es5/lib/gl-extensions.js.map +1 -1
- package/dist/es5/lib/parsers/basis-module-loader.js +6 -46
- package/dist/es5/lib/parsers/basis-module-loader.js.map +1 -1
- package/dist/es5/lib/parsers/crunch-module-loader.js +0 -16
- package/dist/es5/lib/parsers/crunch-module-loader.js.map +1 -1
- package/dist/es5/lib/parsers/parse-basis.js +10 -53
- package/dist/es5/lib/parsers/parse-basis.js.map +1 -1
- package/dist/es5/lib/parsers/parse-compressed-texture.js +0 -7
- package/dist/es5/lib/parsers/parse-compressed-texture.js.map +1 -1
- package/dist/es5/lib/parsers/parse-crunch.js +4 -20
- package/dist/es5/lib/parsers/parse-crunch.js.map +1 -1
- package/dist/es5/lib/parsers/parse-dds.js +2 -8
- package/dist/es5/lib/parsers/parse-dds.js.map +1 -1
- package/dist/es5/lib/parsers/parse-ktx.js +15 -7
- package/dist/es5/lib/parsers/parse-ktx.js.map +1 -1
- package/dist/es5/lib/parsers/parse-npy.js +11 -18
- package/dist/es5/lib/parsers/parse-npy.js.map +1 -1
- package/dist/es5/lib/parsers/parse-pvr.js +0 -2
- package/dist/es5/lib/parsers/parse-pvr.js.map +1 -1
- package/dist/es5/lib/texture-api/async-deep-map.js +3 -32
- package/dist/es5/lib/texture-api/async-deep-map.js.map +1 -1
- package/dist/es5/lib/texture-api/deep-load.js +0 -14
- package/dist/es5/lib/texture-api/deep-load.js.map +1 -1
- package/dist/es5/lib/texture-api/generate-url.js +3 -10
- package/dist/es5/lib/texture-api/generate-url.js.map +1 -1
- package/dist/es5/lib/texture-api/load-image-array.js +7 -24
- package/dist/es5/lib/texture-api/load-image-array.js.map +1 -1
- package/dist/es5/lib/texture-api/load-image-cube.js +4 -27
- package/dist/es5/lib/texture-api/load-image-cube.js.map +1 -1
- package/dist/es5/lib/texture-api/load-image.js +8 -41
- package/dist/es5/lib/texture-api/load-image.js.map +1 -1
- package/dist/es5/lib/texture-api/texture-api-types.js.map +1 -1
- package/dist/es5/lib/utils/extract-mipmap-images.js +0 -7
- package/dist/es5/lib/utils/extract-mipmap-images.js.map +1 -1
- package/dist/es5/lib/utils/ktx-format-helper.js +0 -2
- package/dist/es5/lib/utils/ktx-format-helper.js.map +1 -1
- package/dist/es5/lib/utils/texture-formats.js +2 -9
- package/dist/es5/lib/utils/texture-formats.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/es5/lib/utils/version.js.map +1 -1
- package/dist/es5/npy-loader.js +5 -16
- package/dist/es5/npy-loader.js.map +1 -1
- package/dist/es5/types.js.map +1 -1
- package/dist/es5/workers/basis-nodejs-worker.js +0 -3
- package/dist/es5/workers/basis-nodejs-worker.js.map +1 -1
- package/dist/es5/workers/basis-worker.js +0 -2
- package/dist/es5/workers/basis-worker.js.map +1 -1
- package/dist/es5/workers/compressed-texture-worker.js +0 -2
- package/dist/es5/workers/compressed-texture-worker.js.map +1 -1
- package/dist/es5/workers/crunch-worker.js +2 -11
- package/dist/es5/workers/crunch-worker.js.map +1 -1
- package/dist/es5/workers/ktx2-basis-writer-nodejs-worker.js +0 -15
- package/dist/es5/workers/ktx2-basis-writer-nodejs-worker.js.map +1 -1
- package/dist/es5/workers/ktx2-basis-writer-worker.js +0 -15
- package/dist/es5/workers/ktx2-basis-writer-worker.js.map +1 -1
- package/dist/es5/workers/npy-worker.js +0 -2
- package/dist/es5/workers/npy-worker.js.map +1 -1
- package/dist/esm/basis-loader.js +5 -1
- package/dist/esm/basis-loader.js.map +1 -1
- package/dist/esm/bundle.js +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/compressed-texture-loader.js +8 -3
- package/dist/esm/compressed-texture-loader.js.map +1 -1
- package/dist/esm/compressed-texture-writer.js +1 -0
- package/dist/esm/compressed-texture-writer.js.map +1 -1
- package/dist/esm/crunch-loader.js +2 -0
- package/dist/esm/crunch-loader.js.map +1 -1
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/ktx2-basis-writer-nodejs.js +1 -0
- package/dist/esm/ktx2-basis-writer-nodejs.js.map +1 -1
- package/dist/esm/ktx2-basis-writer.js +2 -0
- package/dist/esm/ktx2-basis-writer.js.map +1 -1
- package/dist/esm/lib/encoders/encode-ktx.js.map +1 -1
- package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js +3 -2
- package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js.map +1 -1
- package/dist/esm/lib/encoders/encode-texture.js +2 -1
- package/dist/esm/lib/encoders/encode-texture.js.map +1 -1
- package/dist/esm/lib/gl-extensions.js +9 -0
- package/dist/esm/lib/gl-extensions.js.map +1 -1
- package/dist/esm/lib/parsers/basis-module-loader.js +7 -10
- package/dist/esm/lib/parsers/basis-module-loader.js.map +1 -1
- package/dist/esm/lib/parsers/crunch-module-loader.js +3 -3
- package/dist/esm/lib/parsers/crunch-module-loader.js.map +1 -1
- package/dist/esm/lib/parsers/parse-basis.js +6 -23
- package/dist/esm/lib/parsers/parse-basis.js.map +1 -1
- package/dist/esm/lib/parsers/parse-compressed-texture.js +1 -3
- package/dist/esm/lib/parsers/parse-compressed-texture.js.map +1 -1
- package/dist/esm/lib/parsers/parse-crunch.js +5 -10
- package/dist/esm/lib/parsers/parse-crunch.js.map +1 -1
- package/dist/esm/lib/parsers/parse-dds.js +4 -2
- package/dist/esm/lib/parsers/parse-dds.js.map +1 -1
- package/dist/esm/lib/parsers/parse-ktx.js +16 -2
- package/dist/esm/lib/parsers/parse-ktx.js.map +1 -1
- package/dist/esm/lib/parsers/parse-npy.js +11 -13
- package/dist/esm/lib/parsers/parse-npy.js.map +1 -1
- package/dist/esm/lib/parsers/parse-pvr.js +4 -0
- package/dist/esm/lib/parsers/parse-pvr.js.map +1 -1
- package/dist/esm/lib/texture-api/async-deep-map.js +6 -6
- package/dist/esm/lib/texture-api/async-deep-map.js.map +1 -1
- package/dist/esm/lib/texture-api/deep-load.js +1 -0
- package/dist/esm/lib/texture-api/deep-load.js.map +1 -1
- package/dist/esm/lib/texture-api/generate-url.js +4 -3
- package/dist/esm/lib/texture-api/generate-url.js.map +1 -1
- package/dist/esm/lib/texture-api/load-image-array.js +5 -4
- package/dist/esm/lib/texture-api/load-image-array.js.map +1 -1
- package/dist/esm/lib/texture-api/load-image-cube.js +7 -4
- package/dist/esm/lib/texture-api/load-image-cube.js.map +1 -1
- package/dist/esm/lib/texture-api/load-image.js +9 -7
- package/dist/esm/lib/texture-api/load-image.js.map +1 -1
- package/dist/esm/lib/texture-api/texture-api-types.js.map +1 -1
- package/dist/esm/lib/utils/extract-mipmap-images.js +1 -6
- package/dist/esm/lib/utils/extract-mipmap-images.js.map +1 -1
- package/dist/esm/lib/utils/ktx-format-helper.js +1 -0
- package/dist/esm/lib/utils/ktx-format-helper.js.map +1 -1
- package/dist/esm/lib/utils/texture-formats.js +2 -2
- package/dist/esm/lib/utils/texture-formats.js.map +1 -1
- package/dist/esm/lib/utils/version.js +2 -1
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/dist/esm/npy-loader.js +6 -1
- package/dist/esm/npy-loader.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/workers/basis-nodejs-worker.js.map +1 -1
- package/dist/esm/workers/basis-worker.js.map +1 -1
- package/dist/esm/workers/compressed-texture-worker.js.map +1 -1
- package/dist/esm/workers/crunch-worker.js +3 -1
- package/dist/esm/workers/crunch-worker.js.map +1 -1
- package/dist/esm/workers/ktx2-basis-writer-nodejs-worker.js +0 -4
- package/dist/esm/workers/ktx2-basis-writer-nodejs-worker.js.map +1 -1
- package/dist/esm/workers/ktx2-basis-writer-worker.js +0 -4
- package/dist/esm/workers/ktx2-basis-writer-worker.js.map +1 -1
- package/dist/esm/workers/npy-worker.js.map +1 -1
- package/dist/ktx2-basis-writer-nodejs-worker.js +1762 -2429
- package/dist/ktx2-basis-writer-worker.js +3 -3
- package/dist/lib/parsers/parse-npy.d.ts +1 -1
- package/dist/lib/parsers/parse-npy.d.ts.map +1 -1
- package/dist/lib/parsers/parse-npy.js +7 -7
- package/dist/npy-loader.d.ts +2 -2
- package/dist/npy-loader.d.ts.map +1 -1
- package/dist/npy-worker.js +8 -6
- package/package.json +7 -7
- package/src/lib/parsers/parse-npy.ts +20 -9
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
});
|
|
29
29
|
|
|
30
30
|
// ../worker-utils/src/lib/env-utils/version.ts
|
|
31
|
-
var VERSION = true ? "3.3.0-alpha.
|
|
31
|
+
var VERSION = true ? "3.3.0-alpha.7" : DEFAULT_VERSION;
|
|
32
32
|
if (false) {
|
|
33
33
|
console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
|
|
34
34
|
}
|
|
@@ -237,10 +237,10 @@
|
|
|
237
237
|
}
|
|
238
238
|
|
|
239
239
|
// src/lib/utils/version.ts
|
|
240
|
-
var VERSION3 = true ? "3.3.0-alpha.
|
|
240
|
+
var VERSION3 = true ? "3.3.0-alpha.7" : "beta";
|
|
241
241
|
|
|
242
242
|
// src/lib/parsers/basis-module-loader.ts
|
|
243
|
-
var VERSION4 = true ? "3.3.0-alpha.
|
|
243
|
+
var VERSION4 = true ? "3.3.0-alpha.7" : "beta";
|
|
244
244
|
var BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.wasm`;
|
|
245
245
|
var BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.js`;
|
|
246
246
|
var loadBasisEncoderPromise;
|
|
@@ -3,7 +3,7 @@ declare type NumpyHeader = {
|
|
|
3
3
|
shape: number[];
|
|
4
4
|
};
|
|
5
5
|
export declare function parseNPY(arrayBuffer: ArrayBuffer, options?: unknown): {
|
|
6
|
-
data:
|
|
6
|
+
data: Uint8Array | Uint32Array | Int32Array | Int8Array | Int16Array | Uint16Array | Float32Array | Float64Array;
|
|
7
7
|
header: NumpyHeader;
|
|
8
8
|
} | null;
|
|
9
9
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-npy.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-npy.ts"],"names":[],"mappings":"AAEA,aAAK,WAAW,GAAG;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-npy.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-npy.ts"],"names":[],"mappings":"AAEA,aAAK,WAAW,GAAG;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAC,CAAC;AAwCpD,wBAAgB,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO;;;SA+BnE"}
|
|
@@ -35,17 +35,17 @@ function parseNPY(arrayBuffer, options) {
|
|
|
35
35
|
const numpyType = header.descr;
|
|
36
36
|
const ArrayType = DTYPES[numpyType.slice(1, 3)];
|
|
37
37
|
if (!ArrayType) {
|
|
38
|
-
|
|
39
|
-
console.warn(`Decoding of npy dtype not implemented: ${numpyType}`);
|
|
40
|
-
return null;
|
|
38
|
+
throw new Error(`Unimplemented type ${numpyType}`);
|
|
41
39
|
}
|
|
42
40
|
const nArrayElements = header.shape?.reduce((a, b) => a * b);
|
|
43
41
|
const arrayByteLength = nArrayElements * ArrayType.BYTES_PER_ELEMENT;
|
|
42
|
+
if (arrayBuffer.byteLength < headerEndOffset + arrayByteLength) {
|
|
43
|
+
throw new Error('Buffer overflow');
|
|
44
|
+
}
|
|
44
45
|
const data = new ArrayType(arrayBuffer.slice(headerEndOffset, headerEndOffset + arrayByteLength));
|
|
45
46
|
// Swap endianness if needed
|
|
46
47
|
if ((numpyType[0] === '>' && LITTLE_ENDIAN_OS) || (numpyType[0] === '<' && !LITTLE_ENDIAN_OS)) {
|
|
47
|
-
|
|
48
|
-
console.warn('Data is wrong endianness, byte swapping not yet implemented.');
|
|
48
|
+
throw new Error('Incorrect endianness');
|
|
49
49
|
}
|
|
50
50
|
return {
|
|
51
51
|
data,
|
|
@@ -65,11 +65,11 @@ function parseHeader(view) {
|
|
|
65
65
|
let offset = 8;
|
|
66
66
|
let headerLength;
|
|
67
67
|
if (majorVersion >= 2) {
|
|
68
|
-
headerLength = view.getUint32(
|
|
68
|
+
headerLength = view.getUint32(offset, true);
|
|
69
69
|
offset += 4;
|
|
70
70
|
}
|
|
71
71
|
else {
|
|
72
|
-
headerLength = view.getUint16(
|
|
72
|
+
headerLength = view.getUint16(offset, true);
|
|
73
73
|
offset += 2;
|
|
74
74
|
}
|
|
75
75
|
const encoding = majorVersion <= 2 ? 'latin1' : 'utf-8';
|
package/dist/npy-loader.d.ts
CHANGED
|
@@ -21,8 +21,8 @@ export declare const NPYWorkerLoader: {
|
|
|
21
21
|
*/
|
|
22
22
|
export declare const NPYLoader: {
|
|
23
23
|
parseSync: typeof parseNPY;
|
|
24
|
-
parse: (arrayBuffer: ArrayBuffer, options?: LoaderOptions
|
|
25
|
-
data:
|
|
24
|
+
parse: (arrayBuffer: ArrayBuffer, options?: LoaderOptions) => Promise<{
|
|
25
|
+
data: Uint8Array | Uint32Array | Int32Array | Int8Array | Int16Array | Uint16Array | Float32Array | Float64Array;
|
|
26
26
|
header: {
|
|
27
27
|
descr: string;
|
|
28
28
|
shape: number[];
|
package/dist/npy-loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npy-loader.d.ts","sourceRoot":"","sources":["../src/npy-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAEtF,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AAKjD;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;CAY3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS;;yBAGO,WAAW;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"npy-loader.d.ts","sourceRoot":"","sources":["../src/npy-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAEtF,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AAKjD;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;CAY3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS;;yBAGO,WAAW,YAAY,aAAa;;;;;;;;;;;;;;;;;;CAChE,CAAC;AAGF,eAAO,MAAM,yBAAyB,EAAE,MAAwB,CAAC;AACjE,eAAO,MAAM,mBAAmB,EAAE,gBAA4B,CAAC"}
|
package/dist/npy-worker.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
(() => {
|
|
2
2
|
// src/lib/utils/version.ts
|
|
3
|
-
var VERSION = true ? "3.3.0-alpha.
|
|
3
|
+
var VERSION = true ? "3.3.0-alpha.7" : "beta";
|
|
4
4
|
|
|
5
5
|
// src/lib/parsers/parse-npy.ts
|
|
6
6
|
function systemIsLittleEndian() {
|
|
@@ -28,14 +28,16 @@
|
|
|
28
28
|
const numpyType = header.descr;
|
|
29
29
|
const ArrayType = DTYPES[numpyType.slice(1, 3)];
|
|
30
30
|
if (!ArrayType) {
|
|
31
|
-
|
|
32
|
-
return null;
|
|
31
|
+
throw new Error(`Unimplemented type ${numpyType}`);
|
|
33
32
|
}
|
|
34
33
|
const nArrayElements = header.shape?.reduce((a, b) => a * b);
|
|
35
34
|
const arrayByteLength = nArrayElements * ArrayType.BYTES_PER_ELEMENT;
|
|
35
|
+
if (arrayBuffer.byteLength < headerEndOffset + arrayByteLength) {
|
|
36
|
+
throw new Error("Buffer overflow");
|
|
37
|
+
}
|
|
36
38
|
const data = new ArrayType(arrayBuffer.slice(headerEndOffset, headerEndOffset + arrayByteLength));
|
|
37
39
|
if (numpyType[0] === ">" && LITTLE_ENDIAN_OS || numpyType[0] === "<" && !LITTLE_ENDIAN_OS) {
|
|
38
|
-
|
|
40
|
+
throw new Error("Incorrect endianness");
|
|
39
41
|
}
|
|
40
42
|
return {
|
|
41
43
|
data,
|
|
@@ -47,10 +49,10 @@
|
|
|
47
49
|
let offset = 8;
|
|
48
50
|
let headerLength;
|
|
49
51
|
if (majorVersion >= 2) {
|
|
50
|
-
headerLength = view.getUint32(
|
|
52
|
+
headerLength = view.getUint32(offset, true);
|
|
51
53
|
offset += 4;
|
|
52
54
|
} else {
|
|
53
|
-
headerLength = view.getUint16(
|
|
55
|
+
headerLength = view.getUint16(offset, true);
|
|
54
56
|
offset += 2;
|
|
55
57
|
}
|
|
56
58
|
const encoding = majorVersion <= 2 ? "latin1" : "utf-8";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/textures",
|
|
3
|
-
"version": "3.3.0-alpha.
|
|
3
|
+
"version": "3.3.0-alpha.7",
|
|
4
4
|
"description": "Framework-independent loaders for compressed and super compressed (basis) textures ",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -45,15 +45,15 @@
|
|
|
45
45
|
"build-ktx2-basis-writer-nodejs-worker": "esbuild src/workers/ktx2-basis-writer-nodejs-worker.ts --platform=node --target=esnext,node12 --bundle --outfile=dist/ktx2-basis-writer-nodejs-worker.js --define:__VERSION__=\\\"$npm_package_version\\\""
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@loaders.gl/images": "3.3.0-alpha.
|
|
49
|
-
"@loaders.gl/loader-utils": "3.3.0-alpha.
|
|
50
|
-
"@loaders.gl/schema": "3.3.0-alpha.
|
|
51
|
-
"@loaders.gl/worker-utils": "3.3.0-alpha.
|
|
48
|
+
"@loaders.gl/images": "3.3.0-alpha.7",
|
|
49
|
+
"@loaders.gl/loader-utils": "3.3.0-alpha.7",
|
|
50
|
+
"@loaders.gl/schema": "3.3.0-alpha.7",
|
|
51
|
+
"@loaders.gl/worker-utils": "3.3.0-alpha.7",
|
|
52
52
|
"ktx-parse": "^0.0.4",
|
|
53
53
|
"texture-compressor": "^1.0.2"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
|
-
"@loaders.gl/polyfills": "3.3.0-alpha.
|
|
56
|
+
"@loaders.gl/polyfills": "3.3.0-alpha.7"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "29b08f3519c50984e84bf4234e607cab7c7d1c3e"
|
|
59
59
|
}
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
// import type {TextureLevel} from '@loaders.gl/schema';
|
|
2
2
|
|
|
3
3
|
type NumpyHeader = {descr: string; shape: number[]};
|
|
4
|
+
type TypedArrayConstructor =
|
|
5
|
+
| typeof Int8Array
|
|
6
|
+
| typeof Uint8Array
|
|
7
|
+
| typeof Int16Array
|
|
8
|
+
| typeof Uint16Array
|
|
9
|
+
| typeof Int32Array
|
|
10
|
+
| typeof Uint32Array
|
|
11
|
+
| typeof Int32Array
|
|
12
|
+
| typeof Uint32Array
|
|
13
|
+
| typeof Float32Array
|
|
14
|
+
| typeof Float64Array;
|
|
4
15
|
|
|
5
16
|
function systemIsLittleEndian() {
|
|
6
17
|
const a = new Uint32Array([0x12345678]);
|
|
@@ -18,7 +29,7 @@ const LITTLE_ENDIAN_OS = systemIsLittleEndian();
|
|
|
18
29
|
//
|
|
19
30
|
// Here I only include the second and third characters, and check endianness
|
|
20
31
|
// separately
|
|
21
|
-
const DTYPES: Record<string,
|
|
32
|
+
const DTYPES: Record<string, TypedArrayConstructor> = {
|
|
22
33
|
u1: Uint8Array,
|
|
23
34
|
i1: Int8Array,
|
|
24
35
|
u2: Uint16Array,
|
|
@@ -40,20 +51,20 @@ export function parseNPY(arrayBuffer: ArrayBuffer, options?: unknown) {
|
|
|
40
51
|
const numpyType = header.descr;
|
|
41
52
|
const ArrayType = DTYPES[numpyType.slice(1, 3)];
|
|
42
53
|
if (!ArrayType) {
|
|
43
|
-
|
|
44
|
-
console.warn(`Decoding of npy dtype not implemented: ${numpyType}`);
|
|
45
|
-
return null;
|
|
54
|
+
throw new Error(`Unimplemented type ${numpyType}`);
|
|
46
55
|
}
|
|
47
56
|
|
|
48
57
|
const nArrayElements = header.shape?.reduce((a: number, b: number): number => a * b);
|
|
49
58
|
const arrayByteLength = nArrayElements * ArrayType.BYTES_PER_ELEMENT;
|
|
50
59
|
|
|
60
|
+
if (arrayBuffer.byteLength < headerEndOffset + arrayByteLength) {
|
|
61
|
+
throw new Error('Buffer overflow');
|
|
62
|
+
}
|
|
51
63
|
const data = new ArrayType(arrayBuffer.slice(headerEndOffset, headerEndOffset + arrayByteLength));
|
|
52
64
|
|
|
53
65
|
// Swap endianness if needed
|
|
54
66
|
if ((numpyType[0] === '>' && LITTLE_ENDIAN_OS) || (numpyType[0] === '<' && !LITTLE_ENDIAN_OS)) {
|
|
55
|
-
|
|
56
|
-
console.warn('Data is wrong endianness, byte swapping not yet implemented.');
|
|
67
|
+
throw new Error('Incorrect endianness');
|
|
57
68
|
}
|
|
58
69
|
|
|
59
70
|
return {
|
|
@@ -73,12 +84,12 @@ function parseHeader(view: DataView): {header: NumpyHeader; headerEndOffset: num
|
|
|
73
84
|
// const minorVersion = view.getUint8(7);
|
|
74
85
|
|
|
75
86
|
let offset = 8;
|
|
76
|
-
let headerLength;
|
|
87
|
+
let headerLength: number;
|
|
77
88
|
if (majorVersion >= 2) {
|
|
78
|
-
headerLength = view.getUint32(
|
|
89
|
+
headerLength = view.getUint32(offset, true);
|
|
79
90
|
offset += 4;
|
|
80
91
|
} else {
|
|
81
|
-
headerLength = view.getUint16(
|
|
92
|
+
headerLength = view.getUint16(offset, true);
|
|
82
93
|
offset += 2;
|
|
83
94
|
}
|
|
84
95
|
|