@loaders.gl/zip 4.0.0-alpha.20 → 4.0.0-alpha.21

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.
Files changed (98) hide show
  1. package/dist/dist.min.js +494 -119
  2. package/dist/es5/{parse-zip → file-provider}/data-view-file.js +46 -29
  3. package/dist/es5/file-provider/data-view-file.js.map +1 -0
  4. package/dist/es5/file-provider/file-handle-file.js +234 -0
  5. package/dist/es5/file-provider/file-handle-file.js.map +1 -0
  6. package/dist/es5/file-provider/file-handle.js +101 -0
  7. package/dist/es5/file-provider/file-handle.js.map +1 -0
  8. package/dist/es5/file-provider/file-provider.js +11 -0
  9. package/dist/es5/file-provider/file-provider.js.map +1 -0
  10. package/dist/es5/filesystems/zip-filesystem.js +340 -0
  11. package/dist/es5/filesystems/zip-filesystem.js.map +1 -0
  12. package/dist/es5/hash-file-utility.js +81 -1
  13. package/dist/es5/hash-file-utility.js.map +1 -1
  14. package/dist/es5/index.js +20 -1
  15. package/dist/es5/index.js.map +1 -1
  16. package/dist/es5/parse-zip/cd-file-header.js +58 -16
  17. package/dist/es5/parse-zip/cd-file-header.js.map +1 -1
  18. package/dist/es5/parse-zip/end-of-central-directory.js +10 -12
  19. package/dist/es5/parse-zip/end-of-central-directory.js.map +1 -1
  20. package/dist/es5/parse-zip/local-file-header.js +37 -33
  21. package/dist/es5/parse-zip/local-file-header.js.map +1 -1
  22. package/dist/es5/parse-zip/search-from-the-end.js.map +1 -1
  23. package/dist/es5/zip-loader.js +1 -1
  24. package/dist/esm/{parse-zip → file-provider}/data-view-file.js +1 -0
  25. package/dist/esm/file-provider/data-view-file.js.map +1 -0
  26. package/dist/esm/file-provider/file-handle-file.js +57 -0
  27. package/dist/esm/file-provider/file-handle-file.js.map +1 -0
  28. package/dist/esm/file-provider/file-handle.js +37 -0
  29. package/dist/esm/file-provider/file-handle.js.map +1 -0
  30. package/dist/esm/file-provider/file-provider.js +4 -0
  31. package/dist/esm/file-provider/file-provider.js.map +1 -0
  32. package/dist/esm/filesystems/zip-filesystem.js +86 -0
  33. package/dist/esm/filesystems/zip-filesystem.js.map +1 -0
  34. package/dist/esm/hash-file-utility.js +14 -0
  35. package/dist/esm/hash-file-utility.js.map +1 -1
  36. package/dist/esm/index.js +4 -3
  37. package/dist/esm/index.js.map +1 -1
  38. package/dist/esm/parse-zip/cd-file-header.js +24 -15
  39. package/dist/esm/parse-zip/cd-file-header.js.map +1 -1
  40. package/dist/esm/parse-zip/end-of-central-directory.js +10 -12
  41. package/dist/esm/parse-zip/end-of-central-directory.js.map +1 -1
  42. package/dist/esm/parse-zip/local-file-header.js +16 -15
  43. package/dist/esm/parse-zip/local-file-header.js.map +1 -1
  44. package/dist/esm/parse-zip/search-from-the-end.js.map +1 -1
  45. package/dist/esm/zip-loader.js +1 -1
  46. package/dist/{parse-zip → file-provider}/data-view-file.d.ts +1 -0
  47. package/dist/file-provider/data-view-file.d.ts.map +1 -0
  48. package/dist/{parse-zip → file-provider}/data-view-file.js +2 -0
  49. package/dist/file-provider/file-handle-file.d.ts +53 -0
  50. package/dist/file-provider/file-handle-file.d.ts.map +1 -0
  51. package/dist/file-provider/file-handle-file.js +90 -0
  52. package/dist/file-provider/file-handle.d.ts +40 -0
  53. package/dist/file-provider/file-handle.d.ts.map +1 -0
  54. package/dist/file-provider/file-handle.js +57 -0
  55. package/dist/{parse-zip → file-provider}/file-provider.d.ts +9 -0
  56. package/dist/file-provider/file-provider.d.ts.map +1 -0
  57. package/dist/file-provider/file-provider.js +13 -0
  58. package/dist/filesystems/zip-filesystem.d.ts +44 -0
  59. package/dist/filesystems/zip-filesystem.d.ts.map +1 -0
  60. package/dist/filesystems/zip-filesystem.js +119 -0
  61. package/dist/hash-file-utility.d.ts +7 -0
  62. package/dist/hash-file-utility.d.ts.map +1 -1
  63. package/dist/hash-file-utility.js +24 -1
  64. package/dist/index.d.ts +5 -4
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +7 -3
  67. package/dist/parse-zip/cd-file-header.d.ts +6 -1
  68. package/dist/parse-zip/cd-file-header.d.ts.map +1 -1
  69. package/dist/parse-zip/cd-file-header.js +29 -16
  70. package/dist/parse-zip/end-of-central-directory.d.ts +1 -1
  71. package/dist/parse-zip/end-of-central-directory.d.ts.map +1 -1
  72. package/dist/parse-zip/end-of-central-directory.js +11 -12
  73. package/dist/parse-zip/local-file-header.d.ts +3 -1
  74. package/dist/parse-zip/local-file-header.d.ts.map +1 -1
  75. package/dist/parse-zip/local-file-header.js +17 -15
  76. package/dist/parse-zip/search-from-the-end.d.ts +1 -1
  77. package/dist/parse-zip/search-from-the-end.d.ts.map +1 -1
  78. package/package.json +9 -2
  79. package/src/{parse-zip → file-provider}/data-view-file.ts +3 -0
  80. package/src/file-provider/file-handle-file.ts +114 -0
  81. package/src/file-provider/file-handle.ts +73 -0
  82. package/src/{parse-zip → file-provider}/file-provider.ts +16 -0
  83. package/src/filesystems/zip-filesystem.ts +132 -0
  84. package/src/hash-file-utility.ts +22 -0
  85. package/src/index.ts +10 -4
  86. package/src/parse-zip/cd-file-header.ts +33 -25
  87. package/src/parse-zip/end-of-central-directory.ts +12 -19
  88. package/src/parse-zip/local-file-header.ts +22 -22
  89. package/src/parse-zip/search-from-the-end.ts +1 -1
  90. package/dist/es5/parse-zip/data-view-file.js.map +0 -1
  91. package/dist/es5/parse-zip/file-provider.js +0 -2
  92. package/dist/es5/parse-zip/file-provider.js.map +0 -1
  93. package/dist/esm/parse-zip/data-view-file.js.map +0 -1
  94. package/dist/esm/parse-zip/file-provider.js +0 -2
  95. package/dist/esm/parse-zip/file-provider.js.map +0 -1
  96. package/dist/parse-zip/data-view-file.d.ts.map +0 -1
  97. package/dist/parse-zip/file-provider.d.ts.map +0 -1
  98. package/dist/parse-zip/file-provider.js +0 -2
