@loaders.gl/zip 4.0.0-alpha.19 → 4.0.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.min.js +638 -1
- package/dist/es5/file-provider/data-view-file.js +146 -0
- package/dist/es5/file-provider/data-view-file.js.map +1 -0
- package/dist/es5/file-provider/file-handle-file.js +234 -0
- package/dist/es5/file-provider/file-handle-file.js.map +1 -0
- package/dist/es5/file-provider/file-handle.js +101 -0
- package/dist/es5/file-provider/file-handle.js.map +1 -0
- package/dist/es5/file-provider/file-provider.js +11 -0
- package/dist/es5/file-provider/file-provider.js.map +1 -0
- package/dist/es5/filesystems/zip-filesystem.js +340 -0
- package/dist/es5/filesystems/zip-filesystem.js.map +1 -0
- package/dist/es5/hash-file-utility.js +130 -0
- package/dist/es5/hash-file-utility.js.map +1 -0
- package/dist/es5/index.js +85 -0
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/parse-zip/cd-file-header.js +163 -0
- package/dist/es5/parse-zip/cd-file-header.js.map +1 -0
- package/dist/es5/parse-zip/end-of-central-directory.js +98 -0
- package/dist/es5/parse-zip/end-of-central-directory.js.map +1 -0
- package/dist/es5/parse-zip/local-file-header.js +117 -0
- package/dist/es5/parse-zip/local-file-header.js.map +1 -0
- package/dist/es5/parse-zip/search-from-the-end.js +69 -0
- package/dist/es5/parse-zip/search-from-the-end.js.map +1 -0
- package/dist/es5/zip-loader.js +1 -1
- package/dist/esm/file-provider/data-view-file.js +33 -0
- package/dist/esm/file-provider/data-view-file.js.map +1 -0
- package/dist/esm/file-provider/file-handle-file.js +57 -0
- package/dist/esm/file-provider/file-handle-file.js.map +1 -0
- package/dist/esm/file-provider/file-handle.js +37 -0
- package/dist/esm/file-provider/file-handle.js.map +1 -0
- package/dist/esm/file-provider/file-provider.js +4 -0
- package/dist/esm/file-provider/file-provider.js.map +1 -0
- package/dist/esm/filesystems/zip-filesystem.js +86 -0
- package/dist/esm/filesystems/zip-filesystem.js.map +1 -0
- package/dist/esm/hash-file-utility.js +55 -0
- package/dist/esm/hash-file-utility.js.map +1 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/parse-zip/cd-file-header.js +54 -0
- package/dist/esm/parse-zip/cd-file-header.js.map +1 -0
- package/dist/esm/parse-zip/end-of-central-directory.js +31 -0
- package/dist/esm/parse-zip/end-of-central-directory.js.map +1 -0
- package/dist/esm/parse-zip/local-file-header.js +41 -0
- package/dist/esm/parse-zip/local-file-header.js.map +1 -0
- package/dist/esm/parse-zip/search-from-the-end.js +16 -0
- package/dist/esm/parse-zip/search-from-the-end.js.map +1 -0
- package/dist/esm/zip-loader.js +1 -1
- package/dist/file-provider/data-view-file.d.ts +37 -0
- package/dist/file-provider/data-view-file.d.ts.map +1 -0
- package/dist/file-provider/data-view-file.js +63 -0
- package/dist/file-provider/file-handle-file.d.ts +53 -0
- package/dist/file-provider/file-handle-file.d.ts.map +1 -0
- package/dist/file-provider/file-handle-file.js +90 -0
- package/dist/file-provider/file-handle.d.ts +40 -0
- package/dist/file-provider/file-handle.d.ts.map +1 -0
- package/dist/file-provider/file-handle.js +57 -0
- package/dist/file-provider/file-provider.d.ts +45 -0
- package/dist/file-provider/file-provider.d.ts.map +1 -0
- package/dist/file-provider/file-provider.js +13 -0
- package/dist/filesystems/zip-filesystem.d.ts +44 -0
- package/dist/filesystems/zip-filesystem.d.ts.map +1 -0
- package/dist/filesystems/zip-filesystem.js +119 -0
- package/dist/hash-file-utility.d.ts +35 -0
- package/dist/hash-file-utility.d.ts.map +1 -0
- package/dist/hash-file-utility.js +88 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -1
- package/dist/parse-zip/cd-file-header.d.ts +36 -0
- package/dist/parse-zip/cd-file-header.d.ts.map +1 -0
- package/dist/parse-zip/cd-file-header.js +68 -0
- package/dist/parse-zip/end-of-central-directory.d.ts +18 -0
- package/dist/parse-zip/end-of-central-directory.d.ts.map +1 -0
- package/dist/parse-zip/end-of-central-directory.js +40 -0
- package/dist/parse-zip/local-file-header.d.ts +29 -0
- package/dist/parse-zip/local-file-header.d.ts.map +1 -0
- package/dist/parse-zip/local-file-header.js +55 -0
- package/dist/parse-zip/search-from-the-end.d.ts +11 -0
- package/dist/parse-zip/search-from-the-end.d.ts.map +1 -0
- package/dist/parse-zip/search-from-the-end.js +31 -0
- package/package.json +9 -2
- package/src/file-provider/data-view-file.ts +72 -0
- package/src/file-provider/file-handle-file.ts +114 -0
- package/src/file-provider/file-handle.ts +73 -0
- package/src/file-provider/file-provider.ts +56 -0
- package/src/filesystems/zip-filesystem.ts +132 -0
- package/src/hash-file-utility.ts +101 -0
- package/src/index.ts +19 -0
- package/src/parse-zip/cd-file-header.ts +114 -0
- package/src/parse-zip/end-of-central-directory.ts +71 -0
- package/src/parse-zip/local-file-header.ts +91 -0
- package/src/parse-zip/search-from-the-end.ts +38 -0
package/dist/dist.min.js
CHANGED
|
@@ -3027,18 +3027,649 @@
|
|
|
3027
3027
|
}
|
|
3028
3028
|
});
|
|
3029
3029
|
|
|
3030
|
+
// (disabled):fs
|
|
3031
|
+
var init_fs = __esm({
|
|
3032
|
+
"(disabled):fs"() {
|
|
3033
|
+
}
|
|
3034
|
+
});
|
|
3035
|
+
|
|
3036
|
+
// src/file-provider/file-handle.ts
|
|
3037
|
+
var _FileHandle, FileHandle;
|
|
3038
|
+
var init_file_handle = __esm({
|
|
3039
|
+
"src/file-provider/file-handle.ts"() {
|
|
3040
|
+
init_fs();
|
|
3041
|
+
_FileHandle = class {
|
|
3042
|
+
constructor(fileDescriptor, stats) {
|
|
3043
|
+
this.read = (buffer, offset, length, position) => {
|
|
3044
|
+
return new Promise((s) => {
|
|
3045
|
+
(0, import_fs.read)(this.fileDescriptor, buffer, offset, length, position, (_err, bytesRead, buffer2) => s({ bytesRead, buffer: buffer2 }));
|
|
3046
|
+
});
|
|
3047
|
+
};
|
|
3048
|
+
this.fileDescriptor = fileDescriptor;
|
|
3049
|
+
this.stats = stats;
|
|
3050
|
+
}
|
|
3051
|
+
async close() {
|
|
3052
|
+
return new Promise((resolve) => {
|
|
3053
|
+
(0, import_fs.close)(this.fileDescriptor, (_err) => resolve());
|
|
3054
|
+
});
|
|
3055
|
+
}
|
|
3056
|
+
get stat() {
|
|
3057
|
+
return this.stats;
|
|
3058
|
+
}
|
|
3059
|
+
};
|
|
3060
|
+
FileHandle = _FileHandle;
|
|
3061
|
+
FileHandle.open = async (path) => {
|
|
3062
|
+
const [fd, stats] = await Promise.all([
|
|
3063
|
+
new Promise((s) => {
|
|
3064
|
+
(0, import_fs.open)(path, void 0, void 0, (_err, fd2) => s(fd2));
|
|
3065
|
+
}),
|
|
3066
|
+
new Promise((s) => {
|
|
3067
|
+
(0, import_fs.stat)(path, { bigint: true }, (_err, stats2) => s(stats2));
|
|
3068
|
+
})
|
|
3069
|
+
]);
|
|
3070
|
+
return new _FileHandle(fd, stats);
|
|
3071
|
+
};
|
|
3072
|
+
}
|
|
3073
|
+
});
|
|
3074
|
+
|
|
3075
|
+
// src/file-provider/file-handle-file.ts
|
|
3076
|
+
var FileHandleFile;
|
|
3077
|
+
var init_file_handle_file = __esm({
|
|
3078
|
+
"src/file-provider/file-handle-file.ts"() {
|
|
3079
|
+
init_file_handle();
|
|
3080
|
+
FileHandleFile = class {
|
|
3081
|
+
static async from(path) {
|
|
3082
|
+
const fileDescriptor = await FileHandle.open(path);
|
|
3083
|
+
return new FileHandleFile(fileDescriptor, fileDescriptor.stat.size);
|
|
3084
|
+
}
|
|
3085
|
+
constructor(fileDescriptor, size) {
|
|
3086
|
+
this.fileDescriptor = fileDescriptor;
|
|
3087
|
+
this.size = size;
|
|
3088
|
+
}
|
|
3089
|
+
async destroy() {
|
|
3090
|
+
await this.fileDescriptor.close();
|
|
3091
|
+
}
|
|
3092
|
+
async getUint8(offset) {
|
|
3093
|
+
const val = new Uint8Array((await this.fileDescriptor.read(Buffer.alloc(1), 0, 1, offset)).buffer.buffer).at(0);
|
|
3094
|
+
if (val === void 0) {
|
|
3095
|
+
throw new Error("something went wrong");
|
|
3096
|
+
}
|
|
3097
|
+
return val;
|
|
3098
|
+
}
|
|
3099
|
+
async getUint16(offset) {
|
|
3100
|
+
const val = new Uint16Array((await this.fileDescriptor.read(Buffer.alloc(2), 0, 2, offset)).buffer.buffer).at(0);
|
|
3101
|
+
if (val === void 0) {
|
|
3102
|
+
throw new Error("something went wrong");
|
|
3103
|
+
}
|
|
3104
|
+
return val;
|
|
3105
|
+
}
|
|
3106
|
+
async getUint32(offset) {
|
|
3107
|
+
const val = new Uint32Array((await this.fileDescriptor.read(Buffer.alloc(4), 0, 4, offset)).buffer.buffer).at(0);
|
|
3108
|
+
if (val === void 0) {
|
|
3109
|
+
throw new Error("something went wrong");
|
|
3110
|
+
}
|
|
3111
|
+
return val;
|
|
3112
|
+
}
|
|
3113
|
+
async getBigUint64(offset) {
|
|
3114
|
+
const val = new BigInt64Array((await this.fileDescriptor.read(Buffer.alloc(8), 0, 8, offset)).buffer.buffer).at(0);
|
|
3115
|
+
if (val === void 0) {
|
|
3116
|
+
throw new Error("something went wrong");
|
|
3117
|
+
}
|
|
3118
|
+
return val;
|
|
3119
|
+
}
|
|
3120
|
+
async slice(startOffsset, endOffset) {
|
|
3121
|
+
const bigLength = endOffset - startOffsset;
|
|
3122
|
+
if (bigLength > Number.MAX_SAFE_INTEGER) {
|
|
3123
|
+
throw new Error("too big slice");
|
|
3124
|
+
}
|
|
3125
|
+
const length = Number(bigLength);
|
|
3126
|
+
return (await this.fileDescriptor.read(Buffer.alloc(length), 0, length, startOffsset)).buffer.buffer;
|
|
3127
|
+
}
|
|
3128
|
+
get length() {
|
|
3129
|
+
return this.size;
|
|
3130
|
+
}
|
|
3131
|
+
};
|
|
3132
|
+
}
|
|
3133
|
+
});
|
|
3134
|
+
|
|
3135
|
+
// src/file-provider/data-view-file.ts
|
|
3136
|
+
var toNumber, DataViewFile;
|
|
3137
|
+
var init_data_view_file = __esm({
|
|
3138
|
+
"src/file-provider/data-view-file.ts"() {
|
|
3139
|
+
toNumber = (bigint) => {
|
|
3140
|
+
if (bigint > Number.MAX_SAFE_INTEGER) {
|
|
3141
|
+
throw new Error("Offset is out of bounds");
|
|
3142
|
+
}
|
|
3143
|
+
return Number(bigint);
|
|
3144
|
+
};
|
|
3145
|
+
DataViewFile = class {
|
|
3146
|
+
constructor(file) {
|
|
3147
|
+
this.file = file;
|
|
3148
|
+
}
|
|
3149
|
+
async destroy() {
|
|
3150
|
+
}
|
|
3151
|
+
async getUint8(offset) {
|
|
3152
|
+
return this.file.getUint8(toNumber(offset));
|
|
3153
|
+
}
|
|
3154
|
+
async getUint16(offset) {
|
|
3155
|
+
return this.file.getUint16(toNumber(offset), true);
|
|
3156
|
+
}
|
|
3157
|
+
async getUint32(offset) {
|
|
3158
|
+
return this.file.getUint32(toNumber(offset), true);
|
|
3159
|
+
}
|
|
3160
|
+
async getBigUint64(offset) {
|
|
3161
|
+
return this.file.getBigUint64(toNumber(offset), true);
|
|
3162
|
+
}
|
|
3163
|
+
async slice(startOffset, endOffset) {
|
|
3164
|
+
return this.file.buffer.slice(toNumber(startOffset), toNumber(endOffset));
|
|
3165
|
+
}
|
|
3166
|
+
get length() {
|
|
3167
|
+
return BigInt(this.file.byteLength);
|
|
3168
|
+
}
|
|
3169
|
+
};
|
|
3170
|
+
}
|
|
3171
|
+
});
|
|
3172
|
+
|
|
3173
|
+
// src/parse-zip/search-from-the-end.ts
|
|
3174
|
+
var searchFromTheEnd;
|
|
3175
|
+
var init_search_from_the_end = __esm({
|
|
3176
|
+
"src/parse-zip/search-from-the-end.ts"() {
|
|
3177
|
+
searchFromTheEnd = async (file, target) => {
|
|
3178
|
+
const searchWindow = [
|
|
3179
|
+
await file.getUint8(file.length - 1n),
|
|
3180
|
+
await file.getUint8(file.length - 2n),
|
|
3181
|
+
await file.getUint8(file.length - 3n),
|
|
3182
|
+
void 0
|
|
3183
|
+
];
|
|
3184
|
+
let targetOffset = 0n;
|
|
3185
|
+
for (let i = file.length - 4n; i > -1; i--) {
|
|
3186
|
+
searchWindow[3] = searchWindow[2];
|
|
3187
|
+
searchWindow[2] = searchWindow[1];
|
|
3188
|
+
searchWindow[1] = searchWindow[0];
|
|
3189
|
+
searchWindow[0] = await file.getUint8(i);
|
|
3190
|
+
if (searchWindow.every((val, index) => val === target[index])) {
|
|
3191
|
+
targetOffset = i;
|
|
3192
|
+
break;
|
|
3193
|
+
}
|
|
3194
|
+
}
|
|
3195
|
+
return targetOffset;
|
|
3196
|
+
};
|
|
3197
|
+
}
|
|
3198
|
+
});
|
|
3199
|
+
|
|
3200
|
+
// src/parse-zip/end-of-central-directory.ts
|
|
3201
|
+
var eoCDSignature, zip64EoCDLocatorSignature, zip64EoCDSignature, CD_RECORDS_NUMBER_OFFSET, CD_START_OFFSET_OFFSET, ZIP64_EOCD_START_OFFSET_OFFSET, ZIP64_CD_RECORDS_NUMBER_OFFSET, ZIP64_CD_START_OFFSET_OFFSET, parseEoCDRecord;
|
|
3202
|
+
var init_end_of_central_directory = __esm({
|
|
3203
|
+
"src/parse-zip/end-of-central-directory.ts"() {
|
|
3204
|
+
init_search_from_the_end();
|
|
3205
|
+
eoCDSignature = [80, 75, 5, 6];
|
|
3206
|
+
zip64EoCDLocatorSignature = Buffer.from([80, 75, 6, 7]);
|
|
3207
|
+
zip64EoCDSignature = Buffer.from([80, 75, 6, 6]);
|
|
3208
|
+
CD_RECORDS_NUMBER_OFFSET = 8n;
|
|
3209
|
+
CD_START_OFFSET_OFFSET = 16n;
|
|
3210
|
+
ZIP64_EOCD_START_OFFSET_OFFSET = 8n;
|
|
3211
|
+
ZIP64_CD_RECORDS_NUMBER_OFFSET = 24n;
|
|
3212
|
+
ZIP64_CD_START_OFFSET_OFFSET = 48n;
|
|
3213
|
+
parseEoCDRecord = async (fileProvider) => {
|
|
3214
|
+
const zipEoCDOffset = await searchFromTheEnd(fileProvider, eoCDSignature);
|
|
3215
|
+
let cdRecordsNumber = BigInt(await fileProvider.getUint16(zipEoCDOffset + CD_RECORDS_NUMBER_OFFSET));
|
|
3216
|
+
let cdStartOffset = BigInt(await fileProvider.getUint32(zipEoCDOffset + CD_START_OFFSET_OFFSET));
|
|
3217
|
+
if (cdStartOffset === BigInt(4294967295) || cdRecordsNumber === BigInt(4294967295)) {
|
|
3218
|
+
const zip64EoCDLocatorOffset = zipEoCDOffset - 20n;
|
|
3219
|
+
if (Buffer.from(await fileProvider.slice(zip64EoCDLocatorOffset, zip64EoCDLocatorOffset + 4n)).compare(zip64EoCDLocatorSignature) !== 0) {
|
|
3220
|
+
throw new Error("zip64 EoCD locator not found");
|
|
3221
|
+
}
|
|
3222
|
+
const zip64EoCDOffset = await fileProvider.getBigUint64(zip64EoCDLocatorOffset + ZIP64_EOCD_START_OFFSET_OFFSET);
|
|
3223
|
+
if (Buffer.from(await fileProvider.slice(zip64EoCDOffset, zip64EoCDOffset + 4n)).compare(zip64EoCDSignature) !== 0) {
|
|
3224
|
+
throw new Error("zip64 EoCD not found");
|
|
3225
|
+
}
|
|
3226
|
+
cdRecordsNumber = await fileProvider.getBigUint64(zip64EoCDOffset + ZIP64_CD_RECORDS_NUMBER_OFFSET);
|
|
3227
|
+
cdStartOffset = await fileProvider.getBigUint64(zip64EoCDOffset + ZIP64_CD_START_OFFSET_OFFSET);
|
|
3228
|
+
}
|
|
3229
|
+
return {
|
|
3230
|
+
cdRecordsNumber,
|
|
3231
|
+
cdStartOffset
|
|
3232
|
+
};
|
|
3233
|
+
};
|
|
3234
|
+
}
|
|
3235
|
+
});
|
|
3236
|
+
|
|
3237
|
+
// src/parse-zip/cd-file-header.ts
|
|
3238
|
+
async function* zipCDFileHeaderGenerator(fileProvider) {
|
|
3239
|
+
const { cdStartOffset } = await parseEoCDRecord(fileProvider);
|
|
3240
|
+
let cdHeader = await parseZipCDFileHeader(cdStartOffset, fileProvider);
|
|
3241
|
+
while (cdHeader) {
|
|
3242
|
+
yield cdHeader;
|
|
3243
|
+
cdHeader = await parseZipCDFileHeader(cdHeader.extraOffset + BigInt(cdHeader.extraFieldLength), fileProvider);
|
|
3244
|
+
}
|
|
3245
|
+
}
|
|
3246
|
+
var CD_COMPRESSED_SIZE_OFFSET, CD_UNCOMPRESSED_SIZE_OFFSET, CD_FILE_NAME_LENGTH_OFFSET, CD_EXTRA_FIELD_LENGTH_OFFSET, CD_LOCAL_HEADER_OFFSET_OFFSET, CD_FILE_NAME_OFFSET, signature, parseZipCDFileHeader;
|
|
3247
|
+
var init_cd_file_header = __esm({
|
|
3248
|
+
"src/parse-zip/cd-file-header.ts"() {
|
|
3249
|
+
init_end_of_central_directory();
|
|
3250
|
+
CD_COMPRESSED_SIZE_OFFSET = 20n;
|
|
3251
|
+
CD_UNCOMPRESSED_SIZE_OFFSET = 24n;
|
|
3252
|
+
CD_FILE_NAME_LENGTH_OFFSET = 28n;
|
|
3253
|
+
CD_EXTRA_FIELD_LENGTH_OFFSET = 30n;
|
|
3254
|
+
CD_LOCAL_HEADER_OFFSET_OFFSET = 42n;
|
|
3255
|
+
CD_FILE_NAME_OFFSET = 46n;
|
|
3256
|
+
signature = [80, 75, 1, 2];
|
|
3257
|
+
parseZipCDFileHeader = async (headerOffset, buffer) => {
|
|
3258
|
+
if (Buffer.from(await buffer.slice(headerOffset, headerOffset + 4n)).compare(Buffer.from(signature)) !== 0) {
|
|
3259
|
+
return null;
|
|
3260
|
+
}
|
|
3261
|
+
let compressedSize = BigInt(await buffer.getUint32(headerOffset + CD_COMPRESSED_SIZE_OFFSET));
|
|
3262
|
+
let uncompressedSize = BigInt(await buffer.getUint32(headerOffset + CD_UNCOMPRESSED_SIZE_OFFSET));
|
|
3263
|
+
const extraFieldLength = await buffer.getUint16(headerOffset + CD_EXTRA_FIELD_LENGTH_OFFSET);
|
|
3264
|
+
const fileNameLength = await buffer.getUint16(headerOffset + CD_FILE_NAME_LENGTH_OFFSET);
|
|
3265
|
+
const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + CD_FILE_NAME_OFFSET, headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength)));
|
|
3266
|
+
const extraOffset = headerOffset + CD_FILE_NAME_OFFSET + BigInt(fileNameLength);
|
|
3267
|
+
const oldFormatOffset = await buffer.getUint32(headerOffset + CD_LOCAL_HEADER_OFFSET_OFFSET);
|
|
3268
|
+
let fileDataOffset = BigInt(oldFormatOffset);
|
|
3269
|
+
let offsetInZip64Data = 4n;
|
|
3270
|
+
if (uncompressedSize === BigInt(4294967295)) {
|
|
3271
|
+
uncompressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
3272
|
+
offsetInZip64Data += 8n;
|
|
3273
|
+
}
|
|
3274
|
+
if (compressedSize === BigInt(4294967295)) {
|
|
3275
|
+
compressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
3276
|
+
offsetInZip64Data += 8n;
|
|
3277
|
+
}
|
|
3278
|
+
if (fileDataOffset === BigInt(4294967295)) {
|
|
3279
|
+
fileDataOffset = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
3280
|
+
}
|
|
3281
|
+
const localHeaderOffset = fileDataOffset;
|
|
3282
|
+
return {
|
|
3283
|
+
compressedSize,
|
|
3284
|
+
uncompressedSize,
|
|
3285
|
+
extraFieldLength,
|
|
3286
|
+
fileNameLength,
|
|
3287
|
+
fileName,
|
|
3288
|
+
extraOffset,
|
|
3289
|
+
localHeaderOffset
|
|
3290
|
+
};
|
|
3291
|
+
};
|
|
3292
|
+
}
|
|
3293
|
+
});
|
|
3294
|
+
|
|
3295
|
+
// src/parse-zip/local-file-header.ts
|
|
3296
|
+
var COMPRESSION_METHOD_OFFSET, COMPRESSED_SIZE_OFFSET, UNCOMPRESSED_SIZE_OFFSET, FILE_NAME_LENGTH_OFFSET, EXTRA_FIELD_LENGTH_OFFSET, FILE_NAME_OFFSET, signature2, parseZipLocalFileHeader;
|
|
3297
|
+
var init_local_file_header = __esm({
|
|
3298
|
+
"src/parse-zip/local-file-header.ts"() {
|
|
3299
|
+
COMPRESSION_METHOD_OFFSET = 8n;
|
|
3300
|
+
COMPRESSED_SIZE_OFFSET = 18n;
|
|
3301
|
+
UNCOMPRESSED_SIZE_OFFSET = 22n;
|
|
3302
|
+
FILE_NAME_LENGTH_OFFSET = 26n;
|
|
3303
|
+
EXTRA_FIELD_LENGTH_OFFSET = 28n;
|
|
3304
|
+
FILE_NAME_OFFSET = 30n;
|
|
3305
|
+
signature2 = Buffer.from([80, 75, 3, 4]);
|
|
3306
|
+
parseZipLocalFileHeader = async (headerOffset, buffer) => {
|
|
3307
|
+
if (Buffer.from(await buffer.slice(headerOffset, headerOffset + 4n)).compare(signature2) !== 0) {
|
|
3308
|
+
return null;
|
|
3309
|
+
}
|
|
3310
|
+
const fileNameLength = await buffer.getUint16(headerOffset + FILE_NAME_LENGTH_OFFSET);
|
|
3311
|
+
const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + FILE_NAME_OFFSET, headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength))).split("\\").join("/");
|
|
3312
|
+
const extraFieldLength = await buffer.getUint16(headerOffset + EXTRA_FIELD_LENGTH_OFFSET);
|
|
3313
|
+
let fileDataOffset = headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength);
|
|
3314
|
+
const compressionMethod = await buffer.getUint16(headerOffset + COMPRESSION_METHOD_OFFSET);
|
|
3315
|
+
let compressedSize = BigInt(await buffer.getUint32(headerOffset + COMPRESSED_SIZE_OFFSET));
|
|
3316
|
+
let uncompressedSize = BigInt(await buffer.getUint32(headerOffset + UNCOMPRESSED_SIZE_OFFSET));
|
|
3317
|
+
const extraOffset = headerOffset + FILE_NAME_OFFSET + BigInt(fileNameLength);
|
|
3318
|
+
let offsetInZip64Data = 4n;
|
|
3319
|
+
if (uncompressedSize === BigInt(4294967295)) {
|
|
3320
|
+
uncompressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
3321
|
+
offsetInZip64Data += 8n;
|
|
3322
|
+
}
|
|
3323
|
+
if (compressedSize === BigInt(4294967295)) {
|
|
3324
|
+
compressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
3325
|
+
offsetInZip64Data += 8n;
|
|
3326
|
+
}
|
|
3327
|
+
if (fileDataOffset === BigInt(4294967295)) {
|
|
3328
|
+
fileDataOffset = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
3329
|
+
}
|
|
3330
|
+
return {
|
|
3331
|
+
fileNameLength,
|
|
3332
|
+
fileName,
|
|
3333
|
+
extraFieldLength,
|
|
3334
|
+
fileDataOffset,
|
|
3335
|
+
compressedSize,
|
|
3336
|
+
compressionMethod
|
|
3337
|
+
};
|
|
3338
|
+
};
|
|
3339
|
+
}
|
|
3340
|
+
});
|
|
3341
|
+
|
|
3342
|
+
// ../../node_modules/crypt/crypt.js
|
|
3343
|
+
var require_crypt = __commonJS({
|
|
3344
|
+
"../../node_modules/crypt/crypt.js"(exports, module) {
|
|
3345
|
+
(function() {
|
|
3346
|
+
var base64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", crypt = {
|
|
3347
|
+
rotl: function(n, b) {
|
|
3348
|
+
return n << b | n >>> 32 - b;
|
|
3349
|
+
},
|
|
3350
|
+
rotr: function(n, b) {
|
|
3351
|
+
return n << 32 - b | n >>> b;
|
|
3352
|
+
},
|
|
3353
|
+
endian: function(n) {
|
|
3354
|
+
if (n.constructor == Number) {
|
|
3355
|
+
return crypt.rotl(n, 8) & 16711935 | crypt.rotl(n, 24) & 4278255360;
|
|
3356
|
+
}
|
|
3357
|
+
for (var i = 0; i < n.length; i++)
|
|
3358
|
+
n[i] = crypt.endian(n[i]);
|
|
3359
|
+
return n;
|
|
3360
|
+
},
|
|
3361
|
+
randomBytes: function(n) {
|
|
3362
|
+
for (var bytes = []; n > 0; n--)
|
|
3363
|
+
bytes.push(Math.floor(Math.random() * 256));
|
|
3364
|
+
return bytes;
|
|
3365
|
+
},
|
|
3366
|
+
bytesToWords: function(bytes) {
|
|
3367
|
+
for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)
|
|
3368
|
+
words[b >>> 5] |= bytes[i] << 24 - b % 32;
|
|
3369
|
+
return words;
|
|
3370
|
+
},
|
|
3371
|
+
wordsToBytes: function(words) {
|
|
3372
|
+
for (var bytes = [], b = 0; b < words.length * 32; b += 8)
|
|
3373
|
+
bytes.push(words[b >>> 5] >>> 24 - b % 32 & 255);
|
|
3374
|
+
return bytes;
|
|
3375
|
+
},
|
|
3376
|
+
bytesToHex: function(bytes) {
|
|
3377
|
+
for (var hex = [], i = 0; i < bytes.length; i++) {
|
|
3378
|
+
hex.push((bytes[i] >>> 4).toString(16));
|
|
3379
|
+
hex.push((bytes[i] & 15).toString(16));
|
|
3380
|
+
}
|
|
3381
|
+
return hex.join("");
|
|
3382
|
+
},
|
|
3383
|
+
hexToBytes: function(hex) {
|
|
3384
|
+
for (var bytes = [], c = 0; c < hex.length; c += 2)
|
|
3385
|
+
bytes.push(parseInt(hex.substr(c, 2), 16));
|
|
3386
|
+
return bytes;
|
|
3387
|
+
},
|
|
3388
|
+
bytesToBase64: function(bytes) {
|
|
3389
|
+
for (var base64 = [], i = 0; i < bytes.length; i += 3) {
|
|
3390
|
+
var triplet = bytes[i] << 16 | bytes[i + 1] << 8 | bytes[i + 2];
|
|
3391
|
+
for (var j = 0; j < 4; j++)
|
|
3392
|
+
if (i * 8 + j * 6 <= bytes.length * 8)
|
|
3393
|
+
base64.push(base64map.charAt(triplet >>> 6 * (3 - j) & 63));
|
|
3394
|
+
else
|
|
3395
|
+
base64.push("=");
|
|
3396
|
+
}
|
|
3397
|
+
return base64.join("");
|
|
3398
|
+
},
|
|
3399
|
+
base64ToBytes: function(base64) {
|
|
3400
|
+
base64 = base64.replace(/[^A-Z0-9+\/]/ig, "");
|
|
3401
|
+
for (var bytes = [], i = 0, imod4 = 0; i < base64.length; imod4 = ++i % 4) {
|
|
3402
|
+
if (imod4 == 0)
|
|
3403
|
+
continue;
|
|
3404
|
+
bytes.push((base64map.indexOf(base64.charAt(i - 1)) & Math.pow(2, -2 * imod4 + 8) - 1) << imod4 * 2 | base64map.indexOf(base64.charAt(i)) >>> 6 - imod4 * 2);
|
|
3405
|
+
}
|
|
3406
|
+
return bytes;
|
|
3407
|
+
}
|
|
3408
|
+
};
|
|
3409
|
+
module.exports = crypt;
|
|
3410
|
+
})();
|
|
3411
|
+
}
|
|
3412
|
+
});
|
|
3413
|
+
|
|
3414
|
+
// ../../node_modules/charenc/charenc.js
|
|
3415
|
+
var require_charenc = __commonJS({
|
|
3416
|
+
"../../node_modules/charenc/charenc.js"(exports, module) {
|
|
3417
|
+
var charenc = {
|
|
3418
|
+
utf8: {
|
|
3419
|
+
stringToBytes: function(str) {
|
|
3420
|
+
return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));
|
|
3421
|
+
},
|
|
3422
|
+
bytesToString: function(bytes) {
|
|
3423
|
+
return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));
|
|
3424
|
+
}
|
|
3425
|
+
},
|
|
3426
|
+
bin: {
|
|
3427
|
+
stringToBytes: function(str) {
|
|
3428
|
+
for (var bytes = [], i = 0; i < str.length; i++)
|
|
3429
|
+
bytes.push(str.charCodeAt(i) & 255);
|
|
3430
|
+
return bytes;
|
|
3431
|
+
},
|
|
3432
|
+
bytesToString: function(bytes) {
|
|
3433
|
+
for (var str = [], i = 0; i < bytes.length; i++)
|
|
3434
|
+
str.push(String.fromCharCode(bytes[i]));
|
|
3435
|
+
return str.join("");
|
|
3436
|
+
}
|
|
3437
|
+
}
|
|
3438
|
+
};
|
|
3439
|
+
module.exports = charenc;
|
|
3440
|
+
}
|
|
3441
|
+
});
|
|
3442
|
+
|
|
3443
|
+
// ../../node_modules/is-buffer/index.js
|
|
3444
|
+
var require_is_buffer = __commonJS({
|
|
3445
|
+
"../../node_modules/is-buffer/index.js"(exports, module) {
|
|
3446
|
+
module.exports = function(obj) {
|
|
3447
|
+
return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer);
|
|
3448
|
+
};
|
|
3449
|
+
function isBuffer(obj) {
|
|
3450
|
+
return !!obj.constructor && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj);
|
|
3451
|
+
}
|
|
3452
|
+
function isSlowBuffer(obj) {
|
|
3453
|
+
return typeof obj.readFloatLE === "function" && typeof obj.slice === "function" && isBuffer(obj.slice(0, 0));
|
|
3454
|
+
}
|
|
3455
|
+
}
|
|
3456
|
+
});
|
|
3457
|
+
|
|
3458
|
+
// ../../node_modules/md5/md5.js
|
|
3459
|
+
var require_md5 = __commonJS({
|
|
3460
|
+
"../../node_modules/md5/md5.js"(exports, module) {
|
|
3461
|
+
(function() {
|
|
3462
|
+
var crypt = require_crypt(), utf8 = require_charenc().utf8, isBuffer = require_is_buffer(), bin = require_charenc().bin, md52 = function(message, options) {
|
|
3463
|
+
if (message.constructor == String)
|
|
3464
|
+
if (options && options.encoding === "binary")
|
|
3465
|
+
message = bin.stringToBytes(message);
|
|
3466
|
+
else
|
|
3467
|
+
message = utf8.stringToBytes(message);
|
|
3468
|
+
else if (isBuffer(message))
|
|
3469
|
+
message = Array.prototype.slice.call(message, 0);
|
|
3470
|
+
else if (!Array.isArray(message) && message.constructor !== Uint8Array)
|
|
3471
|
+
message = message.toString();
|
|
3472
|
+
var m = crypt.bytesToWords(message), l = message.length * 8, a = 1732584193, b = -271733879, c = -1732584194, d = 271733878;
|
|
3473
|
+
for (var i = 0; i < m.length; i++) {
|
|
3474
|
+
m[i] = (m[i] << 8 | m[i] >>> 24) & 16711935 | (m[i] << 24 | m[i] >>> 8) & 4278255360;
|
|
3475
|
+
}
|
|
3476
|
+
m[l >>> 5] |= 128 << l % 32;
|
|
3477
|
+
m[(l + 64 >>> 9 << 4) + 14] = l;
|
|
3478
|
+
var FF = md52._ff, GG = md52._gg, HH = md52._hh, II = md52._ii;
|
|
3479
|
+
for (var i = 0; i < m.length; i += 16) {
|
|
3480
|
+
var aa = a, bb = b, cc = c, dd = d;
|
|
3481
|
+
a = FF(a, b, c, d, m[i + 0], 7, -680876936);
|
|
3482
|
+
d = FF(d, a, b, c, m[i + 1], 12, -389564586);
|
|
3483
|
+
c = FF(c, d, a, b, m[i + 2], 17, 606105819);
|
|
3484
|
+
b = FF(b, c, d, a, m[i + 3], 22, -1044525330);
|
|
3485
|
+
a = FF(a, b, c, d, m[i + 4], 7, -176418897);
|
|
3486
|
+
d = FF(d, a, b, c, m[i + 5], 12, 1200080426);
|
|
3487
|
+
c = FF(c, d, a, b, m[i + 6], 17, -1473231341);
|
|
3488
|
+
b = FF(b, c, d, a, m[i + 7], 22, -45705983);
|
|
3489
|
+
a = FF(a, b, c, d, m[i + 8], 7, 1770035416);
|
|
3490
|
+
d = FF(d, a, b, c, m[i + 9], 12, -1958414417);
|
|
3491
|
+
c = FF(c, d, a, b, m[i + 10], 17, -42063);
|
|
3492
|
+
b = FF(b, c, d, a, m[i + 11], 22, -1990404162);
|
|
3493
|
+
a = FF(a, b, c, d, m[i + 12], 7, 1804603682);
|
|
3494
|
+
d = FF(d, a, b, c, m[i + 13], 12, -40341101);
|
|
3495
|
+
c = FF(c, d, a, b, m[i + 14], 17, -1502002290);
|
|
3496
|
+
b = FF(b, c, d, a, m[i + 15], 22, 1236535329);
|
|
3497
|
+
a = GG(a, b, c, d, m[i + 1], 5, -165796510);
|
|
3498
|
+
d = GG(d, a, b, c, m[i + 6], 9, -1069501632);
|
|
3499
|
+
c = GG(c, d, a, b, m[i + 11], 14, 643717713);
|
|
3500
|
+
b = GG(b, c, d, a, m[i + 0], 20, -373897302);
|
|
3501
|
+
a = GG(a, b, c, d, m[i + 5], 5, -701558691);
|
|
3502
|
+
d = GG(d, a, b, c, m[i + 10], 9, 38016083);
|
|
3503
|
+
c = GG(c, d, a, b, m[i + 15], 14, -660478335);
|
|
3504
|
+
b = GG(b, c, d, a, m[i + 4], 20, -405537848);
|
|
3505
|
+
a = GG(a, b, c, d, m[i + 9], 5, 568446438);
|
|
3506
|
+
d = GG(d, a, b, c, m[i + 14], 9, -1019803690);
|
|
3507
|
+
c = GG(c, d, a, b, m[i + 3], 14, -187363961);
|
|
3508
|
+
b = GG(b, c, d, a, m[i + 8], 20, 1163531501);
|
|
3509
|
+
a = GG(a, b, c, d, m[i + 13], 5, -1444681467);
|
|
3510
|
+
d = GG(d, a, b, c, m[i + 2], 9, -51403784);
|
|
3511
|
+
c = GG(c, d, a, b, m[i + 7], 14, 1735328473);
|
|
3512
|
+
b = GG(b, c, d, a, m[i + 12], 20, -1926607734);
|
|
3513
|
+
a = HH(a, b, c, d, m[i + 5], 4, -378558);
|
|
3514
|
+
d = HH(d, a, b, c, m[i + 8], 11, -2022574463);
|
|
3515
|
+
c = HH(c, d, a, b, m[i + 11], 16, 1839030562);
|
|
3516
|
+
b = HH(b, c, d, a, m[i + 14], 23, -35309556);
|
|
3517
|
+
a = HH(a, b, c, d, m[i + 1], 4, -1530992060);
|
|
3518
|
+
d = HH(d, a, b, c, m[i + 4], 11, 1272893353);
|
|
3519
|
+
c = HH(c, d, a, b, m[i + 7], 16, -155497632);
|
|
3520
|
+
b = HH(b, c, d, a, m[i + 10], 23, -1094730640);
|
|
3521
|
+
a = HH(a, b, c, d, m[i + 13], 4, 681279174);
|
|
3522
|
+
d = HH(d, a, b, c, m[i + 0], 11, -358537222);
|
|
3523
|
+
c = HH(c, d, a, b, m[i + 3], 16, -722521979);
|
|
3524
|
+
b = HH(b, c, d, a, m[i + 6], 23, 76029189);
|
|
3525
|
+
a = HH(a, b, c, d, m[i + 9], 4, -640364487);
|
|
3526
|
+
d = HH(d, a, b, c, m[i + 12], 11, -421815835);
|
|
3527
|
+
c = HH(c, d, a, b, m[i + 15], 16, 530742520);
|
|
3528
|
+
b = HH(b, c, d, a, m[i + 2], 23, -995338651);
|
|
3529
|
+
a = II(a, b, c, d, m[i + 0], 6, -198630844);
|
|
3530
|
+
d = II(d, a, b, c, m[i + 7], 10, 1126891415);
|
|
3531
|
+
c = II(c, d, a, b, m[i + 14], 15, -1416354905);
|
|
3532
|
+
b = II(b, c, d, a, m[i + 5], 21, -57434055);
|
|
3533
|
+
a = II(a, b, c, d, m[i + 12], 6, 1700485571);
|
|
3534
|
+
d = II(d, a, b, c, m[i + 3], 10, -1894986606);
|
|
3535
|
+
c = II(c, d, a, b, m[i + 10], 15, -1051523);
|
|
3536
|
+
b = II(b, c, d, a, m[i + 1], 21, -2054922799);
|
|
3537
|
+
a = II(a, b, c, d, m[i + 8], 6, 1873313359);
|
|
3538
|
+
d = II(d, a, b, c, m[i + 15], 10, -30611744);
|
|
3539
|
+
c = II(c, d, a, b, m[i + 6], 15, -1560198380);
|
|
3540
|
+
b = II(b, c, d, a, m[i + 13], 21, 1309151649);
|
|
3541
|
+
a = II(a, b, c, d, m[i + 4], 6, -145523070);
|
|
3542
|
+
d = II(d, a, b, c, m[i + 11], 10, -1120210379);
|
|
3543
|
+
c = II(c, d, a, b, m[i + 2], 15, 718787259);
|
|
3544
|
+
b = II(b, c, d, a, m[i + 9], 21, -343485551);
|
|
3545
|
+
a = a + aa >>> 0;
|
|
3546
|
+
b = b + bb >>> 0;
|
|
3547
|
+
c = c + cc >>> 0;
|
|
3548
|
+
d = d + dd >>> 0;
|
|
3549
|
+
}
|
|
3550
|
+
return crypt.endian([a, b, c, d]);
|
|
3551
|
+
};
|
|
3552
|
+
md52._ff = function(a, b, c, d, x, s, t) {
|
|
3553
|
+
var n = a + (b & c | ~b & d) + (x >>> 0) + t;
|
|
3554
|
+
return (n << s | n >>> 32 - s) + b;
|
|
3555
|
+
};
|
|
3556
|
+
md52._gg = function(a, b, c, d, x, s, t) {
|
|
3557
|
+
var n = a + (b & d | c & ~d) + (x >>> 0) + t;
|
|
3558
|
+
return (n << s | n >>> 32 - s) + b;
|
|
3559
|
+
};
|
|
3560
|
+
md52._hh = function(a, b, c, d, x, s, t) {
|
|
3561
|
+
var n = a + (b ^ c ^ d) + (x >>> 0) + t;
|
|
3562
|
+
return (n << s | n >>> 32 - s) + b;
|
|
3563
|
+
};
|
|
3564
|
+
md52._ii = function(a, b, c, d, x, s, t) {
|
|
3565
|
+
var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;
|
|
3566
|
+
return (n << s | n >>> 32 - s) + b;
|
|
3567
|
+
};
|
|
3568
|
+
md52._blocksize = 16;
|
|
3569
|
+
md52._digestsize = 16;
|
|
3570
|
+
module.exports = function(message, options) {
|
|
3571
|
+
if (message === void 0 || message === null)
|
|
3572
|
+
throw new Error("Illegal argument " + message);
|
|
3573
|
+
var digestbytes = crypt.wordsToBytes(md52(message, options));
|
|
3574
|
+
return options && options.asBytes ? digestbytes : options && options.asString ? bin.bytesToString(digestbytes) : crypt.bytesToHex(digestbytes);
|
|
3575
|
+
};
|
|
3576
|
+
})();
|
|
3577
|
+
}
|
|
3578
|
+
});
|
|
3579
|
+
|
|
3580
|
+
// src/hash-file-utility.ts
|
|
3581
|
+
var import_md5, compareHashes, parseHashFile, findBin, generateHashInfo;
|
|
3582
|
+
var init_hash_file_utility = __esm({
|
|
3583
|
+
"src/hash-file-utility.ts"() {
|
|
3584
|
+
import_md5 = __toModule(require_md5());
|
|
3585
|
+
init_cd_file_header();
|
|
3586
|
+
compareHashes = (hash1, hash2) => {
|
|
3587
|
+
const h1 = new BigUint64Array(hash1.buffer, hash1.byteOffset, 2);
|
|
3588
|
+
const h2 = new BigUint64Array(hash2.buffer, hash2.byteOffset, 2);
|
|
3589
|
+
const diff = h1[0] === h2[0] ? h1[1] - h2[1] : h1[0] - h2[0];
|
|
3590
|
+
if (diff < 0n) {
|
|
3591
|
+
return -1;
|
|
3592
|
+
} else if (diff === 0n) {
|
|
3593
|
+
return 0;
|
|
3594
|
+
}
|
|
3595
|
+
return 1;
|
|
3596
|
+
};
|
|
3597
|
+
parseHashFile = (hashFile) => {
|
|
3598
|
+
const hashFileBuffer = Buffer.from(hashFile);
|
|
3599
|
+
const hashArray = [];
|
|
3600
|
+
for (let i = 0; i < hashFileBuffer.buffer.byteLength; i = i + 24) {
|
|
3601
|
+
const offsetBuffer = new DataView(hashFileBuffer.buffer.slice(hashFileBuffer.byteOffset + i + 16, hashFileBuffer.byteOffset + i + 24));
|
|
3602
|
+
const offset = offsetBuffer.getBigUint64(offsetBuffer.byteOffset, true);
|
|
3603
|
+
hashArray.push({
|
|
3604
|
+
hash: Buffer.from(hashFileBuffer.subarray(hashFileBuffer.byteOffset + i, hashFileBuffer.byteOffset + i + 16)),
|
|
3605
|
+
offset
|
|
3606
|
+
});
|
|
3607
|
+
}
|
|
3608
|
+
return hashArray;
|
|
3609
|
+
};
|
|
3610
|
+
findBin = (hashToSearch, hashArray) => {
|
|
3611
|
+
let lowerBorder = 0;
|
|
3612
|
+
let upperBorder = hashArray.length;
|
|
3613
|
+
while (upperBorder - lowerBorder > 1) {
|
|
3614
|
+
const middle = lowerBorder + Math.floor((upperBorder - lowerBorder) / 2);
|
|
3615
|
+
const value = compareHashes(hashArray[middle].hash, hashToSearch);
|
|
3616
|
+
if (value === 0) {
|
|
3617
|
+
return hashArray[middle];
|
|
3618
|
+
} else if (value < 0) {
|
|
3619
|
+
lowerBorder = middle;
|
|
3620
|
+
} else {
|
|
3621
|
+
upperBorder = middle;
|
|
3622
|
+
}
|
|
3623
|
+
}
|
|
3624
|
+
return void 0;
|
|
3625
|
+
};
|
|
3626
|
+
generateHashInfo = async (fileProvider) => {
|
|
3627
|
+
const zipCDIterator = zipCDFileHeaderGenerator(fileProvider);
|
|
3628
|
+
const hashInfo = [];
|
|
3629
|
+
for await (const cdHeader of zipCDIterator) {
|
|
3630
|
+
hashInfo.push({
|
|
3631
|
+
hash: Buffer.from((0, import_md5.default)(cdHeader.fileName.split("\\").join("/").toLocaleLowerCase()), "hex"),
|
|
3632
|
+
offset: cdHeader.localHeaderOffset
|
|
3633
|
+
});
|
|
3634
|
+
}
|
|
3635
|
+
hashInfo.sort((a, b) => compareHashes(a.hash, b.hash));
|
|
3636
|
+
return hashInfo;
|
|
3637
|
+
};
|
|
3638
|
+
}
|
|
3639
|
+
});
|
|
3640
|
+
|
|
3030
3641
|
// src/index.ts
|
|
3031
3642
|
var src_exports = {};
|
|
3032
3643
|
__export(src_exports, {
|
|
3644
|
+
DataViewFile: () => DataViewFile,
|
|
3645
|
+
FileHandleFile: () => FileHandleFile,
|
|
3033
3646
|
TarBuilder: () => TARBuilder,
|
|
3034
3647
|
ZipLoader: () => ZipLoader,
|
|
3035
|
-
ZipWriter: () => ZipWriter
|
|
3648
|
+
ZipWriter: () => ZipWriter,
|
|
3649
|
+
cdSignature: () => signature,
|
|
3650
|
+
compareHashes: () => compareHashes,
|
|
3651
|
+
findBin: () => findBin,
|
|
3652
|
+
generateHashInfo: () => generateHashInfo,
|
|
3653
|
+
localHeaderSignature: () => signature2,
|
|
3654
|
+
parseEoCDRecord: () => parseEoCDRecord,
|
|
3655
|
+
parseHashFile: () => parseHashFile,
|
|
3656
|
+
parseZipCDFileHeader: () => parseZipCDFileHeader,
|
|
3657
|
+
parseZipLocalFileHeader: () => parseZipLocalFileHeader,
|
|
3658
|
+
searchFromTheEnd: () => searchFromTheEnd,
|
|
3659
|
+
zipCDFileHeaderGenerator: () => zipCDFileHeaderGenerator
|
|
3036
3660
|
});
|
|
3037
3661
|
var init_src = __esm({
|
|
3038
3662
|
"src/index.ts"() {
|
|
3039
3663
|
init_zip_loader();
|
|
3040
3664
|
init_zip_writer();
|
|
3041
3665
|
init_tar_builder();
|
|
3666
|
+
init_file_handle_file();
|
|
3667
|
+
init_data_view_file();
|
|
3668
|
+
init_cd_file_header();
|
|
3669
|
+
init_local_file_header();
|
|
3670
|
+
init_end_of_central_directory();
|
|
3671
|
+
init_search_from_the_end();
|
|
3672
|
+
init_hash_file_utility();
|
|
3042
3673
|
}
|
|
3043
3674
|
});
|
|
3044
3675
|
|
|
@@ -3063,3 +3694,9 @@ Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/js
|
|
|
3063
3694
|
JSZip uses the library pako released under the MIT license :
|
|
3064
3695
|
https://github.com/nodeca/pako/blob/main/LICENSE
|
|
3065
3696
|
*/
|
|
3697
|
+
/*!
|
|
3698
|
+
* Determine if an object is a Buffer
|
|
3699
|
+
*
|
|
3700
|
+
* @author Feross Aboukhadijeh <https://feross.org>
|
|
3701
|
+
* @license MIT
|
|
3702
|
+
*/
|