@loaders.gl/zip 4.4.0-alpha.1 → 4.4.0-alpha.9

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 (71) hide show
  1. package/dist/dist.dev.js +275 -248
  2. package/dist/dist.min.js +2 -2
  3. package/dist/filesystems/IndexedArchive.d.ts +4 -4
  4. package/dist/filesystems/IndexedArchive.d.ts.map +1 -1
  5. package/dist/filesystems/IndexedArchive.js +6 -5
  6. package/dist/filesystems/IndexedArchive.js.map +1 -0
  7. package/dist/filesystems/zip-filesystem.d.ts +7 -6
  8. package/dist/filesystems/zip-filesystem.d.ts.map +1 -1
  9. package/dist/filesystems/zip-filesystem.js +25 -22
  10. package/dist/filesystems/zip-filesystem.js.map +1 -0
  11. package/dist/hash-file-utility.d.ts +3 -3
  12. package/dist/hash-file-utility.d.ts.map +1 -1
  13. package/dist/hash-file-utility.js +2 -1
  14. package/dist/hash-file-utility.js.map +1 -0
  15. package/dist/index.cjs +181 -82
  16. package/dist/index.cjs.map +4 -4
  17. package/dist/index.d.ts +1 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +2 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/lib/tar/header.js +1 -0
  22. package/dist/lib/tar/header.js.map +1 -0
  23. package/dist/lib/tar/tar.js +1 -0
  24. package/dist/lib/tar/tar.js.map +1 -0
  25. package/dist/lib/tar/types.js +1 -0
  26. package/dist/lib/tar/types.js.map +1 -0
  27. package/dist/lib/tar/utils.js +1 -0
  28. package/dist/lib/tar/utils.js.map +1 -0
  29. package/dist/parse-zip/cd-file-header.d.ts +4 -4
  30. package/dist/parse-zip/cd-file-header.d.ts.map +1 -1
  31. package/dist/parse-zip/cd-file-header.js +9 -6
  32. package/dist/parse-zip/cd-file-header.js.map +1 -0
  33. package/dist/parse-zip/end-of-central-directory.d.ts +3 -3
  34. package/dist/parse-zip/end-of-central-directory.d.ts.map +1 -1
  35. package/dist/parse-zip/end-of-central-directory.js +13 -11
  36. package/dist/parse-zip/end-of-central-directory.js.map +1 -0
  37. package/dist/parse-zip/local-file-header.d.ts +2 -2
  38. package/dist/parse-zip/local-file-header.d.ts.map +1 -1
  39. package/dist/parse-zip/local-file-header.js +5 -3
  40. package/dist/parse-zip/local-file-header.js.map +1 -0
  41. package/dist/parse-zip/readable-file-utils.d.ts +34 -0
  42. package/dist/parse-zip/readable-file-utils.d.ts.map +1 -0
  43. package/dist/parse-zip/readable-file-utils.js +111 -0
  44. package/dist/parse-zip/readable-file-utils.js.map +1 -0
  45. package/dist/parse-zip/search-from-the-end.d.ts +2 -2
  46. package/dist/parse-zip/search-from-the-end.d.ts.map +1 -1
  47. package/dist/parse-zip/search-from-the-end.js +7 -8
  48. package/dist/parse-zip/search-from-the-end.js.map +1 -0
  49. package/dist/parse-zip/zip-composition.d.ts.map +1 -1
  50. package/dist/parse-zip/zip-composition.js +16 -8
  51. package/dist/parse-zip/zip-composition.js.map +1 -0
  52. package/dist/parse-zip/zip64-info-generation.js +1 -0
  53. package/dist/parse-zip/zip64-info-generation.js.map +1 -0
  54. package/dist/tar-builder.js +1 -0
  55. package/dist/tar-builder.js.map +1 -0
  56. package/dist/zip-loader.js +2 -1
  57. package/dist/zip-loader.js.map +1 -0
  58. package/dist/zip-writer.js +3 -2
  59. package/dist/zip-writer.js.map +1 -0
  60. package/package.json +6 -6
  61. package/src/filesystems/IndexedArchive.ts +6 -10
  62. package/src/filesystems/zip-filesystem.ts +26 -28
  63. package/src/hash-file-utility.ts +4 -7
  64. package/src/index.ts +5 -0
  65. package/src/parse-zip/cd-file-header.ts +18 -16
  66. package/src/parse-zip/end-of-central-directory.ts +16 -17
  67. package/src/parse-zip/local-file-header.ts +8 -9
  68. package/src/parse-zip/readable-file-utils.ts +134 -0
  69. package/src/parse-zip/search-from-the-end.ts +8 -10
  70. package/src/parse-zip/zip-composition.ts +25 -18
  71. package/src/zip-writer.ts +1 -1
@@ -1,9 +1,10 @@
1
1
  // loaders.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- import { DataViewFile, compareArrayBuffers, concatenateArrayBuffers } from '@loaders.gl/loader-utils';
4
+ import { compareArrayBuffers, concatenateArrayBuffers } from '@loaders.gl/loader-utils';
5
5
  import { parseEoCDRecord } from "./end-of-central-directory.js";
6
6
  import { createZip64Info, setFieldToNumber } from "./zip64-info-generation.js";
7
+ import { DataViewReadableFile, getReadableFileSize, readDataView, readRange } from "./readable-file-utils.js";
7
8
  // offsets accroding to https://en.wikipedia.org/wiki/ZIP_(file_format)
