64 lines
2.8 KiB
JavaScript
64 lines
2.8 KiB
JavaScript
|
const errors = {
|
||
|
/* Header error messages */
|
||
|
INVALID_LOC: "Invalid LOC header (bad signature)",
|
||
|
INVALID_CEN: "Invalid CEN header (bad signature)",
|
||
|
INVALID_END: "Invalid END header (bad signature)",
|
||
|
|
||
|
/* Descriptor */
|
||
|
DESCRIPTOR_NOT_EXIST: "No descriptor present",
|
||
|
DESCRIPTOR_UNKNOWN: "Unknown descriptor format",
|
||
|
DESCRIPTOR_FAULTY: "Descriptor data is malformed",
|
||
|
|
||
|
/* ZipEntry error messages*/
|
||
|
NO_DATA: "Nothing to decompress",
|
||
|
BAD_CRC: "CRC32 checksum failed {0}",
|
||
|
FILE_IN_THE_WAY: "There is a file in the way: {0}",
|
||
|
UNKNOWN_METHOD: "Invalid/unsupported compression method",
|
||
|
|
||
|
/* Inflater error messages */
|
||
|
AVAIL_DATA: "inflate::Available inflate data did not terminate",
|
||
|
INVALID_DISTANCE: "inflate::Invalid literal/length or distance code in fixed or dynamic block",
|
||
|
TO_MANY_CODES: "inflate::Dynamic block code description: too many length or distance codes",
|
||
|
INVALID_REPEAT_LEN: "inflate::Dynamic block code description: repeat more than specified lengths",
|
||
|
INVALID_REPEAT_FIRST: "inflate::Dynamic block code description: repeat lengths with no first length",
|
||
|
INCOMPLETE_CODES: "inflate::Dynamic block code description: code lengths codes incomplete",
|
||
|
INVALID_DYN_DISTANCE: "inflate::Dynamic block code description: invalid distance code lengths",
|
||
|
INVALID_CODES_LEN: "inflate::Dynamic block code description: invalid literal/length code lengths",
|
||
|
INVALID_STORE_BLOCK: "inflate::Stored block length did not match one's complement",
|
||
|
INVALID_BLOCK_TYPE: "inflate::Invalid block type (type == 3)",
|
||
|
|
||
|
/* ADM-ZIP error messages */
|
||
|
CANT_EXTRACT_FILE: "Could not extract the file",
|
||
|
CANT_OVERRIDE: "Target file already exists",
|
||
|
DISK_ENTRY_TOO_LARGE: "Number of disk entries is too large",
|
||
|
NO_ZIP: "No zip file was loaded",
|
||
|
NO_ENTRY: "Entry doesn't exist",
|
||
|
DIRECTORY_CONTENT_ERROR: "A directory cannot have content",
|
||
|
FILE_NOT_FOUND: 'File not found: "{0}"',
|
||
|
NOT_IMPLEMENTED: "Not implemented",
|
||
|
INVALID_FILENAME: "Invalid filename",
|
||
|
INVALID_FORMAT: "Invalid or unsupported zip format. No END header found",
|
||
|
INVALID_PASS_PARAM: "Incompatible password parameter",
|
||
|
WRONG_PASSWORD: "Wrong Password",
|
||
|
|
||
|
/* ADM-ZIP */
|
||
|
COMMENT_TOO_LONG: "Comment is too long", // Comment can be max 65535 bytes long (NOTE: some non-US characters may take more space)
|
||
|
EXTRA_FIELD_PARSE_ERROR: "Extra field parsing error"
|
||
|
};
|
||
|
|
||
|
// template
|
||
|
function E(message) {
|
||
|
return function (...args) {
|
||
|
if (args.length) { // Allow {0} .. {9} arguments in error message, based on argument number
|
||
|
message = message.replace(/\{(\d)\}/g, (_, n) => args[n] || '');
|
||
|
}
|
||
|
|
||
|
return new Error('ADM-ZIP: ' + message);
|
||
|
};
|
||
|
}
|
||
|
|
||
|
// Init errors with template
|
||
|
for (const msg of Object.keys(errors)) {
|
||
|
exports[msg] = E(errors[msg]);
|
||
|
}
|