From 725f948f01229320844569fc1b1b13066b68bb5b Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Fri, 17 Mar 2023 12:37:58 -0400 Subject: [PATCH] =?UTF-8?q?=E2=9E=95=20Added=20mimetype=20checker=20lib?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 399 ++++++++++++++++++----------------- package.json | 1 + utils/file.utils.ts | 34 ++- utils/uncompression.utils.ts | 3 + 4 files changed, 240 insertions(+), 197 deletions(-) diff --git a/package-lock.json b/package-lock.json index cf1c08e..fa20630 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55,6 +55,7 @@ "xml2js": "^0.4.23" }, "devDependencies": { + "@npcz/magic": "^1.3.14", "@types/lodash": "^4.14.168", "@typescript-eslint/eslint-plugin": "^4.33.0", "@typescript-eslint/parser": "^4.33.0", @@ -3009,6 +3010,12 @@ "node": ">= 8" } }, + "node_modules/@npcz/magic": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@npcz/magic/-/magic-1.3.14.tgz", + "integrity": "sha512-Jt+fjEVAVoDJh9N+nrQ/IQSC6MFLpIDag8VXxvdVGGG5mrGK2HH4X5KqC9zgzb20fqk2vBM9g2QzyczylKVvqg==", + "dev": true + }, "node_modules/@root/walk": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@root/walk/-/walk-1.1.0.tgz", @@ -3802,7 +3809,7 @@ "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "engines": { "node": ">=0.8" } @@ -3835,15 +3842,15 @@ "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "engines": { "node": "*" } }, "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, "node_modules/axios": { "version": "0.25.0", @@ -3989,7 +3996,7 @@ "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dependencies": { "tweetnacl": "^0.14.3" } @@ -4005,7 +4012,7 @@ "node_modules/binary": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", "dependencies": { "buffers": "~0.1.1", "chainsaw": "~0.1.0" @@ -4278,7 +4285,7 @@ "node_modules/buffers": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", "engines": { "node": ">=0.2.0" } @@ -4397,12 +4404,12 @@ "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, "node_modules/chainsaw": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", "dependencies": { "traverse": ">=0.3.0 <0.4" }, @@ -4837,7 +4844,7 @@ "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dependencies": { "assert-plus": "^1.0.0" }, @@ -5259,7 +5266,7 @@ "node_modules/duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", "dependencies": { "readable-stream": "^2.0.2" } @@ -5267,7 +5274,7 @@ "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -5469,7 +5476,7 @@ "node_modules/err-code": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", - "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=" + "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==" }, "node_modules/error-ex": { "version": "1.3.2", @@ -6193,7 +6200,7 @@ "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "engines": [ "node >=0.6.0" ] @@ -6370,7 +6377,7 @@ "node_modules/file-js": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/file-js/-/file-js-0.3.0.tgz", - "integrity": "sha1-+rRr94I0bJKUSZ8fDSrQfYOPJdE=", + "integrity": "sha512-nZlX1pxpV6Mt8BghM3Z150bpsCT1zqil97UryusstZLSs9caYAe0Wph2UKPC3awfM2Dq4ri1Sv99KuK4EIImlA==", "dependencies": { "bluebird": "^3.4.7", "minimatch": "^3.0.3", @@ -6412,9 +6419,9 @@ } }, "node_modules/filehound/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6516,7 +6523,7 @@ "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "engines": { "node": "*" } @@ -6696,7 +6703,7 @@ "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dependencies": { "assert-plus": "^1.0.0" } @@ -6790,7 +6797,7 @@ "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "engines": { "node": ">=4" } @@ -6997,7 +7004,7 @@ "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -7120,9 +7127,9 @@ } }, "node_modules/image-size": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.1.tgz", - "integrity": "sha512-VAwkvNSNGClRw9mDHhc5Efax8PLlsOGcUTh0T/LIriC8vPA3U5PdqXWqkz406MoYHMKW8Uf9gWr05T/rYB44kQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", + "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", "dependencies": { "queue": "6.0.2" }, @@ -7130,7 +7137,7 @@ "image-size": "bin/image-size.js" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, "node_modules/image-type": { @@ -8733,7 +8740,7 @@ "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" }, "node_modules/jsdom": { "version": "21.1.0", @@ -8924,7 +8931,7 @@ "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" }, "node_modules/json5": { "version": "2.2.3", @@ -9026,7 +9033,7 @@ "node_modules/listenercount": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=" + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" }, "node_modules/localforage": { "version": "1.10.0", @@ -9285,17 +9292,6 @@ "node": ">=8.6" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -13017,7 +13013,7 @@ "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "node_modules/picocolors": { "version": "1.0.0", @@ -13312,7 +13308,7 @@ "node_modules/proper-lockfile": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-1.2.0.tgz", - "integrity": "sha1-zv9d2J0+XxD7deHo52vHWAGlnDQ=", + "integrity": "sha512-YNjxtCoY3A+lohlLXWCYrHDhUdfU3MMnuC+ADhloDvJo586LKW23dPrjxGvRGuus05Amcf0cQy6vrjjtbJhWpw==", "dependencies": { "err-code": "^1.0.0", "extend": "^3.0.0", @@ -13394,43 +13390,43 @@ ] }, "node_modules/r2-lcp-js": { - "version": "1.0.35", - "resolved": "https://registry.npmjs.org/r2-lcp-js/-/r2-lcp-js-1.0.35.tgz", - "integrity": "sha512-e/mrvjhA4W3eRbZsVP3eUn66wncIlK9tTROQARwmtasd2B7Q1csmfpypdWkMTMlJR1u68dduYVNMU4BUkCcKsg==", + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/r2-lcp-js/-/r2-lcp-js-1.0.37.tgz", + "integrity": "sha512-hh7caSFgpsmbFtpm6owgyvV6+fv9jEFyFBserCb5B/PBOhI5sYhI1X5nEKmAfi+VwM6vS0YrjnF/ifk4LYy0/g==", "dependencies": { "bindings": "^1.5.0", - "debug": "^4.3.3", - "moment": "^2.29.1", - "r2-utils-js": "^1.0.31", + "debug": "^4.3.4", + "moment": "^2.29.4", + "r2-utils-js": "^1.0.33", "request": "^2.88.2", "request-promise-native": "^1.0.9", "ta-json-x": "^2.5.3", - "tslib": "^2.3.1", - "urijs": "^1.19.7" + "tslib": "^2.5.0", + "urijs": "^1.19.11" }, "engines": { - "node": ">=14", + "node": ">=16", "npm": ">=6", "yarn": ">=1.0" } }, "node_modules/r2-lcp-js/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" }, "node_modules/r2-opds-js": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/r2-opds-js/-/r2-opds-js-1.0.39.tgz", - "integrity": "sha512-x7Ds5sY0w/N65DQ/OQAUy8wpBXTODklVEurHlt7peO0MeGki4PMYsnM9FUitrWxqJj0NQtNDOkS24GF8GbFPdA==", + "version": "1.0.41", + "resolved": "https://registry.npmjs.org/r2-opds-js/-/r2-opds-js-1.0.41.tgz", + "integrity": "sha512-qLwmIiu4gOJI8b3mPDbPSqrlWfgSe+kg6bk/FJ/b0fVKDo8/g/lVuBRI/BLtwC1C7JNwgrXbQFbNzKrgBcy4tw==", "dependencies": { - "@xmldom/xmldom": "^0.8.0", - "debug": "^4.3.3", - "r2-lcp-js": "^1.0.34", - "r2-shared-js": "^1.0.55", - "r2-utils-js": "^1.0.30", + "@xmldom/xmldom": "^0.8.6", + "debug": "^4.3.4", + "r2-lcp-js": "^1.0.37", + "r2-shared-js": "^1.0.66", + "r2-utils-js": "^1.0.33", "ta-json-x": "^2.5.3", - "tslib": "^2.3.1" + "tslib": "^2.5.0" }, "engines": { "node": ">=16", @@ -13438,27 +13434,27 @@ } }, "node_modules/r2-opds-js/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" }, "node_modules/r2-shared-js": { - "version": "1.0.59", - "resolved": "https://registry.npmjs.org/r2-shared-js/-/r2-shared-js-1.0.59.tgz", - "integrity": "sha512-hcSc9a00zWaETKSRcDk8qhAT9zUXfVGgnD1g+BLS/bMvUnl7wkn3JdowXGwMyYS1bb985tCSIwzq215LRhYhzQ==", + "version": "1.0.67", + "resolved": "https://registry.npmjs.org/r2-shared-js/-/r2-shared-js-1.0.67.tgz", + "integrity": "sha512-yNRsvt0BVCsd/K06Hol/z5R1GJdcC/bS31aehbafC8cerx1p9nv6DE9wzKofHN07IFXshZVk7l/JYDJJ5FRJ6Q==", "dependencies": { - "@xmldom/xmldom": "^0.8.1", + "@xmldom/xmldom": "^0.8.6", "debug": "^4.3.4", "fast-deep-equal": "^3.1.3", "he": "^1.2.0", - "image-size": "^1.0.1", + "image-size": "^1.0.2", "mime-types": "^2.1.35", - "moment": "^2.29.1", - "r2-lcp-js": "^1.0.35", - "r2-utils-js": "^1.0.31", + "moment": "^2.29.4", + "r2-lcp-js": "^1.0.37", + "r2-utils-js": "^1.0.33", "slugify": "^1.6.5", "ta-json-x": "^2.5.3", - "tslib": "^2.3.1", + "tslib": "^2.5.0", "xpath": "^0.0.32", "yazl": "^2.5.1" }, @@ -13471,38 +13467,38 @@ } }, "node_modules/r2-shared-js/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" }, "node_modules/r2-utils-js": { - "version": "1.0.31", - "resolved": "https://registry.npmjs.org/r2-utils-js/-/r2-utils-js-1.0.31.tgz", - "integrity": "sha512-MUtInLoqkwxNFJa9s7vjY2uDpxz1+ei3/x6KVefbuOEDE7KYKtuSUIwPhXgn6uSizZeN/A+2hZK/zi7s5q9fpA==", + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/r2-utils-js/-/r2-utils-js-1.0.34.tgz", + "integrity": "sha512-/+pxROgT7aOhqdOQ1Zg+Ihxi/Q2iWuNBl81scg7vtbcfM7Or7JXsrmDCXiCuang/Nz+r9rq5xesb2hDinzwjIw==", "dependencies": { - "debug": "^4.3.3", - "filehound": "^1.17.5", + "debug": "^4.3.4", + "filehound": "^1.17.6", "node-stream-zip": "^1.15.0", "reflect-metadata": "^0.1.13", "request": "^2.88.2", "request-promise-native": "^1.0.9", "ta-json-x": "^2.5.3", - "tslib": "^2.3.1", + "tslib": "^2.5.0", "unzipper": "^0.10.11", "xpath": "^0.0.32", "yauzl": "^2.10.0", "yazl": "^2.5.1" }, "engines": { - "node": ">=14", + "node": ">=16", "npm": ">=6", "yarn": ">=1.0" } }, "node_modules/r2-utils-js/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" }, "node_modules/range-parser": { "version": "1.2.1", @@ -13859,7 +13855,7 @@ "node_modules/retry": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", - "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==", "engines": { "node": "*" } @@ -14071,6 +14067,17 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/serve-static": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", @@ -14088,7 +14095,7 @@ "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, "node_modules/setprototypeof": { "version": "1.2.0", @@ -14490,7 +14497,7 @@ "node_modules/stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", "engines": { "node": ">=0.10.0" } @@ -15013,7 +15020,7 @@ "node_modules/traverse": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", "engines": { "node": "*" } @@ -15214,7 +15221,7 @@ "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" }, "node_modules/two-product": { "version": "1.0.2", @@ -15291,9 +15298,9 @@ } }, "node_modules/typescript": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", - "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -15345,7 +15352,7 @@ "node_modules/unit-compare": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unit-compare/-/unit-compare-1.0.1.tgz", - "integrity": "sha1-DHRZ8OW/U2N+qHPKPO4Y3i7so4Y=", + "integrity": "sha512-AeLMQr8gcen2WOTwV0Gvi1nKKbY4Mms79MoltZ6hrZV/VANgE/YQly3jtWZJA/fa9m4ajhynq3XMqh5rOyZclA==", "dependencies": { "moment": "^2.14.1" } @@ -15394,7 +15401,7 @@ "node_modules/unzipper/node_modules/bluebird": { "version": "3.4.7", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=" + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" }, "node_modules/uri-js": { "version": "4.4.1", @@ -15501,7 +15508,7 @@ "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "engines": [ "node >=0.6.0" ], @@ -15514,7 +15521,7 @@ "node_modules/verror/node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, "node_modules/voca": { "version": "1.4.0", @@ -18509,6 +18516,12 @@ "fastq": "^1.6.0" } }, + "@npcz/magic": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@npcz/magic/-/magic-1.3.14.tgz", + "integrity": "sha512-Jt+fjEVAVoDJh9N+nrQ/IQSC6MFLpIDag8VXxvdVGGG5mrGK2HH4X5KqC9zgzb20fqk2vBM9g2QzyczylKVvqg==", + "dev": true + }, "@root/walk": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@root/walk/-/walk-1.1.0.tgz", @@ -19134,7 +19147,7 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" }, "astral-regex": { "version": "2.0.0", @@ -19155,12 +19168,12 @@ "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" }, "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, "axios": { "version": "0.25.0", @@ -19268,7 +19281,7 @@ "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "requires": { "tweetnacl": "^0.14.3" } @@ -19281,7 +19294,7 @@ "binary": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", "requires": { "buffers": "~0.1.1", "chainsaw": "~0.1.0" @@ -19498,7 +19511,7 @@ "buffers": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==" }, "bull": { "version": "4.10.2", @@ -19588,12 +19601,12 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, "chainsaw": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", "requires": { "traverse": ">=0.3.0 <0.4" } @@ -19938,7 +19951,7 @@ "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "requires": { "assert-plus": "^1.0.0" } @@ -20250,7 +20263,7 @@ "duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", "requires": { "readable-stream": "^2.0.2" } @@ -20258,7 +20271,7 @@ "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -20404,7 +20417,7 @@ "err-code": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", - "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=" + "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==" }, "error-ex": { "version": "1.3.2", @@ -21008,7 +21021,7 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" }, "fakerator": { "version": "0.3.6", @@ -21173,7 +21186,7 @@ "file-js": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/file-js/-/file-js-0.3.0.tgz", - "integrity": "sha1-+rRr94I0bJKUSZ8fDSrQfYOPJdE=", + "integrity": "sha512-nZlX1pxpV6Mt8BghM3Z150bpsCT1zqil97UryusstZLSs9caYAe0Wph2UKPC3awfM2Dq4ri1Sv99KuK4EIImlA==", "requires": { "bluebird": "^3.4.7", "minimatch": "^3.0.3", @@ -21212,9 +21225,9 @@ } }, "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "requires": { "brace-expansion": "^2.0.1" } @@ -21289,7 +21302,7 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" }, "form-data": { "version": "2.3.3", @@ -21416,7 +21429,7 @@ "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "requires": { "assert-plus": "^1.0.0" } @@ -21486,7 +21499,7 @@ "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" }, "har-validator": { "version": "5.1.5", @@ -21641,7 +21654,7 @@ "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -21731,9 +21744,9 @@ } }, "image-size": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.1.tgz", - "integrity": "sha512-VAwkvNSNGClRw9mDHhc5Efax8PLlsOGcUTh0T/LIriC8vPA3U5PdqXWqkz406MoYHMKW8Uf9gWr05T/rYB44kQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", + "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", "requires": { "queue": "6.0.2" } @@ -22934,7 +22947,7 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" }, "jsdom": { "version": "21.1.0", @@ -23069,7 +23082,7 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" }, "json5": { "version": "2.2.3", @@ -23145,7 +23158,7 @@ "listenercount": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=" + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" }, "localforage": { "version": "1.10.0", @@ -23375,11 +23388,6 @@ "picomatch": "^2.3.1" } }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -25996,7 +26004,7 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "picocolors": { "version": "1.0.0", @@ -26198,7 +26206,7 @@ "proper-lockfile": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-1.2.0.tgz", - "integrity": "sha1-zv9d2J0+XxD7deHo52vHWAGlnDQ=", + "integrity": "sha512-YNjxtCoY3A+lohlLXWCYrHDhUdfU3MMnuC+ADhloDvJo586LKW23dPrjxGvRGuus05Amcf0cQy6vrjjtbJhWpw==", "requires": { "err-code": "^1.0.0", "extend": "^3.0.0", @@ -26257,90 +26265,90 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, "r2-lcp-js": { - "version": "1.0.35", - "resolved": "https://registry.npmjs.org/r2-lcp-js/-/r2-lcp-js-1.0.35.tgz", - "integrity": "sha512-e/mrvjhA4W3eRbZsVP3eUn66wncIlK9tTROQARwmtasd2B7Q1csmfpypdWkMTMlJR1u68dduYVNMU4BUkCcKsg==", + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/r2-lcp-js/-/r2-lcp-js-1.0.37.tgz", + "integrity": "sha512-hh7caSFgpsmbFtpm6owgyvV6+fv9jEFyFBserCb5B/PBOhI5sYhI1X5nEKmAfi+VwM6vS0YrjnF/ifk4LYy0/g==", "requires": { "bindings": "^1.5.0", - "debug": "^4.3.3", - "moment": "^2.29.1", - "r2-utils-js": "^1.0.31", + "debug": "^4.3.4", + "moment": "^2.29.4", + "r2-utils-js": "^1.0.33", "request": "^2.88.2", "request-promise-native": "^1.0.9", "ta-json-x": "^2.5.3", - "tslib": "^2.3.1", - "urijs": "^1.19.7" + "tslib": "^2.5.0", + "urijs": "^1.19.11" }, "dependencies": { "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" } } }, "r2-opds-js": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/r2-opds-js/-/r2-opds-js-1.0.39.tgz", - "integrity": "sha512-x7Ds5sY0w/N65DQ/OQAUy8wpBXTODklVEurHlt7peO0MeGki4PMYsnM9FUitrWxqJj0NQtNDOkS24GF8GbFPdA==", + "version": "1.0.41", + "resolved": "https://registry.npmjs.org/r2-opds-js/-/r2-opds-js-1.0.41.tgz", + "integrity": "sha512-qLwmIiu4gOJI8b3mPDbPSqrlWfgSe+kg6bk/FJ/b0fVKDo8/g/lVuBRI/BLtwC1C7JNwgrXbQFbNzKrgBcy4tw==", "requires": { - "@xmldom/xmldom": "^0.8.0", - "debug": "^4.3.3", - "r2-lcp-js": "^1.0.34", - "r2-shared-js": "^1.0.55", - "r2-utils-js": "^1.0.30", + "@xmldom/xmldom": "^0.8.6", + "debug": "^4.3.4", + "r2-lcp-js": "^1.0.37", + "r2-shared-js": "^1.0.66", + "r2-utils-js": "^1.0.33", "ta-json-x": "^2.5.3", - "tslib": "^2.3.1" + "tslib": "^2.5.0" }, "dependencies": { "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" } } }, "r2-shared-js": { - "version": "1.0.59", - "resolved": "https://registry.npmjs.org/r2-shared-js/-/r2-shared-js-1.0.59.tgz", - "integrity": "sha512-hcSc9a00zWaETKSRcDk8qhAT9zUXfVGgnD1g+BLS/bMvUnl7wkn3JdowXGwMyYS1bb985tCSIwzq215LRhYhzQ==", + "version": "1.0.67", + "resolved": "https://registry.npmjs.org/r2-shared-js/-/r2-shared-js-1.0.67.tgz", + "integrity": "sha512-yNRsvt0BVCsd/K06Hol/z5R1GJdcC/bS31aehbafC8cerx1p9nv6DE9wzKofHN07IFXshZVk7l/JYDJJ5FRJ6Q==", "requires": { - "@xmldom/xmldom": "^0.8.1", + "@xmldom/xmldom": "^0.8.6", "debug": "^4.3.4", "fast-deep-equal": "^3.1.3", "he": "^1.2.0", - "image-size": "^1.0.1", + "image-size": "^1.0.2", "mime-types": "^2.1.35", - "moment": "^2.29.1", - "r2-lcp-js": "^1.0.35", - "r2-utils-js": "^1.0.31", + "moment": "^2.29.4", + "r2-lcp-js": "^1.0.37", + "r2-utils-js": "^1.0.33", "slugify": "^1.6.5", "ta-json-x": "^2.5.3", - "tslib": "^2.3.1", + "tslib": "^2.5.0", "xpath": "^0.0.32", "yazl": "^2.5.1" }, "dependencies": { "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" } } }, "r2-utils-js": { - "version": "1.0.31", - "resolved": "https://registry.npmjs.org/r2-utils-js/-/r2-utils-js-1.0.31.tgz", - "integrity": "sha512-MUtInLoqkwxNFJa9s7vjY2uDpxz1+ei3/x6KVefbuOEDE7KYKtuSUIwPhXgn6uSizZeN/A+2hZK/zi7s5q9fpA==", + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/r2-utils-js/-/r2-utils-js-1.0.34.tgz", + "integrity": "sha512-/+pxROgT7aOhqdOQ1Zg+Ihxi/Q2iWuNBl81scg7vtbcfM7Or7JXsrmDCXiCuang/Nz+r9rq5xesb2hDinzwjIw==", "requires": { - "debug": "^4.3.3", - "filehound": "^1.17.5", + "debug": "^4.3.4", + "filehound": "^1.17.6", "node-stream-zip": "^1.15.0", "reflect-metadata": "^0.1.13", "request": "^2.88.2", "request-promise-native": "^1.0.9", "ta-json-x": "^2.5.3", - "tslib": "^2.3.1", + "tslib": "^2.5.0", "unzipper": "^0.10.11", "xpath": "^0.0.32", "yauzl": "^2.10.0", @@ -26348,9 +26356,9 @@ }, "dependencies": { "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" } } }, @@ -26620,7 +26628,7 @@ "retry": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", - "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=" + "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==" }, "reusify": { "version": "1.0.4", @@ -26789,6 +26797,11 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" } } }, @@ -26806,7 +26819,7 @@ "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, "setprototypeof": { "version": "1.2.0", @@ -27105,7 +27118,7 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==" }, "streamsearch": { "version": "1.1.0", @@ -27540,7 +27553,7 @@ "traverse": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==" }, "truncate-utf8-bytes": { "version": "1.0.2", @@ -27684,7 +27697,7 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" }, "two-product": { "version": "1.0.2", @@ -27746,9 +27759,9 @@ } }, "typescript": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", - "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==" + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" }, "uid2": { "version": "0.0.3", @@ -27787,7 +27800,7 @@ "unit-compare": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unit-compare/-/unit-compare-1.0.1.tgz", - "integrity": "sha1-DHRZ8OW/U2N+qHPKPO4Y3i7so4Y=", + "integrity": "sha512-AeLMQr8gcen2WOTwV0Gvi1nKKbY4Mms79MoltZ6hrZV/VANgE/YQly3jtWZJA/fa9m4ajhynq3XMqh5rOyZclA==", "requires": { "moment": "^2.14.1" } @@ -27827,7 +27840,7 @@ "bluebird": { "version": "3.4.7", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=" + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" } } }, @@ -27926,7 +27939,7 @@ "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -27936,7 +27949,7 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" } } }, diff --git a/package.json b/package.json index a201ab3..09a08a3 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ ], "author": "", "devDependencies": { + "@npcz/magic": "^1.3.14", "@types/lodash": "^4.14.168", "@typescript-eslint/eslint-plugin": "^4.33.0", "@typescript-eslint/parser": "^4.33.0", diff --git a/utils/file.utils.ts b/utils/file.utils.ts index 8534b4c..b456723 100644 --- a/utils/file.utils.ts +++ b/utils/file.utils.ts @@ -3,6 +3,7 @@ const fse = require("fs-extra"); import path from "path"; import fs from "fs"; +import { FileMagic, MagicFlags } from "@npcz/magic"; const { readdir, stat } = require("fs/promises"); import { IExplodedPathResponse, @@ -17,6 +18,17 @@ import { sanitize } from "sanitize-filename-ts"; const ALLOWED_IMAGE_FILE_FORMATS = [".jpg", ".jpeg", ".png"]; +// Tell FileMagic where to find the magic.mgc file +FileMagic.magicFile = require.resolve("@npcz/magic/dist/magic.mgc"); + +// We can onlu use MAGIC_PRESERVE_ATIME on operating suystems that support +// it and that includes OS X for example. It's a good practice as we don't +// want to change the last access time because we are just checking the file +// contents type +if (process.platform === "darwin" || process.platform === "linux") { + FileMagic.defaulFlags = MagicFlags.MAGIC_PRESERVE_ATIME; +} + export const walkFolder = async ( folder: string, formats: string[] @@ -73,11 +85,11 @@ export const explodePath = (filePath: string): IExplodedPathResponse => { // returns a promise which resolves true if file exists: export const checkFileExists = (filepath) => { return new Promise((resolve, reject) => { - fs.access(filepath, fs.constants.F_OK, error => { + fs.access(filepath, fs.constants.F_OK, (error) => { resolve(!error); }); }); -} +}; export const getSizeOfDirectory = async ( directoryPath: string, @@ -123,14 +135,28 @@ export const getFileConstituents = (filePath: string) => { }; }; +export const getMimeType = async (filePath: string) => { + return await FileMagic.getInstance().then((magic: FileMagic) => { + return magic.detect( + path.resolve(filePath), + magic.flags | MagicFlags.MAGIC_MIME + ); + }); +}; + export const createDirectory = async (options: any, directoryPath: string) => { try { await fse.ensureDir(directoryPath, options); console.info(`Directory [ %s ] was created.`, directoryPath); } catch (error) { - throw new Errors.MoleculerError("Failed to create directory", 500, "FileOpsError", error); + throw new Errors.MoleculerError( + "Failed to create directory", + 500, + "FileOpsError", + error + ); } -} +}; const filterOutDotFiles = (entities) => entities.filter((ent) => !ent.name.startsWith(".")); diff --git a/utils/uncompression.utils.ts b/utils/uncompression.utils.ts index 2efbb4a..127acf9 100644 --- a/utils/uncompression.utils.ts +++ b/utils/uncompression.utils.ts @@ -44,6 +44,7 @@ import { getFileConstituents, createDirectory, walkFolder, + getMimeType, } from "../utils/file.utils"; import { convertXMLToJSON } from "./xml.utils"; const fse = require("fs-extra"); @@ -346,6 +347,8 @@ export const extractFromArchive = async (filePath: string) => { console.log( `Detected file type is ${extension}, looking for comicinfo.xml...` ); + const mimeType = await getMimeType(filePath); + console.log(`File has the following mime-type: ${mimeType}`); switch (extension) { case ".cbz": case ".cb7":