8
9
  const CD_COMPRESSED_SIZE_OFFSET = 20;
9
10
  const CD_UNCOMPRESSED_SIZE_OFFSET = 24;
@@ -20,10 +21,11 @@ export const signature = new Uint8Array([0x50, 0x4b, 0x01, 0x02]);
20
21
  * @returns Info from the header
21
22
  */
22
23
  export const parseZipCDFileHeader = async (headerOffset, file) => {
23
- if (headerOffset >= file.length) {
24
+ const fileLength = await getReadableFileSize(file);
25
+ if (headerOffset >= fileLength) {
24
26
  return null;
25
27
  }
26
- const mainHeader = new DataView(await file.slice(headerOffset, headerOffset + CD_FILE_NAME_OFFSET));
28
+ const mainHeader = await readDataView(file, headerOffset, headerOffset + CD_FILE_NAME_OFFSET);
27
29
  const magicBytes = mainHeader.buffer.slice(0, 4);
28
30
  if (!compareArrayBuffers(magicBytes, signature.buffer)) {
29
31
  return null;
@@ -33,7 +35,7 @@ export const parseZipCDFileHeader = async (headerOffset, file) => {
33
35
  const extraFieldLength = mainHeader.getUint16(CD_EXTRA_FIELD_LENGTH_OFFSET, true);
34
36
  const startDisk = BigInt(mainHeader.getUint16(CD_START_DISK_OFFSET, true));
35
37
  const fileNameLength = mainHeader.getUint16(CD_FILE_NAME_LENGTH_OFFSET, true);
36
- const additionalHeader = await file.slice(headerOffset + CD_FILE_NAME_OFFSET, headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength));
38
+ const additionalHeader = await readRange(file, headerOffset + CD_FILE_NAME_OFFSET, headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength));
37
39
  const filenameBytes = additionalHeader.slice(0, fileNameLength);
38
40
  const fileName = new TextDecoder().decode(filenameBytes);
39
41
  const extraOffset = headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength);
@@ -59,11 +61,11 @@ export const parseZipCDFileHeader = async (headerOffset, file) => {
59
61
  };
60
62
  /**
61
63
  * Create iterator over files of zip archive
62
- * @param fileProvider - file provider that provider random access to the file
64
+ * @param fileProvider - readable file that provides random access to the file
63
65
  */
64
66
  export async function* makeZipCDHeaderIterator(fileProvider) {
65
67
  const { cdStartOffset, cdByteSize } = await parseEoCDRecord(fileProvider);
66
- const centralDirectory = new DataViewFile(new DataView(await fileProvider.slice(cdStartOffset, cdStartOffset + cdByteSize)));
68
+ const centralDirectory = new DataViewReadableFile(new DataView(await readRange(fileProvider, cdStartOffset, cdStartOffset + cdByteSize)));
67
69
  let cdHeader = await parseZipCDFileHeader(0n, centralDirectory);
68
70
  while (cdHeader) {
69
71
  yield cdHeader;
@@ -265,3 +267,4 @@ const ZIP_HEADER_FIELDS = [
265
267
  name: 'offset'
266
268
  }
267
269
  ];
270
+ //# sourceMappingURL=cd-file-header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cd-file-header.js","sourceRoot":"","sources":["../../src/parse-zip/cd-file-header.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { FileProviderInterface } from '@loaders.gl/loader-utils';
1
+ import type { ReadableFile } from '@loaders.gl/loader-utils';
2
2
  /**
3
3
  * End of central directory info
4
4
  * according to https://en.wikipedia.org/wiki/ZIP_(file_format)
@@ -33,10 +33,10 @@ export type ZipEoCDGenerationOptions = {
33
33
  };
34
34
  /**
35
35
  * Parses end of central directory record of zip file
36
- * @param file - FileProvider instance
36
+ * @param file - ReadableFile instance
37
37
  * @returns Info from the header
38
38
  */
39
- export declare const parseEoCDRecord: (file: FileProviderInterface) => Promise<ZipEoCDRecord>;
39
+ export declare const parseEoCDRecord: (file: ReadableFile) => Promise<ZipEoCDRecord>;
40
40
  /**
41
41
  * updates EoCD record to add more files to the archieve
42
42
  * @param eocdBody buffer containing header
@@ -1 +1 @@
1
- {"version":3,"file":"end-of-central-directory.d.ts","sourceRoot":"","sources":["../../src/parse-zip/end-of-central-directory.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,qBAAqB,EAGtB,MAAM,0BAA0B,CAAC;AAIlC;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,kCAAkC;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,oBAAoB,CAAC;CAC/B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,EAAE,MAAM,CAAC;IAEtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAmBF;;;;GAIG;AACH,eAAO,MAAM,eAAe,SAAgB,qBAAqB,KAAG,OAAO,CAAC,aAAa,CAsCxF,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,WAAW,EACrB,cAAc,EAAE,oBAAoB,EACpC,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,MAAM,EACvB,kBAAkB,EAAE,MAAM,GACzB,UAAU,CAmDZ;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,wBAAwB,GAAG,WAAW,CAgB3E"}
1
+ {"version":3,"file":"end-of-central-directory.d.ts","sourceRoot":"","sources":["../../src/parse-zip/end-of-central-directory.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAK3D;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,kCAAkC;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,oBAAoB,CAAC;CAC/B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,EAAE,MAAM,CAAC;IAEtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAmBF;;;;GAIG;AACH,eAAO,MAAM,eAAe,SAAgB,YAAY,KAAG,OAAO,CAAC,aAAa,CAuC/E,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,WAAW,EACrB,cAAc,EAAE,oBAAoB,EACpC,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,MAAM,EACvB,kBAAkB,EAAE,MAAM,GACzB,UAAU,CAmDZ;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,wBAAwB,GAAG,WAAW,CAgB3E"}
@@ -3,6 +3,7 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { compareArrayBuffers, concatenateArrayBuffers } from '@loaders.gl/loader-utils';
5
5
  import { searchFromTheEnd } from "./search-from-the-end.js";
6
+ import { readBigUint64, readUint16, readUint32, readRange } from "./readable-file-utils.js";
6
7
  import { setFieldToNumber } from "./zip64-info-generation.js";
7
8
  const eoCDSignature = new Uint8Array([0x50, 0x4b, 0x05, 0x06]);
8
9
  const zip64EoCDLocatorSignature = new Uint8Array([0x50, 0x4b, 0x06, 0x07]);
@@ -21,26 +22,26 @@ const ZIP64_CD_START_OFFSET_OFFSET = 48n;
21
22
  const ZIP64_COMMENT_OFFSET = 56n;
22
23
  /**
23
24
  * Parses end of central directory record of zip file
24
- * @param file - FileProvider instance
25
+ * @param file - ReadableFile instance
25
26
  * @returns Info from the header
26
27
  */
27
28
  export const parseEoCDRecord = async (file) => {
28
29
  const zipEoCDOffset = await searchFromTheEnd(file, eoCDSignature);
29
- let cdRecordsNumber = BigInt(await file.getUint16(zipEoCDOffset + CD_RECORDS_NUMBER_OFFSET));
30
- let cdByteSize = BigInt(await file.getUint32(zipEoCDOffset + CD_CD_BYTE_SIZE_OFFSET));
31
- let cdStartOffset = BigInt(await file.getUint32(zipEoCDOffset + CD_START_OFFSET_OFFSET));
30
+ let cdRecordsNumber = BigInt(await readUint16(file, zipEoCDOffset + CD_RECORDS_NUMBER_OFFSET));
31
+ let cdByteSize = BigInt(await readUint32(file, zipEoCDOffset + CD_CD_BYTE_SIZE_OFFSET));
32
+ let cdStartOffset = BigInt(await readUint32(file, zipEoCDOffset + CD_START_OFFSET_OFFSET));
32
33
  let zip64EoCDLocatorOffset = zipEoCDOffset - 20n;
33
34
  let zip64EoCDOffset = 0n;
34
- const magicBytes = await file.slice(zip64EoCDLocatorOffset, zip64EoCDLocatorOffset + 4n);
35
- if (compareArrayBuffers(magicBytes, zip64EoCDLocatorSignature)) {
36
- zip64EoCDOffset = await file.getBigUint64(zip64EoCDLocatorOffset + ZIP64_EOCD_START_OFFSET_OFFSET);
37
- const endOfCDMagicBytes = await file.slice(zip64EoCDOffset, zip64EoCDOffset + 4n);
35
+ const magicBytes = await readRange(file, zip64EoCDLocatorOffset, zip64EoCDLocatorOffset + 4n);
36
+ if (compareArrayBuffers(magicBytes, zip64EoCDLocatorSignature.buffer)) {
37
+ zip64EoCDOffset = await readBigUint64(file, zip64EoCDLocatorOffset + ZIP64_EOCD_START_OFFSET_OFFSET);
38
+ const endOfCDMagicBytes = await readRange(file, zip64EoCDOffset, zip64EoCDOffset + 4n);
38
39
  if (!compareArrayBuffers(endOfCDMagicBytes, zip64EoCDSignature.buffer)) {
39
40
  throw new Error('zip64 EoCD not found');
40
41
  }
41
- cdRecordsNumber = await file.getBigUint64(zip64EoCDOffset + ZIP64_CD_RECORDS_NUMBER_OFFSET);
42
- cdByteSize = await file.getBigUint64(zip64EoCDOffset + ZIP64_CD_CD_BYTE_SIZE_OFFSET);
43
- cdStartOffset = await file.getBigUint64(zip64EoCDOffset + ZIP64_CD_START_OFFSET_OFFSET);
42
+ cdRecordsNumber = await readBigUint64(file, zip64EoCDOffset + ZIP64_CD_RECORDS_NUMBER_OFFSET);
43
+ cdByteSize = await readBigUint64(file, zip64EoCDOffset + ZIP64_CD_CD_BYTE_SIZE_OFFSET);
44
+ cdStartOffset = await readBigUint64(file, zip64EoCDOffset + ZIP64_CD_START_OFFSET_OFFSET);
44
45
  }
45
46
  else {
46
47
  zip64EoCDLocatorOffset = 0n;
@@ -276,3 +277,4 @@ const ZIP64_EOCD_FIELDS = [
276
277
  name: 'cdOffset'
277
278
  }
278
279
  ];
280
+ //# sourceMappingURL=end-of-central-directory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"end-of-central-directory.js","sourceRoot":"","sources":["../../src/parse-zip/end-of-central-directory.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { FileProviderInterface } from '@loaders.gl/loader-utils';
1
+ import type { ReadableFile } from '@loaders.gl/loader-utils';
2
2
  import { ZipSignature } from "./search-from-the-end.js";
3
3
  /**
4
4
  * zip local file header info
@@ -25,7 +25,7 @@ export declare const signature: ZipSignature;
25
25
  * @param buffer - buffer containing whole array
26
26
  * @returns Info from the header
27
27
  */
28
- export declare const parseZipLocalFileHeader: (headerOffset: bigint, file: FileProviderInterface) => Promise<ZipLocalFileHeader | null>;
28
+ export declare const parseZipLocalFileHeader: (headerOffset: bigint, file: ReadableFile) => Promise<ZipLocalFileHeader | null>;
29
29
  /** info that can be placed into cd header */
30
30
  type GenerateLocalOptions = {
31
31
  /** CRC-32 of uncompressed data */
@@ -1 +1 @@
1
- {"version":3,"file":"local-file-header.d.ts","sourceRoot":"","sources":["../../src/parse-zip/local-file-header.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,qBAAqB,EAGtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAC,YAAY,EAAC,iCAA8B;AAGnD;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,uBAAuB;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,8BAA8B;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAUF,eAAO,MAAM,SAAS,EAAE,YAAuD,CAAC;AAEhF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,iBACpB,MAAM,QACd,qBAAqB,KAC1B,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAuDnC,CAAC;AAEF,6CAA6C;AAC7C,KAAK,oBAAoB,GAAG;IAC1B,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,WAAW,CAqC9E"}
1
+ {"version":3,"file":"local-file-header.d.ts","sourceRoot":"","sources":["../../src/parse-zip/local-file-header.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAC,YAAY,EAAC,iCAA8B;AAInD;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,uBAAuB;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,8BAA8B;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAUF,eAAO,MAAM,SAAS,EAAE,YAAuD,CAAC;AAEhF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,iBACpB,MAAM,QACd,YAAY,KACjB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAwDnC,CAAC;AAEF,6CAA6C;AAC7C,KAAK,oBAAoB,GAAG;IAC1B,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,WAAW,CAqC9E"}
@@ -3,6 +3,7 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { compareArrayBuffers, concatenateArrayBuffers } from '@loaders.gl/loader-utils';
5
5
  import { createZip64Info, setFieldToNumber } from "./zip64-info-generation.js";
6
+ import { readDataView, readRange } from "./readable-file-utils.js";
6
7
  // offsets accroding to https://en.wikipedia.org/wiki/ZIP_(file_format)
7
8
  const COMPRESSION_METHOD_OFFSET = 8;
8
9
  const COMPRESSED_SIZE_OFFSET = 18;
@@ -18,14 +19,14 @@ export const signature = new Uint8Array([0x50, 0x4b, 0x03, 0x04]);
18
19
  * @returns Info from the header
19
20
  */
20
21
  export const parseZipLocalFileHeader = async (headerOffset, file) => {
21
- const mainHeader = new DataView(await file.slice(headerOffset, headerOffset + FILE_NAME_OFFSET));
22
+ const mainHeader = await readDataView(file, headerOffset, headerOffset + FILE_NAME_OFFSET);
22
23
  const magicBytes = mainHeader.buffer.slice(0, 4);
23
- if (!compareArrayBuffers(magicBytes, signature)) {
24
+ if (!compareArrayBuffers(magicBytes, signature.buffer)) {
24
25
  return null;
25
26
  }
26
27
  const fileNameLength = mainHeader.getUint16(FILE_NAME_LENGTH_OFFSET, true);
27
28
  const extraFieldLength = mainHeader.getUint16(EXTRA_FIELD_LENGTH_OFFSET, true);
28
- const additionalHeader = await file.slice(headerOffset + FILE_NAME_OFFSET, headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength));
29
+ const additionalHeader = await readRange(file, headerOffset + FILE_NAME_OFFSET, headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength));
29
30
  const fileNameBuffer = additionalHeader.slice(0, fileNameLength);
30
31
  const extraDataBuffer = new DataView(additionalHeader.slice(fileNameLength, additionalHeader.byteLength));
31
32
  const fileName = new TextDecoder().decode(fileNameBuffer).split('\\').join('/');
@@ -154,3 +155,4 @@ const ZIP_HEADER_FIELDS = [
154
155
  name: 'extraLength'
155
156
  }
156
157
  ];
158
+ //# sourceMappingURL=local-file-header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-file-header.js","sourceRoot":"","sources":["../../src/parse-zip/local-file-header.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { type ReadableFile, type Stat } from '@loaders.gl/loader-utils';
2
+ /**
3
+ * Read a byte range from a readable file.
4
+ * @param file readable file handle
5
+ * @param start inclusive start offset
6
+ * @param end exclusive end offset
7
+ * @returns requested slice
8
+ */
9
+ export declare function readRange(file: ReadableFile, start: number | bigint, end: number | bigint): Promise<ArrayBuffer>;
10
+ export declare function readDataView(file: ReadableFile, start: number | bigint, end: number | bigint): Promise<DataView>;
11
+ export declare function readUint8(file: ReadableFile, offset: number | bigint): Promise<number>;
12
+ export declare function readUint16(file: ReadableFile, offset: number | bigint): Promise<number>;
13
+ export declare function readUint32(file: ReadableFile, offset: number | bigint): Promise<number>;
14
+ export declare function readBigUint64(file: ReadableFile, offset: number | bigint): Promise<bigint>;
15
+ /**
16
+ * Resolve the size of a readable file.
17
+ * @param file readable file handle
18
+ * @returns file size as bigint
19
+ */
20
+ export declare function getReadableFileSize(file: ReadableFile): Promise<bigint>;
21
+ /**
22
+ * Minimal readable file backed by a DataView.
23
+ */
24
+ export declare class DataViewReadableFile implements ReadableFile {
25
+ readonly handle: DataView;
26
+ readonly size: number;
27
+ readonly bigsize: bigint;
28
+ readonly url: string;
29
+ constructor(dataView: DataView, url?: string);
30
+ close(): Promise<void>;
31
+ stat(): Promise<Stat>;
32
+ read(start?: number | bigint, length?: number): Promise<ArrayBuffer>;
33
+ }
34
+ //# sourceMappingURL=readable-file-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readable-file-utils.d.ts","sourceRoot":"","sources":["../../src/parse-zip/readable-file-utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,KAAK,YAAY,EAAE,KAAK,IAAI,EAAC,MAAM,0BAA0B,CAAC;AAqBzF;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,GAAG,EAAE,MAAM,GAAG,MAAM,GACnB,OAAO,CAAC,WAAW,CAAC,CAQtB;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,GAAG,EAAE,MAAM,GAAG,MAAM,GACnB,OAAO,CAAC,QAAQ,CAAC,CAGnB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG5F;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG7F;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG7F;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhG;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAiB7E;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IACvD,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBAET,QAAQ,EAAE,QAAQ,EAAE,GAAG,GAAE,MAAW;IAO1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAEtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,IAAI,CAAC,KAAK,GAAE,MAAM,GAAG,MAAU,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAY9E"}
@@ -0,0 +1,111 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { copyToArrayBuffer } from '@loaders.gl/loader-utils';
5
+ function toBigInt(value) {
6
+ return typeof value === 'bigint' ? value : BigInt(value);
7
+ }
8
+ function toNumber(value) {
9
+ const numberValue = Number(value);
10
+ if (!Number.isFinite(numberValue)) {
11
+ throw new Error('Offset is out of bounds');
12
+ }
13
+ return numberValue;
14
+ }
15
+ function normalizeOffset(offset, size) {
16
+ if (offset < 0) {
17
+ return Math.max(size + offset, 0);
18
+ }
19
+ return Math.min(offset, size);
20
+ }
21
+ /**
22
+ * Read a byte range from a readable file.
23
+ * @param file readable file handle
24
+ * @param start inclusive start offset
25
+ * @param end exclusive end offset
26
+ * @returns requested slice
27
+ */
28
+ export async function readRange(file, start, end) {
29
+ const startOffset = toBigInt(start);
30
+ const endOffset = toBigInt(end);
31
+ const length = endOffset - startOffset;
32
+ if (length < 0) {
33
+ throw new Error('Invalid range requested');
34
+ }
35
+ return await file.read(startOffset, toNumber(length));
36
+ }
37
+ export async function readDataView(file, start, end) {
38
+ const arrayBuffer = await readRange(file, start, end);
39
+ return new DataView(arrayBuffer);
40
+ }
41
+ export async function readUint8(file, offset) {
42
+ const dataView = await readDataView(file, offset, toBigInt(offset) + 1n);
43
+ return dataView.getUint8(0);
44
+ }
45
+ export async function readUint16(file, offset) {
46
+ const dataView = await readDataView(file, offset, toBigInt(offset) + 2n);
47
+ return dataView.getUint16(0, true);
48
+ }
49
+ export async function readUint32(file, offset) {
50
+ const dataView = await readDataView(file, offset, toBigInt(offset) + 4n);
51
+ return dataView.getUint32(0, true);
52
+ }
53
+ export async function readBigUint64(file, offset) {
54
+ const dataView = await readDataView(file, offset, toBigInt(offset) + 8n);
55
+ return dataView.getBigUint64(0, true);
56
+ }
57
+ /**
58
+ * Resolve the size of a readable file.
59
+ * @param file readable file handle
60
+ * @returns file size as bigint
61
+ */
62
+ export async function getReadableFileSize(file) {
63
+ if (file.bigsize > 0n) {
64
+ return file.bigsize;
65
+ }
66
+ if (file.size > 0) {
67
+ return BigInt(file.size);
68
+ }
69
+ if (file.stat) {
70
+ const stats = await file.stat();
71
+ if (stats?.bigsize !== undefined) {
72
+ return stats.bigsize;
73
+ }
74
+ if (stats?.size !== undefined) {
75
+ return BigInt(stats.size);
76
+ }
77
+ }
78
+ return 0n;
79
+ }
80
+ /**
81
+ * Minimal readable file backed by a DataView.
82
+ */
83
+ export class DataViewReadableFile {
84
+ handle;
85
+ size;
86
+ bigsize;
87
+ url;
88
+ constructor(dataView, url = '') {
89
+ this.handle = dataView;
90
+ this.size = dataView.byteLength;
91
+ this.bigsize = BigInt(dataView.byteLength);
92
+ this.url = url;
93
+ }
94
+ async close() { }
95
+ async stat() {
96
+ return { size: this.size, bigsize: this.bigsize, isDirectory: false };
97
+ }
98
+ async read(start = 0, length) {
99
+ const offset = toNumber(start);
100
+ const end = length ? offset + length : this.size;
101
+ const normalizedStart = normalizeOffset(offset, this.size);
102
+ const normalizedEnd = normalizeOffset(end, this.size);
103
+ const clampedEnd = Math.max(normalizedEnd, normalizedStart);
104
+ const lengthToRead = clampedEnd - normalizedStart;
105
+ if (lengthToRead <= 0) {
106
+ return new ArrayBuffer(0);
107
+ }
108
+ return copyToArrayBuffer(this.handle.buffer, normalizedStart, lengthToRead);
109
+ }
110
+ }
111
+ //# sourceMappingURL=readable-file-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readable-file-utils.js","sourceRoot":"","sources":["../../src/parse-zip/readable-file-utils.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,iBAAiB,EAA+B,MAAM,0BAA0B,CAAC;AAEzF,SAAS,QAAQ,CAAC,KAAsB;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,QAAQ,CAAC,KAAsB;IACtC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CAAC,MAAc,EAAE,IAAY;IACnD,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAkB,EAClB,KAAsB,EACtB,GAAoB;IAEpB,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;IACvC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAkB,EAClB,KAAsB,EACtB,GAAoB;IAEpB,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAkB,EAAE,MAAuB;IACzE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACzE,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAkB,EAAE,MAAuB;IAC1E,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACzE,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAkB,EAAE,MAAuB;IAC1E,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACzE,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAkB,EAAE,MAAuB;IAC7E,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACzE,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAkB;IAC1D,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,KAAK,GAAS,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,KAAK,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC,OAAO,CAAC;QACvB,CAAC;QACD,IAAI,KAAK,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,oBAAoB;IACtB,MAAM,CAAW;IACjB,IAAI,CAAS;IACb,OAAO,CAAS;IAChB,GAAG,CAAS;IAErB,YAAY,QAAkB,EAAE,MAAc,EAAE;QAC9C,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,KAAK,KAAmB,CAAC;IAE/B,KAAK,CAAC,IAAI;QACR,OAAO,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAyB,CAAC,EAAE,MAAe;QACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACjD,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAC5D,MAAM,YAAY,GAAG,UAAU,GAAG,eAAe,CAAC;QAClD,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;IAC9E,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { FileProviderInterface } from '@loaders.gl/loader-utils';
1
+ import type { ReadableFile } from '@loaders.gl/loader-utils';
2
2
  /** Description of zip signature type */
3
3
  export type ZipSignature = Uint8Array;
4
4
  /**
@@ -7,5 +7,5 @@ export type ZipSignature = Uint8Array;
7
7
  * @param target
8
8
  * @returns
9
9
  */
10
- export declare const searchFromTheEnd: (file: FileProviderInterface, target: ZipSignature) => Promise<bigint>;
10
+ export declare const searchFromTheEnd: (file: ReadableFile, target: ZipSignature) => Promise<bigint>;
11
11
  //# sourceMappingURL=search-from-the-end.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-from-the-end.d.ts","sourceRoot":"","sources":["../../src/parse-zip/search-from-the-end.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,qBAAqB,EAAC,MAAM,0BAA0B,CAAC;AAE/D,wCAAwC;AACxC,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC;AAItC;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,SACrB,qBAAqB,UACnB,YAAY,KACnB,OAAO,CAAC,MAAM,CA8BhB,CAAC"}
1
+ {"version":3,"file":"search-from-the-end.d.ts","sourceRoot":"","sources":["../../src/parse-zip/search-from-the-end.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAG3D,wCAAwC;AACxC,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC;AAItC;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,SACrB,YAAY,UACV,YAAY,KACnB,OAAO,CAAC,MAAM,CA2BhB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  // loaders.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
+ import { getReadableFileSize, readRange } from "./readable-file-utils.js";
4
5
  const buffLength = 1024;
5
6
  /**
6
7
  * looking for the last occurrence of the provided
@@ -9,20 +10,17 @@ const buffLength = 1024;
9
10
  * @returns
10
11
  */
11
12
  export const searchFromTheEnd = async (file, target) => {
12
- const searchWindow = [
13
- await file.getUint8(file.length - 1n),
14
- await file.getUint8(file.length - 2n),
15
- await file.getUint8(file.length - 3n),
16
- undefined
17
- ];
13
+ const fileLength = await getReadableFileSize(file);
14
+ const lastBytes = new Uint8Array(await readRange(file, fileLength - 3n, fileLength + 1n));
15
+ const searchWindow = [lastBytes[3], lastBytes[2], lastBytes[1], undefined];
18
16
  let targetOffset = -1;
19
17
  // looking for the last record in the central directory
20
- let point = file.length - 4n;
18
+ let point = fileLength - 4n;
21
19
  do {
22
20
  const prevPoint = point;
23
21
  point -= BigInt(buffLength);
24
22
  point = point >= 0n ? point : 0n;
25
- const buff = new Uint8Array(await file.slice(point, prevPoint));
23
+ const buff = new Uint8Array(await readRange(file, point, prevPoint));
26
24
  for (let i = buff.length - 1; i > -1; i--) {
27
25
  searchWindow[3] = searchWindow[2];
28
26
  searchWindow[2] = searchWindow[1];
@@ -36,3 +34,4 @@ export const searchFromTheEnd = async (file, target) => {
36
34
  } while (targetOffset === -1 && point > 0n);
37
35
  return point + BigInt(targetOffset);
38
36
  };
37
+ //# sourceMappingURL=search-from-the-end.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-from-the-end.js","sourceRoot":"","sources":["../../src/parse-zip/search-from-the-end.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,mBAAmB,EAAE,SAAS,EAAC,iCAA8B;AAKrE,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,IAAkB,EAClB,MAAoB,EACH,EAAE;IACnB,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;IAC1F,MAAM,YAAY,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAE3E,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IAEtB,uDAAuD;IACvD,IAAI,KAAK,GAAG,UAAU,GAAG,EAAE,CAAC;IAC5B,GAAG,CAAC;QACF,MAAM,SAAS,GAAG,KAAK,CAAC;QACxB,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5B,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;QACrE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAClC,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAClC,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAClC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC9D,YAAY,GAAG,CAAC,CAAC;gBACjB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC,QAAQ,YAAY,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,EAAE,EAAE;IAE5C,OAAO,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"zip-composition.d.ts","sourceRoot":"","sources":["../../src/parse-zip/zip-composition.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,cAAc,EAEf,MAAM,0BAA0B,CAAC;AAwElC;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAmCxF;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,oBAAoB,CAAC,EAAE,CACrB,QAAQ,EAAE;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAC,EAAE,KACtD,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAC,CAAC,iBAwBhD;AAsBD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,GAChB,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAC,CAAC,CASlD;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAW,EACtB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC,CAiBnB"}
1
+ {"version":3,"file":"zip-composition.d.ts","sourceRoot":"","sources":["../../src/parse-zip/zip-composition.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,EAGf,MAAM,0BAA0B,CAAC;AA0ElC;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAwCxF;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,oBAAoB,CAAC,EAAE,CACrB,QAAQ,EAAE;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAC,EAAE,KACtD,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAC,CAAC,iBAwBhD;AAsBD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,GAChB,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAC,CAAC,CASlD;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAW,EACtB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC,CAiBnB"}
@@ -1,9 +1,10 @@
1
- import { FileHandleFile, concatenateArrayBuffers, path, NodeFilesystem, NodeFile } from '@loaders.gl/loader-utils';
1
+ import { concatenateArrayBuffers, path, NodeFilesystem, NodeFile, toArrayBuffer } from '@loaders.gl/loader-utils';
2
2
  import { generateEoCD, parseEoCDRecord, updateEoCD } from "./end-of-central-directory.js";
3
3
  import { CRC32Hash } from '@loaders.gl/crypto';
4
4
  import { generateLocalHeader } from "./local-file-header.js";
5
5
  import { generateCDHeader } from "./cd-file-header.js";
6
6
  import { fetchFile } from '@loaders.gl/core';
7
+ import { readRange } from "./readable-file-utils.js";
7
8
  /**
8
9
  * cut off CD and EoCD records from zip file
9
10
  * @param provider zip file
@@ -13,12 +14,13 @@ async function cutTheTailOff(provider) {
13
14
  // define where the body ends
14
15
  const oldEoCDinfo = await parseEoCDRecord(provider);
15
16
  const oldCDStartOffset = oldEoCDinfo.cdStartOffset;
17
+ const providerSize = (await provider.stat()).bigsize;
16
18
  // define cd length
17
19
  const oldCDLength = Number(oldEoCDinfo.offsets.zip64EoCDOffset
18
20
  ? oldEoCDinfo.offsets.zip64EoCDOffset - oldCDStartOffset
19
21
  : oldEoCDinfo.offsets.zipEoCDOffset - oldCDStartOffset);
20
22
  // cut off everything except of archieve body
21
- const zipEnding = await provider.slice(oldCDStartOffset, provider.length);
23
+ const zipEnding = await readRange(provider, oldCDStartOffset, providerSize);
22
24
  await provider.truncate(Number(oldCDStartOffset));
23
25
  // divide cd body and eocd record
24
26
  const oldCDBody = zipEnding.slice(0, oldCDLength);
@@ -61,22 +63,27 @@ async function generateFileHeaders(fileName, fileToAdd, localFileHeaderOffset) {
61
63
  */
62
64
  export async function addOneFile(zipUrl, fileToAdd, fileName) {
63
65
  // init file handler
64
- const provider = new FileHandleFile(zipUrl, true);
66
+ const provider = new NodeFile(zipUrl, 'a+');
65
67
  const [oldCDBody, eocdBody, oldEoCDinfo] = await cutTheTailOff(provider);
68
+ let currentOffset = (await provider.stat()).bigsize;
66
69
  // remember the new file local header start offset
67
- const newFileOffset = provider.length;
70
+ const newFileOffset = currentOffset;
68
71
  const [localPart, cdHeaderPart] = await generateFileHeaders(fileName, fileToAdd, newFileOffset);
69
72
  // write down the file local header
70
73
  await provider.append(localPart);
74
+ currentOffset += BigInt(localPart.byteLength);
71
75
  // add the file CD header to the CD
72
76
  const newCDBody = concatenateArrayBuffers(oldCDBody, cdHeaderPart);
73
77
  // remember the CD start offset
74
- const newCDStartOffset = provider.length;
78
+ const newCDStartOffset = currentOffset;
75
79
  // write down new CD
76
80
  await provider.append(new Uint8Array(newCDBody));
81
+ currentOffset += BigInt(newCDBody.byteLength);
77
82
  // remember where eocd starts
78
- const eocdOffset = provider.length;
79
- await provider.append(updateEoCD(eocdBody, oldEoCDinfo.offsets, newCDStartOffset, eocdOffset, oldEoCDinfo.cdRecordsNumber + 1n));
83
+ const eocdOffset = currentOffset;
84
+ const updatedEoCD = updateEoCD(eocdBody, oldEoCDinfo.offsets, newCDStartOffset, eocdOffset, oldEoCDinfo.cdRecordsNumber + 1n);
85
+ await provider.append(updatedEoCD);
86
+ currentOffset += BigInt(updatedEoCD.byteLength);
80
87
  }
81
88
  /**
82
89
  * creates zip archive with no compression
@@ -114,7 +121,7 @@ async function addFile(file, resFile, cdArray, fileList) {
114
121
  fileList?.push({ fileName: file.path, localHeaderOffset: size });
115
122
  const [localPart, cdHeaderPart] = await generateFileHeaders(file.path, file.file, size);
116
123
  await resFile.append(localPart);
117
- cdArray.push(cdHeaderPart);
124
+ cdArray.push(toArrayBuffer(cdHeaderPart));
118
125
  }
119
126
  /**
120
127
  * creates iterator providing buffer with file content and path to every file in the input folder
@@ -162,3 +169,4 @@ function pathJoin(...paths) {
162
169
  const resPaths = paths.filter((val) => val.length);
163
170
  return path.join(...resPaths);
164
171
  }
172
+ //# sourceMappingURL=zip-composition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip-composition.js","sourceRoot":"","sources":["../../src/parse-zip/zip-composition.ts"],"names":[],"mappings":"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"}
@@ -71,3 +71,4 @@ const ZIP64_FIELDS = [
71
71
  name: 'offset'
72
72
  }
73
73
  ];
74
+ //# sourceMappingURL=zip64-info-generation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip64-info-generation.js","sourceRoot":"","sources":["../../src/parse-zip/zip64-info-generation.ts"],"names":[],"mappings":"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"}
@@ -35,3 +35,4 @@ export class TarBuilder {
35
35
  return new Response(this.tape.save()).arrayBuffer();
36
36
  }
37
37
  }
38
+ //# sourceMappingURL=tar-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tar-builder.js","sourceRoot":"","sources":["../src/tar-builder.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,GAAG,yBAAsB;AAEhC,MAAM,mBAAmB,GAAG;IAC1B,eAAe,EAAE,EAAE;CACpB,CAAC;AAMF;;GAEG;AACH,MAAM,OAAO,UAAU;IACrB,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,KAAK;YACX,UAAU,EAAE,CAAC,KAAK,CAAC;YACnB,SAAS,EAAE,CAAC,mBAAmB,CAAC;YAChC,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,mBAAmB;SAC7B,CAAC;IACJ,CAAC;IAED,OAAO,CAAoB;IAC3B,IAAI,CAAM;IACV,KAAK,GAAW,CAAC,CAAC;IAElB,YAAY,OAAoC;QAC9C,IAAI,CAAC,OAAO,GAAG,EAAC,GAAG,mBAAmB,EAAE,GAAG,OAAO,EAAC,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACpD,CAAC;IACD,kCAAkC;IAClC,OAAO,CAAC,QAAgB,EAAE,MAAmB;QAC3C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,CAAC;CACF"}
@@ -4,7 +4,7 @@
4
4
  import JSZip from 'jszip';
5
5
  // __VERSION__ is injected by babel-plugin-version-inline
6
6
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
7
- const VERSION = typeof "4.4.0-alpha.0" !== 'undefined' ? "4.4.0-alpha.0" : 'latest';
7
+ const VERSION = typeof "4.4.0-alpha.9" !== 'undefined' ? "4.4.0-alpha.9" : 'latest';
8
8
  export const ZipLoader = {
9
9
  dataType: null,
10
10
  batchType: null,
@@ -57,3 +57,4 @@ async function loadZipEntry(jsZip, subFilename, options = {}) {
57
57
  return error;
58
58
  }
59
59
  }
60
+ //# sourceMappingURL=zip-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip-loader.js","sourceRoot":"","sources":["../src/zip-loader.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,yDAAyD;AACzD,qDAAqD;AACrD,MAAM,OAAO,GAAG,sBAAkB,KAAK,WAAW,CAAC,CAAC,iBAAa,CAAC,CAAC,QAAQ,CAAC;AAI5E,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,QAAQ,EAAE,IAA0B;IACpC,SAAS,EAAE,IAAwB;IAEnC,EAAE,EAAE,KAAK;IACT,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,CAAC,KAAK,CAAC;IACnB,SAAS,EAAE,CAAC,iBAAiB,CAAC;IAC9B,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,CAAC,IAAI,CAAC;IACb,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,aAAa;CAC8C,CAAC;AAErE,iEAAiE;AACjE,KAAK,UAAU,aAAa,CAAC,IAAS,EAAE,OAAO,GAAG,EAAE;IAClD,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,MAAM,OAAO,GAAgC,EAAE,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QAE1B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEjD,sCAAsC;QACtC,GAAG,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE;YACrC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;YAElC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,EAAE;gBACpF,OAAO,CAAC,YAAY,CAAC,GAAG,kBAAkB,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,uDAAuD;YACvD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,aAAa;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;QAC1D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,KAAU,EAAE,WAAmB,EAAE,UAAe,EAAE;IAC5E,sEAAsE;IACtE,sEAAsE;IACtE,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,aAAa,CAAC,CAAC;QAC3F,OAAO,WAAW,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,WAAW,sBAAsB,KAAK,EAAE,CAAC,CAAC;QAC9E,sCAAsC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}