@loaders.gl/zip 4.0.0-alpha.21 → 4.0.0-alpha.22
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 +4509 -10
- package/dist/es5/filesystems/zip-filesystem.js +130 -96
- package/dist/es5/filesystems/zip-filesystem.js.map +1 -1
- package/dist/es5/index.js +7 -0
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/zip-loader.js +1 -1
- package/dist/esm/filesystems/zip-filesystem.js +15 -2
- package/dist/esm/filesystems/zip-filesystem.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/zip-loader.js +1 -1
- package/dist/filesystems/zip-filesystem.d.ts +2 -1
- package/dist/filesystems/zip-filesystem.d.ts.map +1 -1
- package/dist/filesystems/zip-filesystem.js +11 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/package.json +4 -4
- package/src/filesystems/zip-filesystem.ts +13 -3
- package/src/index.ts +2 -0
|
@@ -15,6 +15,7 @@ var _fileProvider = require("../file-provider/file-provider");
|
|
|
15
15
|
var _fileHandleFile = require("../file-provider/file-handle-file");
|
|
16
16
|
var _cdFileHeader = require("../parse-zip/cd-file-header");
|
|
17
17
|
var _localFileHeader = require("../parse-zip/local-file-header");
|
|
18
|
+
var _compression = require("@loaders.gl/compression");
|
|
18
19
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
19
20
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
20
21
|
function _asyncIterator(iterable) { var method, async, sync, retry = 2; for ("undefined" != typeof Symbol && (async = Symbol.asyncIterator, sync = Symbol.iterator); retry--;) { if (async && null != (method = iterable[async])) return method.call(iterable); if (sync && null != (method = iterable[sync])) return new AsyncFromSyncIterator(method.call(iterable)); async = "@@asyncIterator", sync = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
|
|
@@ -36,13 +37,40 @@ var COMPRESSION_METHODS = {
|
|
|
36
37
|
return _2.apply(this, arguments);
|
|
37
38
|
}
|
|
38
39
|
return _;
|
|
40
|
+
}(),
|
|
41
|
+
8: function () {
|
|
42
|
+
var _3 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(compressedFile) {
|
|
43
|
+
var compression, decompressedData;
|
|
44
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
45
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
46
|
+
case 0:
|
|
47
|
+
compression = new _compression.DeflateCompression({
|
|
48
|
+
raw: true
|
|
49
|
+
});
|
|
50
|
+
_context2.next = 3;
|
|
51
|
+
return compression.decompress(compressedFile);
|
|
52
|
+
case 3:
|
|
53
|
+
decompressedData = _context2.sent;
|
|
54
|
+
return _context2.abrupt("return", decompressedData);
|
|
55
|
+
case 5:
|
|
56
|
+
case "end":
|
|
57
|
+
return _context2.stop();
|
|
58
|
+
}
|
|
59
|
+
}, _callee2);
|
|
60
|
+
}));
|
|
61
|
+
function _(_x2) {
|
|
62
|
+
return _3.apply(this, arguments);
|
|
63
|
+
}
|
|
64
|
+
return _;
|
|
39
65
|
}()
|
|
40
66
|
};
|
|
41
67
|
var ZipFileSystem = function () {
|
|
42
68
|
function ZipFileSystem(file) {
|
|
43
69
|
(0, _classCallCheck2.default)(this, ZipFileSystem);
|
|
44
70
|
(0, _defineProperty2.default)(this, "fileProvider", Promise.resolve(null));
|
|
71
|
+
(0, _defineProperty2.default)(this, "fileName", void 0);
|
|
45
72
|
if (typeof file === 'string') {
|
|
73
|
+
this.fileName = file;
|
|
46
74
|
if (!_core.isBrowser) {
|
|
47
75
|
this.fileProvider = _fileHandleFile.FileHandleFile.from(file);
|
|
48
76
|
} else {
|
|
@@ -55,23 +83,26 @@ var ZipFileSystem = function () {
|
|
|
55
83
|
(0, _createClass2.default)(ZipFileSystem, [{
|
|
56
84
|
key: "destroy",
|
|
57
85
|
value: function () {
|
|
58
|
-
var _destroy = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function
|
|
86
|
+
var _destroy = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3() {
|
|
59
87
|
var fileProvider;
|
|
60
|
-
return _regenerator.default.wrap(function
|
|
61
|
-
while (1) switch (
|
|
88
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
89
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
62
90
|
case 0:
|
|
63
|
-
|
|
91
|
+
_context3.next = 2;
|
|
64
92
|
return this.fileProvider;
|
|
65
93
|
case 2:
|
|
66
|
-
fileProvider =
|
|
67
|
-
if (fileProvider) {
|
|
68
|
-
|
|
94
|
+
fileProvider = _context3.sent;
|
|
95
|
+
if (!fileProvider) {
|
|
96
|
+
_context3.next = 6;
|
|
97
|
+
break;
|
|
69
98
|
}
|
|
70
|
-
|
|
99
|
+
_context3.next = 6;
|
|
100
|
+
return fileProvider.destroy();
|
|
101
|
+
case 6:
|
|
71
102
|
case "end":
|
|
72
|
-
return
|
|
103
|
+
return _context3.stop();
|
|
73
104
|
}
|
|
74
|
-
},
|
|
105
|
+
}, _callee3, this);
|
|
75
106
|
}));
|
|
76
107
|
function destroy() {
|
|
77
108
|
return _destroy.apply(this, arguments);
|
|
@@ -81,17 +112,17 @@ var ZipFileSystem = function () {
|
|
|
81
112
|
}, {
|
|
82
113
|
key: "readdir",
|
|
83
114
|
value: function () {
|
|
84
|
-
var _readdir = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function
|
|
115
|
+
var _readdir = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4() {
|
|
85
116
|
var fileProvider, fileNames, zipCDIterator, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, cdHeader;
|
|
86
|
-
return _regenerator.default.wrap(function
|
|
87
|
-
while (1) switch (
|
|
117
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
118
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
88
119
|
case 0:
|
|
89
|
-
|
|
120
|
+
_context4.next = 2;
|
|
90
121
|
return this.fileProvider;
|
|
91
122
|
case 2:
|
|
92
|
-
fileProvider =
|
|
123
|
+
fileProvider = _context4.sent;
|
|
93
124
|
if (fileProvider) {
|
|
94
|
-
|
|
125
|
+
_context4.next = 5;
|
|
95
126
|
break;
|
|
96
127
|
}
|
|
97
128
|
throw new Error('No data detected in the zip archive');
|
|
@@ -100,57 +131,57 @@ var ZipFileSystem = function () {
|
|
|
100
131
|
zipCDIterator = (0, _cdFileHeader.zipCDFileHeaderGenerator)(fileProvider);
|
|
101
132
|
_iteratorAbruptCompletion = false;
|
|
102
133
|
_didIteratorError = false;
|
|
103
|
-
|
|
134
|
+
_context4.prev = 9;
|
|
104
135
|
_iterator = _asyncIterator(zipCDIterator);
|
|
105
136
|
case 11:
|
|
106
|
-
|
|
137
|
+
_context4.next = 13;
|
|
107
138
|
return _iterator.next();
|
|
108
139
|
case 13:
|
|
109
|
-
if (!(_iteratorAbruptCompletion = !(_step =
|
|
110
|
-
|
|
140
|
+
if (!(_iteratorAbruptCompletion = !(_step = _context4.sent).done)) {
|
|
141
|
+
_context4.next = 19;
|
|
111
142
|
break;
|
|
112
143
|
}
|
|
113
144
|
cdHeader = _step.value;
|
|
114
145
|
fileNames.push(cdHeader.fileName);
|
|
115
146
|
case 16:
|
|
116
147
|
_iteratorAbruptCompletion = false;
|
|
117
|
-
|
|
148
|
+
_context4.next = 11;
|
|
118
149
|
break;
|
|
119
150
|
case 19:
|
|
120
|
-
|
|
151
|
+
_context4.next = 25;
|
|
121
152
|
break;
|
|
122
153
|
case 21:
|
|
123
|
-
|
|
124
|
-
|
|
154
|
+
_context4.prev = 21;
|
|
155
|
+
_context4.t0 = _context4["catch"](9);
|
|
125
156
|
_didIteratorError = true;
|
|
126
|
-
_iteratorError =
|
|
157
|
+
_iteratorError = _context4.t0;
|
|
127
158
|
case 25:
|
|
128
|
-
|
|
129
|
-
|
|
159
|
+
_context4.prev = 25;
|
|
160
|
+
_context4.prev = 26;
|
|
130
161
|
if (!(_iteratorAbruptCompletion && _iterator.return != null)) {
|
|
131
|
-
|
|
162
|
+
_context4.next = 30;
|
|
132
163
|
break;
|
|
133
164
|
}
|
|
134
|
-
|
|
165
|
+
_context4.next = 30;
|
|
135
166
|
return _iterator.return();
|
|
136
167
|
case 30:
|
|
137
|
-
|
|
168
|
+
_context4.prev = 30;
|
|
138
169
|
if (!_didIteratorError) {
|
|
139
|
-
|
|
170
|
+
_context4.next = 33;
|
|
140
171
|
break;
|
|
141
172
|
}
|
|
142
173
|
throw _iteratorError;
|
|
143
174
|
case 33:
|
|
144
|
-
return
|
|
175
|
+
return _context4.finish(30);
|
|
145
176
|
case 34:
|
|
146
|
-
return
|
|
177
|
+
return _context4.finish(25);
|
|
147
178
|
case 35:
|
|
148
|
-
return
|
|
179
|
+
return _context4.abrupt("return", fileNames);
|
|
149
180
|
case 36:
|
|
150
181
|
case "end":
|
|
151
|
-
return
|
|
182
|
+
return _context4.stop();
|
|
152
183
|
}
|
|
153
|
-
},
|
|
184
|
+
}, _callee4, this, [[9, 21, 25, 35], [26,, 30, 34]]);
|
|
154
185
|
}));
|
|
155
186
|
function readdir() {
|
|
156
187
|
return _readdir.apply(this, arguments);
|
|
@@ -160,25 +191,25 @@ var ZipFileSystem = function () {
|
|
|
160
191
|
}, {
|
|
161
192
|
key: "stat",
|
|
162
193
|
value: function () {
|
|
163
|
-
var _stat = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function
|
|
194
|
+
var _stat = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(filename) {
|
|
164
195
|
var cdFileHeader;
|
|
165
|
-
return _regenerator.default.wrap(function
|
|
166
|
-
while (1) switch (
|
|
196
|
+
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
197
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
167
198
|
case 0:
|
|
168
|
-
|
|
199
|
+
_context5.next = 2;
|
|
169
200
|
return this.getCDFileHeader(filename);
|
|
170
201
|
case 2:
|
|
171
|
-
cdFileHeader =
|
|
172
|
-
return
|
|
202
|
+
cdFileHeader = _context5.sent;
|
|
203
|
+
return _context5.abrupt("return", _objectSpread(_objectSpread({}, cdFileHeader), {}, {
|
|
173
204
|
size: Number(cdFileHeader.uncompressedSize)
|
|
174
205
|
}));
|
|
175
206
|
case 4:
|
|
176
207
|
case "end":
|
|
177
|
-
return
|
|
208
|
+
return _context5.stop();
|
|
178
209
|
}
|
|
179
|
-
},
|
|
210
|
+
}, _callee5, this);
|
|
180
211
|
}));
|
|
181
|
-
function stat(
|
|
212
|
+
function stat(_x3) {
|
|
182
213
|
return _stat.apply(this, arguments);
|
|
183
214
|
}
|
|
184
215
|
return stat;
|
|
@@ -186,59 +217,62 @@ var ZipFileSystem = function () {
|
|
|
186
217
|
}, {
|
|
187
218
|
key: "fetch",
|
|
188
219
|
value: function () {
|
|
189
|
-
var _fetch = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function
|
|
220
|
+
var _fetch = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6(filename) {
|
|
190
221
|
var fileProvider, cdFileHeader, localFileHeader, compressionHandler, compressedFile, uncompressedFile, response;
|
|
191
|
-
return _regenerator.default.wrap(function
|
|
192
|
-
while (1) switch (
|
|
222
|
+
return _regenerator.default.wrap(function _callee6$(_context6) {
|
|
223
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
193
224
|
case 0:
|
|
194
|
-
|
|
225
|
+
_context6.next = 2;
|
|
195
226
|
return this.fileProvider;
|
|
196
227
|
case 2:
|
|
197
|
-
fileProvider =
|
|
228
|
+
fileProvider = _context6.sent;
|
|
198
229
|
if (fileProvider) {
|
|
199
|
-
|
|
230
|
+
_context6.next = 5;
|
|
200
231
|
break;
|
|
201
232
|
}
|
|
202
233
|
throw new Error('No data detected in the zip archive');
|
|
203
234
|
case 5:
|
|
204
|
-
|
|
235
|
+
_context6.next = 7;
|
|
205
236
|
return this.getCDFileHeader(filename);
|
|
206
237
|
case 7:
|
|
207
|
-
cdFileHeader =
|
|
208
|
-
|
|
238
|
+
cdFileHeader = _context6.sent;
|
|
239
|
+
_context6.next = 10;
|
|
209
240
|
return (0, _localFileHeader.parseZipLocalFileHeader)(cdFileHeader.localHeaderOffset, fileProvider);
|
|
210
241
|
case 10:
|
|
211
|
-
localFileHeader =
|
|
242
|
+
localFileHeader = _context6.sent;
|
|
212
243
|
if (localFileHeader) {
|
|
213
|
-
|
|
244
|
+
_context6.next = 13;
|
|
214
245
|
break;
|
|
215
246
|
}
|
|
216
247
|
throw new Error('Local file header has not been found in the zip archive`');
|
|
217
248
|
case 13:
|
|
218
249
|
compressionHandler = COMPRESSION_METHODS[localFileHeader.compressionMethod.toString()];
|
|
219
250
|
if (compressionHandler) {
|
|
220
|
-
|
|
251
|
+
_context6.next = 16;
|
|
221
252
|
break;
|
|
222
253
|
}
|
|
223
254
|
throw Error('Only Deflation compression is supported');
|
|
224
255
|
case 16:
|
|
225
|
-
|
|
256
|
+
_context6.next = 18;
|
|
226
257
|
return fileProvider.slice(localFileHeader.fileDataOffset, localFileHeader.fileDataOffset + localFileHeader.compressedSize);
|
|
227
258
|
case 18:
|
|
228
|
-
compressedFile =
|
|
229
|
-
|
|
259
|
+
compressedFile = _context6.sent;
|
|
260
|
+
_context6.next = 21;
|
|
230
261
|
return compressionHandler(compressedFile);
|
|
231
262
|
case 21:
|
|
232
|
-
uncompressedFile =
|
|
263
|
+
uncompressedFile = _context6.sent;
|
|
233
264
|
response = new Response(uncompressedFile);
|
|
234
|
-
|
|
235
|
-
|
|
265
|
+
Object.defineProperty(response, 'url', {
|
|
266
|
+
value: "".concat(this.fileName || '', "/").concat(filename)
|
|
267
|
+
});
|
|
268
|
+
return _context6.abrupt("return", response);
|
|
269
|
+
case 25:
|
|
236
270
|
case "end":
|
|
237
|
-
return
|
|
271
|
+
return _context6.stop();
|
|
238
272
|
}
|
|
239
|
-
},
|
|
273
|
+
}, _callee6, this);
|
|
240
274
|
}));
|
|
241
|
-
function fetch(
|
|
275
|
+
function fetch(_x4) {
|
|
242
276
|
return _fetch.apply(this, arguments);
|
|
243
277
|
}
|
|
244
278
|
return fetch;
|
|
@@ -246,17 +280,17 @@ var ZipFileSystem = function () {
|
|
|
246
280
|
}, {
|
|
247
281
|
key: "getCDFileHeader",
|
|
248
282
|
value: function () {
|
|
249
|
-
var _getCDFileHeader = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function
|
|
283
|
+
var _getCDFileHeader = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee7(filename) {
|
|
250
284
|
var fileProvider, zipCDIterator, result, _iteratorAbruptCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, cdHeader;
|
|
251
|
-
return _regenerator.default.wrap(function
|
|
252
|
-
while (1) switch (
|
|
285
|
+
return _regenerator.default.wrap(function _callee7$(_context7) {
|
|
286
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
253
287
|
case 0:
|
|
254
|
-
|
|
288
|
+
_context7.next = 2;
|
|
255
289
|
return this.fileProvider;
|
|
256
290
|
case 2:
|
|
257
|
-
fileProvider =
|
|
291
|
+
fileProvider = _context7.sent;
|
|
258
292
|
if (fileProvider) {
|
|
259
|
-
|
|
293
|
+
_context7.next = 5;
|
|
260
294
|
break;
|
|
261
295
|
}
|
|
262
296
|
throw new Error('No data detected in the zip archive');
|
|
@@ -265,70 +299,70 @@ var ZipFileSystem = function () {
|
|
|
265
299
|
result = null;
|
|
266
300
|
_iteratorAbruptCompletion2 = false;
|
|
267
301
|
_didIteratorError2 = false;
|
|
268
|
-
|
|
302
|
+
_context7.prev = 9;
|
|
269
303
|
_iterator2 = _asyncIterator(zipCDIterator);
|
|
270
304
|
case 11:
|
|
271
|
-
|
|
305
|
+
_context7.next = 13;
|
|
272
306
|
return _iterator2.next();
|
|
273
307
|
case 13:
|
|
274
|
-
if (!(_iteratorAbruptCompletion2 = !(_step2 =
|
|
275
|
-
|
|
308
|
+
if (!(_iteratorAbruptCompletion2 = !(_step2 = _context7.sent).done)) {
|
|
309
|
+
_context7.next = 21;
|
|
276
310
|
break;
|
|
277
311
|
}
|
|
278
312
|
cdHeader = _step2.value;
|
|
279
313
|
if (!(cdHeader.fileName === filename)) {
|
|
280
|
-
|
|
314
|
+
_context7.next = 18;
|
|
281
315
|
break;
|
|
282
316
|
}
|
|
283
317
|
result = cdHeader;
|
|
284
|
-
return
|
|
318
|
+
return _context7.abrupt("break", 21);
|
|
285
319
|
case 18:
|
|
286
320
|
_iteratorAbruptCompletion2 = false;
|
|
287
|
-
|
|
321
|
+
_context7.next = 11;
|
|
288
322
|
break;
|
|
289
323
|
case 21:
|
|
290
|
-
|
|
324
|
+
_context7.next = 27;
|
|
291
325
|
break;
|
|
292
326
|
case 23:
|
|
293
|
-
|
|
294
|
-
|
|
327
|
+
_context7.prev = 23;
|
|
328
|
+
_context7.t0 = _context7["catch"](9);
|
|
295
329
|
_didIteratorError2 = true;
|
|
296
|
-
_iteratorError2 =
|
|
330
|
+
_iteratorError2 = _context7.t0;
|
|
297
331
|
case 27:
|
|
298
|
-
|
|
299
|
-
|
|
332
|
+
_context7.prev = 27;
|
|
333
|
+
_context7.prev = 28;
|
|
300
334
|
if (!(_iteratorAbruptCompletion2 && _iterator2.return != null)) {
|
|
301
|
-
|
|
335
|
+
_context7.next = 32;
|
|
302
336
|
break;
|
|
303
337
|
}
|
|
304
|
-
|
|
338
|
+
_context7.next = 32;
|
|
305
339
|
return _iterator2.return();
|
|
306
340
|
case 32:
|
|
307
|
-
|
|
341
|
+
_context7.prev = 32;
|
|
308
342
|
if (!_didIteratorError2) {
|
|
309
|
-
|
|
343
|
+
_context7.next = 35;
|
|
310
344
|
break;
|
|
311
345
|
}
|
|
312
346
|
throw _iteratorError2;
|
|
313
347
|
case 35:
|
|
314
|
-
return
|
|
348
|
+
return _context7.finish(32);
|
|
315
349
|
case 36:
|
|
316
|
-
return
|
|
350
|
+
return _context7.finish(27);
|
|
317
351
|
case 37:
|
|
318
352
|
if (result) {
|
|
319
|
-
|
|
353
|
+
_context7.next = 39;
|
|
320
354
|
break;
|
|
321
355
|
}
|
|
322
356
|
throw new Error('File has not been found in the zip archive');
|
|
323
357
|
case 39:
|
|
324
|
-
return
|
|
358
|
+
return _context7.abrupt("return", result);
|
|
325
359
|
case 40:
|
|
326
360
|
case "end":
|
|
327
|
-
return
|
|
361
|
+
return _context7.stop();
|
|
328
362
|
}
|
|
329
|
-
},
|
|
363
|
+
}, _callee7, this, [[9, 23, 27, 37], [28,, 32, 36]]);
|
|
330
364
|
}));
|
|
331
|
-
function getCDFileHeader(
|
|
365
|
+
function getCDFileHeader(_x5) {
|
|
332
366
|
return _getCDFileHeader.apply(this, arguments);
|
|
333
367
|
}
|
|
334
368
|
return getCDFileHeader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zip-filesystem.js","names":["_core","require","_fileProvider","_fileHandleFile","_cdFileHeader","_localFileHeader","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_asyncIterator","iterable","method","async","sync","retry","Symbol","asyncIterator","iterator","call","AsyncFromSyncIterator","TypeError","s","AsyncFromSyncIteratorContinuation","r","Promise","reject","done","resolve","value","then","n","next","prototype","return","_return","ret","throw","_throw","thr","COMPRESSION_METHODS","_2","_asyncToGenerator2","_regenerator","mark","_callee","compressedFile","wrap","_callee$","_context","prev","abrupt","stop","_","_x","ZipFileSystem","file","_classCallCheck2","isBrowser","fileProvider","FileHandleFile","from","Error","isFileProvider","_createClass2","_destroy","_callee2","_callee2$","_context2","sent","destroy","_readdir","_callee3","fileNames","zipCDIterator","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","_step","cdHeader","_callee3$","_context3","zipCDFileHeaderGenerator","fileName","t0","finish","readdir","_stat","_callee4","filename","cdFileHeader","_callee4$","_context4","getCDFileHeader","size","Number","uncompressedSize","stat","_x2","_fetch","_callee5","localFileHeader","compressionHandler","uncompressedFile","response","_callee5$","_context5","parseZipLocalFileHeader","localHeaderOffset","compressionMethod","toString","slice","fileDataOffset","compressedSize","Response","fetch","_x3","_getCDFileHeader","_callee6","result","_iteratorAbruptCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","_callee6$","_context6","_x4","exports"],"sources":["../../../src/filesystems/zip-filesystem.ts"],"sourcesContent":["import {FileSystem, isBrowser} from '@loaders.gl/core';\nimport {FileProvider, isFileProvider} from '../file-provider/file-provider';\nimport {FileHandleFile} from '../file-provider/file-handle-file';\nimport {ZipCDFileHeader, zipCDFileHeaderGenerator} from '../parse-zip/cd-file-header';\nimport {parseZipLocalFileHeader} from '../parse-zip/local-file-header';\n\ntype CompressionHandler = (compressedFile: ArrayBuffer) => Promise<ArrayBuffer>;\n/** Handling different compression types in zip */\nconst COMPRESSION_METHODS: {[key: number]: CompressionHandler} = {\n /** No compression */\n 0: async (compressedFile) => compressedFile\n};\n\n/**\n * FileSystem adapter for a ZIP file\n * Holds FileProvider object that provides random access to archived files\n */\nexport class ZipFileSystem implements FileSystem {\n /** FileProvider instance promise */\n private fileProvider: Promise<FileProvider | null> = Promise.resolve(null);\n\n /**\n * Constructor\n * @param file - instance of FileProvider or file path string\n */\n constructor(file: FileProvider | string) {\n // Try to open file in NodeJS\n if (typeof file === 'string') {\n if (!isBrowser) {\n this.fileProvider = FileHandleFile.from(file);\n } else {\n throw new Error('Cannot open file for random access in a WEB browser');\n }\n } else if (isFileProvider(file)) {\n this.fileProvider = Promise.resolve(file);\n }\n }\n\n /** Clean up resources */\n async destroy() {\n const fileProvider = await this.fileProvider;\n if (fileProvider) {\n fileProvider.destroy();\n }\n }\n\n /**\n * Get file names list from zip archive\n * @returns array of file names\n */\n async readdir(): Promise<string[]> {\n const fileProvider = await this.fileProvider;\n if (!fileProvider) {\n throw new Error('No data detected in the zip archive');\n }\n const fileNames: string[] = [];\n const zipCDIterator = zipCDFileHeaderGenerator(fileProvider);\n for await (const cdHeader of zipCDIterator) {\n fileNames.push(cdHeader.fileName);\n }\n return fileNames;\n }\n\n /**\n * Get file metadata\n * @param filename - name of a file\n * @returns central directory data\n */\n async stat(filename: string): Promise<ZipCDFileHeader & {size: number}> {\n const cdFileHeader = await this.getCDFileHeader(filename);\n return {...cdFileHeader, size: Number(cdFileHeader.uncompressedSize)};\n }\n\n /**\n * Implementation of fetch against this file system\n * @param filename - name of a file\n * @returns - Response with file data\n */\n async fetch(filename: string): Promise<Response> {\n const fileProvider = await this.fileProvider;\n if (!fileProvider) {\n throw new Error('No data detected in the zip archive');\n }\n const cdFileHeader = await this.getCDFileHeader(filename);\n const localFileHeader = await parseZipLocalFileHeader(\n cdFileHeader.localHeaderOffset,\n fileProvider\n );\n if (!localFileHeader) {\n throw new Error('Local file header has not been found in the zip archive`');\n }\n\n const compressionHandler = COMPRESSION_METHODS[localFileHeader.compressionMethod.toString()];\n if (!compressionHandler) {\n throw Error('Only Deflation compression is supported');\n }\n\n const compressedFile = await fileProvider.slice(\n localFileHeader.fileDataOffset,\n localFileHeader.fileDataOffset + localFileHeader.compressedSize\n );\n\n const uncompressedFile = await compressionHandler(compressedFile);\n\n const response = new Response(uncompressedFile);\n return response;\n }\n\n /**\n * Get central directory file header\n * @param filename - name of a file\n * @returns central directory file header\n */\n private async getCDFileHeader(filename: string): Promise<ZipCDFileHeader> {\n const fileProvider = await this.fileProvider;\n if (!fileProvider) {\n throw new Error('No data detected in the zip archive');\n }\n const zipCDIterator = zipCDFileHeaderGenerator(fileProvider);\n let result: ZipCDFileHeader | null = null;\n for await (const cdHeader of zipCDIterator) {\n if (cdHeader.fileName === filename) {\n result = cdHeader;\n break;\n }\n }\n if (!result) {\n throw new Error('File has not been found in the zip archive');\n }\n return result;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"zip-filesystem.js","names":["_core","require","_fileProvider","_fileHandleFile","_cdFileHeader","_localFileHeader","_compression","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_asyncIterator","iterable","method","async","sync","retry","Symbol","asyncIterator","iterator","call","AsyncFromSyncIterator","TypeError","s","AsyncFromSyncIteratorContinuation","r","Promise","reject","done","resolve","value","then","n","next","prototype","return","_return","ret","throw","_throw","thr","COMPRESSION_METHODS","_2","_asyncToGenerator2","_regenerator","mark","_callee","compressedFile","wrap","_callee$","_context","prev","abrupt","stop","_","_x","_3","_callee2","compression","decompressedData","_callee2$","_context2","DeflateCompression","raw","decompress","sent","_x2","ZipFileSystem","file","_classCallCheck2","fileName","isBrowser","fileProvider","FileHandleFile","from","Error","isFileProvider","_createClass2","_destroy","_callee3","_callee3$","_context3","destroy","_readdir","_callee4","fileNames","zipCDIterator","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","_step","cdHeader","_callee4$","_context4","zipCDFileHeaderGenerator","t0","finish","readdir","_stat","_callee5","filename","cdFileHeader","_callee5$","_context5","getCDFileHeader","size","Number","uncompressedSize","stat","_x3","_fetch","_callee6","localFileHeader","compressionHandler","uncompressedFile","response","_callee6$","_context6","parseZipLocalFileHeader","localHeaderOffset","compressionMethod","toString","slice","fileDataOffset","compressedSize","Response","concat","fetch","_x4","_getCDFileHeader","_callee7","result","_iteratorAbruptCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","_callee7$","_context7","_x5","exports"],"sources":["../../../src/filesystems/zip-filesystem.ts"],"sourcesContent":["import {FileSystem, isBrowser} from '@loaders.gl/core';\nimport {FileProvider, isFileProvider} from '../file-provider/file-provider';\nimport {FileHandleFile} from '../file-provider/file-handle-file';\nimport {ZipCDFileHeader, zipCDFileHeaderGenerator} from '../parse-zip/cd-file-header';\nimport {parseZipLocalFileHeader} from '../parse-zip/local-file-header';\nimport {DeflateCompression} from '@loaders.gl/compression';\n\ntype CompressionHandler = (compressedFile: ArrayBuffer) => Promise<ArrayBuffer>;\n/** Handling different compression types in zip */\nconst COMPRESSION_METHODS: {[key: number]: CompressionHandler} = {\n /** No compression */\n 0: async (compressedFile) => compressedFile,\n /** Deflation */\n 8: async (compressedFile) => {\n const compression = new DeflateCompression({raw: true});\n const decompressedData = await compression.decompress(compressedFile);\n return decompressedData;\n }\n};\n\n/**\n * FileSystem adapter for a ZIP file\n * Holds FileProvider object that provides random access to archived files\n */\nexport class ZipFileSystem implements FileSystem {\n /** FileProvider instance promise */\n protected fileProvider: Promise<FileProvider | null> = Promise.resolve(null);\n public fileName?: string;\n\n /**\n * Constructor\n * @param file - instance of FileProvider or file path string\n */\n constructor(file: FileProvider | string) {\n // Try to open file in NodeJS\n if (typeof file === 'string') {\n this.fileName = file;\n if (!isBrowser) {\n this.fileProvider = FileHandleFile.from(file);\n } else {\n throw new Error('Cannot open file for random access in a WEB browser');\n }\n } else if (isFileProvider(file)) {\n this.fileProvider = Promise.resolve(file);\n }\n }\n\n /** Clean up resources */\n async destroy() {\n const fileProvider = await this.fileProvider;\n if (fileProvider) {\n await fileProvider.destroy();\n }\n }\n\n /**\n * Get file names list from zip archive\n * @returns array of file names\n */\n async readdir(): Promise<string[]> {\n const fileProvider = await this.fileProvider;\n if (!fileProvider) {\n throw new Error('No data detected in the zip archive');\n }\n const fileNames: string[] = [];\n const zipCDIterator = zipCDFileHeaderGenerator(fileProvider);\n for await (const cdHeader of zipCDIterator) {\n fileNames.push(cdHeader.fileName);\n }\n return fileNames;\n }\n\n /**\n * Get file metadata\n * @param filename - name of a file\n * @returns central directory data\n */\n async stat(filename: string): Promise<ZipCDFileHeader & {size: number}> {\n const cdFileHeader = await this.getCDFileHeader(filename);\n return {...cdFileHeader, size: Number(cdFileHeader.uncompressedSize)};\n }\n\n /**\n * Implementation of fetch against this file system\n * @param filename - name of a file\n * @returns - Response with file data\n */\n async fetch(filename: string): Promise<Response> {\n const fileProvider = await this.fileProvider;\n if (!fileProvider) {\n throw new Error('No data detected in the zip archive');\n }\n const cdFileHeader = await this.getCDFileHeader(filename);\n const localFileHeader = await parseZipLocalFileHeader(\n cdFileHeader.localHeaderOffset,\n fileProvider\n );\n if (!localFileHeader) {\n throw new Error('Local file header has not been found in the zip archive`');\n }\n\n const compressionHandler = COMPRESSION_METHODS[localFileHeader.compressionMethod.toString()];\n if (!compressionHandler) {\n throw Error('Only Deflation compression is supported');\n }\n\n const compressedFile = await fileProvider.slice(\n localFileHeader.fileDataOffset,\n localFileHeader.fileDataOffset + localFileHeader.compressedSize\n );\n\n const uncompressedFile = await compressionHandler(compressedFile);\n\n const response = new Response(uncompressedFile);\n Object.defineProperty(response, 'url', {value: `${this.fileName || ''}/${filename}`});\n return response;\n }\n\n /**\n * Get central directory file header\n * @param filename - name of a file\n * @returns central directory file header\n */\n private async getCDFileHeader(filename: string): Promise<ZipCDFileHeader> {\n const fileProvider = await this.fileProvider;\n if (!fileProvider) {\n throw new Error('No data detected in the zip archive');\n }\n const zipCDIterator = zipCDFileHeaderGenerator(fileProvider);\n let result: ZipCDFileHeader | null = null;\n for await (const cdHeader of zipCDIterator) {\n if (cdHeader.fileName === filename) {\n result = cdHeader;\n break;\n }\n }\n if (!result) {\n throw new Error('File has not been found in the zip archive');\n }\n return result;\n }\n}\n"],"mappings":"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"}
|
package/dist/es5/index.js
CHANGED
|
@@ -22,6 +22,12 @@ Object.defineProperty(exports, "TarBuilder", {
|
|
|
22
22
|
return _tarBuilder.default;
|
|
23
23
|
}
|
|
24
24
|
});
|
|
25
|
+
Object.defineProperty(exports, "ZipFileSystem", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function get() {
|
|
28
|
+
return _zipFilesystem.ZipFileSystem;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
25
31
|
Object.defineProperty(exports, "ZipLoader", {
|
|
26
32
|
enumerable: true,
|
|
27
33
|
get: function get() {
|
|
@@ -110,4 +116,5 @@ var _localFileHeader = require("./parse-zip/local-file-header");
|
|
|
110
116
|
var _endOfCentralDirectory = require("./parse-zip/end-of-central-directory");
|
|
111
117
|
var _searchFromTheEnd = require("./parse-zip/search-from-the-end");
|
|
112
118
|
var _hashFileUtility = require("./hash-file-utility");
|
|
119
|
+
var _zipFilesystem = require("./filesystems/zip-filesystem");
|
|
113
120
|
//# sourceMappingURL=index.js.map
|
package/dist/es5/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_zipLoader","require","_zipWriter","_tarBuilder","_interopRequireDefault","_fileHandleFile","_dataViewFile","_cdFileHeader","_localFileHeader","_endOfCentralDirectory","_searchFromTheEnd","_hashFileUtility"],"sources":["../../src/index.ts"],"sourcesContent":["export {ZipLoader} from './zip-loader';\nexport {ZipWriter} from './zip-writer';\nexport {default as TarBuilder} from './tar-builder';\n\nexport type {FileProvider} from './file-provider/file-provider';\nexport {FileHandleFile} from './file-provider/file-handle-file';\nexport {DataViewFile} from './file-provider/data-view-file';\n\nexport {\n parseZipCDFileHeader,\n zipCDFileHeaderGenerator,\n signature as cdSignature\n} from './parse-zip/cd-file-header';\nexport {\n parseZipLocalFileHeader,\n signature as localHeaderSignature\n} from './parse-zip/local-file-header';\nexport {parseEoCDRecord} from './parse-zip/end-of-central-directory';\nexport {searchFromTheEnd} from './parse-zip/search-from-the-end';\n\nexport type {HashElement} from './hash-file-utility';\nexport {compareHashes, parseHashFile, findBin, generateHashInfo} from './hash-file-utility';\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_zipLoader","require","_zipWriter","_tarBuilder","_interopRequireDefault","_fileHandleFile","_dataViewFile","_cdFileHeader","_localFileHeader","_endOfCentralDirectory","_searchFromTheEnd","_hashFileUtility","_zipFilesystem"],"sources":["../../src/index.ts"],"sourcesContent":["export {ZipLoader} from './zip-loader';\nexport {ZipWriter} from './zip-writer';\nexport {default as TarBuilder} from './tar-builder';\n\nexport type {FileProvider} from './file-provider/file-provider';\nexport {FileHandleFile} from './file-provider/file-handle-file';\nexport {DataViewFile} from './file-provider/data-view-file';\n\nexport {\n parseZipCDFileHeader,\n zipCDFileHeaderGenerator,\n signature as cdSignature\n} from './parse-zip/cd-file-header';\nexport {\n parseZipLocalFileHeader,\n signature as localHeaderSignature\n} from './parse-zip/local-file-header';\nexport {parseEoCDRecord} from './parse-zip/end-of-central-directory';\nexport {searchFromTheEnd} from './parse-zip/search-from-the-end';\n\nexport type {HashElement} from './hash-file-utility';\nexport {compareHashes, parseHashFile, findBin, generateHashInfo} from './hash-file-utility';\n\nexport {ZipFileSystem} from './filesystems/zip-filesystem';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAC,sBAAA,CAAAH,OAAA;AAGA,IAAAI,eAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;AAEA,IAAAM,aAAA,GAAAN,OAAA;AAKA,IAAAO,gBAAA,GAAAP,OAAA;AAIA,IAAAQ,sBAAA,GAAAR,OAAA;AACA,IAAAS,iBAAA,GAAAT,OAAA;AAGA,IAAAU,gBAAA,GAAAV,OAAA;AAEA,IAAAW,cAAA,GAAAX,OAAA"}
|
package/dist/es5/zip-loader.js
CHANGED
|
@@ -8,7 +8,7 @@ exports._typecheckZipLoader = exports.ZipLoader = void 0;
|
|
|
8
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
10
|
var _jszip = _interopRequireDefault(require("jszip"));
|
|
11
|
-
var VERSION = typeof "4.0.0-alpha.
|
|
11
|
+
var VERSION = typeof "4.0.0-alpha.22" !== 'undefined' ? "4.0.0-alpha.22" : 'latest';
|
|
12
12
|
var ZipLoader = {
|
|
13
13
|
id: 'zip',
|
|
14
14
|
module: 'zip',
|
|
@@ -4,13 +4,23 @@ import { isFileProvider } from '../file-provider/file-provider';
|
|
|
4
4
|
import { FileHandleFile } from '../file-provider/file-handle-file';
|
|
5
5
|
import { zipCDFileHeaderGenerator } from '../parse-zip/cd-file-header';
|
|
6
6
|
import { parseZipLocalFileHeader } from '../parse-zip/local-file-header';
|
|
7
|
+
import { DeflateCompression } from '@loaders.gl/compression';
|
|
7
8
|
const COMPRESSION_METHODS = {
|
|
8
|
-
0: async compressedFile => compressedFile
|
|
9
|
+
0: async compressedFile => compressedFile,
|
|
10
|
+
8: async compressedFile => {
|
|
11
|
+
const compression = new DeflateCompression({
|
|
12
|
+
raw: true
|
|
13
|
+
});
|
|
14
|
+
const decompressedData = await compression.decompress(compressedFile);
|
|
15
|
+
return decompressedData;
|
|
16
|
+
}
|
|
9
17
|
};
|
|
10
18
|
export class ZipFileSystem {
|
|
11
19
|
constructor(file) {
|
|
12
20
|
_defineProperty(this, "fileProvider", Promise.resolve(null));
|
|
21
|
+
_defineProperty(this, "fileName", void 0);
|
|
13
22
|
if (typeof file === 'string') {
|
|
23
|
+
this.fileName = file;
|
|
14
24
|
if (!isBrowser) {
|
|
15
25
|
this.fileProvider = FileHandleFile.from(file);
|
|
16
26
|
} else {
|
|
@@ -23,7 +33,7 @@ export class ZipFileSystem {
|
|
|
23
33
|
async destroy() {
|
|
24
34
|
const fileProvider = await this.fileProvider;
|
|
25
35
|
if (fileProvider) {
|
|
26
|
-
fileProvider.destroy();
|
|
36
|
+
await fileProvider.destroy();
|
|
27
37
|
}
|
|
28
38
|
}
|
|
29
39
|
async readdir() {
|
|
@@ -62,6 +72,9 @@ export class ZipFileSystem {
|
|
|
62
72
|
const compressedFile = await fileProvider.slice(localFileHeader.fileDataOffset, localFileHeader.fileDataOffset + localFileHeader.compressedSize);
|
|
63
73
|
const uncompressedFile = await compressionHandler(compressedFile);
|
|
64
74
|
const response = new Response(uncompressedFile);
|
|
75
|
+
Object.defineProperty(response, 'url', {
|
|
76
|
+
value: "".concat(this.fileName || '', "/").concat(filename)
|
|
77
|
+
});
|
|
65
78
|
return response;
|
|
66
79
|
}
|
|
67
80
|
async getCDFileHeader(filename) {
|