@@ -0,0 +1,340 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ZipFileSystem = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+ var _core = require("@loaders.gl/core");
14
+ var _fileProvider = require("../file-provider/file-provider");
15
+ var _fileHandleFile = require("../file-provider/file-handle-file");
16
+ var _cdFileHeader = require("../parse-zip/cd-file-header");
17
+ var _localFileHeader = require("../parse-zip/local-file-header");
18
+ 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
+ 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
+ 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"); }
21
+ function AsyncFromSyncIterator(s) { function AsyncFromSyncIteratorContinuation(r) { if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); var done = r.done; return Promise.resolve(r.value).then(function (value) { return { value: value, done: done }; }); } return AsyncFromSyncIterator = function AsyncFromSyncIterator(s) { this.s = s, this.n = s.next; }, AsyncFromSyncIterator.prototype = { s: null, n: null, next: function next() { return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); }, return: function _return(value) { var ret = this.s.return; return void 0 === ret ? Promise.resolve({ value: value, done: !0 }) : AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments)); }, throw: function _throw(value) { var thr = this.s.return; return void 0 === thr ? Promise.reject(value) : AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments)); } }, new AsyncFromSyncIterator(s); }
22
+ var COMPRESSION_METHODS = {
23
+ 0: function () {
24
+ var _2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(compressedFile) {
25
+ return _regenerator.default.wrap(function _callee$(_context) {
26
+ while (1) switch (_context.prev = _context.next) {
27
+ case 0:
28
+ return _context.abrupt("return", compressedFile);
29
+ case 1:
30
+ case "end":
31
+ return _context.stop();
32
+ }
33
+ }, _callee);
34
+ }));
35
+ function _(_x) {
36
+ return _2.apply(this, arguments);
37
+ }
38
+ return _;
39
+ }()
40
+ };
41
+ var ZipFileSystem = function () {
42
+ function ZipFileSystem(file) {
43
+ (0, _classCallCheck2.default)(this, ZipFileSystem);
44
+ (0, _defineProperty2.default)(this, "fileProvider", Promise.resolve(null));
45
+ if (typeof file === 'string') {
46
+ if (!_core.isBrowser) {
47
+ this.fileProvider = _fileHandleFile.FileHandleFile.from(file);
48
+ } else {
49
+ throw new Error('Cannot open file for random access in a WEB browser');
50
+ }
51
+ } else if ((0, _fileProvider.isFileProvider)(file)) {
52
+ this.fileProvider = Promise.resolve(file);
53
+ }
54
+ }
55
+ (0, _createClass2.default)(ZipFileSystem, [{
56
+ key: "destroy",
57
+ value: function () {
58
+ var _destroy = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2() {
59
+ var fileProvider;
60
+ return _regenerator.default.wrap(function _callee2$(_context2) {
61
+ while (1) switch (_context2.prev = _context2.next) {
62
+ case 0:
63
+ _context2.next = 2;
64
+ return this.fileProvider;
65
+ case 2:
66
+ fileProvider = _context2.sent;
67
+ if (fileProvider) {
68
+ fileProvider.destroy();
69
+ }
70
+ case 4:
71
+ case "end":
72
+ return _context2.stop();
73
+ }
74
+ }, _callee2, this);
75
+ }));
76
+ function destroy() {
77
+ return _destroy.apply(this, arguments);
78
+ }
79
+ return destroy;
80
+ }()
81
+ }, {
82
+ key: "readdir",
83
+ value: function () {
84
+ var _readdir = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3() {
85
+ var fileProvider, fileNames, zipCDIterator, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, cdHeader;
86
+ return _regenerator.default.wrap(function _callee3$(_context3) {
87
+ while (1) switch (_context3.prev = _context3.next) {
88
+ case 0:
89
+ _context3.next = 2;
90
+ return this.fileProvider;
91
+ case 2:
92
+ fileProvider = _context3.sent;
93
+ if (fileProvider) {
94
+ _context3.next = 5;
95
+ break;
96
+ }
97
+ throw new Error('No data detected in the zip archive');
98
+ case 5:
99
+ fileNames = [];
100
+ zipCDIterator = (0, _cdFileHeader.zipCDFileHeaderGenerator)(fileProvider);
101
+ _iteratorAbruptCompletion = false;
102
+ _didIteratorError = false;
103
+ _context3.prev = 9;
104
+ _iterator = _asyncIterator(zipCDIterator);
105
+ case 11:
106
+ _context3.next = 13;
107
+ return _iterator.next();
108
+ case 13:
109
+ if (!(_iteratorAbruptCompletion = !(_step = _context3.sent).done)) {
110
+ _context3.next = 19;
111
+ break;
112
+ }
113
+ cdHeader = _step.value;
114
+ fileNames.push(cdHeader.fileName);
115
+ case 16:
116
+ _iteratorAbruptCompletion = false;
117
+ _context3.next = 11;
118
+ break;
119
+ case 19:
120
+ _context3.next = 25;
121
+ break;
122
+ case 21:
123
+ _context3.prev = 21;
124
+ _context3.t0 = _context3["catch"](9);
125
+ _didIteratorError = true;
126
+ _iteratorError = _context3.t0;
127
+ case 25:
128
+ _context3.prev = 25;
129
+ _context3.prev = 26;
130
+ if (!(_iteratorAbruptCompletion && _iterator.return != null)) {
131
+ _context3.next = 30;
132
+ break;
133
+ }
134
+ _context3.next = 30;
135
+ return _iterator.return();
136
+ case 30:
137
+ _context3.prev = 30;
138
+ if (!_didIteratorError) {
139
+ _context3.next = 33;
140
+ break;
141
+ }
142
+ throw _iteratorError;
143
+ case 33:
144
+ return _context3.finish(30);
145
+ case 34:
146
+ return _context3.finish(25);
147
+ case 35:
148
+ return _context3.abrupt("return", fileNames);
149
+ case 36:
150
+ case "end":
151
+ return _context3.stop();
152
+ }
153
+ }, _callee3, this, [[9, 21, 25, 35], [26,, 30, 34]]);
154
+ }));
155
+ function readdir() {
156
+ return _readdir.apply(this, arguments);
157
+ }
158
+ return readdir;
159
+ }()
160
+ }, {
161
+ key: "stat",
162
+ value: function () {
163
+ var _stat = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(filename) {
164
+ var cdFileHeader;
165
+ return _regenerator.default.wrap(function _callee4$(_context4) {
166
+ while (1) switch (_context4.prev = _context4.next) {
167
+ case 0:
168
+ _context4.next = 2;
169
+ return this.getCDFileHeader(filename);
170
+ case 2:
171
+ cdFileHeader = _context4.sent;
172
+ return _context4.abrupt("return", _objectSpread(_objectSpread({}, cdFileHeader), {}, {
173
+ size: Number(cdFileHeader.uncompressedSize)
174
+ }));
175
+ case 4:
176
+ case "end":
177
+ return _context4.stop();
178
+ }
179
+ }, _callee4, this);
180
+ }));
181
+ function stat(_x2) {
182
+ return _stat.apply(this, arguments);
183
+ }
184
+ return stat;
185
+ }()
186
+ }, {
187
+ key: "fetch",
188
+ value: function () {
189
+ var _fetch = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(filename) {
190
+ var fileProvider, cdFileHeader, localFileHeader, compressionHandler, compressedFile, uncompressedFile, response;
191
+ return _regenerator.default.wrap(function _callee5$(_context5) {
192
+ while (1) switch (_context5.prev = _context5.next) {
193
+ case 0:
194
+ _context5.next = 2;
195
+ return this.fileProvider;
196
+ case 2:
197
+ fileProvider = _context5.sent;
198
+ if (fileProvider) {
199
+ _context5.next = 5;
200
+ break;
201
+ }
202
+ throw new Error('No data detected in the zip archive');
203
+ case 5:
204
+ _context5.next = 7;
205
+ return this.getCDFileHeader(filename);
206
+ case 7:
207
+ cdFileHeader = _context5.sent;
208
+ _context5.next = 10;
209
+ return (0, _localFileHeader.parseZipLocalFileHeader)(cdFileHeader.localHeaderOffset, fileProvider);
210
+ case 10:
211
+ localFileHeader = _context5.sent;
212
+ if (localFileHeader) {
213
+ _context5.next = 13;
214
+ break;
215
+ }
216
+ throw new Error('Local file header has not been found in the zip archive`');
217
+ case 13:
218
+ compressionHandler = COMPRESSION_METHODS[localFileHeader.compressionMethod.toString()];
219
+ if (compressionHandler) {
220
+ _context5.next = 16;
221
+ break;
222
+ }
223
+ throw Error('Only Deflation compression is supported');
224
+ case 16:
225
+ _context5.next = 18;
226
+ return fileProvider.slice(localFileHeader.fileDataOffset, localFileHeader.fileDataOffset + localFileHeader.compressedSize);
227
+ case 18:
228
+ compressedFile = _context5.sent;
229
+ _context5.next = 21;
230
+ return compressionHandler(compressedFile);
231
+ case 21:
232
+ uncompressedFile = _context5.sent;
233
+ response = new Response(uncompressedFile);
234
+ return _context5.abrupt("return", response);
235
+ case 24:
236
+ case "end":
237
+ return _context5.stop();
238
+ }
239
+ }, _callee5, this);
240
+ }));
241
+ function fetch(_x3) {
242
+ return _fetch.apply(this, arguments);
243
+ }
244
+ return fetch;
245
+ }()
246
+ }, {
247
+ key: "getCDFileHeader",
248
+ value: function () {
249
+ var _getCDFileHeader = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6(filename) {
250
+ var fileProvider, zipCDIterator, result, _iteratorAbruptCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, cdHeader;
251
+ return _regenerator.default.wrap(function _callee6$(_context6) {
252
+ while (1) switch (_context6.prev = _context6.next) {
253
+ case 0:
254
+ _context6.next = 2;
255
+ return this.fileProvider;
256
+ case 2:
257
+ fileProvider = _context6.sent;
258
+ if (fileProvider) {
259
+ _context6.next = 5;
260
+ break;
261
+ }
262
+ throw new Error('No data detected in the zip archive');
263
+ case 5:
264
+ zipCDIterator = (0, _cdFileHeader.zipCDFileHeaderGenerator)(fileProvider);
265
+ result = null;
266
+ _iteratorAbruptCompletion2 = false;
267
+ _didIteratorError2 = false;
268
+ _context6.prev = 9;
269
+ _iterator2 = _asyncIterator(zipCDIterator);
270
+ case 11:
271
+ _context6.next = 13;
272
+ return _iterator2.next();
273
+ case 13:
274
+ if (!(_iteratorAbruptCompletion2 = !(_step2 = _context6.sent).done)) {
275
+ _context6.next = 21;
276
+ break;
277
+ }
278
+ cdHeader = _step2.value;
279
+ if (!(cdHeader.fileName === filename)) {
280
+ _context6.next = 18;
281
+ break;
282
+ }
283
+ result = cdHeader;
284
+ return _context6.abrupt("break", 21);
285
+ case 18:
286
+ _iteratorAbruptCompletion2 = false;
287
+ _context6.next = 11;
288
+ break;
289
+ case 21:
290
+ _context6.next = 27;
291
+ break;
292
+ case 23:
293
+ _context6.prev = 23;
294
+ _context6.t0 = _context6["catch"](9);
295
+ _didIteratorError2 = true;
296
+ _iteratorError2 = _context6.t0;
297
+ case 27:
298
+ _context6.prev = 27;
299
+ _context6.prev = 28;
300
+ if (!(_iteratorAbruptCompletion2 && _iterator2.return != null)) {
301
+ _context6.next = 32;
302
+ break;
303
+ }
304
+ _context6.next = 32;
305
+ return _iterator2.return();
306
+ case 32:
307
+ _context6.prev = 32;
308
+ if (!_didIteratorError2) {
309
+ _context6.next = 35;
310
+ break;
311
+ }
312
+ throw _iteratorError2;
313
+ case 35:
314
+ return _context6.finish(32);
315
+ case 36:
316
+ return _context6.finish(27);
317
+ case 37:
318
+ if (result) {
319
+ _context6.next = 39;
320
+ break;
321
+ }
322
+ throw new Error('File has not been found in the zip archive');
323
+ case 39:
324
+ return _context6.abrupt("return", result);
325
+ case 40:
326
+ case "end":
327
+ return _context6.stop();
328
+ }
329
+ }, _callee6, this, [[9, 23, 27, 37], [28,, 32, 36]]);
330
+ }));
331
+ function getCDFileHeader(_x4) {
332
+ return _getCDFileHeader.apply(this, arguments);
333
+ }
334
+ return getCDFileHeader;
335
+ }()
336
+ }]);
337
+ return ZipFileSystem;
338
+ }();
339
+ exports.ZipFileSystem = ZipFileSystem;
340
+ //# sourceMappingURL=zip-filesystem.js.map
@@ -0,0 +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,9 +1,16 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
- exports.parseHashFile = exports.findBin = exports.compareHashes = void 0;
7
+ exports.parseHashFile = exports.generateHashInfo = exports.findBin = exports.compareHashes = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _md = _interopRequireDefault(require("md5"));
11
+ var _cdFileHeader = require("./parse-zip/cd-file-header");
12
+ 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"); }
13
+ function AsyncFromSyncIterator(s) { function AsyncFromSyncIteratorContinuation(r) { if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); var done = r.done; return Promise.resolve(r.value).then(function (value) { return { value: value, done: done }; }); } return AsyncFromSyncIterator = function AsyncFromSyncIterator(s) { this.s = s, this.n = s.next; }, AsyncFromSyncIterator.prototype = { s: null, n: null, next: function next() { return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); }, return: function _return(value) { var ret = this.s.return; return void 0 === ret ? Promise.resolve({ value: value, done: !0 }) : AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments)); }, throw: function _throw(value) { var thr = this.s.return; return void 0 === thr ? Promise.reject(value) : AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments)); } }, new AsyncFromSyncIterator(s); }
7
14
  var compareHashes = function compareHashes(hash1, hash2) {
8
15
  var h1 = new BigUint64Array(hash1.buffer, hash1.byteOffset, 2);
9
16
  var h2 = new BigUint64Array(hash2.buffer, hash2.byteOffset, 2);
@@ -47,4 +54,77 @@ var findBin = function findBin(hashToSearch, hashArray) {
47
54
  return undefined;
48
55
  };
49
56
  exports.findBin = findBin;
57
+ var generateHashInfo = function () {
58
+ var _ref = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(fileProvider) {
59
+ var zipCDIterator, hashInfo, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, cdHeader;
60
+ return _regenerator.default.wrap(function _callee$(_context) {
61
+ while (1) switch (_context.prev = _context.next) {
62
+ case 0:
63
+ zipCDIterator = (0, _cdFileHeader.zipCDFileHeaderGenerator)(fileProvider);
64
+ hashInfo = [];
65
+ _iteratorAbruptCompletion = false;
66
+ _didIteratorError = false;
67
+ _context.prev = 4;
68
+ _iterator = _asyncIterator(zipCDIterator);
69
+ case 6:
70
+ _context.next = 8;
71
+ return _iterator.next();
72
+ case 8:
73
+ if (!(_iteratorAbruptCompletion = !(_step = _context.sent).done)) {
74
+ _context.next = 14;
75
+ break;
76
+ }
77
+ cdHeader = _step.value;
78
+ hashInfo.push({
79
+ hash: Buffer.from((0, _md.default)(cdHeader.fileName.split('\\').join('/').toLocaleLowerCase()), 'hex'),
80
+ offset: cdHeader.localHeaderOffset
81
+ });
82
+ case 11:
83
+ _iteratorAbruptCompletion = false;
84
+ _context.next = 6;
85
+ break;
86
+ case 14:
87
+ _context.next = 20;
88
+ break;
89
+ case 16:
90
+ _context.prev = 16;
91
+ _context.t0 = _context["catch"](4);
92
+ _didIteratorError = true;
93
+ _iteratorError = _context.t0;
94
+ case 20:
95
+ _context.prev = 20;
96
+ _context.prev = 21;
97
+ if (!(_iteratorAbruptCompletion && _iterator.return != null)) {
98
+ _context.next = 25;
99
+ break;
100
+ }
101
+ _context.next = 25;
102
+ return _iterator.return();
103
+ case 25:
104
+ _context.prev = 25;
105
+ if (!_didIteratorError) {
106
+ _context.next = 28;
107
+ break;
108
+ }
109
+ throw _iteratorError;
110
+ case 28:
111
+ return _context.finish(25);
112
+ case 29:
113
+ return _context.finish(20);
114
+ case 30:
115
+ hashInfo.sort(function (a, b) {
116
+ return compareHashes(a.hash, b.hash);
117
+ });
118
+ return _context.abrupt("return", hashInfo);
119
+ case 32:
120
+ case "end":
121
+ return _context.stop();
122
+ }
123
+ }, _callee, null, [[4, 16, 20, 30], [21,, 25, 29]]);
124
+ }));
125
+ return function generateHashInfo(_x) {
126
+ return _ref.apply(this, arguments);
127
+ };
128
+ }();
129
+ exports.generateHashInfo = generateHashInfo;
50
130
  //# sourceMappingURL=hash-file-utility.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hash-file-utility.js","names":["compareHashes","hash1","hash2","h1","BigUint64Array","buffer","byteOffset","h2","diff","exports","parseHashFile","hashFile","hashFileBuffer","Buffer","from","hashArray","i","byteLength","offsetBuffer","DataView","slice","offset","getBigUint64","push","hash","subarray","findBin","hashToSearch","lowerBorder","upperBorder","length","middle","Math","floor","value","undefined"],"sources":["../../src/hash-file-utility.ts"],"sourcesContent":["/** Element of hash array */\nexport type HashElement = {\n /** File name hash */\n hash: Buffer;\n /** File offset in the archive */\n offset: bigint;\n};\n\n/**\n * Comparing md5 hashes according to https://github.com/Esri/i3s-spec/blob/master/docs/2.0/slpk_hashtable.pcsl.md step 5\n * @param hash1 hash to compare\n * @param hash2 hash to compare\n * @returns -1 if hash1 < hash2, 0 of hash1 === hash2, 1 if hash1 > hash2\n */\nexport const compareHashes = (hash1: Buffer, hash2: Buffer): number => {\n const h1 = new BigUint64Array(hash1.buffer, hash1.byteOffset, 2);\n const h2 = new BigUint64Array(hash2.buffer, hash2.byteOffset, 2);\n\n const diff = h1[0] === h2[0] ? h1[1] - h2[1] : h1[0] - h2[0];\n\n if (diff < 0n) {\n return -1;\n } else if (diff === 0n) {\n return 0;\n }\n return 1;\n};\n\n/**\n * Reads hash file from buffer and returns it in ready-to-use form\n * @param hashFile - bufer containing hash file\n * @returns Array containing file info\n */\nexport const parseHashFile = (hashFile: ArrayBuffer): HashElement[] => {\n const hashFileBuffer = Buffer.from(hashFile);\n const hashArray: HashElement[] = [];\n for (let i = 0; i < hashFileBuffer.buffer.byteLength; i = i + 24) {\n const offsetBuffer = new DataView(\n hashFileBuffer.buffer.slice(\n hashFileBuffer.byteOffset + i + 16,\n hashFileBuffer.byteOffset + i + 24\n )\n );\n const offset = offsetBuffer.getBigUint64(offsetBuffer.byteOffset, true);\n hashArray.push({\n hash: Buffer.from(\n hashFileBuffer.subarray(hashFileBuffer.byteOffset + i, hashFileBuffer.byteOffset + i + 16)\n ),\n offset\n });\n }\n return hashArray;\n};\n\n/**\n * Binary search in the hash info\n * @param hashToSearch hash that we need to find\n * @returns required hash element or undefined if not found\n */\nexport const findBin = (\n hashToSearch: Buffer,\n hashArray: HashElement[]\n): HashElement | undefined => {\n let lowerBorder = 0;\n let upperBorder = hashArray.length;\n\n while (upperBorder - lowerBorder > 1) {\n const middle = lowerBorder + Math.floor((upperBorder - lowerBorder) / 2);\n const value = compareHashes(hashArray[middle].hash, hashToSearch);\n if (value === 0) {\n return hashArray[middle];\n } else if (value < 0) {\n lowerBorder = middle;\n } else {\n upperBorder = middle;\n }\n }\n return undefined;\n};\n"],"mappings":";;;;;;AAcO,IAAMA,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,KAAa,EAAEC,KAAa,EAAa;EACrE,IAAMC,EAAE,GAAG,IAAIC,cAAc,CAACH,KAAK,CAACI,MAAM,EAAEJ,KAAK,CAACK,UAAU,EAAE,CAAC,CAAC;EAChE,IAAMC,EAAE,GAAG,IAAIH,cAAc,CAACF,KAAK,CAACG,MAAM,EAAEH,KAAK,CAACI,UAAU,EAAE,CAAC,CAAC;EAEhE,IAAME,IAAI,GAAGL,EAAE,CAAC,CAAC,CAAC,KAAKI,EAAE,CAAC,CAAC,CAAC,GAAGJ,EAAE,CAAC,CAAC,CAAC,GAAGI,EAAE,CAAC,CAAC,CAAC,GAAGJ,EAAE,CAAC,CAAC,CAAC,GAAGI,EAAE,CAAC,CAAC,CAAC;EAE5D,IAAIC,IAAI,GAAG,EAAE,EAAE;IACb,OAAO,CAAC,CAAC;EACX,CAAC,MAAM,IAAIA,IAAI,KAAK,EAAE,EAAE;IACtB,OAAO,CAAC;EACV;EACA,OAAO,CAAC;AACV,CAAC;AAACC,OAAA,CAAAT,aAAA,GAAAA,aAAA;AAOK,IAAMU,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,QAAqB,EAAoB;EACrE,IAAMC,cAAc,GAAGC,MAAM,CAACC,IAAI,CAACH,QAAQ,CAAC;EAC5C,IAAMI,SAAwB,GAAG,EAAE;EACnC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,cAAc,CAACP,MAAM,CAACY,UAAU,EAAED,CAAC,GAAGA,CAAC,GAAG,EAAE,EAAE;IAChE,IAAME,YAAY,GAAG,IAAIC,QAAQ,CAC/BP,cAAc,CAACP,MAAM,CAACe,KAAK,CACzBR,cAAc,CAACN,UAAU,GAAGU,CAAC,GAAG,EAAE,EAClCJ,cAAc,CAACN,UAAU,GAAGU,CAAC,GAAG,EAClC,CACF,CAAC;IACD,IAAMK,MAAM,GAAGH,YAAY,CAACI,YAAY,CAACJ,YAAY,CAACZ,UAAU,EAAE,IAAI,CAAC;IACvES,SAAS,CAACQ,IAAI,CAAC;MACbC,IAAI,EAAEX,MAAM,CAACC,IAAI,CACfF,cAAc,CAACa,QAAQ,CAACb,cAAc,CAACN,UAAU,GAAGU,CAAC,EAAEJ,cAAc,CAACN,UAAU,GAAGU,CAAC,GAAG,EAAE,CAC3F,CAAC;MACDK,MAAM,EAANA;IACF,CAAC,CAAC;EACJ;EACA,OAAON,SAAS;AAClB,CAAC;AAACN,OAAA,CAAAC,aAAA,GAAAA,aAAA;AAOK,IAAMgB,OAAO,GAAG,SAAVA,OAAOA,CAClBC,YAAoB,EACpBZ,SAAwB,EACI;EAC5B,IAAIa,WAAW,GAAG,CAAC;EACnB,IAAIC,WAAW,GAAGd,SAAS,CAACe,MAAM;EAElC,OAAOD,WAAW,GAAGD,WAAW,GAAG,CAAC,EAAE;IACpC,IAAMG,MAAM,GAAGH,WAAW,GAAGI,IAAI,CAACC,KAAK,CAAC,CAACJ,WAAW,GAAGD,WAAW,IAAI,CAAC,CAAC;IACxE,IAAMM,KAAK,GAAGlC,aAAa,CAACe,SAAS,CAACgB,MAAM,CAAC,CAACP,IAAI,EAAEG,YAAY,CAAC;IACjE,IAAIO,KAAK,KAAK,CAAC,EAAE;MACf,OAAOnB,SAAS,CAACgB,MAAM,CAAC;IAC1B,CAAC,MAAM,IAAIG,KAAK,GAAG,CAAC,EAAE;MACpBN,WAAW,GAAGG,MAAM;IACtB,CAAC,MAAM;MACLF,WAAW,GAAGE,MAAM;IACtB;EACF;EACA,OAAOI,SAAS;AAClB,CAAC;AAAC1B,OAAA,CAAAiB,OAAA,GAAAA,OAAA"}
