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

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