@loaders.gl/tile-converter 3.3.0-alpha.5 → 3.3.0-alpha.6
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/3d-tiles-attributes-worker.js +2 -3
- package/dist/3d-tiles-attributes-worker.js.map +3 -3
- package/dist/converter.min.js +23 -20
- package/dist/dist.min.js +38221 -46898
- package/dist/es5/3d-tiles-attributes-worker.js +3 -6
- package/dist/es5/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +12 -111
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +32 -72
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +0 -8
- package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +0 -5
- package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
- package/dist/es5/3d-tiles-converter/json-templates/tileset.js +0 -6
- package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -1
- package/dist/es5/bundle.js +0 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/constants.js.map +1 -1
- package/dist/es5/converter-cli.js +2 -53
- package/dist/es5/converter-cli.js.map +1 -1
- package/dist/es5/deps-installer/deps-installer.js +5 -35
- package/dist/es5/deps-installer/deps-installer.js.map +1 -1
- package/dist/es5/i3s-attributes-worker.js +3 -6
- package/dist/es5/i3s-attributes-worker.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +2 -28
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js +2 -20
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +0 -11
- package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/feature-attributes.js +5 -34
- package/dist/es5/i3s-converter/helpers/feature-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js +13 -45
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-converter.js +26 -221
- package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js +2 -16
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/node-debug.js +4 -23
- package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/node-pages.js +50 -86
- package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
- package/dist/es5/i3s-converter/i3s-converter.js +43 -360
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/layers.js +1 -15
- package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/metadata.js +0 -2
- package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/node.js +2 -12
- package/dist/es5/i3s-converter/json-templates/node.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/scene-server.js +0 -2
- package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/shared-resources.js +6 -29
- package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -1
- package/dist/es5/i3s-converter/json-templates/store.js.map +1 -1
- package/dist/es5/i3s-converter/types.js.map +1 -1
- package/dist/es5/i3s-server/app.js +0 -5
- package/dist/es5/i3s-server/app.js.map +1 -1
- package/dist/es5/i3s-server/controllers/index-controller.js +0 -16
- package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -1
- package/dist/es5/i3s-server/routes/index.js +1 -10
- package/dist/es5/i3s-server/routes/index.js.map +1 -1
- package/dist/es5/index.js +0 -3
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/utils/compress-util.js +19 -74
- package/dist/es5/lib/utils/compress-util.js.map +1 -1
- package/dist/es5/lib/utils/file-utils.js +10 -38
- package/dist/es5/lib/utils/file-utils.js.map +1 -1
- package/dist/es5/lib/utils/lod-conversion-utils.js +0 -7
- package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
- package/dist/es5/lib/utils/queue.js +0 -14
- package/dist/es5/lib/utils/queue.js.map +1 -1
- package/dist/es5/lib/utils/statistic-utills.js +1 -46
- package/dist/es5/lib/utils/statistic-utills.js.map +1 -1
- package/dist/es5/lib/utils/write-queue.js +0 -52
- package/dist/es5/lib/utils/write-queue.js.map +1 -1
- package/dist/es5/pgm-loader.js +1 -8
- package/dist/es5/pgm-loader.js.map +1 -1
- package/dist/es5/workers/3d-tiles-attributes-worker.js +1 -8
- package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/es5/workers/i3s-attributes-worker.js +1 -9
- package/dist/es5/workers/i3s-attributes-worker.js.map +1 -1
- package/dist/esm/3d-tiles-attributes-worker.js +3 -1
- package/dist/esm/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +8 -40
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +7 -38
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +1 -0
- package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +1 -4
- package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
- package/dist/esm/3d-tiles-converter/json-templates/tileset.js +0 -3
- package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +1 -1
- package/dist/esm/bundle.js +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/converter-cli.js +3 -38
- package/dist/esm/converter-cli.js.map +1 -1
- package/dist/esm/deps-installer/deps-installer.js +6 -7
- package/dist/esm/deps-installer/deps-installer.js.map +1 -1
- package/dist/esm/i3s-attributes-worker.js +3 -1
- package/dist/esm/i3s-attributes-worker.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +4 -23
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js +4 -6
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/create-scene-server-path.js +1 -0
- package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/feature-attributes.js +6 -20
- package/dist/esm/i3s-converter/helpers/feature-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js +3 -22
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-converter.js +28 -139
- package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js +7 -12
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/node-debug.js +3 -13
- package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/node-pages.js +2 -21
- package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
- package/dist/esm/i3s-converter/i3s-converter.js +49 -137
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/layers.js +1 -11
- package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/node.js +0 -4
- package/dist/esm/i3s-converter/json-templates/node.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/shared-resources.js +0 -12
- package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -1
- package/dist/esm/i3s-converter/json-templates/store.js.map +1 -1
- package/dist/esm/i3s-converter/types.js.map +1 -1
- package/dist/esm/i3s-server/app.js +0 -5
- package/dist/esm/i3s-server/app.js.map +1 -1
- package/dist/esm/i3s-server/controllers/index-controller.js +0 -5
- package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -1
- package/dist/esm/i3s-server/routes/index.js +0 -3
- package/dist/esm/i3s-server/routes/index.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/utils/compress-util.js +19 -12
- package/dist/esm/lib/utils/compress-util.js.map +1 -1
- package/dist/esm/lib/utils/file-utils.js +10 -8
- package/dist/esm/lib/utils/file-utils.js.map +1 -1
- package/dist/esm/lib/utils/lod-conversion-utils.js +2 -6
- package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -1
- package/dist/esm/lib/utils/queue.js +0 -4
- package/dist/esm/lib/utils/queue.js.map +1 -1
- package/dist/esm/lib/utils/statistic-utills.js +0 -11
- package/dist/esm/lib/utils/statistic-utills.js.map +1 -1
- package/dist/esm/lib/utils/write-queue.js +5 -23
- package/dist/esm/lib/utils/write-queue.js.map +1 -1
- package/dist/esm/pgm-loader.js +3 -1
- package/dist/esm/pgm-loader.js.map +1 -1
- package/dist/esm/workers/3d-tiles-attributes-worker.js +4 -1
- package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/esm/workers/i3s-attributes-worker.js +4 -1
- package/dist/esm/workers/i3s-attributes-worker.js.map +1 -1
- package/dist/i3s-attributes-worker.js +2 -3
- package/dist/i3s-attributes-worker.js.map +3 -3
- package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/geometry-converter.js +2 -0
- package/dist/i3s-converter/i3s-converter.js +5 -1
- package/dist/pgm-loader.d.ts.map +1 -1
- package/dist/pgm-loader.js +2 -1
- package/package.json +15 -15
- package/src/i3s-converter/helpers/geometry-converter.ts +2 -0
- package/src/pgm-loader.ts +2 -2
|
@@ -1,38 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
7
|
+
exports.addFileToZip = addFileToZip;
|
|
8
8
|
exports.compressFileWithGzip = compressFileWithGzip;
|
|
9
9
|
exports.compressFilesWithZip = compressFilesWithZip;
|
|
10
10
|
exports.compressWithChildProcess = compressWithChildProcess;
|
|
11
11
|
exports.generateHash128FromZip = generateHash128FromZip;
|
|
12
|
-
exports.addFileToZip = addFileToZip;
|
|
13
|
-
|
|
14
12
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
15
|
-
|
|
16
13
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
|
-
|
|
18
14
|
var _zlib = require("zlib");
|
|
19
|
-
|
|
20
15
|
var _path = require("path");
|
|
21
|
-
|
|
22
16
|
var _fs = require("fs");
|
|
23
|
-
|
|
24
17
|
var _archiver = _interopRequireDefault(require("archiver"));
|
|
25
|
-
|
|
26
18
|
var _fileUtils = require("./file-utils");
|
|
27
|
-
|
|
28
19
|
var _workerUtils = require("@loaders.gl/worker-utils");
|
|
29
|
-
|
|
30
20
|
var _jszip = _interopRequireDefault(require("jszip"));
|
|
31
|
-
|
|
32
21
|
var _crypto = require("@loaders.gl/crypto");
|
|
33
|
-
|
|
34
22
|
var _crypt = _interopRequireDefault(require("crypt"));
|
|
35
|
-
|
|
36
23
|
function compressFileWithGzip(pathFile) {
|
|
37
24
|
var compressedPathFile = "".concat(pathFile, ".gz");
|
|
38
25
|
var gzip = (0, _zlib.createGzip)();
|
|
@@ -54,13 +41,12 @@ function compressFileWithGzip(pathFile) {
|
|
|
54
41
|
function compressFilesWithZip(_x, _x2) {
|
|
55
42
|
return _compressFilesWithZip.apply(this, arguments);
|
|
56
43
|
}
|
|
57
|
-
|
|
58
44
|
function _compressFilesWithZip() {
|
|
59
45
|
_compressFilesWithZip = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(fileMap, outputFile) {
|
|
60
46
|
var level,
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
47
|
+
output,
|
|
48
|
+
archive,
|
|
49
|
+
_args2 = arguments;
|
|
64
50
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
65
51
|
while (1) {
|
|
66
52
|
switch (_context2.prev = _context2.next) {
|
|
@@ -69,15 +55,12 @@ function _compressFilesWithZip() {
|
|
|
69
55
|
_context2.prev = 1;
|
|
70
56
|
_context2.next = 4;
|
|
71
57
|
return (0, _fileUtils.removeFile)(outputFile);
|
|
72
|
-
|
|
73
58
|
case 4:
|
|
74
59
|
_context2.next = 8;
|
|
75
60
|
break;
|
|
76
|
-
|
|
77
61
|
case 6:
|
|
78
62
|
_context2.prev = 6;
|
|
79
63
|
_context2.t0 = _context2["catch"](1);
|
|
80
|
-
|
|
81
64
|
case 8:
|
|
82
65
|
output = (0, _fs.createWriteStream)(outputFile);
|
|
83
66
|
archive = (0, _archiver.default)('zip', {
|
|
@@ -97,38 +80,37 @@ function _compressFilesWithZip() {
|
|
|
97
80
|
console.log("".concat(archive.pointer(), " total bytes"));
|
|
98
81
|
resolve(null);
|
|
99
82
|
});
|
|
83
|
+
|
|
100
84
|
output.on('end', function () {
|
|
101
85
|
console.log('Data has been drained');
|
|
102
86
|
resolve(null);
|
|
103
87
|
});
|
|
88
|
+
|
|
104
89
|
archive.on('warning', function (err) {
|
|
105
90
|
console.log(err);
|
|
106
91
|
reject(err);
|
|
107
92
|
});
|
|
93
|
+
|
|
108
94
|
archive.on('error', function (err) {
|
|
109
95
|
reject(err);
|
|
110
96
|
});
|
|
97
|
+
|
|
111
98
|
archive.pipe(output);
|
|
112
99
|
_context.t0 = _regenerator.default.keys(fileMap);
|
|
113
|
-
|
|
114
100
|
case 6:
|
|
115
101
|
if ((_context.t1 = _context.t0()).done) {
|
|
116
102
|
_context.next = 13;
|
|
117
103
|
break;
|
|
118
104
|
}
|
|
119
|
-
|
|
120
105
|
subFileName = _context.t1.value;
|
|
121
106
|
subFileData = fileMap[subFileName];
|
|
122
107
|
_context.next = 11;
|
|
123
108
|
return appendFileToArchive(archive, subFileName, subFileData);
|
|
124
|
-
|
|
125
109
|
case 11:
|
|
126
110
|
_context.next = 6;
|
|
127
111
|
break;
|
|
128
|
-
|
|
129
112
|
case 13:
|
|
130
113
|
archive.finalize();
|
|
131
|
-
|
|
132
114
|
case 14:
|
|
133
115
|
case "end":
|
|
134
116
|
return _context.stop();
|
|
@@ -136,12 +118,10 @@ function _compressFilesWithZip() {
|
|
|
136
118
|
}
|
|
137
119
|
}, _callee);
|
|
138
120
|
}));
|
|
139
|
-
|
|
140
121
|
return function (_x18, _x19) {
|
|
141
122
|
return _ref.apply(this, arguments);
|
|
142
123
|
};
|
|
143
124
|
}()));
|
|
144
|
-
|
|
145
125
|
case 11:
|
|
146
126
|
case "end":
|
|
147
127
|
return _context2.stop();
|
|
@@ -151,11 +131,9 @@ function _compressFilesWithZip() {
|
|
|
151
131
|
}));
|
|
152
132
|
return _compressFilesWithZip.apply(this, arguments);
|
|
153
133
|
}
|
|
154
|
-
|
|
155
134
|
function compressWithChildProcess(_x3, _x4, _x5, _x6, _x7) {
|
|
156
135
|
return _compressWithChildProcess.apply(this, arguments);
|
|
157
136
|
}
|
|
158
|
-
|
|
159
137
|
function _compressWithChildProcess() {
|
|
160
138
|
_compressWithChildProcess = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(inputFolder, outputFile, level, inputFiles, sevenZipExe) {
|
|
161
139
|
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
@@ -166,18 +144,14 @@ function _compressWithChildProcess() {
|
|
|
166
144
|
_context3.next = 5;
|
|
167
145
|
break;
|
|
168
146
|
}
|
|
169
|
-
|
|
170
147
|
_context3.next = 3;
|
|
171
148
|
return compressWithChildProcessWindows(inputFolder, outputFile, level, inputFiles, sevenZipExe);
|
|
172
|
-
|
|
173
149
|
case 3:
|
|
174
150
|
_context3.next = 7;
|
|
175
151
|
break;
|
|
176
|
-
|
|
177
152
|
case 5:
|
|
178
153
|
_context3.next = 7;
|
|
179
154
|
return compressWithChildProcessUnix(inputFolder, outputFile, level, inputFiles);
|
|
180
|
-
|
|
181
155
|
case 7:
|
|
182
156
|
case "end":
|
|
183
157
|
return _context3.stop();
|
|
@@ -187,19 +161,17 @@ function _compressWithChildProcess() {
|
|
|
187
161
|
}));
|
|
188
162
|
return _compressWithChildProcess.apply(this, arguments);
|
|
189
163
|
}
|
|
190
|
-
|
|
191
164
|
function compressWithChildProcessUnix(_x8, _x9) {
|
|
192
165
|
return _compressWithChildProcessUnix.apply(this, arguments);
|
|
193
166
|
}
|
|
194
|
-
|
|
195
167
|
function _compressWithChildProcessUnix() {
|
|
196
168
|
_compressWithChildProcessUnix = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(inputFolder, outputFile) {
|
|
197
169
|
var level,
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
170
|
+
inputFiles,
|
|
171
|
+
fullOutputFile,
|
|
172
|
+
args,
|
|
173
|
+
childProcess,
|
|
174
|
+
_args4 = arguments;
|
|
203
175
|
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
204
176
|
while (1) {
|
|
205
177
|
switch (_context4.prev = _context4.next) {
|
|
@@ -218,7 +190,6 @@ function _compressWithChildProcessUnix() {
|
|
|
218
190
|
},
|
|
219
191
|
wait: 0
|
|
220
192
|
});
|
|
221
|
-
|
|
222
193
|
case 7:
|
|
223
194
|
case "end":
|
|
224
195
|
return _context4.stop();
|
|
@@ -228,20 +199,18 @@ function _compressWithChildProcessUnix() {
|
|
|
228
199
|
}));
|
|
229
200
|
return _compressWithChildProcessUnix.apply(this, arguments);
|
|
230
201
|
}
|
|
231
|
-
|
|
232
202
|
function compressWithChildProcessWindows(_x10, _x11) {
|
|
233
203
|
return _compressWithChildProcessWindows.apply(this, arguments);
|
|
234
204
|
}
|
|
235
|
-
|
|
236
205
|
function _compressWithChildProcessWindows() {
|
|
237
206
|
_compressWithChildProcessWindows = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(inputFolder, outputFile) {
|
|
238
207
|
var level,
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
208
|
+
inputFiles,
|
|
209
|
+
sevenZipExe,
|
|
210
|
+
fullOutputFile,
|
|
211
|
+
args,
|
|
212
|
+
childProcess,
|
|
213
|
+
_args5 = arguments;
|
|
245
214
|
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
246
215
|
while (1) {
|
|
247
216
|
switch (_context5.prev = _context5.next) {
|
|
@@ -249,11 +218,9 @@ function _compressWithChildProcessWindows() {
|
|
|
249
218
|
level = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : 0;
|
|
250
219
|
inputFiles = _args5.length > 3 && _args5[3] !== undefined ? _args5[3] : (0, _path.join)('.', '*');
|
|
251
220
|
sevenZipExe = _args5.length > 4 ? _args5[4] : undefined;
|
|
252
|
-
|
|
253
221
|
if (inputFiles[0] === '@') {
|
|
254
222
|
inputFiles = "*".concat(inputFiles.substr(1));
|
|
255
223
|
}
|
|
256
|
-
|
|
257
224
|
fullOutputFile = (0, _fileUtils.getAbsoluteFilePath)(outputFile);
|
|
258
225
|
args = ['a', '-tzip', "-mx=".concat(level), fullOutputFile, inputFiles];
|
|
259
226
|
childProcess = new _workerUtils.ChildProcessProxy();
|
|
@@ -266,7 +233,6 @@ function _compressWithChildProcessWindows() {
|
|
|
266
233
|
},
|
|
267
234
|
wait: 0
|
|
268
235
|
});
|
|
269
|
-
|
|
270
236
|
case 9:
|
|
271
237
|
case "end":
|
|
272
238
|
return _context5.stop();
|
|
@@ -276,55 +242,44 @@ function _compressWithChildProcessWindows() {
|
|
|
276
242
|
}));
|
|
277
243
|
return _compressWithChildProcessWindows.apply(this, arguments);
|
|
278
244
|
}
|
|
279
|
-
|
|
280
245
|
function generateHash128FromZip(_x12, _x13) {
|
|
281
246
|
return _generateHash128FromZip.apply(this, arguments);
|
|
282
247
|
}
|
|
283
|
-
|
|
284
248
|
function _generateHash128FromZip() {
|
|
285
249
|
_generateHash128FromZip = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6(inputZipFile, outputFile) {
|
|
286
250
|
var input, zip, hashTable, zipFiles, relativePath, zipEntry, _data, content, hash, output;
|
|
287
|
-
|
|
288
251
|
return _regenerator.default.wrap(function _callee6$(_context6) {
|
|
289
252
|
while (1) {
|
|
290
253
|
switch (_context6.prev = _context6.next) {
|
|
291
254
|
case 0:
|
|
292
255
|
_context6.next = 2;
|
|
293
256
|
return _fs.promises.readFile(inputZipFile);
|
|
294
|
-
|
|
295
257
|
case 2:
|
|
296
258
|
input = _context6.sent;
|
|
297
259
|
_context6.next = 5;
|
|
298
260
|
return _jszip.default.loadAsync(input);
|
|
299
|
-
|
|
300
261
|
case 5:
|
|
301
262
|
zip = _context6.sent;
|
|
302
263
|
hashTable = [];
|
|
303
264
|
zipFiles = zip.files;
|
|
304
265
|
_context6.t0 = _regenerator.default.keys(zipFiles);
|
|
305
|
-
|
|
306
266
|
case 9:
|
|
307
267
|
if ((_context6.t1 = _context6.t0()).done) {
|
|
308
268
|
_context6.next = 22;
|
|
309
269
|
break;
|
|
310
270
|
}
|
|
311
|
-
|
|
312
271
|
relativePath = _context6.t1.value;
|
|
313
272
|
zipEntry = zipFiles[relativePath];
|
|
314
273
|
_data = '_data';
|
|
315
274
|
content = zipEntry[_data].compressedContent;
|
|
316
|
-
|
|
317
275
|
if (!zipEntry.dir) {
|
|
318
276
|
_context6.next = 16;
|
|
319
277
|
break;
|
|
320
278
|
}
|
|
321
|
-
|
|
322
279
|
return _context6.abrupt("continue", 9);
|
|
323
|
-
|
|
324
280
|
case 16:
|
|
325
281
|
_context6.next = 18;
|
|
326
282
|
return new _crypto.MD5Hash().hash(Buffer.from(relativePath.toLowerCase()));
|
|
327
|
-
|
|
328
283
|
case 18:
|
|
329
284
|
hash = _context6.sent;
|
|
330
285
|
hashTable.push({
|
|
@@ -333,13 +288,11 @@ function _generateHash128FromZip() {
|
|
|
333
288
|
});
|
|
334
289
|
_context6.next = 9;
|
|
335
290
|
break;
|
|
336
|
-
|
|
337
291
|
case 22:
|
|
338
292
|
hashTable.sort(function (prev, next) {
|
|
339
293
|
if (prev.key === next.key) {
|
|
340
294
|
return prev.value < next.value ? -1 : 1;
|
|
341
295
|
}
|
|
342
|
-
|
|
343
296
|
return prev.key < next.key ? -1 : 1;
|
|
344
297
|
});
|
|
345
298
|
output = (0, _fs.createWriteStream)(outputFile);
|
|
@@ -352,16 +305,13 @@ function _generateHash128FromZip() {
|
|
|
352
305
|
console.log(err);
|
|
353
306
|
reject(err);
|
|
354
307
|
});
|
|
355
|
-
|
|
356
308
|
for (var _key in hashTable) {
|
|
357
309
|
var item = hashTable[_key];
|
|
358
310
|
var value = longToByteArray(item.value);
|
|
359
311
|
output.write(Buffer.from(_crypt.default.hexToBytes(item.key).concat(value)));
|
|
360
312
|
}
|
|
361
|
-
|
|
362
313
|
output.close();
|
|
363
314
|
}));
|
|
364
|
-
|
|
365
315
|
case 25:
|
|
366
316
|
case "end":
|
|
367
317
|
return _context6.stop();
|
|
@@ -371,7 +321,6 @@ function _generateHash128FromZip() {
|
|
|
371
321
|
}));
|
|
372
322
|
return _generateHash128FromZip.apply(this, arguments);
|
|
373
323
|
}
|
|
374
|
-
|
|
375
324
|
function longToByteArray(long) {
|
|
376
325
|
var buffer = new ArrayBuffer(8);
|
|
377
326
|
var longNum = new Float64Array(buffer);
|
|
@@ -382,7 +331,6 @@ function longToByteArray(long) {
|
|
|
382
331
|
function addFileToZip(_x14, _x15, _x16, _x17) {
|
|
383
332
|
return _addFileToZip.apply(this, arguments);
|
|
384
333
|
}
|
|
385
|
-
|
|
386
334
|
function _addFileToZip() {
|
|
387
335
|
_addFileToZip = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee7(inputFolder, fileName, zipFile, sevenZipExe) {
|
|
388
336
|
return _regenerator.default.wrap(function _callee7$(_context7) {
|
|
@@ -391,10 +339,8 @@ function _addFileToZip() {
|
|
|
391
339
|
case 0:
|
|
392
340
|
_context7.next = 2;
|
|
393
341
|
return compressWithChildProcess(inputFolder, zipFile, 0, fileName, sevenZipExe);
|
|
394
|
-
|
|
395
342
|
case 2:
|
|
396
343
|
console.log("".concat(fileName, " added to ").concat(zipFile, "."));
|
|
397
|
-
|
|
398
344
|
case 3:
|
|
399
345
|
case "end":
|
|
400
346
|
return _context7.stop();
|
|
@@ -404,7 +350,6 @@ function _addFileToZip() {
|
|
|
404
350
|
}));
|
|
405
351
|
return _addFileToZip.apply(this, arguments);
|
|
406
352
|
}
|
|
407
|
-
|
|
408
353
|
function appendFileToArchive(archive, subFileName, subFileData) {
|
|
409
354
|
return new Promise(function (resolve) {
|
|
410
355
|
var fileStream = (0, _fs.createReadStream)(subFileData);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/utils/compress-util.ts"],"names":["compressFileWithGzip","pathFile","compressedPathFile","gzip","input","output","Promise","resolve","reject","on","console","log","error","pipe","compressFilesWithZip","fileMap","outputFile","level","archive","zlib","pointer","err","subFileName","subFileData","appendFileToArchive","finalize","compressWithChildProcess","inputFolder","inputFiles","sevenZipExe","process","platform","compressWithChildProcessWindows","compressWithChildProcessUnix","fullOutputFile","args","childProcess","ChildProcessProxy","start","command","arguments","spawn","cwd","wait","substr","generateHash128FromZip","inputZipFile","fs","readFile","JSZip","loadAsync","zip","hashTable","zipFiles","files","relativePath","zipEntry","_data","content","compressedContent","dir","MD5Hash","hash","Buffer","from","toLowerCase","push","key","atob","value","byteOffset","sort","prev","next","item","longToByteArray","write","crypt","hexToBytes","concat","close","long","buffer","ArrayBuffer","longNum","Float64Array","parseInt","Array","Uint8Array","reverse","addFileToZip","fileName","zipFile","fileStream","append","name"],"mappings":"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","sourcesContent":["import {createGzip} from 'zlib';\nimport {join} from 'path';\nimport {promises as fs, createReadStream, createWriteStream} from 'fs';\nimport archiver from 'archiver';\nimport {removeFile} from './file-utils';\nimport {ChildProcessProxy} from '@loaders.gl/worker-utils';\nimport JSZip from 'jszip';\nimport {MD5Hash} from '@loaders.gl/crypto';\nimport crypt from 'crypt';\nimport {getAbsoluteFilePath} from './file-utils';\n\n/**\n * Compress file to gzip file\n *\n * @param pathFile - the path to the file\n * @return the path to the gzip file\n */\nexport function compressFileWithGzip(pathFile: string): Promise<string> {\n const compressedPathFile = `${pathFile}.gz`;\n const gzip = createGzip();\n const input = createReadStream(pathFile);\n const output = createWriteStream(compressedPathFile);\n\n return new Promise((resolve, reject) => {\n input.on('end', () => {\n console.log(`${compressedPathFile} compressed and saved.`); // eslint-disable-line no-undef,no-console\n resolve(compressedPathFile);\n });\n input.on('error', (error) => {\n console.log(`${compressedPathFile}: compression error!`); // eslint-disable-line no-undef,no-console\n reject(error);\n });\n input.pipe(gzip).pipe(output);\n });\n}\n\n/**\n * Compress files from map into slpk file\n *\n * @param fileMap - map with file paths (key: output path, value: input path)\n * @param outputFile - output slpk file\n * @param level - compression level\n */\nexport async function compressFilesWithZip(\n fileMap: {[key: string]: string},\n outputFile: string,\n level: number = 0\n) {\n // Before creating a new file, we need to delete the old file\n try {\n await removeFile(outputFile);\n } catch (e) {\n // Do nothing if old file doesn't exist\n }\n\n const output = createWriteStream(outputFile);\n const archive = archiver('zip', {\n zlib: {level} // Sets the compression level.\n });\n\n return new Promise(async (resolve, reject) => {\n // listen for all archive data to be writte\n // 'close' event is fired only when a file descriptor is involved\n output.on('close', function () {\n console.log(`${outputFile} saved.`); // eslint-disable-line no-undef,no-console\n console.log(`${archive.pointer()} total bytes`); // eslint-disable-line no-undef,no-console\n resolve(null);\n });\n\n // This event is fired when the data source is drained no matter what was the data source.\n // It is not part of this library but rather from the NodeJS Stream API.\n // @see: https://nodejs.org/api/stream.html#stream_event_end\n output.on('end', function () {\n console.log('Data has been drained'); // eslint-disable-line no-undef,no-console\n resolve(null);\n });\n\n // good practice to catch warnings (ie stat failures and other non-blocking errors)\n archive.on('warning', function (err) {\n console.log(err); // eslint-disable-line no-undef,no-console\n reject(err);\n });\n\n // good practice to catch this error explicitly\n archive.on('error', function (err) {\n reject(err);\n });\n\n // pipe archive data to the file\n archive.pipe(output);\n\n for (const subFileName in fileMap) {\n const subFileData = fileMap[subFileName];\n await appendFileToArchive(archive, subFileName, subFileData);\n }\n\n // finalize the archive (ie we are done appending files but streams have to finish yet)\n archive.finalize();\n });\n}\n\n/**\n * Compress files using external tool 'zip'/'7z'\n *\n * @param inputFolder - folder to archive - for cwd option\n * @param outputFile - output slpk file\n * @param level - compression level\n * @param inputFiles - input files path to pass to the executable as option\n * @param sevenZipExe - path to 7z.exe executable\n */\nexport async function compressWithChildProcess(\n inputFolder: string,\n outputFile: string,\n level: number,\n inputFiles: string,\n sevenZipExe: string\n) {\n // eslint-disable-next-line no-undef\n if (process.platform === 'win32') {\n await compressWithChildProcessWindows(inputFolder, outputFile, level, inputFiles, sevenZipExe);\n } else {\n await compressWithChildProcessUnix(inputFolder, outputFile, level, inputFiles);\n }\n}\n\n/**\n * Compress files using external linux tool 'zip'\n *\n * @param inputFolder - folder to archive - for cwd option\n * @param outputFile - output slpk file\n * @param level - compression level\n * @param inputFiles - input files path to pass to the executable as option\n */\nasync function compressWithChildProcessUnix(\n inputFolder: string,\n outputFile: string,\n level: number = 0,\n inputFiles: string = '.'\n) {\n const fullOutputFile = getAbsoluteFilePath(outputFile);\n const args = [`-${level}`, '-r', fullOutputFile, inputFiles];\n const childProcess = new ChildProcessProxy();\n await childProcess.start({\n command: 'zip',\n arguments: args,\n spawn: {\n cwd: inputFolder\n },\n wait: 0\n });\n}\n\n/**\n * Compress files using windows external tool '7z'\n *\n * @param inputFolder - folder to archive - for cwd option\n * @param outputFile - output slpk file\n * @param level - compression level\n * @param inputFiles - input files path to pass to the executable as option\n * @param sevenZipExe - path to 7z.exe executable\n */\nasync function compressWithChildProcessWindows(\n inputFolder: string,\n outputFile: string,\n level: number = 0,\n inputFiles: string = join('.', '*'),\n sevenZipExe: string\n) {\n // Workaround for @listfile issue. In 7z.exe @-leading files are handled as listfiles\n // https://sevenzip.osdn.jp/chm/cmdline/syntax.htm\n if (inputFiles[0] === '@') {\n inputFiles = `*${inputFiles.substr(1)}`;\n }\n\n const fullOutputFile = getAbsoluteFilePath(outputFile);\n const args = ['a', '-tzip', `-mx=${level}`, fullOutputFile, inputFiles];\n const childProcess = new ChildProcessProxy();\n await childProcess.start({\n command: sevenZipExe,\n arguments: args,\n spawn: {\n cwd: `${inputFolder}`\n },\n wait: 0\n });\n}\n\n/**\n * Generate hash file from zip archive\n * https://github.com/Esri/i3s-spec/blob/master/docs/1.7/slpk_hashtable.cmn.md\n *\n * @param inputZipFile\n * @param outputFile\n */\nexport async function generateHash128FromZip(inputZipFile: string, outputFile: string) {\n const input = await fs.readFile(inputZipFile);\n const zip = await JSZip.loadAsync(input);\n const hashTable: {key: string; value: string}[] = [];\n const zipFiles = zip.files;\n for (const relativePath in zipFiles) {\n const zipEntry = zipFiles[relativePath];\n // Had to use a workaround because the correct string is getting the wrong data\n // const content = await zipEntry.async('nodebuffer');\n // _data isn't described in the interface, so lint thought it was wrong\n const _data = '_data';\n const content = zipEntry[_data].compressedContent;\n if (zipEntry.dir) continue; // eslint-disable-line no-continue\n // eslint-disable-next-line no-undef\n const hash = await new MD5Hash().hash(Buffer.from(relativePath.toLowerCase()));\n // eslint-disable-next-line no-undef\n hashTable.push({key: atob(hash), value: content.byteOffset});\n }\n\n hashTable.sort((prev, next) => {\n if (prev.key === next.key) {\n return prev.value < next.value ? -1 : 1;\n }\n return prev.key < next.key ? -1 : 1;\n });\n\n const output = createWriteStream(outputFile);\n return new Promise((resolve, reject) => {\n output.on('close', function () {\n console.log(`${outputFile} generated and saved`); // eslint-disable-line\n resolve(null);\n });\n output.on('error', function (err) {\n console.log(err); // eslint-disable-line\n reject(err);\n });\n for (const key in hashTable) {\n const item = hashTable[key];\n const value = longToByteArray(item.value);\n // TODO: perhaps you need to wait for the 'drain' event if the write returns 'false'\n // eslint-disable-next-line no-undef\n output.write(Buffer.from(crypt.hexToBytes(item.key).concat(value)));\n }\n output.close();\n });\n}\n\n/**\n * Encode 64 bit value to byte array\n *\n * @param long - stringified number\n * @returns\n */\nfunction longToByteArray(long: string): number[] {\n const buffer = new ArrayBuffer(8); // JS numbers are 8 bytes long, or 64 bits\n const longNum = new Float64Array(buffer); // so equivalent to Float64\n longNum[0] = parseInt(long);\n return Array.from(new Uint8Array(buffer)).reverse(); // reverse to get little endian\n}\n\n/**\n * Add file to zip archive\n *\n * @param inputFile\n * @param fileName\n * @param zipFile\n * @param sevenZipExe\n */\nexport async function addFileToZip(\n inputFolder: string,\n fileName: string,\n zipFile: string,\n sevenZipExe: string\n) {\n await compressWithChildProcess(inputFolder, zipFile, 0, fileName, sevenZipExe);\n console.log(`${fileName} added to ${zipFile}.`); // eslint-disable-line\n}\n\n/**\n *\n * @param archive zip archive instance\n * @param subFileName file path inside archive\n * @param subFileData source file path\n * @returns\n */\nfunction appendFileToArchive(archive: any, subFileName: string, subFileData: string) {\n return new Promise((resolve) => {\n const fileStream = createReadStream(subFileData);\n console.log(`Compression start: ${subFileName}`); // eslint-disable-line no-undef,no-console\n fileStream.on('close', () => {\n console.log(`Compression finish: ${subFileName}`); // eslint-disable-line no-undef,no-console\n resolve(null);\n });\n archive.append(fileStream, {name: subFileName});\n });\n}\n"],"file":"compress-util.js"}
|
|
1
|
+
{"version":3,"file":"compress-util.js","names":["compressFileWithGzip","pathFile","compressedPathFile","gzip","createGzip","input","createReadStream","output","createWriteStream","Promise","resolve","reject","on","console","log","error","pipe","compressFilesWithZip","fileMap","outputFile","level","removeFile","archive","archiver","zlib","pointer","err","subFileName","subFileData","appendFileToArchive","finalize","compressWithChildProcess","inputFolder","inputFiles","sevenZipExe","process","platform","compressWithChildProcessWindows","compressWithChildProcessUnix","fullOutputFile","getAbsoluteFilePath","args","childProcess","ChildProcessProxy","start","command","arguments","spawn","cwd","wait","join","substr","generateHash128FromZip","inputZipFile","fs","readFile","JSZip","loadAsync","zip","hashTable","zipFiles","files","relativePath","zipEntry","_data","content","compressedContent","dir","MD5Hash","hash","Buffer","from","toLowerCase","push","key","atob","value","byteOffset","sort","prev","next","item","longToByteArray","write","crypt","hexToBytes","concat","close","long","buffer","ArrayBuffer","longNum","Float64Array","parseInt","Array","Uint8Array","reverse","addFileToZip","fileName","zipFile","fileStream","append","name"],"sources":["../../../../src/lib/utils/compress-util.ts"],"sourcesContent":["import {createGzip} from 'zlib';\nimport {join} from 'path';\nimport {promises as fs, createReadStream, createWriteStream} from 'fs';\nimport archiver from 'archiver';\nimport {removeFile} from './file-utils';\nimport {ChildProcessProxy} from '@loaders.gl/worker-utils';\nimport JSZip from 'jszip';\nimport {MD5Hash} from '@loaders.gl/crypto';\nimport crypt from 'crypt';\nimport {getAbsoluteFilePath} from './file-utils';\n\n/**\n * Compress file to gzip file\n *\n * @param pathFile - the path to the file\n * @return the path to the gzip file\n */\nexport function compressFileWithGzip(pathFile: string): Promise<string> {\n const compressedPathFile = `${pathFile}.gz`;\n const gzip = createGzip();\n const input = createReadStream(pathFile);\n const output = createWriteStream(compressedPathFile);\n\n return new Promise((resolve, reject) => {\n input.on('end', () => {\n console.log(`${compressedPathFile} compressed and saved.`); // eslint-disable-line no-undef,no-console\n resolve(compressedPathFile);\n });\n input.on('error', (error) => {\n console.log(`${compressedPathFile}: compression error!`); // eslint-disable-line no-undef,no-console\n reject(error);\n });\n input.pipe(gzip).pipe(output);\n });\n}\n\n/**\n * Compress files from map into slpk file\n *\n * @param fileMap - map with file paths (key: output path, value: input path)\n * @param outputFile - output slpk file\n * @param level - compression level\n */\nexport async function compressFilesWithZip(\n fileMap: {[key: string]: string},\n outputFile: string,\n level: number = 0\n) {\n // Before creating a new file, we need to delete the old file\n try {\n await removeFile(outputFile);\n } catch (e) {\n // Do nothing if old file doesn't exist\n }\n\n const output = createWriteStream(outputFile);\n const archive = archiver('zip', {\n zlib: {level} // Sets the compression level.\n });\n\n return new Promise(async (resolve, reject) => {\n // listen for all archive data to be writte\n // 'close' event is fired only when a file descriptor is involved\n output.on('close', function () {\n console.log(`${outputFile} saved.`); // eslint-disable-line no-undef,no-console\n console.log(`${archive.pointer()} total bytes`); // eslint-disable-line no-undef,no-console\n resolve(null);\n });\n\n // This event is fired when the data source is drained no matter what was the data source.\n // It is not part of this library but rather from the NodeJS Stream API.\n // @see: https://nodejs.org/api/stream.html#stream_event_end\n output.on('end', function () {\n console.log('Data has been drained'); // eslint-disable-line no-undef,no-console\n resolve(null);\n });\n\n // good practice to catch warnings (ie stat failures and other non-blocking errors)\n archive.on('warning', function (err) {\n console.log(err); // eslint-disable-line no-undef,no-console\n reject(err);\n });\n\n // good practice to catch this error explicitly\n archive.on('error', function (err) {\n reject(err);\n });\n\n // pipe archive data to the file\n archive.pipe(output);\n\n for (const subFileName in fileMap) {\n const subFileData = fileMap[subFileName];\n await appendFileToArchive(archive, subFileName, subFileData);\n }\n\n // finalize the archive (ie we are done appending files but streams have to finish yet)\n archive.finalize();\n });\n}\n\n/**\n * Compress files using external tool 'zip'/'7z'\n *\n * @param inputFolder - folder to archive - for cwd option\n * @param outputFile - output slpk file\n * @param level - compression level\n * @param inputFiles - input files path to pass to the executable as option\n * @param sevenZipExe - path to 7z.exe executable\n */\nexport async function compressWithChildProcess(\n inputFolder: string,\n outputFile: string,\n level: number,\n inputFiles: string,\n sevenZipExe: string\n) {\n // eslint-disable-next-line no-undef\n if (process.platform === 'win32') {\n await compressWithChildProcessWindows(inputFolder, outputFile, level, inputFiles, sevenZipExe);\n } else {\n await compressWithChildProcessUnix(inputFolder, outputFile, level, inputFiles);\n }\n}\n\n/**\n * Compress files using external linux tool 'zip'\n *\n * @param inputFolder - folder to archive - for cwd option\n * @param outputFile - output slpk file\n * @param level - compression level\n * @param inputFiles - input files path to pass to the executable as option\n */\nasync function compressWithChildProcessUnix(\n inputFolder: string,\n outputFile: string,\n level: number = 0,\n inputFiles: string = '.'\n) {\n const fullOutputFile = getAbsoluteFilePath(outputFile);\n const args = [`-${level}`, '-r', fullOutputFile, inputFiles];\n const childProcess = new ChildProcessProxy();\n await childProcess.start({\n command: 'zip',\n arguments: args,\n spawn: {\n cwd: inputFolder\n },\n wait: 0\n });\n}\n\n/**\n * Compress files using windows external tool '7z'\n *\n * @param inputFolder - folder to archive - for cwd option\n * @param outputFile - output slpk file\n * @param level - compression level\n * @param inputFiles - input files path to pass to the executable as option\n * @param sevenZipExe - path to 7z.exe executable\n */\nasync function compressWithChildProcessWindows(\n inputFolder: string,\n outputFile: string,\n level: number = 0,\n inputFiles: string = join('.', '*'),\n sevenZipExe: string\n) {\n // Workaround for @listfile issue. In 7z.exe @-leading files are handled as listfiles\n // https://sevenzip.osdn.jp/chm/cmdline/syntax.htm\n if (inputFiles[0] === '@') {\n inputFiles = `*${inputFiles.substr(1)}`;\n }\n\n const fullOutputFile = getAbsoluteFilePath(outputFile);\n const args = ['a', '-tzip', `-mx=${level}`, fullOutputFile, inputFiles];\n const childProcess = new ChildProcessProxy();\n await childProcess.start({\n command: sevenZipExe,\n arguments: args,\n spawn: {\n cwd: `${inputFolder}`\n },\n wait: 0\n });\n}\n\n/**\n * Generate hash file from zip archive\n * https://github.com/Esri/i3s-spec/blob/master/docs/1.7/slpk_hashtable.cmn.md\n *\n * @param inputZipFile\n * @param outputFile\n */\nexport async function generateHash128FromZip(inputZipFile: string, outputFile: string) {\n const input = await fs.readFile(inputZipFile);\n const zip = await JSZip.loadAsync(input);\n const hashTable: {key: string; value: string}[] = [];\n const zipFiles = zip.files;\n for (const relativePath in zipFiles) {\n const zipEntry = zipFiles[relativePath];\n // Had to use a workaround because the correct string is getting the wrong data\n // const content = await zipEntry.async('nodebuffer');\n // _data isn't described in the interface, so lint thought it was wrong\n const _data = '_data';\n const content = zipEntry[_data].compressedContent;\n if (zipEntry.dir) continue; // eslint-disable-line no-continue\n // eslint-disable-next-line no-undef\n const hash = await new MD5Hash().hash(Buffer.from(relativePath.toLowerCase()));\n // eslint-disable-next-line no-undef\n hashTable.push({key: atob(hash), value: content.byteOffset});\n }\n\n hashTable.sort((prev, next) => {\n if (prev.key === next.key) {\n return prev.value < next.value ? -1 : 1;\n }\n return prev.key < next.key ? -1 : 1;\n });\n\n const output = createWriteStream(outputFile);\n return new Promise((resolve, reject) => {\n output.on('close', function () {\n console.log(`${outputFile} generated and saved`); // eslint-disable-line\n resolve(null);\n });\n output.on('error', function (err) {\n console.log(err); // eslint-disable-line\n reject(err);\n });\n for (const key in hashTable) {\n const item = hashTable[key];\n const value = longToByteArray(item.value);\n // TODO: perhaps you need to wait for the 'drain' event if the write returns 'false'\n // eslint-disable-next-line no-undef\n output.write(Buffer.from(crypt.hexToBytes(item.key).concat(value)));\n }\n output.close();\n });\n}\n\n/**\n * Encode 64 bit value to byte array\n *\n * @param long - stringified number\n * @returns\n */\nfunction longToByteArray(long: string): number[] {\n const buffer = new ArrayBuffer(8); // JS numbers are 8 bytes long, or 64 bits\n const longNum = new Float64Array(buffer); // so equivalent to Float64\n longNum[0] = parseInt(long);\n return Array.from(new Uint8Array(buffer)).reverse(); // reverse to get little endian\n}\n\n/**\n * Add file to zip archive\n *\n * @param inputFile\n * @param fileName\n * @param zipFile\n * @param sevenZipExe\n */\nexport async function addFileToZip(\n inputFolder: string,\n fileName: string,\n zipFile: string,\n sevenZipExe: string\n) {\n await compressWithChildProcess(inputFolder, zipFile, 0, fileName, sevenZipExe);\n console.log(`${fileName} added to ${zipFile}.`); // eslint-disable-line\n}\n\n/**\n *\n * @param archive zip archive instance\n * @param subFileName file path inside archive\n * @param subFileData source file path\n * @returns\n */\nfunction appendFileToArchive(archive: any, subFileName: string, subFileData: string) {\n return new Promise((resolve) => {\n const fileStream = createReadStream(subFileData);\n console.log(`Compression start: ${subFileName}`); // eslint-disable-line no-undef,no-console\n fileStream.on('close', () => {\n console.log(`Compression finish: ${subFileName}`); // eslint-disable-line no-undef,no-console\n resolve(null);\n });\n archive.append(fileStream, {name: subFileName});\n });\n}\n"],"mappings":"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"}
|
|
@@ -1,89 +1,71 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
|
-
exports.
|
|
9
|
-
exports.writeFileForSlpk = writeFileForSlpk;
|
|
7
|
+
exports.getAbsoluteFilePath = getAbsoluteFilePath;
|
|
10
8
|
exports.removeDir = removeDir;
|
|
11
9
|
exports.removeFile = removeFile;
|
|
12
|
-
exports.
|
|
13
|
-
|
|
10
|
+
exports.writeFile = writeFile;
|
|
11
|
+
exports.writeFileForSlpk = writeFileForSlpk;
|
|
14
12
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
15
|
-
|
|
16
13
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
|
-
|
|
18
14
|
var _fs = require("fs");
|
|
19
|
-
|
|
20
15
|
var _path = require("path");
|
|
21
|
-
|
|
22
16
|
var _compressUtil = require("./compress-util");
|
|
23
|
-
|
|
24
17
|
function writeFile(_x, _x2) {
|
|
25
18
|
return _writeFile.apply(this, arguments);
|
|
26
19
|
}
|
|
27
|
-
|
|
28
20
|
function _writeFile() {
|
|
29
21
|
_writeFile = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(path, data) {
|
|
30
22
|
var fileName,
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
23
|
+
toWriteData,
|
|
24
|
+
pathFile,
|
|
25
|
+
_args = arguments;
|
|
34
26
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
35
27
|
while (1) {
|
|
36
28
|
switch (_context.prev = _context.next) {
|
|
37
29
|
case 0:
|
|
38
30
|
fileName = _args.length > 2 && _args[2] !== undefined ? _args[2] : 'index.json';
|
|
39
|
-
|
|
40
31
|
if (!(data instanceof Promise)) {
|
|
41
32
|
_context.next = 9;
|
|
42
33
|
break;
|
|
43
34
|
}
|
|
44
|
-
|
|
45
35
|
_context.t0 = Uint8Array;
|
|
46
36
|
_context.next = 5;
|
|
47
37
|
return data;
|
|
48
|
-
|
|
49
38
|
case 5:
|
|
50
39
|
_context.t1 = _context.sent;
|
|
51
40
|
toWriteData = new _context.t0(_context.t1);
|
|
52
41
|
_context.next = 10;
|
|
53
42
|
break;
|
|
54
|
-
|
|
55
43
|
case 9:
|
|
56
44
|
if (data instanceof ArrayBuffer) {
|
|
57
45
|
toWriteData = new Uint8Array(data);
|
|
58
46
|
} else {
|
|
59
47
|
toWriteData = data;
|
|
60
48
|
}
|
|
61
|
-
|
|
62
49
|
case 10:
|
|
63
50
|
_context.next = 12;
|
|
64
51
|
return _fs.promises.mkdir(path, {
|
|
65
52
|
recursive: true
|
|
66
53
|
});
|
|
67
|
-
|
|
68
54
|
case 12:
|
|
69
55
|
pathFile = (0, _path.join)(path, fileName);
|
|
70
56
|
_context.prev = 13;
|
|
71
57
|
_context.next = 16;
|
|
72
58
|
return _fs.promises.writeFile(pathFile, toWriteData);
|
|
73
|
-
|
|
74
59
|
case 16:
|
|
75
60
|
_context.next = 21;
|
|
76
61
|
break;
|
|
77
|
-
|
|
78
62
|
case 18:
|
|
79
63
|
_context.prev = 18;
|
|
80
64
|
_context.t2 = _context["catch"](13);
|
|
81
65
|
throw _context.t2;
|
|
82
|
-
|
|
83
66
|
case 21:
|
|
84
67
|
console.log("".concat(pathFile, " saved."));
|
|
85
68
|
return _context.abrupt("return", pathFile);
|
|
86
|
-
|
|
87
69
|
case 23:
|
|
88
70
|
case "end":
|
|
89
71
|
return _context.stop();
|
|
@@ -93,18 +75,16 @@ function _writeFile() {
|
|
|
93
75
|
}));
|
|
94
76
|
return _writeFile.apply(this, arguments);
|
|
95
77
|
}
|
|
96
|
-
|
|
97
78
|
function writeFileForSlpk(_x3, _x4) {
|
|
98
79
|
return _writeFileForSlpk.apply(this, arguments);
|
|
99
80
|
}
|
|
100
|
-
|
|
101
81
|
function _writeFileForSlpk() {
|
|
102
82
|
_writeFileForSlpk = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(path, data) {
|
|
103
83
|
var fileName,
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
84
|
+
compress,
|
|
85
|
+
pathFile,
|
|
86
|
+
pathGzFile,
|
|
87
|
+
_args2 = arguments;
|
|
108
88
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
109
89
|
while (1) {
|
|
110
90
|
switch (_context2.prev = _context2.next) {
|
|
@@ -113,29 +93,22 @@ function _writeFileForSlpk() {
|
|
|
113
93
|
compress = _args2.length > 3 && _args2[3] !== undefined ? _args2[3] : true;
|
|
114
94
|
_context2.next = 4;
|
|
115
95
|
return writeFile(path, data, fileName);
|
|
116
|
-
|
|
117
96
|
case 4:
|
|
118
97
|
pathFile = _context2.sent;
|
|
119
|
-
|
|
120
98
|
if (!compress) {
|
|
121
99
|
_context2.next = 12;
|
|
122
100
|
break;
|
|
123
101
|
}
|
|
124
|
-
|
|
125
102
|
_context2.next = 8;
|
|
126
103
|
return (0, _compressUtil.compressFileWithGzip)(pathFile);
|
|
127
|
-
|
|
128
104
|
case 8:
|
|
129
105
|
pathGzFile = _context2.sent;
|
|
130
106
|
_context2.next = 11;
|
|
131
107
|
return removeFile(pathFile);
|
|
132
|
-
|
|
133
108
|
case 11:
|
|
134
109
|
return _context2.abrupt("return", pathGzFile);
|
|
135
|
-
|
|
136
110
|
case 12:
|
|
137
111
|
return _context2.abrupt("return", pathFile);
|
|
138
|
-
|
|
139
112
|
case 13:
|
|
140
113
|
case "end":
|
|
141
114
|
return _context2.stop();
|
|
@@ -145,7 +118,6 @@ function _writeFileForSlpk() {
|
|
|
145
118
|
}));
|
|
146
119
|
return _writeFileForSlpk.apply(this, arguments);
|
|
147
120
|
}
|
|
148
|
-
|
|
149
121
|
function removeDir(path) {
|
|
150
122
|
return _fs.promises.rmdir(path, {
|
|
151
123
|
recursive: true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"file-utils.js","names":["writeFile","path","data","fileName","Promise","Uint8Array","toWriteData","ArrayBuffer","fs","mkdir","recursive","pathFile","join","console","log","writeFileForSlpk","compress","compressFileWithGzip","pathGzFile","removeFile","removeDir","rmdir","unlink","getAbsoluteFilePath","filePath","isAbsolute","process","cwd"],"sources":["../../../../src/lib/utils/file-utils.ts"],"sourcesContent":["import {promises as fs} from 'fs';\nimport {isAbsolute, join} from 'path';\nimport {compressFileWithGzip} from './compress-util';\n\n/**\n * Write a file with data and name fileName to path\n *\n * @param path - output path\n * @param data - file content\n * @param fileName - name of output file (default: index.json)\n */\nexport async function writeFile(\n path: string,\n data: string | Uint8Array | ArrayBuffer | Promise<ArrayBuffer>,\n fileName: string = 'index.json'\n): Promise<string> {\n let toWriteData: string | Uint8Array;\n if (data instanceof Promise) {\n toWriteData = new Uint8Array(await data);\n } else if (data instanceof ArrayBuffer) {\n toWriteData = new Uint8Array(data as ArrayBuffer);\n } else {\n toWriteData = data;\n }\n await fs.mkdir(path, {recursive: true});\n const pathFile = join(path, fileName);\n try {\n await fs.writeFile(pathFile, toWriteData);\n } catch (err) {\n throw err;\n }\n console.log(`${pathFile} saved.`); // eslint-disable-line\n return pathFile;\n}\n\n/**\n * Write a file with data and name fileName to path - specific one for further packaging into slpk\n *\n * @param path - output path\n * @param data - file content\n * @param fileName - name of output file (default: index.json)\n * @param compress - if need to compress file with gzip (default: true)\n */\nexport async function writeFileForSlpk(\n path: string,\n data: string | Uint8Array | ArrayBuffer | Promise<ArrayBuffer>,\n fileName: string = 'index.json',\n compress: boolean = true\n): Promise<string> {\n const pathFile = await writeFile(path, data, fileName);\n if (compress) {\n const pathGzFile = await compressFileWithGzip(pathFile);\n // After compression, we don't need an uncompressed file\n await removeFile(pathFile);\n return pathGzFile;\n }\n return pathFile;\n}\n\n/**\n * Remove dir with path\n *\n * @param path\n */\nexport function removeDir(path: string) {\n return fs.rmdir(path, {recursive: true});\n}\n\n/**\n * Remove file with path\n *\n * @param path\n */\nexport function removeFile(path: string) {\n return fs.unlink(path);\n}\n\n/**\n * Generates absolute file path\n * @param filePath\n */\nexport function getAbsoluteFilePath(filePath: string) {\n return isAbsolute(filePath) ? filePath : join(process.cwd(), filePath); // eslint-disable-line no-undef\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;AACA;AACA;AAAqD,SAS/BA,SAAS;EAAA;AAAA;AAAA;EAAA,uEAAxB,iBACLC,IAAY,EACZC,IAA8D;IAAA;MAAA;MAAA;MAAA;IAAA;MAAA;QAAA;UAAA;YAC9DC,QAAgB,2DAAG,YAAY;YAAA,MAG3BD,IAAI,YAAYE,OAAO;cAAA;cAAA;YAAA;YAAA,cACPC,UAAU;YAAA;YAAA,OAAOH,IAAI;UAAA;YAAA;YAAvCI,WAAW;YAAA;YAAA;UAAA;YACN,IAAIJ,IAAI,YAAYK,WAAW,EAAE;cACtCD,WAAW,GAAG,IAAID,UAAU,CAACH,IAAI,CAAgB;YACnD,CAAC,MAAM;cACLI,WAAW,GAAGJ,IAAI;YACpB;UAAC;YAAA;YAAA,OACKM,YAAE,CAACC,KAAK,CAACR,IAAI,EAAE;cAACS,SAAS,EAAE;YAAI,CAAC,CAAC;UAAA;YACjCC,QAAQ,GAAG,IAAAC,UAAI,EAACX,IAAI,EAAEE,QAAQ,CAAC;YAAA;YAAA;YAAA,OAE7BK,YAAE,CAACR,SAAS,CAACW,QAAQ,EAAEL,WAAW,CAAC;UAAA;YAAA;YAAA;UAAA;YAAA;YAAA;YAAA;UAAA;YAI3CO,OAAO,CAACC,GAAG,WAAIH,QAAQ,aAAU;YAAC,iCAC3BA,QAAQ;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAChB;EAAA;AAAA;AAAA,SAUqBI,gBAAgB;EAAA;AAAA;AAAA;EAAA,8EAA/B,kBACLd,IAAY,EACZC,IAA8D;IAAA;MAAA;MAAA;MAAA;MAAA;IAAA;MAAA;QAAA;UAAA;YAC9DC,QAAgB,8DAAG,YAAY;YAC/Ba,QAAiB,8DAAG,IAAI;YAAA;YAAA,OAEDhB,SAAS,CAACC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,CAAC;UAAA;YAAhDQ,QAAQ;YAAA,KACVK,QAAQ;cAAA;cAAA;YAAA;YAAA;YAAA,OACe,IAAAC,kCAAoB,EAACN,QAAQ,CAAC;UAAA;YAAjDO,UAAU;YAAA;YAAA,OAEVC,UAAU,CAACR,QAAQ,CAAC;UAAA;YAAA,kCACnBO,UAAU;UAAA;YAAA,kCAEZP,QAAQ;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAChB;EAAA;AAAA;AAOM,SAASS,SAAS,CAACnB,IAAY,EAAE;EACtC,OAAOO,YAAE,CAACa,KAAK,CAACpB,IAAI,EAAE;IAACS,SAAS,EAAE;EAAI,CAAC,CAAC;AAC1C;;AAOO,SAASS,UAAU,CAAClB,IAAY,EAAE;EACvC,OAAOO,YAAE,CAACc,MAAM,CAACrB,IAAI,CAAC;AACxB;;AAMO,SAASsB,mBAAmB,CAACC,QAAgB,EAAE;EACpD,OAAO,IAAAC,gBAAU,EAACD,QAAQ,CAAC,GAAGA,QAAQ,GAAG,IAAAZ,UAAI,EAACc,OAAO,CAACC,GAAG,EAAE,EAAEH,QAAQ,CAAC;AACxE"}
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.convertGeometricErrorToScreenThreshold = convertGeometricErrorToScreenThreshold;
|
|
7
7
|
exports.convertScreenThresholdToGeometricError = convertScreenThresholdToGeometricError;
|
|
8
8
|
var DEFAULT_MAXIMUM_SCREEN_SPACE_ERROR = 16;
|
|
9
|
-
|
|
10
9
|
function convertGeometricErrorToScreenThreshold(tile, coordinates) {
|
|
11
10
|
var lodSelection = [];
|
|
12
11
|
var boundingVolume = tile.boundingVolume;
|
|
@@ -19,7 +18,6 @@ function convertGeometricErrorToScreenThreshold(tile, coordinates) {
|
|
|
19
18
|
metricType: 'maxScreenThresholdSQ',
|
|
20
19
|
maxError: Math.PI * 0.25 * maxScreenThreshold.maxError * maxScreenThreshold.maxError
|
|
21
20
|
};
|
|
22
|
-
|
|
23
21
|
if (boundingVolume.constructor.name === 'OrientedBoundingBox') {
|
|
24
22
|
lodSelection.push(maxScreenThresholdSQ);
|
|
25
23
|
lodSelection.push(maxScreenThreshold);
|
|
@@ -27,26 +25,21 @@ function convertGeometricErrorToScreenThreshold(tile, coordinates) {
|
|
|
27
25
|
lodSelection.push(maxScreenThreshold);
|
|
28
26
|
lodSelection.push(maxScreenThresholdSQ);
|
|
29
27
|
}
|
|
30
|
-
|
|
31
28
|
return lodSelection;
|
|
32
29
|
}
|
|
33
30
|
|
|
34
31
|
function convertScreenThresholdToGeometricError(node) {
|
|
35
32
|
var metricData = node.header.lodSelection.maxScreenThreshold || {};
|
|
36
33
|
var maxError = metricData.maxError;
|
|
37
|
-
|
|
38
34
|
if (!maxError) {
|
|
39
35
|
var sqMetricData = node.header.lodSelection.maxScreenThresholdSQ;
|
|
40
|
-
|
|
41
36
|
if (sqMetricData) {
|
|
42
37
|
maxError = Math.sqrt(sqMetricData.maxError / (Math.PI * 0.25));
|
|
43
38
|
}
|
|
44
39
|
}
|
|
45
|
-
|
|
46
40
|
if (!maxError) {
|
|
47
41
|
maxError = DEFAULT_MAXIMUM_SCREEN_SPACE_ERROR;
|
|
48
42
|
}
|
|
49
|
-
|
|
50
43
|
return node.header.mbs[3] * 2 * DEFAULT_MAXIMUM_SCREEN_SPACE_ERROR / maxError;
|
|
51
44
|
}
|
|
52
45
|
//# sourceMappingURL=lod-conversion-utils.js.map
|