Implemented LERC_ZSTD decoding with zstddec; Added DOM types to tsconfig for WebAssembly

This commit is contained in:
Cameron Woodbury 2023-10-12 14:56:14 -05:00
parent 00a28ca6e5
commit a3551b90a6
6 changed files with 29 additions and 4 deletions

13
package-lock.json generated
View File

@ -15,7 +15,8 @@
"parse-headers": "^2.0.2",
"quick-lru": "^6.1.1",
"web-worker": "^1.2.0",
"xml-utils": "^1.0.2"
"xml-utils": "^1.0.2",
"zstddec": "^0.1.0"
},
"devDependencies": {
"@babel/core": "^7.8.7",
@ -7776,6 +7777,11 @@
"engines": {
"node": ">=6"
}
},
"node_modules/zstddec": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/zstddec/-/zstddec-0.1.0.tgz",
"integrity": "sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg=="
}
},
"dependencies": {
@ -13637,6 +13643,11 @@
"lodash": "^4.17.15",
"yargs": "^13.3.0"
}
},
"zstddec": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/zstddec/-/zstddec-0.1.0.tgz",
"integrity": "sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg=="
}
}
}

View File

@ -88,7 +88,8 @@
"parse-headers": "^2.0.2",
"quick-lru": "^6.1.1",
"web-worker": "^1.2.0",
"xml-utils": "^1.0.2"
"xml-utils": "^1.0.2",
"zstddec": "^0.1.0"
},
"devDependencies": {
"@babel/core": "^7.8.7",

View File

@ -25,5 +25,11 @@ addDecoder(6, () => {
addDecoder(7, () => import('./jpeg.js').then((m) => m.default));
addDecoder([8, 32946], () => import('./deflate.js').then((m) => m.default));
addDecoder(32773, () => import('./packbits.js').then((m) => m.default));
addDecoder(34887, () => import('./lerc.js').then((m) => m.default));
addDecoder(34887, () => import('./lerc.js')
.then(async (m) => {
await m.zstd.init();
return m;
})
.then((m) => m.default),
);
addDecoder(50001, () => import('./webimage.js').then((m) => m.default));

View File

@ -1,8 +1,11 @@
import { inflate } from 'pako';
import Lerc from 'lerc';
import { ZSTDDecoder } from 'zstddec';
import BaseDecoder from './basedecoder.js';
import { LercParameters, LercAddCompression } from '../globals.js';
export const zstd = new ZSTDDecoder();
export default class LercDecoder extends BaseDecoder {
constructor(fileDirectory) {
super();
@ -20,6 +23,9 @@ export default class LercDecoder extends BaseDecoder {
case LercAddCompression.Deflate:
buffer = inflate(new Uint8Array(buffer)).buffer; // eslint-disable-line no-param-reassign, prefer-destructuring
break;
case LercAddCompression.Zstandard:
buffer = zstd.decode(new Uint8Array(buffer)).buffer; // eslint-disable-line no-param-reassign, prefer-destructuring
break;
default:
throw new Error(`Unsupported LERC additional compression method identifier: ${this.addCompression}`);
}

View File

@ -235,6 +235,7 @@ export const LercParameters = {
export const LercAddCompression = {
None: 0,
Deflate: 1,
Zstandard: 2,
};
export const geoKeyNames = {

View File

@ -1,7 +1,7 @@
{
"compilerOptions": {
"target": "ES5",
"lib": ["ES2020"],
"lib": ["ES2020", "DOM"],
"allowJs": true,
"declaration": true,
"declarationMap": true,