UNPKG

38.4 kBSource Map (JSON)View Raw
1{"version":3,"file":"perf-zip-crc-cli.js","sourceRoot":"","sources":["../../../../src/_utils/perf-zip-crc-cli.ts"],"names":[],"mappings":"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","sourcesContent":["// ==LICENSE-BEGIN==\n// Copyright 2017 European Digital Reading Lab. All rights reserved.\n// Licensed to the Readium Foundation under one or more contributor license agreements.\n// Use of this source code is governed by a BSD-style license\n// that can be found in the LICENSE file exposed on Github (readium) in the project repository.\n// ==LICENSE-END==\n\n// USAGE:\n// DEBUG=1 npm run cli-crc \"/PATH/TO/EPUBs/\" \"1\"\n// \"/PATH/TO/EPUBs/\" can be a single file \"/PATH/TO/EPUB.epub\" (instead of a folder)\n// => the DEBUG env var enables verbose console logging (remove completely to disable)\n// => the \"1\" trailing command line argument enables resource streaming (in addition to ZIP directory CRC checks)\n\nimport * as fs from \"fs\";\nimport * as path from \"path\";\n\nimport { Stream } from \"stream\";\n\n// ZIP 1\nimport StreamZip = require(\"node-stream-zip\");\n\n// ZIP 2\nimport * as yauzl from \"yauzl\";\n\n// ZIP 3\nimport * as unzipper from \"unzipper\";\n\n// import * as filehound from \"filehound\";\n\nconsole.log(\"process.cwd():\");\nconsole.log(process.cwd());\n\nconsole.log(\"__dirname:\");\nconsole.log(__dirname);\n\nconst args = process.argv.slice(2);\nconsole.log(\"args:\");\nconsole.log(args);\n\nif (!args[0]) {\n console.log(\"FILEPATH ARGUMENT IS MISSING.\");\n process.exit(1);\n}\nconst argPath = args[0].trim();\nlet filePath = argPath;\nconsole.log(filePath);\nif (!fs.existsSync(filePath)) {\n filePath = path.join(__dirname, argPath);\n console.log(filePath);\n if (!fs.existsSync(filePath)) {\n filePath = path.join(process.cwd(), argPath);\n console.log(filePath);\n if (!fs.existsSync(filePath)) {\n console.log(\"FILEPATH DOES NOT EXIST.\");\n process.exit(1);\n }\n }\n}\n\nconst stats = fs.lstatSync(filePath);\nif (!stats.isFile() && !stats.isDirectory()) {\n console.log(\"FILEPATH MUST BE FILE OR DIRECTORY.\");\n process.exit(1);\n}\n\nconst fileName = path.basename(filePath);\nconst ext = path.extname(fileName);\n\nconst argExtra = args[1] ? args[1].trim() : undefined;\nconst READ_ZIP_STREAMS = argExtra === \"1\";\n\nconst UNVERBOSE = false;\nconst VERBOSE = process.env.DEBUG || false;\nconst N_ITERATIONS = (READ_ZIP_STREAMS && VERBOSE) ? 1 : (READ_ZIP_STREAMS ? 5 : 10);\n\nasync function streamReadAll(readStream: NodeJS.ReadableStream): Promise<number> {\n\n return new Promise<number>((resolve, reject) => {\n\n let totalBytes = 0;\n\n const cleanup = () => {\n readStream.removeListener(\"data\", handleData);\n readStream.removeListener(\"error\", handleError);\n readStream.removeListener(\"end\", handleEnd);\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handleError = (err: any) => {\n cleanup();\n reject(err);\n };\n readStream.on(\"error\", handleError);\n\n const handleData = (data: Buffer) => {\n totalBytes += data.length;\n };\n readStream.on(\"data\", handleData);\n\n const handleEnd = () => {\n cleanup();\n resolve(totalBytes);\n };\n readStream.on(\"end\", handleEnd);\n });\n}\n\nconst zip1 = async (file: string): Promise<number[]> => {\n return new Promise<number[]>((resolve, reject) => {\n\n const zip = new StreamZip({\n file,\n storeEntries: true,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n zip.on(\"error\", (err: any) => {\n console.log(\"--ZIP error: \" + filePath);\n console.log(err);\n\n reject(err);\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n zip.on(\"entry\", (_entry: any) => {\n // console.log(\"--ZIP: entry\");\n // console.log(entry.name);\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n zip.on(\"extract\", (entry: any, f: any) => {\n console.log(\"--ZIP extract:\");\n console.log(entry.name);\n console.log(f);\n });\n\n zip.on(\"ready\", async () => {\n // console.log(\"--ZIP: ready\");\n // console.log(zip.entriesCount);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const zipEntries = Object.values(zip.entries()) as any[];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const crcs = zipEntries.map((zipEntry: any) => {\n // if (/\\/$/.test(zipEntry.name)) {\n if (zipEntry.isDirectory) { // zipEntry.name[zipEntry.name.length - 1] === \"/\"\n // skip directories / folders\n return 0;\n } else {\n if (!zipEntry.crc && zipEntry.size) {\n console.log(`1 CRC zero? ${zipEntry.name} (${zipEntry.size} bytes) => ${zipEntry.crc}`);\n }\n return zipEntry.crc as number;\n }\n }).filter((val: number) => {\n return val; // falsy includes zero, null, undefined\n });\n\n if (READ_ZIP_STREAMS) {\n if (VERBOSE) {\n process.stdout.write(\"## 1 ##\\n\");\n }\n for (const zipEntry of zipEntries) {\n if (zipEntry.isDirectory) {\n continue;\n }\n const promize = new Promise((res, rej) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n zip.stream(zipEntry.name, async (err: any, stream: Stream | undefined) => {\n if (err) {\n console.log(err);\n rej(err);\n return;\n }\n // stream.pipe(process.stdout);\n const totalBytes = streamReadAll(stream as NodeJS.ReadableStream);\n process.nextTick(() => {\n res(totalBytes);\n });\n });\n });\n const size = await promize;\n if (zipEntry.size !== size) {\n console.log(`1 SIZE MISMATCH? ${zipEntry.name} ${zipEntry.size} != ${size}`);\n }\n\n if (VERBOSE) {\n process.stdout.write(` ${zipEntry.name} `);\n } else if (!UNVERBOSE) {\n process.stdout.write(\".\");\n }\n }\n if (!UNVERBOSE) {\n process.stdout.write(\"\\n\");\n }\n }\n\n process.nextTick(() => {\n zip.close();\n process.nextTick(() => {\n resolve(crcs);\n });\n });\n });\n });\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n(zip1 as any).zipName = \"node-stream-zip\";\n\nconst zip2 = async (file: string): Promise<number[]> => {\n return new Promise<number[]>((resolve, reject) => {\n let crcs: number[] | undefined;\n yauzl.open(file, { lazyEntries: true, autoClose: false }, (error, zip) => {\n if (error || !zip) {\n console.log(\"yauzl init ERROR\");\n console.log(error);\n reject(error);\n return;\n }\n\n zip.on(\"error\", (erro) => {\n console.log(\"yauzl ERROR\");\n console.log(erro);\n reject(erro);\n });\n\n if (READ_ZIP_STREAMS && VERBOSE) {\n process.stdout.write(\"## 2 ##\\n\");\n }\n\n zip.readEntry(); // next (lazyEntries)\n zip.on(\"entry\", async (zipEntry) => {\n // if (/\\/$/.test(entry.fileName)) {\n if (zipEntry.fileName[zipEntry.fileName.length - 1] === \"/\") {\n // skip directories / folders\n } else {\n if (!zipEntry.crc32 && zipEntry.uncompressedSize) {\n // tslint:disable-next-line:max-line-length\n console.log(`2 CRC zero? ${zipEntry.fileName} (${zipEntry.uncompressedSize} bytes) => ${zipEntry.crc32}`);\n }\n if (!crcs) {\n crcs = [];\n }\n crcs.push(zipEntry.crc32 as number);\n\n if (READ_ZIP_STREAMS) {\n const promize = new Promise((res, rej) => {\n zip.openReadStream(zipEntry, (err, stream) => {\n if (err || !stream) {\n console.log(err);\n rej(err);\n return;\n }\n // stream.pipe(process.stdout);\n const totalBytes = streamReadAll(stream);\n process.nextTick(() => {\n res(totalBytes);\n });\n });\n });\n const size = await promize;\n if (zipEntry.uncompressedSize !== size) {\n // tslint:disable-next-line:max-line-length\n console.log(`2 SIZE MISMATCH? ${zipEntry.fileName} ${zipEntry.uncompressedSize} != ${size}`);\n }\n\n if (VERBOSE) {\n process.stdout.write(` ${zipEntry.fileName} `);\n } else if (!UNVERBOSE) {\n process.stdout.write(\".\");\n }\n }\n }\n\n zip.readEntry(); // next (lazyEntries)\n });\n\n zip.on(\"end\", () => {\n // console.log(\"yauzl END\");\n\n if (READ_ZIP_STREAMS && !UNVERBOSE) {\n process.stdout.write(\"\\n\");\n }\n\n process.nextTick(() => {\n zip.close(); // not autoClose\n process.nextTick(() => {\n if (!crcs) {\n reject(crcs);\n return;\n }\n resolve(crcs.filter((val) => {\n return val; // falsy includes zero, null, undefined\n }));\n });\n });\n });\n\n zip.on(\"close\", () => {\n // console.log(\"yauzl CLOSE\");\n });\n });\n });\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n(zip2 as any).zipName = \"yauzl\";\n\n// <<< UNZIPPER_BUG\n// https://github.com/ZJONSSON/node-unzipper/issues/104\n// events.js:174\n// throw er; // Unhandled 'error' event\n// Error: EBADF: bad file descriptor, read\n// Emitted 'error' event at:\n// at lazyFs.read (internal/fs/streams.js:165:12)\n// at FSReqWrap.wrapper [as oncomplete] (fs.js:467:17)\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst streams: any = {};\n// >>> UNZIPPER_BUG\n\nconst zip3 = async (file: string): Promise<number[]> => {\n return new Promise<number[]>(async (resolve, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let zip: any;\n try {\n zip = await unzipper.Open.file(file);\n } catch (err) {\n console.log(err);\n reject(err);\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const crcs = zip.files.map((zipEntry: any) => {\n // if (/\\/$/.test(zipEntry.path)) {\n if (zipEntry.type === \"Directory\") { // zipEntry.path[zipEntry.path.length - 1] === \"/\")\n // skip directories / folders\n return 0;\n } else {\n if (!zipEntry.crc32 && zipEntry.uncompressedSize) {\n // tslint:disable-next-line:max-line-length\n console.log(`3 CRC zero? ${zipEntry.path} (${zipEntry.uncompressedSize} bytes) => ${zipEntry.crc32}`);\n }\n return zipEntry.crc32 as number;\n }\n }).filter((val: number) => {\n return val; // falsy includes zero, null, undefined\n });\n\n if (READ_ZIP_STREAMS) {\n if (VERBOSE) {\n process.stdout.write(\"## 3 ##\\n\");\n }\n for (const zipEntry of zip.files) {\n if (zipEntry.type === \"Directory\") {\n continue;\n }\n const stream = zipEntry.stream();\n\n // <<< UNZIPPER_BUG\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stream.on(\"error\", (err: any) => {\n console.log(\"err1\");\n console.log(err);\n });\n stream.__ZIP_FILE_PATH = file;\n stream.__ZIP_RESOURCE_PATH = zipEntry.path;\n if (!streams[file]) {\n streams[file] = {};\n }\n streams[file][zipEntry.path] = stream; // prevents premature garbage collection\n\n // event sequence: FINISH, then END\n stream.on(\"end\", () => {\n // console.log(`${zipEntry.path} END`);\n\n process.nextTick(() => {\n // console.log(`${stream.__ZIP_FILE_PATH} ${stream.__ZIP_RESOURCE_PATH} CLEAN`);\n // streams[stream.__ZIP_FILE_PATH][stream.__ZIP_RESOURCE_PATH] = null;\n delete streams[stream.__ZIP_FILE_PATH][stream.__ZIP_RESOURCE_PATH];\n });\n\n // setTimeout(() => {\n // return stream; // prevents premature garbage collection\n // }, 200);\n });\n // >>> UNZIPPER_BUG\n\n const promize = streamReadAll(stream);\n let size: number;\n try {\n size = await promize;\n } catch (err) {\n console.log(\"err2\");\n console.log(err);\n reject(err);\n return;\n }\n\n if (zipEntry.uncompressedSize !== size) {\n console.log(`3 SIZE MISMATCH? ${zipEntry.path} ${zipEntry.uncompressedSize} != ${size}`);\n }\n\n if (VERBOSE) {\n process.stdout.write(` ${zipEntry.path} `);\n } else if (!UNVERBOSE) {\n process.stdout.write(\".\");\n }\n }\n if (!UNVERBOSE) {\n process.stdout.write(\"\\n\");\n }\n\n // <<< UNZIPPER_BUG\n process.nextTick(() => {\n // streams[file] = null;\n delete streams[file];\n });\n // >>> UNZIPPER_BUG\n }\n\n resolve(crcs);\n });\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n(zip3 as any).zipName = \"unzipper\";\n\nconst zips = READ_ZIP_STREAMS ? [zip1, zip2] : // <<< UNZIPPER_BUG\n [zip1, zip2, zip3];\n\nasync function processFile(file: string) {\n console.log(\"=====================================\");\n if (!UNVERBOSE) {\n console.log(`${file}`);\n console.log(\"=====================================\");\n }\n\n let winner = 0;\n let minNanoOverall = Number.MAX_SAFE_INTEGER;\n\n let iZip = 0;\n for (const zip of zips) {\n iZip++;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (zip as any).minNano = Number.MAX_SAFE_INTEGER;\n\n if (VERBOSE) {\n console.log(\"-------------------------------\");\n }\n\n let crcsPreviousIteration: number[] | undefined;\n for (let i = 0; i < N_ITERATIONS; i++) {\n process.stdout.write(`${i + 1}/${N_ITERATIONS} `);\n\n const time = process.hrtime();\n const crcs = await zip(file);\n const diffTime = process.hrtime(time);\n\n // await new Promise((res, _rej) => {\n // setTimeout(() => {\n // res();\n // }, 100);\n // });\n\n const nanos = diffTime[0] * 1e9 + diffTime[1];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (nanos < (zip as any).minNano) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (zip as any).minNano = nanos;\n }\n if (nanos < minNanoOverall) {\n minNanoOverall = nanos;\n winner = iZip;\n }\n\n if (VERBOSE) {\n // tslint:disable-next-line:max-line-length\n console.log(`Zip ${iZip} (${crcs.length}): ${diffTime[0]} seconds + ${diffTime[1]} nanoseconds`);\n }\n\n // if (crcs.includes(0)) {\n // console.log(JSON.stringify(crcs, null, 2));\n // }\n\n if (crcsPreviousIteration) {\n if (!sameArrays(crcsPreviousIteration, crcs)) {\n\n console.log(`++++ Zip ${iZip} (ITERATION ${i}) CRC DIFF!?`);\n console.log(`-- ${crcsPreviousIteration.length}:`);\n console.log(JSON.stringify(crcsPreviousIteration, null, 2));\n console.log(`-- ${crcs.length}:`);\n console.log(JSON.stringify(crcs, null, 2));\n process.exit(1);\n }\n }\n crcsPreviousIteration = crcs;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (zip as any).CRCs = crcsPreviousIteration;\n\n if (!VERBOSE) {\n console.log(\"\\n\");\n }\n\n }\n\n let crcsPreviousZip: number[] | undefined;\n let isDiff = false;\n for (const zip of zips) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (crcsPreviousZip && (zip as any).CRCs) {\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isDiff = !sameArrays(crcsPreviousZip, (zip as any).CRCs);\n // if (crcsPreviousZip.length !== (zip as any).CRCs.length) {\n // isDiff = true;\n // break;\n // } else {\n // for (let j = 0; j < (zip as any).CRCs.length; j++) {\n // if ((zip as any).CRCs[j] !== crcsPreviousZip[j]) {\n // isDiff = true;\n // break;\n // }\n // }\n // }\n if (isDiff) {\n break;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n crcsPreviousZip = (zip as any).CRCs;\n }\n if (isDiff) {\n console.log(\"CRC DIFF! ##############################################\");\n iZip = 0;\n for (const zip of zips) {\n iZip++;\n console.log(\"==========================\");\n console.log(`++++ Zip ${iZip} CRC:`);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n console.log(`-- ${(zip as any).CRCs.length}:`);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n console.log(JSON.stringify((zip as any).CRCs));\n }\n\n for (let j = 0; j < zips.length; j++) {\n const zip = zips[j];\n let nDiffs = 0;\n for (let k = 0; k < zips.length; k++) {\n if (j === k) {\n continue;\n }\n const zip_ = zips[k];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!sameArrays((zip as any).CRCs, (zip_ as any).CRCs)) {\n nDiffs++;\n }\n }\n if (nDiffs === (zips.length - 1)) {\n console.log(\"####################################\");\n console.log(\"####################################\");\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n console.log(`SUSPECT ====> Zip ${j + 1} (${(zip as any).zipName})`);\n console.log(\"####################################\");\n console.log(\"####################################\");\n }\n }\n\n process.exit(1);\n }\n\n if (VERBOSE) {\n console.log(\"=====================================\");\n }\n\n iZip = 0;\n for (const zip of zips) {\n iZip++;\n const won = iZip === winner;\n // tslint:disable-next-line:max-line-length\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n console.log(`${won ? \">>\" : \"--\"} Zip ${iZip} (${(zip as any).zipName}) => ${(zip as any).minNano.toLocaleString()} nanoseconds ${won ? \" [ WINNER ]\" : `[ +${((zip as any).minNano - minNanoOverall).toLocaleString()} ]`}`);\n }\n}\n\nif (stats.isDirectory()) {\n\n // tslint:disable-next-line:no-floating-promises\n (async () => {\n // const files: string[] = await filehound.create()\n // // .discard(\"node_modules\")\n // // .depth(5)\n // .paths(filePath)\n // .ext([\".epub\", \".epub3\", \".cbz\", \".zip\"])\n // // .directory()\n // .find();\n const files = fs.readdirSync(filePath, { withFileTypes: true }).\n filter((f) => f.isFile() &&\n /((\\.epub3?)|(\\.zip)|(\\.cbz))$/i.test(f.name)).\n map((f) => path.join(filePath, f.name));\n\n for (const file of files) {\n await processFile(file);\n }\n })();\n\n} else if (/((\\.epub3?)|(\\.cbz)|(\\.zip))$/i.test(ext)) {\n // tslint:disable-next-line:no-floating-promises\n (async () => {\n await processFile(filePath);\n })();\n}\n\nfunction sameArrays(arr1: number[], arr2: number[]) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let j = 0; j < arr1.length; j++) {\n if (arr1[j] !== arr2[j]) {\n return false;\n }\n }\n return true;\n}\n"]}
\No newline at end of file