@loaders.gl/tile-converter 4.0.0-alpha.18 → 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/bin/converter.js +1 -1
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +3 -1
- package/dist/converter-cli.js +10 -2
- package/dist/converter.min.js +172 -103
- package/dist/deps-installer/deps-installer.d.ts +3 -2
- package/dist/deps-installer/deps-installer.d.ts.map +1 -1
- package/dist/deps-installer/deps-installer.js +36 -10
- package/dist/dist.min.js +226 -151
- package/dist/es5/constants.js +5 -1
- package/dist/es5/constants.js.map +1 -1
- package/dist/es5/converter-cli.js +7 -2
- package/dist/es5/converter-cli.js.map +1 -1
- package/dist/es5/deps-installer/deps-installer.js +112 -38
- package/dist/es5/deps-installer/deps-installer.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +21 -8
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js +7 -6
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-converter.js +78 -67
- package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js +38 -9
- package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -1
- package/dist/es5/i3s-converter/i3s-converter.js +86 -99
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/es5/i3s-converter/types.js +11 -11
- package/dist/es5/i3s-converter/types.js.map +1 -1
- package/dist/es5/i3s-server/controllers/slpk-controller.js +1 -1
- package/dist/es5/i3s-server/controllers/slpk-controller.js.map +1 -1
- package/dist/es5/index.js +3 -3
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/pgm-loader.js +1 -1
- package/dist/es5/slpk-extractor/helpers/{file-handle-provider.js → file-handle-file.js} +9 -9
- package/dist/es5/slpk-extractor/helpers/file-handle-file.js.map +1 -0
- package/dist/es5/slpk-extractor/slpk-extractor.js +5 -5
- package/dist/es5/slpk-extractor/slpk-extractor.js.map +1 -1
- package/dist/esm/constants.js +2 -0
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/converter-cli.js +7 -2
- package/dist/esm/converter-cli.js.map +1 -1
- package/dist/esm/deps-installer/deps-installer.js +37 -11
- package/dist/esm/deps-installer/deps-installer.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +18 -6
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js +7 -6
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-converter.js +37 -25
- package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js +28 -9
- package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -1
- package/dist/esm/i3s-converter/i3s-converter.js +49 -36
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/i3s-converter/types.js +9 -9
- package/dist/esm/i3s-converter/types.js.map +1 -1
- package/dist/esm/i3s-server/bin/i3s-server.min.js +71 -71
- package/dist/esm/i3s-server/controllers/slpk-controller.js +2 -2
- package/dist/esm/i3s-server/controllers/slpk-controller.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/pgm-loader.js +1 -1
- package/dist/esm/slpk-extractor/helpers/{file-handle-provider.js → file-handle-file.js} +3 -3
- package/dist/esm/slpk-extractor/helpers/file-handle-file.js.map +1 -0
- package/dist/esm/slpk-extractor/slpk-extractor.js +3 -3
- package/dist/esm/slpk-extractor/slpk-extractor.js.map +1 -1
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +11 -1
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/batch-ids-extensions.js +33 -13
- package/dist/i3s-converter/helpers/geometry-attributes.js +7 -6
- package/dist/i3s-converter/helpers/geometry-converter.d.ts +7 -6
- package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/geometry-converter.js +59 -47
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts +2 -2
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.js +39 -14
- package/dist/i3s-converter/i3s-converter.d.ts +2 -1
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
- package/dist/i3s-converter/i3s-converter.js +49 -31
- package/dist/i3s-converter/types.d.ts +4 -2
- package/dist/i3s-converter/types.d.ts.map +1 -1
- package/dist/i3s-converter/types.js +11 -11
- package/dist/i3s-server/controllers/slpk-controller.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/slpk-extractor/helpers/{file-handle-provider.d.ts → file-handle-file.d.ts} +5 -5
- package/dist/slpk-extractor/helpers/file-handle-file.d.ts.map +1 -0
- package/dist/slpk-extractor/helpers/{file-handle-provider.js → file-handle-file.js} +5 -5
- package/dist/slpk-extractor/slpk-extractor.js +5 -5
- package/dist/slpk-extractor.min.js +32 -32
- package/package.json +15 -14
- package/src/constants.ts +3 -0
- package/src/converter-cli.ts +9 -2
- package/src/deps-installer/deps-installer.ts +55 -10
- package/src/i3s-converter/helpers/batch-ids-extensions.ts +39 -12
- package/src/i3s-converter/helpers/geometry-attributes.ts +15 -8
- package/src/i3s-converter/helpers/geometry-converter.ts +84 -48
- package/src/i3s-converter/helpers/preprocess-3d-tiles.ts +48 -18
- package/src/i3s-converter/i3s-converter.ts +65 -39
- package/src/i3s-converter/types.ts +4 -2
- package/src/i3s-server/controllers/slpk-controller.ts +2 -2
- package/src/index.ts +1 -1
- package/src/slpk-extractor/helpers/{file-handle-provider.ts → file-handle-file.ts} +5 -5
- package/src/slpk-extractor/slpk-extractor.ts +3 -3
- package/dist/es5/slpk-extractor/helpers/file-handle-provider.js.map +0 -1
- package/dist/esm/slpk-extractor/helpers/file-handle-provider.js.map +0 -1
- package/dist/slpk-extractor/helpers/file-handle-provider.d.ts.map +0 -1
|
@@ -4,18 +4,19 @@ exports.mergePreprocessData = exports.analyzeTileContent = exports.GLTF_PRIMITIV
|
|
|
4
4
|
const types_1 = require("../types");
|
|
5
5
|
const gltf_1 = require("@loaders.gl/gltf");
|
|
6
6
|
const core_1 = require("@loaders.gl/core");
|
|
7
|
+
const constants_1 = require("../../constants");
|
|
7
8
|
/**
|
|
8
9
|
* glTF primitive modes
|
|
9
10
|
* @see https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#_mesh_primitive_mode
|
|
10
11
|
*/
|
|
11
12
|
exports.GLTF_PRIMITIVE_MODES = [
|
|
12
|
-
types_1.
|
|
13
|
-
types_1.
|
|
14
|
-
types_1.
|
|
15
|
-
types_1.
|
|
16
|
-
types_1.
|
|
17
|
-
types_1.
|
|
18
|
-
types_1.
|
|
13
|
+
types_1.GLTFPrimitiveModeString.POINTS,
|
|
14
|
+
types_1.GLTFPrimitiveModeString.LINES,
|
|
15
|
+
types_1.GLTFPrimitiveModeString.LINE_LOOP,
|
|
16
|
+
types_1.GLTFPrimitiveModeString.LINE_STRIP,
|
|
17
|
+
types_1.GLTFPrimitiveModeString.TRIANGLES,
|
|
18
|
+
types_1.GLTFPrimitiveModeString.TRIANGLE_STRIP,
|
|
19
|
+
types_1.GLTFPrimitiveModeString.TRIANGLE_FAN // 6
|
|
19
20
|
];
|
|
20
21
|
/**
|
|
21
22
|
* Analyze tile content. This function is used during preprocess stage of
|
|
@@ -24,22 +25,26 @@ exports.GLTF_PRIMITIVE_MODES = [
|
|
|
24
25
|
* @returns
|
|
25
26
|
*/
|
|
26
27
|
const analyzeTileContent = async (tileContent) => {
|
|
27
|
-
const
|
|
28
|
-
meshTopologyTypes: new Set()
|
|
28
|
+
const defaultResult = {
|
|
29
|
+
meshTopologyTypes: new Set(),
|
|
30
|
+
metadataClasses: new Set()
|
|
29
31
|
};
|
|
30
32
|
if (!tileContent?.gltfArrayBuffer) {
|
|
31
|
-
return
|
|
33
|
+
return defaultResult;
|
|
32
34
|
}
|
|
33
35
|
const gltfData = await (0, core_1.parse)(tileContent.gltfArrayBuffer, gltf_1.GLTFLoader, {
|
|
34
36
|
gltf: { normalize: false, loadBuffers: false, loadImages: false, decompressMeshes: false }
|
|
35
37
|
});
|
|
36
38
|
const gltf = gltfData.json;
|
|
37
39
|
if (!gltf) {
|
|
38
|
-
return
|
|
40
|
+
return defaultResult;
|
|
39
41
|
}
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
return
|
|
42
|
+
const meshTopologyTypes = getMeshTypesFromGltf(gltf);
|
|
43
|
+
const metadataClasses = getMetadataClassesFromGltf(gltf);
|
|
44
|
+
return {
|
|
45
|
+
meshTopologyTypes,
|
|
46
|
+
metadataClasses
|
|
47
|
+
};
|
|
43
48
|
};
|
|
44
49
|
exports.analyzeTileContent = analyzeTileContent;
|
|
45
50
|
/**
|
|
@@ -60,6 +65,22 @@ const getMeshTypesFromGltf = (gltfJson) => {
|
|
|
60
65
|
}
|
|
61
66
|
return result;
|
|
62
67
|
};
|
|
68
|
+
/**
|
|
69
|
+
* Get feature metadata classes from glTF
|
|
70
|
+
* @param gltfJson - JSON part of GLB content
|
|
71
|
+
* @returns array of classes
|
|
72
|
+
*/
|
|
73
|
+
const getMetadataClassesFromGltf = (gltfJson) => {
|
|
74
|
+
const result = new Set();
|
|
75
|
+
const classes = gltfJson.extensions?.[constants_1.EXT_FEATURE_METADATA]
|
|
76
|
+
?.schema?.classes;
|
|
77
|
+
if (classes) {
|
|
78
|
+
for (const classKey of Object.keys(classes)) {
|
|
79
|
+
result.add(classKey);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return result;
|
|
83
|
+
};
|
|
63
84
|
/**
|
|
64
85
|
* Merge object2 into object1
|
|
65
86
|
* @param object1
|
|
@@ -71,5 +92,9 @@ const mergePreprocessData = (object1, object2) => {
|
|
|
71
92
|
for (const type of object2.meshTopologyTypes) {
|
|
72
93
|
object1.meshTopologyTypes.add(type);
|
|
73
94
|
}
|
|
95
|
+
// Merge feature metadata classes
|
|
96
|
+
for (const metadataClass of object2.metadataClasses) {
|
|
97
|
+
object1.metadataClasses.add(metadataClass);
|
|
98
|
+
}
|
|
74
99
|
};
|
|
75
100
|
exports.mergePreprocessData = mergePreprocessData;
|
|
@@ -78,6 +78,8 @@ export default class I3SConverter {
|
|
|
78
78
|
generateTextures?: boolean;
|
|
79
79
|
generateBoundingVolumes?: boolean;
|
|
80
80
|
instantNodeWriting?: boolean;
|
|
81
|
+
inquirer?: Promise<unknown>;
|
|
82
|
+
metadataClass?: string;
|
|
81
83
|
}): Promise<string>;
|
|
82
84
|
/**
|
|
83
85
|
* Preprocess stage of the tile converter. Traverse all the tiles tree and
|
|
@@ -262,6 +264,5 @@ export default class I3SConverter {
|
|
|
262
264
|
* @returns
|
|
263
265
|
*/
|
|
264
266
|
private isContentSupported;
|
|
265
|
-
private loadWorkers;
|
|
266
267
|
}
|
|
267
268
|
//# sourceMappingURL=i3s-converter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i3s-converter.d.ts","sourceRoot":"","sources":["../../src/i3s-converter/i3s-converter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,oBAAoB,EAGpB,+BAA+B,EAChC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAC,KAAK,EAAC,MAAM,gBAAgB,CAAC;AAOrC,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAuB7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAC,qBAAqB,EAA8B,MAAM,iBAAiB,CAAC;AAGnF,OAAO,EAGL,cAAc,EAEf,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"i3s-converter.d.ts","sourceRoot":"","sources":["../../src/i3s-converter/i3s-converter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,oBAAoB,EAGpB,+BAA+B,EAChC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAC,KAAK,EAAC,MAAM,gBAAgB,CAAC;AAOrC,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAuB7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAC,qBAAqB,EAA8B,MAAM,iBAAiB,CAAC;AAGnF,OAAO,EAGL,cAAc,EAEf,MAAM,SAAS,CAAC;AAEjB,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAyBlD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,GAAG,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,mBAAmB,EAAE,qBAAqB,EAAE,CAAC;IAC7C,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,eAAe,EAAE;QAAC,UAAU,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAC,EAAE,CAAC;IAChE,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,EAAE;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,uBAAuB,EAAE,MAAM,CAAC;KACjC,CAAC;IACF,QAAQ,EAAE,OAAO,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAM;IACvC,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAU;IAC/C,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAU;IAC5C,aAAa,EAAE,+BAA+B,GAAG,IAAI,CAAQ;IAC7D,WAAW,EAAE,oBAAoB,CAa/B;IACF,gBAAgB,EAAE,KAAK,GAAG,IAAI,CAAQ;IACtC,MAAM,EAAE,gBAAgB,CAAiB;IACzC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,uBAAuB,EAAE,OAAO,CAAC;IACjC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAM;IAC3C,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC,CAAoB;IAC1D,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAAQ;IACrC,cAAc,EAAE,cAAc,CAG5B;;IAwBF;;;;;;;;;;;;;;;;OAgBG;IACG,OAAO,CAAC,OAAO,EAAE;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,uBAAuB,CAAC,EAAE,OAAO,CAAC;QAClC,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO,CAAC,MAAM,CAAC;IAkFnB;;;;OAIG;YACW,oBAAoB;IAgElC;;;;;OAKG;YACW,WAAW;IA6BzB;;;;OAIG;YACW,qBAAqB;IA2EnC;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAgCpB;;OAEG;YACW,aAAa;IAc3B;;;OAGG;YACW,WAAW;IAsCzB;;;;;;OAMG;YACW,WAAW;IAiCzB;;;;OAIG;YACW,YAAY;IAc1B;;;;;;;OAOG;YACW,WAAW;IAsGzB;;;;;;;;;;OAUG;YACW,iBAAiB;IAkC/B;;;;;;;;;;;;;;OAcG;YACW,sBAAsB;IA+DpC;;;;;;;;;OASG;YACW,eAAe;IAiB7B;;;;;;OAMG;YACW,gBAAgB;IAoC9B;;;;;;OAMG;YACW,YAAY;IAwB1B;;;;;OAKG;YACW,aAAa;IAmE3B;;;;;;;OAOG;YACW,gBAAgB;IAwB9B;;;;;OAKG;YACW,gBAAgB;IA0B9B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAU7B;;;;;;OAMG;IACH,OAAO,CAAC,8BAA8B;IAWtC;;;OAGG;IACH,OAAO,CAAC,qCAAqC;IAyB7C;;;OAGG;YACW,iBAAiB;IAqB/B;;OAEG;YACW,oBAAoB;IAYlC;;OAEG;YACW,qBAAqB;IAiBnC;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAWtC;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;CAG3B"}
|
|
@@ -51,7 +51,6 @@ const textures_1 = require("@loaders.gl/textures");
|
|
|
51
51
|
const images_1 = require("@loaders.gl/images");
|
|
52
52
|
const types_1 = require("./types");
|
|
53
53
|
const worker_utils_1 = require("@loaders.gl/worker-utils");
|
|
54
|
-
const draco_1 = require("@loaders.gl/draco");
|
|
55
54
|
const write_queue_1 = __importDefault(require("../lib/utils/write-queue"));
|
|
56
55
|
const constants_1 = require("../constants");
|
|
57
56
|
const feature_attributes_1 = require("./helpers/feature-attributes");
|
|
@@ -61,8 +60,7 @@ const core_2 = require("@math.gl/core");
|
|
|
61
60
|
const tiles_1 = require("@loaders.gl/tiles");
|
|
62
61
|
const tileset_traversal_1 = require("./helpers/tileset-traversal");
|
|
63
62
|
const preprocess_3d_tiles_1 = require("./helpers/preprocess-3d-tiles");
|
|
64
|
-
const ION_DEFAULT_TOKEN = process_1.default.env?.IonToken
|
|
65
|
-
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlYWMxMzcyYy0zZjJkLTQwODctODNlNi01MDRkZmMzMjIxOWIiLCJpZCI6OTYyMCwic2NvcGVzIjpbImFzbCIsImFzciIsImdjIl0sImlhdCI6MTU2Mjg2NjI3M30.1FNiClUyk00YH_nWfSGpiQAjR5V2OvREDq1PJ5QMjWQ'; // eslint-disable-line
|
|
63
|
+
const ION_DEFAULT_TOKEN = process_1.default.env?.IonToken;
|
|
66
64
|
const HARDCODED_NODES_PER_PAGE = 64;
|
|
67
65
|
const _3D_TILES = '3DTILES';
|
|
68
66
|
const _3D_OBJECT_LAYER_TYPE = '3DObject';
|
|
@@ -81,6 +79,7 @@ class I3SConverter {
|
|
|
81
79
|
this.loadOptions = {
|
|
82
80
|
_nodeWorkers: true,
|
|
83
81
|
reuseWorkers: true,
|
|
82
|
+
useLocalLibraries: true,
|
|
84
83
|
basis: {
|
|
85
84
|
format: 'rgba32',
|
|
86
85
|
// We need to load local fs workers because nodejs can't load workers from the Internet
|
|
@@ -88,7 +87,8 @@ class I3SConverter {
|
|
|
88
87
|
},
|
|
89
88
|
// We need to load local fs workers because nodejs can't load workers from the Internet
|
|
90
89
|
draco: { workerUrl: './modules/draco/dist/draco-worker-node.js' },
|
|
91
|
-
fetch: {}
|
|
90
|
+
fetch: {},
|
|
91
|
+
modules: {}
|
|
92
92
|
};
|
|
93
93
|
this.geoidHeightModel = null;
|
|
94
94
|
this.Loader = _3d_tiles_1.Tiles3DLoader;
|
|
@@ -96,7 +96,8 @@ class I3SConverter {
|
|
|
96
96
|
this.writeQueue = new write_queue_1.default();
|
|
97
97
|
this.compressList = null;
|
|
98
98
|
this.preprocessData = {
|
|
99
|
-
meshTopologyTypes: new Set()
|
|
99
|
+
meshTopologyTypes: new Set(),
|
|
100
|
+
metadataClasses: new Set()
|
|
100
101
|
};
|
|
101
102
|
this.nodePages = new node_pages_1.default(file_utils_1.writeFile, HARDCODED_NODES_PER_PAGE, this);
|
|
102
103
|
this.options = {};
|
|
@@ -141,7 +142,7 @@ class I3SConverter {
|
|
|
141
142
|
return constants_1.BROWSER_ERROR_MESSAGE;
|
|
142
143
|
}
|
|
143
144
|
this.conversionStartTime = process_1.default.hrtime();
|
|
144
|
-
const { tilesetName, slpk, egmFilePath, inputUrl, validate, outputPath, draco = true, sevenZipExe, maxDepth, token, generateTextures, generateBoundingVolumes, instantNodeWriting = false, mergeMaterials = true } = options;
|
|
145
|
+
const { tilesetName, slpk, egmFilePath, inputUrl, validate, outputPath, draco = true, sevenZipExe, maxDepth, token, generateTextures, generateBoundingVolumes, instantNodeWriting = false, mergeMaterials = true, inquirer, metadataClass } = options;
|
|
145
146
|
this.options = {
|
|
146
147
|
maxDepth,
|
|
147
148
|
slpk,
|
|
@@ -151,7 +152,9 @@ class I3SConverter {
|
|
|
151
152
|
token,
|
|
152
153
|
inputUrl,
|
|
153
154
|
instantNodeWriting,
|
|
154
|
-
mergeMaterials
|
|
155
|
+
mergeMaterials,
|
|
156
|
+
inquirer,
|
|
157
|
+
metadataClass
|
|
155
158
|
};
|
|
156
159
|
this.compressList = (this.options.instantNodeWriting && []) || null;
|
|
157
160
|
this.validate = Boolean(validate);
|
|
@@ -166,7 +169,6 @@ class I3SConverter {
|
|
|
166
169
|
if (slpk) {
|
|
167
170
|
this.nodePages.useWriteFunction(file_utils_1.writeFileForSlpk);
|
|
168
171
|
}
|
|
169
|
-
await this.loadWorkers();
|
|
170
172
|
try {
|
|
171
173
|
const preloadOptions = await this._fetchPreloadOptions();
|
|
172
174
|
let tilesetUrl = inputUrl;
|
|
@@ -203,17 +205,45 @@ class I3SConverter {
|
|
|
203
205
|
console.log(`Analyze source tileset`);
|
|
204
206
|
const sourceRootTile = this.sourceTileset.root;
|
|
205
207
|
await (0, tileset_traversal_1.traverseDatasetWith)(sourceRootTile, null, this.analyzeTile.bind(this), undefined, this.options.maxDepth);
|
|
206
|
-
const { meshTopologyTypes } = this.preprocessData;
|
|
208
|
+
const { meshTopologyTypes, metadataClasses } = this.preprocessData;
|
|
207
209
|
console.log(`------------------------------------------------`);
|
|
208
210
|
console.log(`Preprocess results:`);
|
|
209
211
|
console.log(`glTF mesh topology types: ${Array.from(meshTopologyTypes).join(', ')}`);
|
|
212
|
+
if (metadataClasses.size) {
|
|
213
|
+
console.log(`Feature metadata classes have been found: ${Array.from(metadataClasses).join(', ')}`);
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
console.log('Feature metadata classes have not been found');
|
|
217
|
+
}
|
|
210
218
|
console.log(`------------------------------------------------`);
|
|
211
|
-
if (!meshTopologyTypes.has(types_1.
|
|
212
|
-
!meshTopologyTypes.has(types_1.
|
|
219
|
+
if (!meshTopologyTypes.has(types_1.GLTFPrimitiveModeString.TRIANGLES) &&
|
|
220
|
+
!meshTopologyTypes.has(types_1.GLTFPrimitiveModeString.TRIANGLE_STRIP)) {
|
|
213
221
|
console.log('The tileset is of unsupported mesh topology types. The conversion will be interrupted.');
|
|
214
222
|
console.log(`------------------------------------------------`);
|
|
215
223
|
return false;
|
|
216
224
|
}
|
|
225
|
+
if (metadataClasses.size > 1) {
|
|
226
|
+
if (this.options.metadataClass?.length) {
|
|
227
|
+
console.log(`${this.options.metadataClass} has been selected`);
|
|
228
|
+
}
|
|
229
|
+
else if (this.options.inquirer) {
|
|
230
|
+
const result = await this.options.inquirer.prompt([
|
|
231
|
+
{
|
|
232
|
+
name: 'metadataClass',
|
|
233
|
+
type: 'list',
|
|
234
|
+
message: 'Select feature metadata data class to convert...',
|
|
235
|
+
choices: Array.from(metadataClasses)
|
|
236
|
+
}
|
|
237
|
+
]);
|
|
238
|
+
this.options.metadataClass = result.metadataClass;
|
|
239
|
+
console.log(`${result.metadataClass} has been selected`);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
console.log(`A feature metadata class has not been selected. Start the converter with option "--metadata-class". For example, "npx tile-converter ... --metadata-class ${Array.from(metadataClasses)[0]}"`);
|
|
243
|
+
console.log(`------------------------------------------------`);
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
217
247
|
return true;
|
|
218
248
|
}
|
|
219
249
|
/**
|
|
@@ -448,7 +478,7 @@ class I3SConverter {
|
|
|
448
478
|
}
|
|
449
479
|
const sourceBoundingVolume = (0, tiles_1.createBoundingVolume)(sourceTile.boundingVolume, transformationMatrix, null);
|
|
450
480
|
let boundingVolumes = (0, coordinate_converter_1.createBoundingVolumes)(sourceBoundingVolume, this.geoidHeightModel);
|
|
451
|
-
const propertyTable = (0, geometry_converter_1.getPropertyTable)(tileContent);
|
|
481
|
+
const propertyTable = (0, geometry_converter_1.getPropertyTable)(tileContent, this.options.metadataClass);
|
|
452
482
|
if (propertyTable && !this.layers0?.attributeStorageInfo?.length) {
|
|
453
483
|
this._convertPropertyTableToNodeAttributes(propertyTable);
|
|
454
484
|
}
|
|
@@ -513,7 +543,7 @@ class I3SConverter {
|
|
|
513
543
|
halfSize: [],
|
|
514
544
|
quaternion: []
|
|
515
545
|
};
|
|
516
|
-
const resourcesData = await (0, geometry_converter_1.default)(tileContent, transformationMatrix, boundingVolume, async () => (await this.nodePages.push({ index: 0, obb: draftObb }, parentId)).index, propertyTable, this.featuresHashArray, this.layers0?.attributeStorageInfo, this.options.draco, this.generateBoundingVolumes, this.options.mergeMaterials, this.geoidHeightModel, this.
|
|
546
|
+
const resourcesData = await (0, geometry_converter_1.default)(tileContent, transformationMatrix, boundingVolume, async () => (await this.nodePages.push({ index: 0, obb: draftObb }, parentId)).index, propertyTable, this.featuresHashArray, this.layers0?.attributeStorageInfo, this.options.draco, this.generateBoundingVolumes, this.options.mergeMaterials, this.geoidHeightModel, this.loadOptions.modules, this.options.metadataClass);
|
|
517
547
|
return resourcesData;
|
|
518
548
|
}
|
|
519
549
|
/**
|
|
@@ -688,9 +718,13 @@ class I3SConverter {
|
|
|
688
718
|
const arrayToEncode = new Uint8Array(copyArrayBuffer);
|
|
689
719
|
const ktx2TextureData = (0, core_1.encode)({ ...texture.image, data: arrayToEncode }, textures_1.KTX2BasisWriterWorker, {
|
|
690
720
|
...textures_1.KTX2BasisWriterWorker.options,
|
|
691
|
-
|
|
721
|
+
['ktx2-basis-writer']: {
|
|
722
|
+
// We need to load local fs workers because nodejs can't load workers from the Internet
|
|
723
|
+
workerUrl: './modules/textures/dist/ktx2-basis-writer-worker-node.js'
|
|
724
|
+
},
|
|
692
725
|
reuseWorkers: true,
|
|
693
|
-
_nodeWorkers: true
|
|
726
|
+
_nodeWorkers: true,
|
|
727
|
+
useLocalLibraries: true
|
|
694
728
|
});
|
|
695
729
|
await this.writeTextureFile(ktx2TextureData, '1', 'ktx2', childPath, slpkChildPath);
|
|
696
730
|
}
|
|
@@ -905,21 +939,5 @@ class I3SConverter {
|
|
|
905
939
|
isContentSupported(sourceTile) {
|
|
906
940
|
return ['b3dm', 'glTF', 'scenegraph'].includes(sourceTile.type || '');
|
|
907
941
|
}
|
|
908
|
-
async loadWorkers() {
|
|
909
|
-
console.log(`Loading workers source...`); // eslint-disable-line no-undef, no-console
|
|
910
|
-
if (this.options.draco) {
|
|
911
|
-
const url = (0, worker_utils_1.getWorkerURL)(draco_1.DracoWriterWorker, { ...(0, core_1.getLoaderOptions)() });
|
|
912
|
-
const sourceResponse = await (0, core_1.fetchFile)(url);
|
|
913
|
-
const source = await sourceResponse.text();
|
|
914
|
-
this.workerSource.draco = source;
|
|
915
|
-
}
|
|
916
|
-
if (this.generateTextures) {
|
|
917
|
-
const url = (0, worker_utils_1.getWorkerURL)(textures_1.KTX2BasisWriterWorker, { ...(0, core_1.getLoaderOptions)() });
|
|
918
|
-
const sourceResponse = await (0, core_1.fetchFile)(url);
|
|
919
|
-
const source = await sourceResponse.text();
|
|
920
|
-
this.workerSource.ktx2 = source;
|
|
921
|
-
}
|
|
922
|
-
console.log(`Loading workers source completed!`); // eslint-disable-line no-undef, no-console
|
|
923
|
-
}
|
|
924
942
|
}
|
|
925
943
|
exports.default = I3SConverter;
|
|
@@ -147,7 +147,7 @@ export type TypedArrayConstructor = Uint8ArrayConstructor | Int8ArrayConstructor
|
|
|
147
147
|
* glTF primitive modes (mesh topology types)
|
|
148
148
|
* @see https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#_mesh_primitive_mode
|
|
149
149
|
*/
|
|
150
|
-
export declare enum
|
|
150
|
+
export declare enum GLTFPrimitiveModeString {
|
|
151
151
|
POINTS = "POINTS",
|
|
152
152
|
LINES = "LINES",
|
|
153
153
|
LINE_LOOP = "LINE_LOOP",
|
|
@@ -159,7 +159,9 @@ export declare enum GltfPrimitiveModeString {
|
|
|
159
159
|
/** Preprocessed data gathered from child tiles binary content */
|
|
160
160
|
export type PreprocessData = {
|
|
161
161
|
/** Mesh topology types used in gltf primitives of the tileset */
|
|
162
|
-
meshTopologyTypes: Set<
|
|
162
|
+
meshTopologyTypes: Set<GLTFPrimitiveModeString>;
|
|
163
|
+
/** Featrue metadata classes found in glTF extensions */
|
|
164
|
+
metadataClasses: Set<string>;
|
|
163
165
|
};
|
|
164
166
|
/** Texture image properties required for conversion */
|
|
165
167
|
export type TextureImageProperties = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i3s-converter/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i3s-converter/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.GLTFPrimitiveModeString = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* glTF primitive modes (mesh topology types)
|
|
6
6
|
* @see https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#_mesh_primitive_mode
|
|
7
7
|
*/
|
|
8
|
-
var
|
|
9
|
-
(function (
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
})(
|
|
8
|
+
var GLTFPrimitiveModeString;
|
|
9
|
+
(function (GLTFPrimitiveModeString) {
|
|
10
|
+
GLTFPrimitiveModeString["POINTS"] = "POINTS";
|
|
11
|
+
GLTFPrimitiveModeString["LINES"] = "LINES";
|
|
12
|
+
GLTFPrimitiveModeString["LINE_LOOP"] = "LINE_LOOP";
|
|
13
|
+
GLTFPrimitiveModeString["LINE_STRIP"] = "LINE_STRIP";
|
|
14
|
+
GLTFPrimitiveModeString["TRIANGLES"] = "TRIANGLES";
|
|
15
|
+
GLTFPrimitiveModeString["TRIANGLE_STRIP"] = "TRIANGLE_STRIP";
|
|
16
|
+
GLTFPrimitiveModeString["TRIANGLE_FAN"] = "TRIANGLE_FAN";
|
|
17
|
+
})(GLTFPrimitiveModeString || (exports.GLTFPrimitiveModeString = GLTFPrimitiveModeString = {}));
|
|
@@ -10,7 +10,7 @@ let slpkArchive;
|
|
|
10
10
|
* @param fullLayerPath - full path to SLPK file
|
|
11
11
|
*/
|
|
12
12
|
const loadArchive = async (fullLayerPath) => {
|
|
13
|
-
slpkArchive = await (0, i3s_1.parseSLPK)(await tile_converter_1.
|
|
13
|
+
slpkArchive = await (0, i3s_1.parseSLPK)(await tile_converter_1.FileHandleFile.from(fullLayerPath), (msg) => console.log(msg));
|
|
14
14
|
console.log('The server is ready to use');
|
|
15
15
|
};
|
|
16
16
|
exports.loadArchive = loadArchive;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { default as I3SConverter } from './i3s-converter/i3s-converter';
|
|
2
2
|
export { default as Tiles3DConverter } from './3d-tiles-converter/3d-tiles-converter';
|
|
3
|
-
export {
|
|
3
|
+
export { FileHandleFile } from './slpk-extractor/helpers/file-handle-file';
|
|
4
4
|
//# 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":"AAAA,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAC,cAAc,EAAC,MAAM,2CAA2C,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,10 +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.
|
|
6
|
+
exports.FileHandleFile = exports.Tiles3DConverter = exports.I3SConverter = void 0;
|
|
7
7
|
var i3s_converter_1 = require("./i3s-converter/i3s-converter");
|
|
8
8
|
Object.defineProperty(exports, "I3SConverter", { enumerable: true, get: function () { return __importDefault(i3s_converter_1).default; } });
|
|
9
9
|
var _3d_tiles_converter_1 = require("./3d-tiles-converter/3d-tiles-converter");
|
|
10
10
|
Object.defineProperty(exports, "Tiles3DConverter", { enumerable: true, get: function () { return __importDefault(_3d_tiles_converter_1).default; } });
|
|
11
|
-
var
|
|
12
|
-
Object.defineProperty(exports, "
|
|
11
|
+
var file_handle_file_1 = require("./slpk-extractor/helpers/file-handle-file");
|
|
12
|
+
Object.defineProperty(exports, "FileHandleFile", { enumerable: true, get: function () { return file_handle_file_1.FileHandleFile; } });
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { FileProvider } from '@loaders.gl/
|
|
1
|
+
import { FileProvider } from '@loaders.gl/zip';
|
|
2
2
|
/**
|
|
3
3
|
* Provides file data using node fs library
|
|
4
4
|
*/
|
|
5
|
-
export declare class
|
|
5
|
+
export declare class FileHandleFile implements FileProvider {
|
|
6
6
|
/**
|
|
7
|
-
* Returns a new copy of
|
|
7
|
+
* Returns a new copy of FileHandleFile
|
|
8
8
|
* @param path The path to the file in file system
|
|
9
9
|
*/
|
|
10
|
-
static from(path: string): Promise<
|
|
10
|
+
static from(path: string): Promise<FileHandleFile>;
|
|
11
11
|
/**
|
|
12
12
|
* The FileHandle from which data is provided
|
|
13
13
|
*/
|
|
@@ -48,4 +48,4 @@ export declare class FileHandleProvider implements FileProvider {
|
|
|
48
48
|
*/
|
|
49
49
|
get length(): bigint;
|
|
50
50
|
}
|
|
51
|
-
//# sourceMappingURL=file-handle-
|
|
51
|
+
//# sourceMappingURL=file-handle-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-handle-file.d.ts","sourceRoot":"","sources":["../../../src/slpk-extractor/helpers/file-handle-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAG7C;;GAEG;AACH,qBAAa,cAAe,YAAW,YAAY;IACjD;;;OAGG;WACU,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAKxD;;OAEG;IACH,OAAO,CAAC,cAAc,CAAa;IAEnC;;OAEG;IACH,OAAO,CAAC,IAAI,CAAS;IAErB,OAAO;IAKP;;;OAGG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAU/C;;;OAGG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUhD;;;OAGG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUhD;;;OAGG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUnD;;;;OAIG;IACG,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAU1E;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;CACF"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.FileHandleFile = void 0;
|
|
4
4
|
const fs_promises_1 = require("./fs-promises");
|
|
5
5
|
/**
|
|
6
6
|
* Provides file data using node fs library
|
|
7
7
|
*/
|
|
8
|
-
class
|
|
8
|
+
class FileHandleFile {
|
|
9
9
|
/**
|
|
10
|
-
* Returns a new copy of
|
|
10
|
+
* Returns a new copy of FileHandleFile
|
|
11
11
|
* @param path The path to the file in file system
|
|
12
12
|
*/
|
|
13
13
|
static async from(path) {
|
|
14
14
|
const fileDescriptor = await fs_promises_1.FileHandle.open(path);
|
|
15
|
-
return new
|
|
15
|
+
return new FileHandleFile(fileDescriptor, fileDescriptor.stat.size);
|
|
16
16
|
}
|
|
17
17
|
constructor(fileDescriptor, size) {
|
|
18
18
|
this.fileDescriptor = fileDescriptor;
|
|
@@ -83,4 +83,4 @@ class FileHandleProvider {
|
|
|
83
83
|
return this.size;
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
|
-
exports.
|
|
86
|
+
exports.FileHandleFile = FileHandleFile;
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const core_1 = require("@loaders.gl/core");
|
|
4
4
|
const constants_1 = require("../constants");
|
|
5
|
-
const
|
|
6
|
-
const i3s_1 = require("@loaders.gl/i3s");
|
|
5
|
+
const file_handle_file_1 = require("./helpers/file-handle-file");
|
|
7
6
|
const loader_utils_1 = require("@loaders.gl/loader-utils");
|
|
7
|
+
const zip_1 = require("@loaders.gl/zip");
|
|
8
8
|
const compression_1 = require("@loaders.gl/compression");
|
|
9
9
|
const file_utils_1 = require("../lib/utils/file-utils");
|
|
10
10
|
const indexNames = [
|
|
@@ -28,14 +28,14 @@ class SLPKConverter {
|
|
|
28
28
|
return constants_1.BROWSER_ERROR_MESSAGE;
|
|
29
29
|
}
|
|
30
30
|
const { inputUrl } = options;
|
|
31
|
-
const provider = await
|
|
32
|
-
let localHeader = await (0,
|
|
31
|
+
const provider = await file_handle_file_1.FileHandleFile.from(inputUrl);
|
|
32
|
+
let localHeader = await (0, zip_1.parseZipLocalFileHeader)(0n, provider);
|
|
33
33
|
while (localHeader) {
|
|
34
34
|
await this.writeFile(await this.unGzip({
|
|
35
35
|
name: this.correctIndexNames(localHeader.fileName),
|
|
36
36
|
data: await provider.slice(localHeader.fileDataOffset, localHeader.fileDataOffset + localHeader.compressedSize)
|
|
37
37
|
}), options.outputPath);
|
|
38
|
-
localHeader = await (0,
|
|
38
|
+
localHeader = await (0, zip_1.parseZipLocalFileHeader)(localHeader.fileDataOffset + localHeader?.compressedSize, provider);
|
|
39
39
|
}
|
|
40
40
|
return 'success';
|
|
41
41
|
}
|