@loaders.gl/i3s 4.0.0-alpha.19 → 4.0.0-alpha.20
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 +277 -260
- package/dist/es5/arcgis-webscene-loader.js +1 -1
- package/dist/es5/i3s-attribute-loader.js +1 -1
- package/dist/es5/i3s-building-scene-layer-loader.js +1 -1
- package/dist/es5/i3s-content-loader.js +1 -1
- package/dist/es5/i3s-loader.js +1 -1
- package/dist/es5/i3s-node-page-loader.js +1 -1
- package/dist/es5/i3s-slpk-loader.js +3 -3
- package/dist/es5/i3s-slpk-loader.js.map +1 -1
- package/dist/es5/index.js +0 -7
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js +9 -25
- package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js.map +1 -1
- package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js +9 -33
- package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -1
- package/dist/esm/arcgis-webscene-loader.js +1 -1
- package/dist/esm/i3s-attribute-loader.js +1 -1
- package/dist/esm/i3s-building-scene-layer-loader.js +1 -1
- package/dist/esm/i3s-content-loader.js +1 -1
- package/dist/esm/i3s-loader.js +1 -1
- package/dist/esm/i3s-node-page-loader.js +1 -1
- package/dist/esm/i3s-slpk-loader.js +3 -3
- package/dist/esm/i3s-slpk-loader.js.map +1 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js +2 -18
- package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js.map +1 -1
- package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js +5 -29
- package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -1
- package/dist/i3s-content-worker-node.js +2 -2
- package/dist/i3s-content-worker-node.js.map +2 -2
- package/dist/i3s-content-worker.js +12 -12
- package/dist/i3s-slpk-loader.js +2 -2
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts +1 -1
- package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts.map +1 -1
- package/dist/lib/parsers/parse-slpk/parse-slpk.js +9 -30
- package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts +2 -21
- package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts.map +1 -1
- package/dist/lib/parsers/parse-slpk/slpk-archieve.js +7 -46
- package/package.json +9 -9
- package/src/i3s-slpk-loader.ts +2 -2
- package/src/index.ts +0 -2
- package/src/lib/parsers/parse-slpk/parse-slpk.ts +12 -32
- package/src/lib/parsers/parse-slpk/slpk-archieve.ts +5 -54
- package/dist/es5/lib/parsers/parse-zip/cd-file-header.js +0 -121
- package/dist/es5/lib/parsers/parse-zip/cd-file-header.js.map +0 -1
- package/dist/es5/lib/parsers/parse-zip/data-view-file-provider.js +0 -129
- package/dist/es5/lib/parsers/parse-zip/data-view-file-provider.js.map +0 -1
- package/dist/es5/lib/parsers/parse-zip/end-of-central-directory.js +0 -100
- package/dist/es5/lib/parsers/parse-zip/end-of-central-directory.js.map +0 -1
- package/dist/es5/lib/parsers/parse-zip/file-provider.js +0 -2
- package/dist/es5/lib/parsers/parse-zip/file-provider.js.map +0 -1
- package/dist/es5/lib/parsers/parse-zip/local-file-header.js +0 -113
- package/dist/es5/lib/parsers/parse-zip/local-file-header.js.map +0 -1
- package/dist/es5/lib/parsers/parse-zip/search-from-the-end.js +0 -69
- package/dist/es5/lib/parsers/parse-zip/search-from-the-end.js.map +0 -1
- package/dist/esm/lib/parsers/parse-zip/cd-file-header.js +0 -45
- package/dist/esm/lib/parsers/parse-zip/cd-file-header.js.map +0 -1
- package/dist/esm/lib/parsers/parse-zip/data-view-file-provider.js +0 -32
- package/dist/esm/lib/parsers/parse-zip/data-view-file-provider.js.map +0 -1
- package/dist/esm/lib/parsers/parse-zip/end-of-central-directory.js +0 -33
- package/dist/esm/lib/parsers/parse-zip/end-of-central-directory.js.map +0 -1
- package/dist/esm/lib/parsers/parse-zip/file-provider.js +0 -2
- package/dist/esm/lib/parsers/parse-zip/file-provider.js.map +0 -1
- package/dist/esm/lib/parsers/parse-zip/local-file-header.js +0 -40
- package/dist/esm/lib/parsers/parse-zip/local-file-header.js.map +0 -1
- package/dist/esm/lib/parsers/parse-zip/search-from-the-end.js +0 -16
- package/dist/esm/lib/parsers/parse-zip/search-from-the-end.js.map +0 -1
- package/dist/lib/parsers/parse-zip/cd-file-header.d.ts +0 -31
- package/dist/lib/parsers/parse-zip/cd-file-header.d.ts.map +0 -1
- package/dist/lib/parsers/parse-zip/cd-file-header.js +0 -55
- package/dist/lib/parsers/parse-zip/data-view-file-provider.d.ts +0 -36
- package/dist/lib/parsers/parse-zip/data-view-file-provider.d.ts.map +0 -1
- package/dist/lib/parsers/parse-zip/data-view-file-provider.js +0 -61
- package/dist/lib/parsers/parse-zip/end-of-central-directory.d.ts +0 -18
- package/dist/lib/parsers/parse-zip/end-of-central-directory.d.ts.map +0 -1
- package/dist/lib/parsers/parse-zip/end-of-central-directory.js +0 -41
- package/dist/lib/parsers/parse-zip/file-provider.d.ts +0 -36
- package/dist/lib/parsers/parse-zip/file-provider.d.ts.map +0 -1
- package/dist/lib/parsers/parse-zip/file-provider.js +0 -2
- package/dist/lib/parsers/parse-zip/local-file-header.d.ts +0 -27
- package/dist/lib/parsers/parse-zip/local-file-header.d.ts.map +0 -1
- package/dist/lib/parsers/parse-zip/local-file-header.js +0 -53
- package/dist/lib/parsers/parse-zip/search-from-the-end.d.ts +0 -11
- package/dist/lib/parsers/parse-zip/search-from-the-end.d.ts.map +0 -1
- package/dist/lib/parsers/parse-zip/search-from-the-end.js +0 -31
- package/src/lib/parsers/parse-zip/cd-file-header.ts +0 -106
- package/src/lib/parsers/parse-zip/data-view-file-provider.ts +0 -69
- package/src/lib/parsers/parse-zip/end-of-central-directory.ts +0 -78
- package/src/lib/parsers/parse-zip/file-provider.ts +0 -40
- package/src/lib/parsers/parse-zip/local-file-header.ts +0 -91
- package/src/lib/parsers/parse-zip/search-from-the-end.ts +0 -38
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
var nodeVersion = matches && parseFloat(matches[1]) || 0;
|
|
62
62
|
|
|
63
63
|
// ../worker-utils/src/lib/env-utils/version.ts
|
|
64
|
-
var VERSION = true ? "4.0.0-alpha.
|
|
64
|
+
var VERSION = true ? "4.0.0-alpha.20" : DEFAULT_VERSION;
|
|
65
65
|
if (false) {
|
|
66
66
|
console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
|
|
67
67
|
}
|
|
@@ -1262,7 +1262,7 @@
|
|
|
1262
1262
|
var navigator_ = globalThis.navigator || {};
|
|
1263
1263
|
|
|
1264
1264
|
// ../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/utils/globals.js
|
|
1265
|
-
var VERSION3 = true ? "4.0.0-alpha.
|
|
1265
|
+
var VERSION3 = true ? "4.0.0-alpha.20" : "untranspiled source";
|
|
1266
1266
|
var isBrowser4 = isBrowser3();
|
|
1267
1267
|
|
|
1268
1268
|
// ../../node_modules/@probe.gl/log/dist/utils/local-storage.js
|
|
@@ -2307,12 +2307,12 @@
|
|
|
2307
2307
|
// ../core/src/lib/loader-utils/get-fetch-function.ts
|
|
2308
2308
|
function getFetchFunction(options, context) {
|
|
2309
2309
|
const globalOptions = getGlobalLoaderOptions();
|
|
2310
|
-
const
|
|
2311
|
-
if (typeof
|
|
2312
|
-
return
|
|
2310
|
+
const loaderOptions = options || globalOptions;
|
|
2311
|
+
if (typeof loaderOptions.fetch === "function") {
|
|
2312
|
+
return loaderOptions.fetch;
|
|
2313
2313
|
}
|
|
2314
|
-
if (isObject(
|
|
2315
|
-
return (url) => fetchFile(url,
|
|
2314
|
+
if (isObject(loaderOptions.fetch)) {
|
|
2315
|
+
return (url) => fetchFile(url, loaderOptions.fetch);
|
|
2316
2316
|
}
|
|
2317
2317
|
if (context?.fetch) {
|
|
2318
2318
|
return context?.fetch;
|
|
@@ -4611,7 +4611,7 @@
|
|
|
4611
4611
|
_defineProperty(Ellipsoid, "WGS84", new Ellipsoid(WGS84_RADIUS_X, WGS84_RADIUS_Y, WGS84_RADIUS_Z));
|
|
4612
4612
|
|
|
4613
4613
|
// ../images/src/lib/utils/version.ts
|
|
4614
|
-
var VERSION4 = true ? "4.0.0-alpha.
|
|
4614
|
+
var VERSION4 = true ? "4.0.0-alpha.20" : "latest";
|
|
4615
4615
|
|
|
4616
4616
|
// ../images/src/lib/category-api/image-type.ts
|
|
4617
4617
|
var { _parseImageNode } = globalThis;
|
|
@@ -5008,7 +5008,7 @@
|
|
|
5008
5008
|
};
|
|
5009
5009
|
|
|
5010
5010
|
// ../draco/src/lib/utils/version.ts
|
|
5011
|
-
var VERSION5 = true ? "4.0.0-alpha.
|
|
5011
|
+
var VERSION5 = true ? "4.0.0-alpha.20" : "latest";
|
|
5012
5012
|
|
|
5013
5013
|
// ../draco/src/draco-loader.ts
|
|
5014
5014
|
var DEFAULT_DRACO_OPTIONS = {
|
|
@@ -5561,7 +5561,7 @@
|
|
|
5561
5561
|
}
|
|
5562
5562
|
|
|
5563
5563
|
// ../textures/src/lib/utils/version.ts
|
|
5564
|
-
var VERSION6 = true ? "4.0.0-alpha.
|
|
5564
|
+
var VERSION6 = true ? "4.0.0-alpha.20" : "beta";
|
|
5565
5565
|
|
|
5566
5566
|
// ../textures/src/lib/parsers/basis-module-loader.ts
|
|
5567
5567
|
var BASIS_EXTERNAL_LIBRARIES = {
|
|
@@ -7253,7 +7253,7 @@
|
|
|
7253
7253
|
}
|
|
7254
7254
|
|
|
7255
7255
|
// src/i3s-attribute-loader.ts
|
|
7256
|
-
var VERSION7 = true ? "4.0.0-alpha.
|
|
7256
|
+
var VERSION7 = true ? "4.0.0-alpha.20" : "latest";
|
|
7257
7257
|
var I3SAttributeLoader = {
|
|
7258
7258
|
name: "I3S Attribute",
|
|
7259
7259
|
id: "i3s-attribute",
|
|
@@ -7716,7 +7716,7 @@
|
|
|
7716
7716
|
}
|
|
7717
7717
|
|
|
7718
7718
|
// src/i3s-content-loader.ts
|
|
7719
|
-
var VERSION8 = true ? "4.0.0-alpha.
|
|
7719
|
+
var VERSION8 = true ? "4.0.0-alpha.20" : "beta";
|
|
7720
7720
|
var I3SContentLoader = {
|
|
7721
7721
|
name: "I3S Content (Indexed Scene Layers)",
|
|
7722
7722
|
id: "i3s-content",
|
package/dist/i3s-slpk-loader.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SLPKLoader = void 0;
|
|
4
|
+
const zip_1 = require("@loaders.gl/zip");
|
|
4
5
|
const parse_slpk_1 = require("./lib/parsers/parse-slpk/parse-slpk");
|
|
5
|
-
const data_view_file_provider_1 = require("./lib/parsers/parse-zip/data-view-file-provider");
|
|
6
6
|
// __VERSION__ is injected by babel-plugin-version-inline
|
|
7
7
|
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
8
8
|
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
|
|
@@ -26,5 +26,5 @@ exports.SLPKLoader = {
|
|
|
26
26
|
* @returns requested file
|
|
27
27
|
*/
|
|
28
28
|
async function parseSLPK(data, options = {}) {
|
|
29
|
-
return (await (0, parse_slpk_1.parseSLPK)(new
|
|
29
|
+
return (await (0, parse_slpk_1.parseSLPK)(new zip_1.DataViewFile(new DataView(data)))).getFile(options.slpk?.path ?? '', options.slpk?.pathMode);
|
|
30
30
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export type { BoundingVolumes, Mbs, Obb, I3STilesetHeader, I3STileContent, I3STileHeader, SceneLayer3D, AttributeStorageInfo, Field, ESRIField, PopupInfo, Node3DIndexDocument, LodSelection, NodeReference, Resource, MaxScreenThresholdSQ, NodeInPage, SharedResources, Attribute, Extent, FeatureAttribute, FieldInfo, I3SMaterialDefinition, TextureDefinitionInfo, MaterialDefinitionInfo, FullExtent, StatisticsInfo, StatsInfo, Histogram, ValueCount, BuildingSceneSublayer, OperationalLayer, TextureSetDefinitionFormats } from './types';
|
|
2
|
-
export type { FileProvider } from './lib/parsers/parse-zip/file-provider';
|
|
3
2
|
export type { I3SLoaderOptions } from './i3s-loader';
|
|
4
3
|
export { COORDINATE_SYSTEM } from './lib/parsers/constants';
|
|
5
4
|
export { I3SLoader } from './i3s-loader';
|
|
@@ -9,6 +8,5 @@ export { I3SAttributeLoader, loadFeatureAttributes } from './i3s-attribute-loade
|
|
|
9
8
|
export { I3SBuildingSceneLayerLoader } from './i3s-building-scene-layer-loader';
|
|
10
9
|
export { I3SNodePageLoader } from './i3s-node-page-loader';
|
|
11
10
|
export { ArcGisWebSceneLoader } from './arcgis-webscene-loader';
|
|
12
|
-
export { parseZipLocalFileHeader } from './lib/parsers/parse-zip/local-file-header';
|
|
13
11
|
export { parseSLPK } from './lib/parsers/parse-slpk/parse-slpk';
|
|
14
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,eAAe,EACf,GAAG,EACH,GAAG,EACH,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AACjB,YAAY,EAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,eAAe,EACf,GAAG,EACH,GAAG,EACH,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AACjB,YAAY,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAE,qBAAqB,EAAC,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAC,2BAA2B,EAAC,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,SAAS,EAAC,MAAM,qCAAqC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// loaders.gl, MIT license
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.parseSLPK = exports.
|
|
4
|
+
exports.parseSLPK = exports.ArcGisWebSceneLoader = exports.I3SNodePageLoader = exports.I3SBuildingSceneLayerLoader = exports.loadFeatureAttributes = exports.I3SAttributeLoader = exports.I3SContentLoader = exports.SLPKLoader = exports.I3SLoader = exports.COORDINATE_SYSTEM = void 0;
|
|
5
5
|
var constants_1 = require("./lib/parsers/constants");
|
|
6
6
|
Object.defineProperty(exports, "COORDINATE_SYSTEM", { enumerable: true, get: function () { return constants_1.COORDINATE_SYSTEM; } });
|
|
7
7
|
var i3s_loader_1 = require("./i3s-loader");
|
|
@@ -19,7 +19,5 @@ var i3s_node_page_loader_1 = require("./i3s-node-page-loader");
|
|
|
19
19
|
Object.defineProperty(exports, "I3SNodePageLoader", { enumerable: true, get: function () { return i3s_node_page_loader_1.I3SNodePageLoader; } });
|
|
20
20
|
var arcgis_webscene_loader_1 = require("./arcgis-webscene-loader");
|
|
21
21
|
Object.defineProperty(exports, "ArcGisWebSceneLoader", { enumerable: true, get: function () { return arcgis_webscene_loader_1.ArcGisWebSceneLoader; } });
|
|
22
|
-
var local_file_header_1 = require("./lib/parsers/parse-zip/local-file-header");
|
|
23
|
-
Object.defineProperty(exports, "parseZipLocalFileHeader", { enumerable: true, get: function () { return local_file_header_1.parseZipLocalFileHeader; } });
|
|
24
22
|
var parse_slpk_1 = require("./lib/parsers/parse-slpk/parse-slpk");
|
|
25
23
|
Object.defineProperty(exports, "parseSLPK", { enumerable: true, get: function () { return parse_slpk_1.parseSLPK; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-slpk.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/parse-slpk/parse-slpk.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse-slpk.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/parse-slpk/parse-slpk.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,YAAY,EAMb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAE5C;;;;;GAKG;AACH,eAAO,MAAM,SAAS,iBACN,YAAY,cACf,MAAM,KAAK,IAAI,kBACzB,QAAQ,WAAW,CA8BrB,CAAC"}
|
|
@@ -5,10 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.parseSLPK = void 0;
|
|
7
7
|
const md5_1 = __importDefault(require("md5"));
|
|
8
|
-
const
|
|
9
|
-
const end_of_central_directory_1 = require("../parse-zip/end-of-central-directory");
|
|
10
|
-
const local_file_header_1 = require("../parse-zip/local-file-header");
|
|
11
|
-
const search_from_the_end_1 = require("../parse-zip/search-from-the-end");
|
|
8
|
+
const zip_1 = require("@loaders.gl/zip");
|
|
12
9
|
const slpk_archieve_1 = require("./slpk-archieve");
|
|
13
10
|
/**
|
|
14
11
|
* Creates slpk file handler from raw file
|
|
@@ -17,8 +14,8 @@ const slpk_archieve_1 = require("./slpk-archieve");
|
|
|
17
14
|
* @returns slpk file handler
|
|
18
15
|
*/
|
|
19
16
|
const parseSLPK = async (fileProvider, cb) => {
|
|
20
|
-
const hashCDOffset = await (0,
|
|
21
|
-
const cdFileHeader = await (0,
|
|
17
|
+
const hashCDOffset = await (0, zip_1.searchFromTheEnd)(fileProvider, zip_1.cdSignature);
|
|
18
|
+
const cdFileHeader = await (0, zip_1.parseZipCDFileHeader)(hashCDOffset, fileProvider);
|
|
22
19
|
let hashData;
|
|
23
20
|
if (cdFileHeader?.fileName !== '@specialIndexFileHASH128@') {
|
|
24
21
|
cb?.('SLPK doesnt contain hash file');
|
|
@@ -27,13 +24,13 @@ const parseSLPK = async (fileProvider, cb) => {
|
|
|
27
24
|
}
|
|
28
25
|
else {
|
|
29
26
|
cb?.('SLPK contains hash file');
|
|
30
|
-
const localFileHeader = await (0,
|
|
27
|
+
const localFileHeader = await (0, zip_1.parseZipLocalFileHeader)(cdFileHeader.localHeaderOffset, fileProvider);
|
|
31
28
|
if (!localFileHeader) {
|
|
32
29
|
throw new Error('corrupted SLPK');
|
|
33
30
|
}
|
|
34
31
|
const fileDataOffset = localFileHeader.fileDataOffset;
|
|
35
32
|
const hashFile = await fileProvider.slice(fileDataOffset, fileDataOffset + localFileHeader.compressedSize);
|
|
36
|
-
hashData = parseHashFile(hashFile);
|
|
33
|
+
hashData = (0, zip_1.parseHashFile)(hashFile);
|
|
37
34
|
}
|
|
38
35
|
return new slpk_archieve_1.SLPKArchive(fileProvider, hashData);
|
|
39
36
|
};
|
|
@@ -44,34 +41,16 @@ exports.parseSLPK = parseSLPK;
|
|
|
44
41
|
* @returns ready to use hash info
|
|
45
42
|
*/
|
|
46
43
|
const generateHashInfo = async (fileProvider) => {
|
|
47
|
-
const { cdStartOffset } = await (0,
|
|
48
|
-
let cdHeader = await (0,
|
|
44
|
+
const { cdStartOffset } = await (0, zip_1.parseEoCDRecord)(fileProvider);
|
|
45
|
+
let cdHeader = await (0, zip_1.parseZipCDFileHeader)(cdStartOffset, fileProvider);
|
|
49
46
|
const hashInfo = [];
|
|
50
47
|
while (cdHeader) {
|
|
51
48
|
hashInfo.push({
|
|
52
49
|
hash: Buffer.from((0, md5_1.default)(cdHeader.fileName.split('\\').join('/').toLocaleLowerCase()), 'hex'),
|
|
53
50
|
offset: cdHeader.localHeaderOffset
|
|
54
51
|
});
|
|
55
|
-
cdHeader = await (0,
|
|
52
|
+
cdHeader = await (0, zip_1.parseZipCDFileHeader)(cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength), fileProvider);
|
|
56
53
|
}
|
|
57
|
-
hashInfo.sort((a, b) => (0,
|
|
54
|
+
hashInfo.sort((a, b) => (0, zip_1.compareHashes)(a.hash, b.hash));
|
|
58
55
|
return hashInfo;
|
|
59
56
|
};
|
|
60
|
-
/**
|
|
61
|
-
* Reads hash file from buffer and returns it in ready-to-use form
|
|
62
|
-
* @param hashFile - bufer containing hash file
|
|
63
|
-
* @returns Array containing file info
|
|
64
|
-
*/
|
|
65
|
-
const parseHashFile = (hashFile) => {
|
|
66
|
-
const hashFileBuffer = Buffer.from(hashFile);
|
|
67
|
-
const hashArray = [];
|
|
68
|
-
for (let i = 0; i < hashFileBuffer.buffer.byteLength; i = i + 24) {
|
|
69
|
-
const offsetBuffer = new DataView(hashFileBuffer.buffer.slice(hashFileBuffer.byteOffset + i + 16, hashFileBuffer.byteOffset + i + 24));
|
|
70
|
-
const offset = offsetBuffer.getBigUint64(offsetBuffer.byteOffset, true);
|
|
71
|
-
hashArray.push({
|
|
72
|
-
hash: Buffer.from(hashFileBuffer.subarray(hashFileBuffer.byteOffset + i, hashFileBuffer.byteOffset + i + 16)),
|
|
73
|
-
offset
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
return hashArray;
|
|
77
|
-
};
|
|
@@ -1,19 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { FileProvider } from '
|
|
3
|
-
/** Element of hash array */
|
|
4
|
-
export type HashElement = {
|
|
5
|
-
/** File name hash */
|
|
6
|
-
hash: Buffer;
|
|
7
|
-
/** File offset in the archive */
|
|
8
|
-
offset: bigint;
|
|
9
|
-
};
|
|
10
|
-
/**
|
|
11
|
-
* Comparing md5 hashes according to https://github.com/Esri/i3s-spec/blob/master/docs/2.0/slpk_hashtable.pcsl.md step 5
|
|
12
|
-
* @param hash1 hash to compare
|
|
13
|
-
* @param hash2 hash to compare
|
|
14
|
-
* @returns -1 if hash1 < hash2, 0 of hash1 === hash2, 1 if hash1 > hash2
|
|
15
|
-
*/
|
|
16
|
-
export declare const compareHashes: (hash1: Buffer, hash2: Buffer) => number;
|
|
2
|
+
import { FileProvider, HashElement } from '@loaders.gl/zip';
|
|
17
3
|
/**
|
|
18
4
|
* Class for handling information about slpk file
|
|
19
5
|
*/
|
|
@@ -21,12 +7,6 @@ export declare class SLPKArchive {
|
|
|
21
7
|
private slpkArchive;
|
|
22
8
|
private hashArray;
|
|
23
9
|
constructor(slpkArchive: FileProvider, hashFile: HashElement[]);
|
|
24
|
-
/**
|
|
25
|
-
* Binary search in the hash info
|
|
26
|
-
* @param hashToSearch hash that we need to find
|
|
27
|
-
* @returns required hash element or undefined if not found
|
|
28
|
-
*/
|
|
29
|
-
private findBin;
|
|
30
10
|
/**
|
|
31
11
|
* Returns file with the given path from slpk archive
|
|
32
12
|
* @param path - path inside the slpk
|
|
@@ -46,5 +26,6 @@ export declare class SLPKArchive {
|
|
|
46
26
|
* @returns buffer with the raw file data
|
|
47
27
|
*/
|
|
48
28
|
private getFileBytes;
|
|
29
|
+
findBin(nameHash: Buffer): void;
|
|
49
30
|
}
|
|
50
31
|
//# sourceMappingURL=slpk-archieve.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slpk-archieve.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/parse-slpk/slpk-archieve.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"slpk-archieve.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/parse-slpk/slpk-archieve.ts"],"names":[],"mappings":";AACA,OAAO,EAAC,YAAY,EAA2B,WAAW,EAAU,MAAM,iBAAiB,CAAC;AAuC5F;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,SAAS,CAAgB;gBACrB,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE;IAK9D;;;;;OAKG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,KAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IA8B1E;;;;OAIG;YACW,aAAa;IAmB3B;;;;OAIG;YACW,YAAY;IAmB1B,OAAO,CAAC,QAAQ,EAAE,MAAM;CAGzB"}
|
|
@@ -3,29 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.SLPKArchive =
|
|
6
|
+
exports.SLPKArchive = void 0;
|
|
7
7
|
const md5_1 = __importDefault(require("md5"));
|
|
8
|
-
const
|
|
8
|
+
const zip_1 = require("@loaders.gl/zip");
|
|
9
9
|
const compression_1 = require("@loaders.gl/compression");
|
|
10
|
-
/**
|
|
11
|
-
* Comparing md5 hashes according to https://github.com/Esri/i3s-spec/blob/master/docs/2.0/slpk_hashtable.pcsl.md step 5
|
|
12
|
-
* @param hash1 hash to compare
|
|
13
|
-
* @param hash2 hash to compare
|
|
14
|
-
* @returns -1 if hash1 < hash2, 0 of hash1 === hash2, 1 if hash1 > hash2
|
|
15
|
-
*/
|
|
16
|
-
const compareHashes = (hash1, hash2) => {
|
|
17
|
-
const h1 = new BigUint64Array(hash1.buffer, hash1.byteOffset, 2);
|
|
18
|
-
const h2 = new BigUint64Array(hash2.buffer, hash2.byteOffset, 2);
|
|
19
|
-
const diff = h1[0] === h2[0] ? h1[1] - h2[1] : h1[0] - h2[0];
|
|
20
|
-
if (diff < 0n) {
|
|
21
|
-
return -1;
|
|
22
|
-
}
|
|
23
|
-
else if (diff === 0n) {
|
|
24
|
-
return 0;
|
|
25
|
-
}
|
|
26
|
-
return 1;
|
|
27
|
-
};
|
|
28
|
-
exports.compareHashes = compareHashes;
|
|
29
10
|
/** Description of real paths for different file types */
|
|
30
11
|
const PATH_DESCRIPTIONS = [
|
|
31
12
|
{
|
|
@@ -66,29 +47,6 @@ const PATH_DESCRIPTIONS = [
|
|
|
66
47
|
*/
|
|
67
48
|
class SLPKArchive {
|
|
68
49
|
constructor(slpkArchive, hashFile) {
|
|
69
|
-
/**
|
|
70
|
-
* Binary search in the hash info
|
|
71
|
-
* @param hashToSearch hash that we need to find
|
|
72
|
-
* @returns required hash element or undefined if not found
|
|
73
|
-
*/
|
|
74
|
-
this.findBin = (hashToSearch) => {
|
|
75
|
-
let lowerBorder = 0;
|
|
76
|
-
let upperBorder = this.hashArray.length;
|
|
77
|
-
while (upperBorder - lowerBorder > 1) {
|
|
78
|
-
const middle = lowerBorder + Math.floor((upperBorder - lowerBorder) / 2);
|
|
79
|
-
const value = (0, exports.compareHashes)(this.hashArray[middle].hash, hashToSearch);
|
|
80
|
-
if (value === 0) {
|
|
81
|
-
return this.hashArray[middle];
|
|
82
|
-
}
|
|
83
|
-
else if (value < 0) {
|
|
84
|
-
lowerBorder = middle;
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
upperBorder = middle;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
return undefined;
|
|
91
|
-
};
|
|
92
50
|
this.slpkArchive = slpkArchive;
|
|
93
51
|
this.hashArray = hashFile;
|
|
94
52
|
}
|
|
@@ -155,16 +113,19 @@ class SLPKArchive {
|
|
|
155
113
|
*/
|
|
156
114
|
async getFileBytes(path) {
|
|
157
115
|
const nameHash = Buffer.from((0, md5_1.default)(path), 'hex');
|
|
158
|
-
const fileInfo =
|
|
116
|
+
const fileInfo = (0, zip_1.findBin)(nameHash, this.hashArray); // implement binary search
|
|
159
117
|
if (!fileInfo) {
|
|
160
118
|
return undefined;
|
|
161
119
|
}
|
|
162
|
-
const localFileHeader = await (0,
|
|
120
|
+
const localFileHeader = await (0, zip_1.parseZipLocalFileHeader)(fileInfo.offset, this.slpkArchive);
|
|
163
121
|
if (!localFileHeader) {
|
|
164
122
|
return undefined;
|
|
165
123
|
}
|
|
166
124
|
const compressedFile = this.slpkArchive.slice(localFileHeader.fileDataOffset, localFileHeader.fileDataOffset + localFileHeader.compressedSize);
|
|
167
125
|
return compressedFile;
|
|
168
126
|
}
|
|
127
|
+
findBin(nameHash) {
|
|
128
|
+
throw new Error('Method not implemented.');
|
|
129
|
+
}
|
|
169
130
|
}
|
|
170
131
|
exports.SLPKArchive = SLPKArchive;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/i3s",
|
|
3
|
-
"version": "4.0.0-alpha.
|
|
3
|
+
"version": "4.0.0-alpha.20",
|
|
4
4
|
"description": "i3s .",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -33,13 +33,13 @@
|
|
|
33
33
|
"build-worker-node": "esbuild src/workers/i3s-content-worker-node.ts --outfile=dist/i3s-content-worker-node.js --platform=node --target=node16 --minify --bundle --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\""
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@loaders.gl/compression": "4.0.0-alpha.
|
|
37
|
-
"@loaders.gl/draco": "4.0.0-alpha.
|
|
38
|
-
"@loaders.gl/images": "4.0.0-alpha.
|
|
39
|
-
"@loaders.gl/loader-utils": "4.0.0-alpha.
|
|
40
|
-
"@loaders.gl/schema": "4.0.0-alpha.
|
|
41
|
-
"@loaders.gl/textures": "4.0.0-alpha.
|
|
42
|
-
"@loaders.gl/tiles": "4.0.0-alpha.
|
|
36
|
+
"@loaders.gl/compression": "4.0.0-alpha.20",
|
|
37
|
+
"@loaders.gl/draco": "4.0.0-alpha.20",
|
|
38
|
+
"@loaders.gl/images": "4.0.0-alpha.20",
|
|
39
|
+
"@loaders.gl/loader-utils": "4.0.0-alpha.20",
|
|
40
|
+
"@loaders.gl/schema": "4.0.0-alpha.20",
|
|
41
|
+
"@loaders.gl/textures": "4.0.0-alpha.20",
|
|
42
|
+
"@loaders.gl/tiles": "4.0.0-alpha.20",
|
|
43
43
|
"@luma.gl/constants": "^8.5.4",
|
|
44
44
|
"@math.gl/core": "^3.5.1",
|
|
45
45
|
"@math.gl/culling": "^3.5.1",
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"peerDependencies": {
|
|
50
50
|
"@loaders.gl/core": "^4.0.0-alpha.8"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "ac122e83102657c38207d59c631a5ce4e7aa46bd"
|
|
53
53
|
}
|
package/src/i3s-slpk-loader.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';
|
|
2
|
+
import {DataViewFile} from '@loaders.gl/zip';
|
|
2
3
|
import {parseSLPK as parseSLPKFromProvider} from './lib/parsers/parse-slpk/parse-slpk';
|
|
3
|
-
import {DataViewFileProvider} from './lib/parsers/parse-zip/data-view-file-provider';
|
|
4
4
|
|
|
5
5
|
// __VERSION__ is injected by babel-plugin-version-inline
|
|
6
6
|
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
@@ -38,7 +38,7 @@ export const SLPKLoader: LoaderWithParser<Buffer, never, SLPKLoaderOptions> = {
|
|
|
38
38
|
*/
|
|
39
39
|
|
|
40
40
|
async function parseSLPK(data: ArrayBuffer, options: SLPKLoaderOptions = {}) {
|
|
41
|
-
return (await parseSLPKFromProvider(new
|
|
41
|
+
return (await parseSLPKFromProvider(new DataViewFile(new DataView(data)))).getFile(
|
|
42
42
|
options.slpk?.path ?? '',
|
|
43
43
|
options.slpk?.pathMode
|
|
44
44
|
);
|
package/src/index.ts
CHANGED
|
@@ -35,7 +35,6 @@ export type {
|
|
|
35
35
|
OperationalLayer,
|
|
36
36
|
TextureSetDefinitionFormats
|
|
37
37
|
} from './types';
|
|
38
|
-
export type {FileProvider} from './lib/parsers/parse-zip/file-provider';
|
|
39
38
|
export type {I3SLoaderOptions} from './i3s-loader';
|
|
40
39
|
|
|
41
40
|
export {COORDINATE_SYSTEM} from './lib/parsers/constants';
|
|
@@ -47,5 +46,4 @@ export {I3SAttributeLoader, loadFeatureAttributes} from './i3s-attribute-loader'
|
|
|
47
46
|
export {I3SBuildingSceneLayerLoader} from './i3s-building-scene-layer-loader';
|
|
48
47
|
export {I3SNodePageLoader} from './i3s-node-page-loader';
|
|
49
48
|
export {ArcGisWebSceneLoader} from './arcgis-webscene-loader';
|
|
50
|
-
export {parseZipLocalFileHeader} from './lib/parsers/parse-zip/local-file-header';
|
|
51
49
|
export {parseSLPK} from './lib/parsers/parse-slpk/parse-slpk';
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import md5 from 'md5';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
import {
|
|
3
|
+
parseZipCDFileHeader,
|
|
4
|
+
cdSignature as cdHeaderSignature,
|
|
5
|
+
parseEoCDRecord,
|
|
6
|
+
FileProvider,
|
|
7
|
+
parseZipLocalFileHeader,
|
|
8
|
+
searchFromTheEnd,
|
|
9
|
+
HashElement,
|
|
10
|
+
compareHashes,
|
|
11
|
+
parseHashFile
|
|
12
|
+
} from '@loaders.gl/zip';
|
|
13
|
+
import {SLPKArchive} from './slpk-archieve';
|
|
8
14
|
|
|
9
15
|
/**
|
|
10
16
|
* Creates slpk file handler from raw file
|
|
@@ -69,29 +75,3 @@ const generateHashInfo = async (fileProvider: FileProvider): Promise<HashElement
|
|
|
69
75
|
hashInfo.sort((a, b) => compareHashes(a.hash, b.hash));
|
|
70
76
|
return hashInfo;
|
|
71
77
|
};
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Reads hash file from buffer and returns it in ready-to-use form
|
|
75
|
-
* @param hashFile - bufer containing hash file
|
|
76
|
-
* @returns Array containing file info
|
|
77
|
-
*/
|
|
78
|
-
const parseHashFile = (hashFile: ArrayBuffer): HashElement[] => {
|
|
79
|
-
const hashFileBuffer = Buffer.from(hashFile);
|
|
80
|
-
const hashArray: HashElement[] = [];
|
|
81
|
-
for (let i = 0; i < hashFileBuffer.buffer.byteLength; i = i + 24) {
|
|
82
|
-
const offsetBuffer = new DataView(
|
|
83
|
-
hashFileBuffer.buffer.slice(
|
|
84
|
-
hashFileBuffer.byteOffset + i + 16,
|
|
85
|
-
hashFileBuffer.byteOffset + i + 24
|
|
86
|
-
)
|
|
87
|
-
);
|
|
88
|
-
const offset = offsetBuffer.getBigUint64(offsetBuffer.byteOffset, true);
|
|
89
|
-
hashArray.push({
|
|
90
|
-
hash: Buffer.from(
|
|
91
|
-
hashFileBuffer.subarray(hashFileBuffer.byteOffset + i, hashFileBuffer.byteOffset + i + 16)
|
|
92
|
-
),
|
|
93
|
-
offset
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
return hashArray;
|
|
97
|
-
};
|
|
@@ -1,35 +1,6 @@
|
|
|
1
1
|
import md5 from 'md5';
|
|
2
|
-
import {parseZipLocalFileHeader} from '
|
|
2
|
+
import {FileProvider, parseZipLocalFileHeader, HashElement, findBin} from '@loaders.gl/zip';
|
|
3
3
|
import {GZipCompression} from '@loaders.gl/compression';
|
|
4
|
-
import {FileProvider} from '../parse-zip/file-provider';
|
|
5
|
-
|
|
6
|
-
/** Element of hash array */
|
|
7
|
-
export type HashElement = {
|
|
8
|
-
/** File name hash */
|
|
9
|
-
hash: Buffer;
|
|
10
|
-
/** File offset in the archive */
|
|
11
|
-
offset: bigint;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Comparing md5 hashes according to https://github.com/Esri/i3s-spec/blob/master/docs/2.0/slpk_hashtable.pcsl.md step 5
|
|
16
|
-
* @param hash1 hash to compare
|
|
17
|
-
* @param hash2 hash to compare
|
|
18
|
-
* @returns -1 if hash1 < hash2, 0 of hash1 === hash2, 1 if hash1 > hash2
|
|
19
|
-
*/
|
|
20
|
-
export const compareHashes = (hash1: Buffer, hash2: Buffer): number => {
|
|
21
|
-
const h1 = new BigUint64Array(hash1.buffer, hash1.byteOffset, 2);
|
|
22
|
-
const h2 = new BigUint64Array(hash2.buffer, hash2.byteOffset, 2);
|
|
23
|
-
|
|
24
|
-
const diff = h1[0] === h2[0] ? h1[1] - h2[1] : h1[0] - h2[0];
|
|
25
|
-
|
|
26
|
-
if (diff < 0n) {
|
|
27
|
-
return -1;
|
|
28
|
-
} else if (diff === 0n) {
|
|
29
|
-
return 0;
|
|
30
|
-
}
|
|
31
|
-
return 1;
|
|
32
|
-
};
|
|
33
4
|
|
|
34
5
|
/** Description of real paths for different file types */
|
|
35
6
|
const PATH_DESCRIPTIONS: {test: RegExp; extensions: string[]}[] = [
|
|
@@ -78,29 +49,6 @@ export class SLPKArchive {
|
|
|
78
49
|
this.hashArray = hashFile;
|
|
79
50
|
}
|
|
80
51
|
|
|
81
|
-
/**
|
|
82
|
-
* Binary search in the hash info
|
|
83
|
-
* @param hashToSearch hash that we need to find
|
|
84
|
-
* @returns required hash element or undefined if not found
|
|
85
|
-
*/
|
|
86
|
-
private findBin = (hashToSearch: Buffer): HashElement | undefined => {
|
|
87
|
-
let lowerBorder = 0;
|
|
88
|
-
let upperBorder = this.hashArray.length;
|
|
89
|
-
|
|
90
|
-
while (upperBorder - lowerBorder > 1) {
|
|
91
|
-
const middle = lowerBorder + Math.floor((upperBorder - lowerBorder) / 2);
|
|
92
|
-
const value = compareHashes(this.hashArray[middle].hash, hashToSearch);
|
|
93
|
-
if (value === 0) {
|
|
94
|
-
return this.hashArray[middle];
|
|
95
|
-
} else if (value < 0) {
|
|
96
|
-
lowerBorder = middle;
|
|
97
|
-
} else {
|
|
98
|
-
upperBorder = middle;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return undefined;
|
|
102
|
-
};
|
|
103
|
-
|
|
104
52
|
/**
|
|
105
53
|
* Returns file with the given path from slpk archive
|
|
106
54
|
* @param path - path inside the slpk
|
|
@@ -168,7 +116,7 @@ export class SLPKArchive {
|
|
|
168
116
|
*/
|
|
169
117
|
private async getFileBytes(path: string): Promise<ArrayBuffer | undefined> {
|
|
170
118
|
const nameHash = Buffer.from(md5(path), 'hex');
|
|
171
|
-
const fileInfo =
|
|
119
|
+
const fileInfo = findBin(nameHash, this.hashArray); // implement binary search
|
|
172
120
|
if (!fileInfo) {
|
|
173
121
|
return undefined;
|
|
174
122
|
}
|
|
@@ -185,4 +133,7 @@ export class SLPKArchive {
|
|
|
185
133
|
|
|
186
134
|
return compressedFile;
|
|
187
135
|
}
|
|
136
|
+
findBin(nameHash: Buffer) {
|
|
137
|
+
throw new Error('Method not implemented.');
|
|
138
|
+
}
|
|
188
139
|
}
|