1
+ {"version":3,"file":"hash-file-utility.js","names":["_md","_interopRequireDefault","require","_cdFileHeader","_asyncIterator","iterable","method","async","sync","retry","Symbol","asyncIterator","iterator","call","AsyncFromSyncIterator","TypeError","s","AsyncFromSyncIteratorContinuation","r","Object","Promise","reject","done","resolve","value","then","n","next","prototype","apply","arguments","return","_return","ret","throw","_throw","thr","compareHashes","hash1","hash2","h1","BigUint64Array","buffer","byteOffset","h2","diff","exports","parseHashFile","hashFile","hashFileBuffer","Buffer","from","hashArray","i","byteLength","offsetBuffer","DataView","slice","offset","getBigUint64","push","hash","subarray","findBin","hashToSearch","lowerBorder","upperBorder","length","middle","Math","floor","undefined","generateHashInfo","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","fileProvider","zipCDIterator","hashInfo","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","_step","cdHeader","wrap","_callee$","_context","prev","zipCDFileHeaderGenerator","sent","md5","fileName","split","join","toLocaleLowerCase","localHeaderOffset","t0","finish","sort","a","b","abrupt","stop","_x"],"sources":["../../src/hash-file-utility.ts"],"sourcesContent":["import md5 from 'md5';\nimport {zipCDFileHeaderGenerator} from './parse-zip/cd-file-header';\nimport {FileProvider} from './file-provider/file-provider';\n\n/** Element of hash array */\nexport type HashElement = {\n /** File name hash */\n hash: Buffer;\n /** File offset in the archive */\n offset: bigint;\n};\n\n/**\n * Comparing md5 hashes according to https://github.com/Esri/i3s-spec/blob/master/docs/2.0/slpk_hashtable.pcsl.md step 5\n * @param hash1 hash to compare\n * @param hash2 hash to compare\n * @returns -1 if hash1 < hash2, 0 of hash1 === hash2, 1 if hash1 > hash2\n */\nexport const compareHashes = (hash1: Buffer, hash2: Buffer): number => {\n const h1 = new BigUint64Array(hash1.buffer, hash1.byteOffset, 2);\n const h2 = new BigUint64Array(hash2.buffer, hash2.byteOffset, 2);\n\n const diff = h1[0] === h2[0] ? h1[1] - h2[1] : h1[0] - h2[0];\n\n if (diff < 0n) {\n return -1;\n } else if (diff === 0n) {\n return 0;\n }\n return 1;\n};\n\n/**\n * Reads hash file from buffer and returns it in ready-to-use form\n * @param hashFile - bufer containing hash file\n * @returns Array containing file info\n */\nexport const parseHashFile = (hashFile: ArrayBuffer): HashElement[] => {\n const hashFileBuffer = Buffer.from(hashFile);\n const hashArray: HashElement[] = [];\n for (let i = 0; i < hashFileBuffer.buffer.byteLength; i = i + 24) {\n const offsetBuffer = new DataView(\n hashFileBuffer.buffer.slice(\n hashFileBuffer.byteOffset + i + 16,\n hashFileBuffer.byteOffset + i + 24\n )\n );\n const offset = offsetBuffer.getBigUint64(offsetBuffer.byteOffset, true);\n hashArray.push({\n hash: Buffer.from(\n hashFileBuffer.subarray(hashFileBuffer.byteOffset + i, hashFileBuffer.byteOffset + i + 16)\n ),\n offset\n });\n }\n return hashArray;\n};\n\n/**\n * Binary search in the hash info\n * @param hashToSearch hash that we need to find\n * @returns required hash element or undefined if not found\n */\nexport const findBin = (\n hashToSearch: Buffer,\n hashArray: HashElement[]\n): HashElement | undefined => {\n let lowerBorder = 0;\n let upperBorder = hashArray.length;\n\n while (upperBorder - lowerBorder > 1) {\n const middle = lowerBorder + Math.floor((upperBorder - lowerBorder) / 2);\n const value = compareHashes(hashArray[middle].hash, hashToSearch);\n if (value === 0) {\n return hashArray[middle];\n } else if (value < 0) {\n lowerBorder = middle;\n } else {\n upperBorder = middle;\n }\n }\n return undefined;\n};\n\n/**\n * generates hash info from central directory\n * @param fileProvider - provider of the archive\n * @returns ready to use hash info\n */\nexport const generateHashInfo = async (fileProvider: FileProvider): Promise<HashElement[]> => {\n const zipCDIterator = zipCDFileHeaderGenerator(fileProvider);\n const hashInfo: HashElement[] = [];\n for await (const cdHeader of zipCDIterator) {\n hashInfo.push({\n hash: Buffer.from(md5(cdHeader.fileName.split('\\\\').join('/').toLocaleLowerCase()), 'hex'),\n offset: cdHeader.localHeaderOffset\n });\n }\n hashInfo.sort((a, b) => compareHashes(a.hash, b.hash));\n return hashInfo;\n};\n"],"mappings":"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"}
package/dist/es5/index.js CHANGED
@@ -10,6 +10,12 @@ Object.defineProperty(exports, "DataViewFile", {
10
10
  return _dataViewFile.DataViewFile;
11
11
  }
12
12
  });
