@loaders.gl/zip 4.0.0-alpha.20 → 4.0.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.min.js +494 -119
- package/dist/es5/{parse-zip → file-provider}/data-view-file.js +46 -29
- 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 +81 -1
- package/dist/es5/hash-file-utility.js.map +1 -1
- package/dist/es5/index.js +20 -1
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/parse-zip/cd-file-header.js +58 -16
- package/dist/es5/parse-zip/cd-file-header.js.map +1 -1
- package/dist/es5/parse-zip/end-of-central-directory.js +10 -12
- package/dist/es5/parse-zip/end-of-central-directory.js.map +1 -1
- package/dist/es5/parse-zip/local-file-header.js +37 -33
- package/dist/es5/parse-zip/local-file-header.js.map +1 -1
- package/dist/es5/parse-zip/search-from-the-end.js.map +1 -1
- package/dist/es5/zip-loader.js +1 -1
- package/dist/esm/{parse-zip → file-provider}/data-view-file.js +1 -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 +14 -0
- package/dist/esm/hash-file-utility.js.map +1 -1
- package/dist/esm/index.js +4 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/parse-zip/cd-file-header.js +24 -15
- package/dist/esm/parse-zip/cd-file-header.js.map +1 -1
- package/dist/esm/parse-zip/end-of-central-directory.js +10 -12
- package/dist/esm/parse-zip/end-of-central-directory.js.map +1 -1
- package/dist/esm/parse-zip/local-file-header.js +16 -15
- package/dist/esm/parse-zip/local-file-header.js.map +1 -1
- package/dist/esm/parse-zip/search-from-the-end.js.map +1 -1
- package/dist/esm/zip-loader.js +1 -1
- package/dist/{parse-zip → file-provider}/data-view-file.d.ts +1 -0
- package/dist/file-provider/data-view-file.d.ts.map +1 -0
- package/dist/{parse-zip → file-provider}/data-view-file.js +2 -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/{parse-zip → file-provider}/file-provider.d.ts +9 -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 +7 -0
- package/dist/hash-file-utility.d.ts.map +1 -1
- package/dist/hash-file-utility.js +24 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/parse-zip/cd-file-header.d.ts +6 -1
- package/dist/parse-zip/cd-file-header.d.ts.map +1 -1
- package/dist/parse-zip/cd-file-header.js +29 -16
- package/dist/parse-zip/end-of-central-directory.d.ts +1 -1
- package/dist/parse-zip/end-of-central-directory.d.ts.map +1 -1
- package/dist/parse-zip/end-of-central-directory.js +11 -12
- package/dist/parse-zip/local-file-header.d.ts +3 -1
- package/dist/parse-zip/local-file-header.d.ts.map +1 -1
- package/dist/parse-zip/local-file-header.js +17 -15
- package/dist/parse-zip/search-from-the-end.d.ts +1 -1
- package/dist/parse-zip/search-from-the-end.d.ts.map +1 -1
- package/package.json +9 -2
- package/src/{parse-zip → file-provider}/data-view-file.ts +3 -0
- package/src/file-provider/file-handle-file.ts +114 -0
- package/src/file-provider/file-handle.ts +73 -0
- package/src/{parse-zip → file-provider}/file-provider.ts +16 -0
- package/src/filesystems/zip-filesystem.ts +132 -0
- package/src/hash-file-utility.ts +22 -0
- package/src/index.ts +10 -4
- package/src/parse-zip/cd-file-header.ts +33 -25
- package/src/parse-zip/end-of-central-directory.ts +12 -19
- package/src/parse-zip/local-file-header.ts +22 -22
- package/src/parse-zip/search-from-the-end.ts +1 -1
- package/dist/es5/parse-zip/data-view-file.js.map +0 -1
- package/dist/es5/parse-zip/file-provider.js +0 -2
- package/dist/es5/parse-zip/file-provider.js.map +0 -1
- package/dist/esm/parse-zip/data-view-file.js.map +0 -1
- package/dist/esm/parse-zip/file-provider.js +0 -2
- package/dist/esm/parse-zip/file-provider.js.map +0 -1
- package/dist/parse-zip/data-view-file.d.ts.map +0 -1
- package/dist/parse-zip/file-provider.d.ts.map +0 -1
- package/dist/parse-zip/file-provider.js +0 -2
package/dist/dist.min.js
CHANGED
|
@@ -3027,99 +3027,145 @@
|
|
|
3027
3027
|
}
|
|
3028
3028
|
});
|
|
3029
3029
|
|
|
3030
|
-
//
|
|
3031
|
-
var
|
|
3032
|
-
|
|
3033
|
-
|
|
3034
|
-
|
|
3035
|
-
|
|
3036
|
-
|
|
3037
|
-
|
|
3038
|
-
|
|
3039
|
-
|
|
3040
|
-
|
|
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
|
+
}
|
|
3041
3059
|
};
|
|
3042
|
-
|
|
3043
|
-
|
|
3044
|
-
|
|
3045
|
-
|
|
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);
|
|
3046
3084
|
}
|
|
3047
|
-
|
|
3048
|
-
|
|
3049
|
-
|
|
3050
|
-
const fileNameLength = await buffer.getUint16(headerOffset + offsets.CD_FILE_NAME_LENGTH_OFFSET);
|
|
3051
|
-
const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + offsets.CD_FILE_NAME_OFFSET, headerOffset + offsets.CD_FILE_NAME_OFFSET + BigInt(fileNameLength)));
|
|
3052
|
-
const extraOffset = headerOffset + offsets.CD_FILE_NAME_OFFSET + BigInt(fileNameLength);
|
|
3053
|
-
const oldFormatOffset = await buffer.getUint32(headerOffset + offsets.CD_LOCAL_HEADER_OFFSET_OFFSET);
|
|
3054
|
-
let fileDataOffset = BigInt(oldFormatOffset);
|
|
3055
|
-
let offsetInZip64Data = 4n;
|
|
3056
|
-
if (uncompressedSize === BigInt(4294967295)) {
|
|
3057
|
-
uncompressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
3058
|
-
offsetInZip64Data += 8n;
|
|
3085
|
+
constructor(fileDescriptor, size) {
|
|
3086
|
+
this.fileDescriptor = fileDescriptor;
|
|
3087
|
+
this.size = size;
|
|
3059
3088
|
}
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
offsetInZip64Data += 8n;
|
|
3089
|
+
async destroy() {
|
|
3090
|
+
await this.fileDescriptor.close();
|
|
3063
3091
|
}
|
|
3064
|
-
|
|
3065
|
-
|
|
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;
|
|
3066
3130
|
}
|
|
3067
|
-
const localHeaderOffset = fileDataOffset;
|
|
3068
|
-
return {
|
|
3069
|
-
compressedSize,
|
|
3070
|
-
uncompressedSize,
|
|
3071
|
-
extraFieldLength,
|
|
3072
|
-
fileNameLength,
|
|
3073
|
-
fileName,
|
|
3074
|
-
extraOffset,
|
|
3075
|
-
localHeaderOffset
|
|
3076
|
-
};
|
|
3077
3131
|
};
|
|
3078
3132
|
}
|
|
3079
3133
|
});
|
|
3080
3134
|
|
|
3081
|
-
// src/
|
|
3082
|
-
var
|
|
3083
|
-
var
|
|
3084
|
-
"src/
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
FILE_NAME_OFFSET: 30n
|
|
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);
|
|
3091
3144
|
};
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
return null;
|
|
3145
|
+
DataViewFile = class {
|
|
3146
|
+
constructor(file) {
|
|
3147
|
+
this.file = file;
|
|
3096
3148
|
}
|
|
3097
|
-
|
|
3098
|
-
const fileName = new TextDecoder().decode(await buffer.slice(headerOffset + offsets2.FILE_NAME_OFFSET, headerOffset + offsets2.FILE_NAME_OFFSET + BigInt(fileNameLength))).split("\\").join("/");
|
|
3099
|
-
const extraFieldLength = await buffer.getUint16(headerOffset + offsets2.EXTRA_FIELD_LENGTH_OFFSET);
|
|
3100
|
-
let fileDataOffset = headerOffset + offsets2.FILE_NAME_OFFSET + BigInt(fileNameLength + extraFieldLength);
|
|
3101
|
-
let compressedSize = BigInt(await buffer.getUint32(headerOffset + offsets2.COMPRESSED_SIZE_OFFSET));
|
|
3102
|
-
let uncompressedSize = BigInt(await buffer.getUint32(headerOffset + offsets2.UNCOMPRESSED_SIZE_OFFSET));
|
|
3103
|
-
const extraOffset = headerOffset + offsets2.FILE_NAME_OFFSET + BigInt(fileNameLength);
|
|
3104
|
-
let offsetInZip64Data = 4n;
|
|
3105
|
-
if (uncompressedSize === BigInt(4294967295)) {
|
|
3106
|
-
uncompressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
3107
|
-
offsetInZip64Data += 8n;
|
|
3149
|
+
async destroy() {
|
|
3108
3150
|
}
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
offsetInZip64Data += 8n;
|
|
3151
|
+
async getUint8(offset) {
|
|
3152
|
+
return this.file.getUint8(toNumber(offset));
|
|
3112
3153
|
}
|
|
3113
|
-
|
|
3114
|
-
|
|
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);
|
|
3115
3168
|
}
|
|
3116
|
-
return {
|
|
3117
|
-
fileNameLength,
|
|
3118
|
-
fileName,
|
|
3119
|
-
extraFieldLength,
|
|
3120
|
-
fileDataOffset,
|
|
3121
|
-
compressedSize
|
|
3122
|
-
};
|
|
3123
3169
|
};
|
|
3124
3170
|
}
|
|
3125
3171
|
});
|
|
@@ -3152,35 +3198,33 @@
|
|
|
3152
3198
|
});
|
|
3153
3199
|
|
|
3154
3200
|
// src/parse-zip/end-of-central-directory.ts
|
|
3155
|
-
var eoCDSignature, zip64EoCDLocatorSignature, zip64EoCDSignature,
|
|
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;
|
|
3156
3202
|
var init_end_of_central_directory = __esm({
|
|
3157
3203
|
"src/parse-zip/end-of-central-directory.ts"() {
|
|
3158
3204
|
init_search_from_the_end();
|
|
3159
3205
|
eoCDSignature = [80, 75, 5, 6];
|
|
3160
3206
|
zip64EoCDLocatorSignature = Buffer.from([80, 75, 6, 7]);
|
|
3161
3207
|
zip64EoCDSignature = Buffer.from([80, 75, 6, 6]);
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
|
|
3165
|
-
|
|
3166
|
-
|
|
3167
|
-
ZIP64_CD_START_OFFSET_OFFSET: 48n
|
|
3168
|
-
};
|
|
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;
|
|
3169
3213
|
parseEoCDRecord = async (fileProvider) => {
|
|
3170
3214
|
const zipEoCDOffset = await searchFromTheEnd(fileProvider, eoCDSignature);
|
|
3171
|
-
let cdRecordsNumber = BigInt(await fileProvider.getUint16(zipEoCDOffset +
|
|
3172
|
-
let cdStartOffset = BigInt(await fileProvider.getUint32(zipEoCDOffset +
|
|
3215
|
+
let cdRecordsNumber = BigInt(await fileProvider.getUint16(zipEoCDOffset + CD_RECORDS_NUMBER_OFFSET));
|
|
3216
|
+
let cdStartOffset = BigInt(await fileProvider.getUint32(zipEoCDOffset + CD_START_OFFSET_OFFSET));
|
|
3173
3217
|
if (cdStartOffset === BigInt(4294967295) || cdRecordsNumber === BigInt(4294967295)) {
|
|
3174
3218
|
const zip64EoCDLocatorOffset = zipEoCDOffset - 20n;
|
|
3175
3219
|
if (Buffer.from(await fileProvider.slice(zip64EoCDLocatorOffset, zip64EoCDLocatorOffset + 4n)).compare(zip64EoCDLocatorSignature) !== 0) {
|
|
3176
3220
|
throw new Error("zip64 EoCD locator not found");
|
|
3177
3221
|
}
|
|
3178
|
-
const zip64EoCDOffset = await fileProvider.getBigUint64(zip64EoCDLocatorOffset +
|
|
3222
|
+
const zip64EoCDOffset = await fileProvider.getBigUint64(zip64EoCDLocatorOffset + ZIP64_EOCD_START_OFFSET_OFFSET);
|
|
3179
3223
|
if (Buffer.from(await fileProvider.slice(zip64EoCDOffset, zip64EoCDOffset + 4n)).compare(zip64EoCDSignature) !== 0) {
|
|
3180
3224
|
throw new Error("zip64 EoCD not found");
|
|
3181
3225
|
}
|
|
3182
|
-
cdRecordsNumber = await fileProvider.getBigUint64(zip64EoCDOffset +
|
|
3183
|
-
cdStartOffset = await fileProvider.getBigUint64(zip64EoCDOffset +
|
|
3226
|
+
cdRecordsNumber = await fileProvider.getBigUint64(zip64EoCDOffset + ZIP64_CD_RECORDS_NUMBER_OFFSET);
|
|
3227
|
+
cdStartOffset = await fileProvider.getBigUint64(zip64EoCDOffset + ZIP64_CD_START_OFFSET_OFFSET);
|
|
3184
3228
|
}
|
|
3185
3229
|
return {
|
|
3186
3230
|
cdRecordsNumber,
|
|
@@ -3190,46 +3234,355 @@
|
|
|
3190
3234
|
}
|
|
3191
3235
|
});
|
|
3192
3236
|
|
|
3193
|
-
// src/parse-zip/
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
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;
|
|
3200
3260
|
}
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
|
|
3205
|
-
|
|
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;
|
|
3206
3273
|
}
|
|
3207
|
-
|
|
3208
|
-
|
|
3274
|
+
if (compressedSize === BigInt(4294967295)) {
|
|
3275
|
+
compressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
3276
|
+
offsetInZip64Data += 8n;
|
|
3209
3277
|
}
|
|
3210
|
-
|
|
3211
|
-
|
|
3278
|
+
if (fileDataOffset === BigInt(4294967295)) {
|
|
3279
|
+
fileDataOffset = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
3212
3280
|
}
|
|
3213
|
-
|
|
3214
|
-
|
|
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;
|
|
3215
3309
|
}
|
|
3216
|
-
|
|
3217
|
-
|
|
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;
|
|
3218
3322
|
}
|
|
3219
|
-
|
|
3220
|
-
|
|
3323
|
+
if (compressedSize === BigInt(4294967295)) {
|
|
3324
|
+
compressedSize = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
3325
|
+
offsetInZip64Data += 8n;
|
|
3221
3326
|
}
|
|
3222
|
-
|
|
3223
|
-
|
|
3327
|
+
if (fileDataOffset === BigInt(4294967295)) {
|
|
3328
|
+
fileDataOffset = await buffer.getBigUint64(extraOffset + offsetInZip64Data);
|
|
3224
3329
|
}
|
|
3330
|
+
return {
|
|
3331
|
+
fileNameLength,
|
|
3332
|
+
fileName,
|
|
3333
|
+
extraFieldLength,
|
|
3334
|
+
fileDataOffset,
|
|
3335
|
+
compressedSize,
|
|
3336
|
+
compressionMethod
|
|
3337
|
+
};
|
|
3225
3338
|
};
|
|
3226
3339
|
}
|
|
3227
3340
|
});
|
|
3228
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
|
+
|
|
3229
3580
|
// src/hash-file-utility.ts
|
|
3230
|
-
var compareHashes, parseHashFile, findBin;
|
|
3581
|
+
var import_md5, compareHashes, parseHashFile, findBin, generateHashInfo;
|
|
3231
3582
|
var init_hash_file_utility = __esm({
|
|
3232
3583
|
"src/hash-file-utility.ts"() {
|
|
3584
|
+
import_md5 = __toModule(require_md5());
|
|
3585
|
+
init_cd_file_header();
|
|
3233
3586
|
compareHashes = (hash1, hash2) => {
|
|
3234
3587
|
const h1 = new BigUint64Array(hash1.buffer, hash1.byteOffset, 2);
|
|
3235
3588
|
const h2 = new BigUint64Array(hash2.buffer, hash2.byteOffset, 2);
|
|
@@ -3270,6 +3623,18 @@
|
|
|
3270
3623
|
}
|
|
3271
3624
|
return void 0;
|
|
3272
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
|
+
};
|
|
3273
3638
|
}
|
|
3274
3639
|
});
|
|
3275
3640
|
|
|
@@ -3277,29 +3642,33 @@
|
|
|
3277
3642
|
var src_exports = {};
|
|
3278
3643
|
__export(src_exports, {
|
|
3279
3644
|
DataViewFile: () => DataViewFile,
|
|
3645
|
+
FileHandleFile: () => FileHandleFile,
|
|
3280
3646
|
TarBuilder: () => TARBuilder,
|
|
3281
3647
|
ZipLoader: () => ZipLoader,
|
|
3282
3648
|
ZipWriter: () => ZipWriter,
|
|
3283
3649
|
cdSignature: () => signature,
|
|
3284
3650
|
compareHashes: () => compareHashes,
|
|
3285
3651
|
findBin: () => findBin,
|
|
3652
|
+
generateHashInfo: () => generateHashInfo,
|
|
3286
3653
|
localHeaderSignature: () => signature2,
|
|
3287
3654
|
parseEoCDRecord: () => parseEoCDRecord,
|
|
3288
3655
|
parseHashFile: () => parseHashFile,
|
|
3289
3656
|
parseZipCDFileHeader: () => parseZipCDFileHeader,
|
|
3290
3657
|
parseZipLocalFileHeader: () => parseZipLocalFileHeader,
|
|
3291
|
-
searchFromTheEnd: () => searchFromTheEnd
|
|
3658
|
+
searchFromTheEnd: () => searchFromTheEnd,
|
|
3659
|
+
zipCDFileHeaderGenerator: () => zipCDFileHeaderGenerator
|
|
3292
3660
|
});
|
|
3293
3661
|
var init_src = __esm({
|
|
3294
3662
|
"src/index.ts"() {
|
|
3295
3663
|
init_zip_loader();
|
|
3296
3664
|
init_zip_writer();
|
|
3297
3665
|
init_tar_builder();
|
|
3666
|
+
init_file_handle_file();
|
|
3667
|
+
init_data_view_file();
|
|
3298
3668
|
init_cd_file_header();
|
|
3299
3669
|
init_local_file_header();
|
|
3300
3670
|
init_end_of_central_directory();
|
|
3301
3671
|
init_search_from_the_end();
|
|
3302
|
-
init_data_view_file();
|
|
3303
3672
|
init_hash_file_utility();
|
|
3304
3673
|
}
|
|
3305
3674
|
});
|
|
@@ -3325,3 +3694,9 @@ Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/js
|
|
|
3325
3694
|
JSZip uses the library pako released under the MIT license :
|
|
3326
3695
|
https://github.com/nodeca/pako/blob/main/LICENSE
|
|
3327
3696
|
*/
|
|
3697
|
+
/*!
|
|
3698
|
+
* Determine if an object is a Buffer
|
|
3699
|
+
*
|
|
3700
|
+
* @author Feross Aboukhadijeh <https://feross.org>
|
|
3701
|
+
* @license MIT
|
|
3702
|
+
*/
|