Changes in response to Kiwix JS code review

Former-commit-id: 66307ef22aa481d4f5e013992c8fc799a9775aac [formerly e0939860feb9244c3a510575431685cc5f81c5a0]
Former-commit-id: 3e4f7a56319cb8484b0cec1a1f708156b01ee575
This commit is contained in:
Jaifroid 2022-08-27 11:26:40 +03:00
parent b08e770651
commit f8c34ca62c
2 changed files with 10 additions and 8 deletions

View File

@ -140,7 +140,7 @@ define(['zimfile', 'zimDirEntry', 'transformZimit', 'util', 'utf8'],
/** /**
* Detects whether the supplied archive is a Zimit-style archive or an OpenZIM archive and * Detects whether the supplied archive is a Zimit-style archive or an OpenZIM archive and
* sets a file.type property accordingly; also returns the detected type. Extends ZIMFile. * sets a _file.zimType property accordingly; also returns the detected type. Extends ZIMFile.
* @returns {String} Either 'zimit' for a Zimit archive, or 'open' for an OpenZIM archive * @returns {String} Either 'zimit' for a Zimit archive, or 'open' for an OpenZIM archive
*/ */
ZIMArchive.prototype.setZimType = function () { ZIMArchive.prototype.setZimType = function () {
@ -150,7 +150,7 @@ define(['zimfile', 'zimDirEntry', 'transformZimit', 'util', 'utf8'],
this._file.mimeTypes.forEach(function (v) { this._file.mimeTypes.forEach(function (v) {
if (/warc-headers/i.test(v)) fileType = 'zimit'; if (/warc-headers/i.test(v)) fileType = 'zimit';
}); });
this._file.type = fileType; this._file.zimType = fileType;
console.debug('Archive type set to: ' + fileType); console.debug('Archive type set to: ' + fileType);
} else { } else {
console.error('ZIMArchive is not ready! Cannot set ZIM type.'); console.error('ZIMArchive is not ready! Cannot set ZIM type.');
@ -169,7 +169,7 @@ define(['zimfile', 'zimDirEntry', 'transformZimit', 'util', 'utf8'],
var that = this; var that = this;
this._file.dirEntryByUrlIndex(mainPageUrlIndex).then(function (dirEntry) { this._file.dirEntryByUrlIndex(mainPageUrlIndex).then(function (dirEntry) {
// Filter out Zimit files that we cannot handle without error // Filter out Zimit files that we cannot handle without error
if (that._file.type === 'zimit') dirEntry = transformZimit.filterReplayFiles(dirEntry); if (that._file.zimType === 'zimit') dirEntry = transformZimit.filterReplayFiles(dirEntry);
callback(dirEntry); callback(dirEntry);
}); });
} }
@ -233,7 +233,7 @@ define(['zimfile', 'zimDirEntry', 'transformZimit', 'util', 'utf8'],
var prefixNameSpaces = ''; var prefixNameSpaces = '';
if (search.searchUrlIndex) { if (search.searchUrlIndex) {
var rgxSplitPrefix = /^[-ABCHIJMUVWX]\//; var rgxSplitPrefix = /^[-ABCHIJMUVWX]\//;
if (that._file.type === 'zimit' && cns === 'C') { if (that._file.zimType === 'zimit' && cns === 'C') {
// We have to account for the Zimit prefix in Type 1 ZIMs // We have to account for the Zimit prefix in Type 1 ZIMs
rgxSplitPrefix = /^[CMWX]\/(?:[AH]\/)?/; rgxSplitPrefix = /^[CMWX]\/(?:[AH]\/)?/;
} }
@ -412,7 +412,7 @@ define(['zimfile', 'zimDirEntry', 'transformZimit', 'util', 'utf8'],
ZIMArchive.prototype.resolveRedirect = function(dirEntry, callback) { ZIMArchive.prototype.resolveRedirect = function(dirEntry, callback) {
var that = this; var that = this;
this._file.dirEntryByUrlIndex(dirEntry.redirectTarget).then(function (resolvedDirEntry) { this._file.dirEntryByUrlIndex(dirEntry.redirectTarget).then(function (resolvedDirEntry) {
if (that._file.type === 'zimit') resolvedDirEntry = transformZimit.filterReplayFiles(resolvedDirEntry); if (that._file.zimType === 'zimit') resolvedDirEntry = transformZimit.filterReplayFiles(resolvedDirEntry);
callback(resolvedDirEntry); callback(resolvedDirEntry);
}); });
}; };
@ -526,11 +526,11 @@ define(['zimfile', 'zimDirEntry', 'transformZimit', 'util', 'utf8'],
return that._file.dirEntryByUrlIndex(index); return that._file.dirEntryByUrlIndex(index);
}).then(function (dirEntry) { }).then(function (dirEntry) {
// Filter Zimit dirEntries and do somee initial transforms // Filter Zimit dirEntries and do somee initial transforms
if (that._file.type === 'zimit') if (that._file.zimType === 'zimit')
dirEntry = transformZimit.filterReplayFiles(dirEntry); dirEntry = transformZimit.filterReplayFiles(dirEntry);
if (!dirEntry) { if (!dirEntry) {
// We couldn't get the dirEntry, so look it up the Zimit header // We couldn't get the dirEntry, so look it up the Zimit header
if (!zimitResolving && that._file.type === 'zimit' && !/^(H|C\/H)\//.test(path)) { if (!zimitResolving && that._file.zimType === 'zimit' && !/^(H|C\/H)\//.test(path)) {
// We need to look the file up in the Header namespace (double replacement ensures both types of ZIM are supported) // We need to look the file up in the Header namespace (double replacement ensures both types of ZIM are supported)
var oldPath = path; var oldPath = path;
path = path.replace(/^A\//, 'H/').replace(/^(C\/)A\//, '$1H/'); path = path.replace(/^A\//, 'H/').replace(/^(C\/)A\//, '$1H/');

View File

@ -86,6 +86,7 @@ define(['xzdec_wrapper', 'zstddec_wrapper', 'util', 'utf8', 'zimDirEntry', 'file
* A ZIM File * A ZIM File
* *
* See https://wiki.openzim.org/wiki/ZIM_file_format#Header * See https://wiki.openzim.org/wiki/ZIM_file_format#Header
* Some properties below are extended and are not part of the official OpenZIM specification
* *
* @typedef {Object} ZIMFile * @typedef {Object} ZIMFile
* @property {Array<File>} _files Array of ZIM files * @property {Array<File>} _files Array of ZIM files
@ -101,7 +102,8 @@ define(['xzdec_wrapper', 'zstddec_wrapper', 'util', 'utf8', 'zimDirEntry', 'file
* @property {Integer} mimeListPos Position of the MIME type list (also header size) * @property {Integer} mimeListPos Position of the MIME type list (also header size)
* @property {Integer} mainPage Main page or 0xffffffff if no main page * @property {Integer} mainPage Main page or 0xffffffff if no main page
* @property {Integer} layoutPage Layout page or 0xffffffffff if no layout page * @property {Integer} layoutPage Layout page or 0xffffffffff if no layout page
* @property {Map} mimeTypes The ZIM file's MIME type table rendered as a Map (calculated entry) * @property {String} zimType Extended property: currently either 'open' for OpenZIM file type, or 'zimit' for the warc2zim file type used by Zimit (set in zimArchive.js)
* @property {Map} mimeTypes Extended property: the ZIM file's MIME type table rendered as a Map (calculated entry)
*/ */
/** /**