13
+ Object.defineProperty(exports, "FileHandleFile", {
14
+ enumerable: true,
15
+ get: function get() {
16
+ return _fileHandleFile.FileHandleFile;
17
+ }
18
+ });
13
19
  Object.defineProperty(exports, "TarBuilder", {
14
20
  enumerable: true,
15
21
  get: function get() {
@@ -46,6 +52,12 @@ Object.defineProperty(exports, "findBin", {
46
52
  return _hashFileUtility.findBin;
47
53
  }
48
54
  });
55
+ Object.defineProperty(exports, "generateHashInfo", {
56
+ enumerable: true,
57
+ get: function get() {
58
+ return _hashFileUtility.generateHashInfo;
59
+ }
60
+ });
49
61
  Object.defineProperty(exports, "localHeaderSignature", {
50
62
  enumerable: true,
51
63
  get: function get() {
@@ -82,13 +94,20 @@ Object.defineProperty(exports, "searchFromTheEnd", {
82
94
  return _searchFromTheEnd.searchFromTheEnd;
83
95
  }
84
96
  });
97
+ Object.defineProperty(exports, "zipCDFileHeaderGenerator", {
98
+ enumerable: true,
99
+ get: function get() {
100
+ return _cdFileHeader.zipCDFileHeaderGenerator;
101
+ }
102
+ });
85
103
  var _zipLoader = require("./zip-loader");
86
104
  var _zipWriter = require("./zip-writer");
87
105
  var _tarBuilder = _interopRequireDefault(require("./tar-builder"));
106
+ var _fileHandleFile = require("./file-provider/file-handle-file");
107
+ var _dataViewFile = require("./file-provider/data-view-file");
88
108
  var _cdFileHeader = require("./parse-zip/cd-file-header");
89
109
  var _localFileHeader = require("./parse-zip/local-file-header");
90
110
  var _endOfCentralDirectory = require("./parse-zip/end-of-central-directory");
91
111
  var _searchFromTheEnd = require("./parse-zip/search-from-the-end");
92
- var _dataViewFile = require("./parse-zip/data-view-file");
93
112
  var _hashFileUtility = require("./hash-file-utility");
94
113
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_zipLoader","require","_zipWriter","_tarBuilder","_interopRequireDefault","_cdFileHeader","_localFileHeader","_endOfCentralDirectory","_searchFromTheEnd","_dataViewFile","_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 './parse-zip/file-provider';\nexport {parseZipCDFileHeader, signature as cdSignature} 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';\nexport {DataViewFile} from './parse-zip/data-view-file';\n\nexport type {HashElement} from './hash-file-utility';\nexport {compareHashes, parseHashFile, findBin} from './hash-file-utility';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAC,sBAAA,CAAAH,OAAA;AAGA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,gBAAA,GAAAL,OAAA;AAIA,IAAAM,sBAAA,GAAAN,OAAA;AACA,IAAAO,iBAAA,GAAAP,OAAA;AACA,IAAAQ,aAAA,GAAAR,OAAA;AAGA,IAAAS,gBAAA,GAAAT,OAAA"}
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}