diff --git a/package-lock.json b/package-lock.json index 4c4fb3d..172c225 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,8 +21,7 @@ "@apiglobal/typedrequest-interfaces": { "version": "1.0.15", "resolved": "https://registry.npmjs.org/@apiglobal/typedrequest-interfaces/-/typedrequest-interfaces-1.0.15.tgz", - "integrity": "sha512-KncX168fUQJ73FeT22Cvls41mkJmtasP8dB2s9+9/OyWZpNsCzk9NEmtdRhulW2vLQwuAbQc1eoloe7ffCmhcA==", - "dev": true + "integrity": "sha512-KncX168fUQJ73FeT22Cvls41mkJmtasP8dB2s9+9/OyWZpNsCzk9NEmtdRhulW2vLQwuAbQc1eoloe7ffCmhcA==" }, "@babel/code-frame": { "version": "7.10.4", @@ -1419,8 +1418,93 @@ "@pushrocks/isounique": { "version": "1.0.4", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fisounique/-/isounique-1.0.4.tgz", - "integrity": "sha512-P1xLsuA1+8LQpoWCo2nP2vIQXKGUl5wDWU6CD7xTDZc3uw0He5V/qCPHM5zpIZsS7IuZOxDDpWb7aFveB11tXw==", - "dev": true + "integrity": "sha512-P1xLsuA1+8LQpoWCo2nP2vIQXKGUl5wDWU6CD7xTDZc3uw0He5V/qCPHM5zpIZsS7IuZOxDDpWb7aFveB11tXw==" + }, + "@pushrocks/levelcache": { + "version": "1.0.9", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2flevelcache/-/levelcache-1.0.9.tgz", + "integrity": "sha512-2bU+xRUtV5NFDzmpIRGkmP4RglDJ4MdtVirqDMPUDegG3LPGDfNxb17K/W1uH+3aE8Bv4vXSqR3VzVObwGi11w==", + "requires": { + "@pushrocks/lik": "^4.0.20", + "@pushrocks/smartbucket": "^1.0.39", + "@pushrocks/smartcache": "^1.0.13", + "@pushrocks/smartexit": "^1.0.15", + "@pushrocks/smartfile": "^8.0.9", + "@pushrocks/smartjson": "^4.0.6", + "@pushrocks/smartpromise": "^3.1.5", + "@pushrocks/smartstring": "^3.0.24", + "@pushrocks/smartunique": "^3.0.3", + "@pushrocks/taskbuffer": "^2.1.13" + }, + "dependencies": { + "@pushrocks/lik": { + "version": "4.0.20", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2flik/-/lik-4.0.20.tgz", + "integrity": "sha512-DJbxSZFwDuHe4W7dU5anyO72gy4woZpkxSpySphdHbSYZf50VJ1sMOKIccSpgRIczeB0BTR5i0c+cKnNFrg2jw==", + "requires": { + "@pushrocks/smartdelay": "^2.0.10", + "@pushrocks/smartmatch": "^1.0.7", + "@pushrocks/smartpromise": "^3.1.3", + "@pushrocks/smartrx": "^2.0.19", + "@pushrocks/smarttime": "^3.0.37", + "@types/minimatch": "^3.0.3", + "symbol-tree": "^3.2.4" + } + }, + "@pushrocks/smartenv": { + "version": "4.0.16", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartenv/-/smartenv-4.0.16.tgz", + "integrity": "sha512-NwYMONDc/NjY6BGvzZzLMteF83kPQTF9BCGfqWbktUUruEtdqL+nGw6ecoLFi2b5u7XPb8jK1TKIcSvpNJ7SyA==", + "requires": { + "@pushrocks/smartpromise": "^3.0.6", + "@types/node": "^14.11.2" + } + }, + "@pushrocks/smartjson": { + "version": "4.0.6", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartjson/-/smartjson-4.0.6.tgz", + "integrity": "sha512-lykr068RSDHs0+EXCvIDVxjKnDtRQ2M7EXOo5jVrUU6/OEdfRl9ErM1K/oPafiEi47/PtTrwLlp1KdSgqkRjmg==", + "requires": { + "@types/buffer-json": "^2.0.0", + "@types/fast-json-stable-stringify": "^2.0.0", + "buffer-json": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "lodash.clonedeep": "^4.5.0" + } + }, + "@pushrocks/smartpromise": { + "version": "3.1.5", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpromise/-/smartpromise-3.1.5.tgz", + "integrity": "sha512-/FPCEEegVJ0youD2JuR7uNGMl/0pXHP98NNB8gYtyl8N3I2JezCa4CMUNpd99QtsUK2eG6usbLjv/8m9F4QbhQ==" + }, + "@pushrocks/smartstring": { + "version": "3.0.24", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartstring/-/smartstring-3.0.24.tgz", + "integrity": "sha512-3ceUOBcwuU8uzjInkoxKjgWSRMv4YRd+v9zRSEC3T21fMi8dTcIKMtgxm7nAmajRZvyVoCw60Q9+0AHedQlJmQ==", + "requires": { + "@pushrocks/smartenv": "^4.0.16", + "crypto-random-string": "^3.3.0", + "js-base64": "^2.5.1", + "normalize-newline": "^3.0.0", + "randomatic": "^3.1.1", + "strip-indent": "^3.0.0", + "url": "^0.11.0" + } + }, + "@pushrocks/smarttime": { + "version": "3.0.38", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmarttime/-/smarttime-3.0.38.tgz", + "integrity": "sha512-oVT48eZE66OTmDALAsWkk3GXUQiqzkei7mo526UbuMN2iLY8I9WgsxmLfa8Fp4llQmocncW3WTqGyhnEOAuDgA==", + "requires": { + "@pushrocks/lik": "^4.0.17", + "@pushrocks/smartdelay": "^2.0.10", + "@pushrocks/smartpromise": "^3.0.2", + "croner": "^1.1.23", + "dayjs": "^1.9.1", + "is-nan": "^1.3.0" + } + } + } }, "@pushrocks/lik": { "version": "4.0.17", @@ -1436,6 +1520,64 @@ "symbol-tree": "^3.2.4" } }, + "@pushrocks/qenv": { + "version": "4.0.10", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fqenv/-/qenv-4.0.10.tgz", + "integrity": "sha512-bQknJrGa9zXDTmohi2W0fi/gZ5H36J1138WsRgdR2u/9D/0gwjBasL0kqBokH9sddcLSYe/H9itGFxbT7i7MCg==", + "requires": { + "@pushrocks/smartfile": "^7.0.12", + "@pushrocks/smartlog": "^2.0.26" + }, + "dependencies": { + "@pushrocks/smartfile": { + "version": "7.0.12", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartfile/-/smartfile-7.0.12.tgz", + "integrity": "sha512-/4T4K07WqOXGvQQ/VFyRMUd8kN1RdqQgmrqHjZE/vMDLz7RYsqU9FlEN6OGX1G1E6pR9IdHnT4ClXPlvzClHYg==", + "requires": { + "@pushrocks/smarthash": "^2.1.6", + "@pushrocks/smartmime": "^1.0.3", + "@pushrocks/smartpath": "^4.0.1", + "@pushrocks/smartpromise": "^3.0.6", + "@pushrocks/smartrequest": "^1.1.47", + "@types/fs-extra": "^8.1.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.6", + "js-yaml": "^3.13.1" + } + }, + "@types/fs-extra": { + "version": "8.1.1", + "resolved": "https://verdaccio.lossless.one/@types%2ffs-extra/-/fs-extra-8.1.1.tgz", + "integrity": "sha512-TcUlBem321DFQzBNuz8p0CLLKp0VvF/XH9E4KHNmgwyp4E3AfgI5cjiIVZWlbfThBop2qxFIh4+LeY6hVWWZ2w==", + "requires": { + "@types/node": "*" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://verdaccio.lossless.one/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://verdaccio.lossless.one/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://verdaccio.lossless.one/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + } + } + }, "@pushrocks/smartarchive": { "version": "2.0.4", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartarchive/-/smartarchive-2.0.4.tgz", @@ -1474,6 +1616,39 @@ "@pushrocks/smartunique": "^3.0.3" } }, + "@pushrocks/smartbucket": { + "version": "1.0.39", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartbucket/-/smartbucket-1.0.39.tgz", + "integrity": "sha512-1lYBLRsn0m59p1jb5/DBKU+tBy3YZkSniFzDa/5VEuUnejC2FtVYKklYmA+rHa21TZsvLjru2Fi+jHiKJb7Eeg==", + "requires": { + "@pushrocks/qenv": "^4.0.10", + "@pushrocks/smartpath": "^4.0.3", + "@pushrocks/smartpromise": "^3.1.3", + "@pushrocks/smartrx": "^2.0.19", + "@pushrocks/streamfunction": "^2.0.1", + "@types/minio": "^7.0.7", + "minio": "^7.0.18" + }, + "dependencies": { + "@pushrocks/smartpath": { + "version": "4.0.3", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpath/-/smartpath-4.0.3.tgz", + "integrity": "sha512-KWz4DWOrB0sPfk6L4i+CPOo+UK5HXNaLI7ZAaqJe1nEWoDrpyeds1dNDaqVAmSgX4riLGxVpslKH5MnABCPsPg==" + } + } + }, + "@pushrocks/smartcache": { + "version": "1.0.13", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartcache/-/smartcache-1.0.13.tgz", + "integrity": "sha512-Yc4W0zlvKya1/25v40ZJnNLj/l8AxpxUZq+Ch361frSUpITgGiRpNwk1/VAmlbEqwj/WJ+wPsQ47eS+afWgKQw==", + "requires": { + "@pushrocks/smartdelay": "^2.0.6", + "@pushrocks/smarterror": "^2.0.1", + "@pushrocks/smarthash": "^2.1.6", + "@pushrocks/smartpromise": "^3.0.6", + "@pushrocks/smarttime": "^3.0.12" + } + }, "@pushrocks/smartcli": { "version": "3.0.12", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartcli/-/smartcli-3.0.12.tgz", @@ -1507,11 +1682,19 @@ "@types/node": "^14.11.2" } }, + "@pushrocks/smarterror": { + "version": "2.0.1", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmarterror/-/smarterror-2.0.1.tgz", + "integrity": "sha512-3OrF5me+/sy5VgwR/tfCqs7qhb0Ywzgn8tTThRUZnCGas0aindISzMiW7cIro3RlFykmtPmdTztC9Ostu2ioeA==", + "requires": { + "clean-stack": "^1.3.0", + "make-error-cause": "^2.2.0" + } + }, "@pushrocks/smartexit": { "version": "1.0.15", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartexit/-/smartexit-1.0.15.tgz", "integrity": "sha512-pvJBmF13spcDN+O8rSpYlKBOObyfW+omZKQr3hhSMT1VHMEYV8e/njsA19Cg4C2DfLPv+cRFFgPn27zJpleRsQ==", - "dev": true, "requires": { "@pushrocks/lik": "^3.0.5", "@pushrocks/smartdelay": "^2.0.3", @@ -1522,7 +1705,6 @@ "version": "3.0.19", "resolved": "https://verdaccio.lossless.one/@pushrocks%2flik/-/lik-3.0.19.tgz", "integrity": "sha512-N9uTtQmTJ/iZ/V7LMCKbVx/ZAmP+b8uId0pxV9Au9T0Ulu9wcg3vNpyTQARgdWfG+tI9Qc0NHgOEa9H5mbDcDA==", - "dev": true, "requires": { "@pushrocks/smartdelay": "^2.0.6", "@pushrocks/smartpromise": "^3.0.6", @@ -1616,9 +1798,9 @@ } }, "@pushrocks/smartfile": { - "version": "8.0.9", - "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartfile/-/smartfile-8.0.9.tgz", - "integrity": "sha512-gDNaOWAzhI2CaphX4J7p5xnLiyXAxY2znZuhd43Rk8gczmLTDNJIG0weM/beCGKFl574xPj78q4XWGH5otnR+g==", + "version": "8.0.10", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartfile/-/smartfile-8.0.10.tgz", + "integrity": "sha512-/Sca8r6pOKLGFsKAfzsHm+3s9BQZM+1WlEkkcnwv7akI7SbE5EYGGDG6veM3+CYhSLlr/AQaNTz47Hx3bZK4/w==", "requires": { "@pushrocks/smartfile-interfaces": "^1.0.7", "@pushrocks/smarthash": "^2.1.10", @@ -1660,14 +1842,9 @@ }, "@pushrocks/smartpath": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@pushrocks/smartpath/-/smartpath-4.0.3.tgz", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpath/-/smartpath-4.0.3.tgz", "integrity": "sha512-KWz4DWOrB0sPfk6L4i+CPOo+UK5HXNaLI7ZAaqJe1nEWoDrpyeds1dNDaqVAmSgX4riLGxVpslKH5MnABCPsPg==" }, - "@pushrocks/smartpromise": { - "version": "3.1.3", - "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpromise/-/smartpromise-3.1.3.tgz", - "integrity": "sha512-KENdm++8uuzxDz1cbUbXtz6InfReP28TYC5zxRgRtwsXh7ZWUkSA+/82IbO97PcSCAfIpg7dwj77G6KGSsTKEQ==" - }, "argparse": { "version": "2.0.1", "resolved": "https://verdaccio.lossless.one/argparse/-/argparse-2.0.1.tgz", @@ -1700,7 +1877,6 @@ "version": "2.1.6", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmarthash/-/smarthash-2.1.6.tgz", "integrity": "sha512-TYa3wECYkeDoE8SomxcCJFg5Kt4+G4MtNMu3yATJCCoPLJIbyV1CwUvYuFYkkce2W4ZvH9h/N6dsHc69oI5Jcw==", - "dev": true, "requires": { "@pushrocks/smartjson": "^3.0.10", "@pushrocks/smartpromise": "^3.0.6", @@ -1712,7 +1888,6 @@ "version": "3.0.10", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartjson/-/smartjson-3.0.10.tgz", "integrity": "sha512-0tBkET2yjmSSIf4DlgeyU8U/J2EshTmQGuMY28EjPq9VvuCFXLh72WmETpA4QqKRMqhWp1+P+RZgnQupW3GQxQ==", - "dev": true, "requires": { "@types/fast-json-stable-stringify": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", @@ -1723,7 +1898,6 @@ "version": "2.0.39", "resolved": "https://registry.npmjs.org/@pushrocks/smartlog/-/smartlog-2.0.39.tgz", "integrity": "sha512-fHCoBLwKM+F3jN5nZH6QEcEVWtgyESN+ysT9KLxmM/wrhIibG98yLxp6kwfZZbv6aKmHWbtKEvBmv+Vd4Hfwlg==", - "dev": true, "requires": { "@pushrocks/isounique": "^1.0.4", "@pushrocks/smartlog-interfaces": "^2.0.20" @@ -1744,7 +1918,6 @@ "version": "2.0.22", "resolved": "https://registry.npmjs.org/@pushrocks/smartlog-interfaces/-/smartlog-interfaces-2.0.22.tgz", "integrity": "sha512-blvtNLgYz08F5EhftxfzLEkQ3VE9uoXRVQukbVpwJ4Zk0QRkNg2VCkuJu/kkfbtlCEOEOG2HCZDyhbxeEeq0pA==", - "dev": true, "requires": { "@apiglobal/typedrequest-interfaces": "^1.0.15" } @@ -1753,7 +1926,6 @@ "version": "1.0.9", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartlog-source-ora/-/smartlog-source-ora-1.0.9.tgz", "integrity": "sha512-CcFpMJeCZ0kl7Ai6F5wTGlPrsAhjhq38WSg8BRyFxUByQ/Nluy0AhrTb7GbPTLKWMo6sq//zO2Oh0wAzUYHuQg==", - "dev": true, "requires": { "@pushrocks/smartlog-interfaces": "^2.0.15", "ora": "^4.0.4" @@ -1763,7 +1935,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1773,7 +1944,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, "requires": { "restore-cursor": "^3.1.0" } @@ -1781,14 +1951,12 @@ "cli-spinners": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.4.0.tgz", - "integrity": "sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA==", - "dev": true + "integrity": "sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA==" }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -1796,26 +1964,22 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "log-symbols": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, "requires": { "chalk": "^2.4.2" }, @@ -1824,7 +1988,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -1833,7 +1996,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -1843,14 +2005,12 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -1860,14 +2020,12 @@ "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, "onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, "requires": { "mimic-fn": "^2.1.0" } @@ -1876,7 +2034,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ora/-/ora-4.1.1.tgz", "integrity": "sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==", - "dev": true, "requires": { "chalk": "^3.0.0", "cli-cursor": "^3.1.0", @@ -1892,7 +2049,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, "requires": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -1902,7 +2058,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -1996,8 +2151,7 @@ "@pushrocks/smartpath": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@pushrocks/smartpath/-/smartpath-4.0.1.tgz", - "integrity": "sha512-MaI0+uLQPCr2V3WGnbdgb0pWa9xkWyrP4qYcbsHIjeismGLbn9s3jmP/HIXU8LkgzRgaVb+BJxmZJHOwl32DyA==", - "dev": true + "integrity": "sha512-MaI0+uLQPCr2V3WGnbdgb0pWa9xkWyrP4qYcbsHIjeismGLbn9s3jmP/HIXU8LkgzRgaVb+BJxmZJHOwl32DyA==" }, "@pushrocks/smartpdf": { "version": "2.0.2", @@ -2069,9 +2223,9 @@ } }, "@pushrocks/smartpromise": { - "version": "3.1.3", - "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpromise/-/smartpromise-3.1.3.tgz", - "integrity": "sha512-KENdm++8uuzxDz1cbUbXtz6InfReP28TYC5zxRgRtwsXh7ZWUkSA+/82IbO97PcSCAfIpg7dwj77G6KGSsTKEQ==" + "version": "3.1.5", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpromise/-/smartpromise-3.1.5.tgz", + "integrity": "sha512-/FPCEEegVJ0youD2JuR7uNGMl/0pXHP98NNB8gYtyl8N3I2JezCa4CMUNpd99QtsUK2eG6usbLjv/8m9F4QbhQ==" }, "@pushrocks/smartpuppeteer": { "version": "1.0.15", @@ -2156,6 +2310,25 @@ "uuid": "^7.0.2" } }, + "@pushrocks/smartversion": { + "version": "2.0.7", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartversion/-/smartversion-2.0.7.tgz", + "integrity": "sha512-V0H9sgkn7DIkn1xafEmsqGFvq0GmI2QnQo2iQhG4eplR0nmJpUfEtN5miP7CctZE+mFJ3rqWN4jVpMMNrFcscw==", + "requires": { + "@types/semver": "^7.3.4", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://verdaccio.lossless.one/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "@pushrocks/streamfunction": { "version": "2.0.1", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fstreamfunction/-/streamfunction-2.0.1.tgz", @@ -2223,6 +2396,20 @@ } } }, + "@pushrocks/taskbuffer": { + "version": "2.1.13", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2ftaskbuffer/-/taskbuffer-2.1.13.tgz", + "integrity": "sha512-x7rXlu7iQMr31sV/tKJAKWDsOSEGwdTmkEGuSCOFpLvVr8yXyFUjuB+XMfDHSwjGQlif9nQtDy78C1ZbBq+2eA==", + "requires": { + "@pushrocks/lik": "^4.0.17", + "@pushrocks/smartdelay": "^2.0.10", + "@pushrocks/smartlog": "^2.0.37", + "@pushrocks/smartpromise": "^3.0.6", + "@pushrocks/smartrx": "^2.0.18", + "@pushrocks/smarttime": "^3.0.35", + "@types/cron": "^1.7.2" + } + }, "@pushrocks/webrequest": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/@pushrocks/webrequest/-/webrequest-2.0.10.tgz", @@ -2369,8 +2556,7 @@ "@types/color-name": { "version": "1.1.1", "resolved": "https://verdaccio.lossless.one/@types%2fcolor-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" }, "@types/connect": { "version": "3.4.33", @@ -2390,6 +2576,15 @@ "@types/express": "*" } }, + "@types/cron": { + "version": "1.7.2", + "resolved": "https://verdaccio.lossless.one/@types%2fcron/-/cron-1.7.2.tgz", + "integrity": "sha512-AEpNLRcsVSc5AdseJKNHpz0d4e8+ow+abTaC0fKDbAU86rF1evoFF0oC2fV9FdqtfVXkG2LKshpLTJCFOpyvTg==", + "requires": { + "@types/node": "*", + "moment": ">=2.14.0" + } + }, "@types/default-gateway": { "version": "3.0.1", "resolved": "https://verdaccio.lossless.one/@types%2fdefault-gateway/-/default-gateway-3.0.1.tgz", @@ -2466,7 +2661,7 @@ }, "@types/glob": { "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "resolved": "https://verdaccio.lossless.one/@types%2fglob/-/glob-7.1.3.tgz", "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", "requires": { "@types/minimatch": "*", @@ -2502,9 +2697,9 @@ } }, "@types/js-yaml": { - "version": "4.0.0", - "resolved": "https://verdaccio.lossless.one/@types%2fjs-yaml/-/js-yaml-4.0.0.tgz", - "integrity": "sha512-4vlpCM5KPCL5CfGmTbpjwVKbISRYhduEJvvUWsH5EB7QInhEj94XPZ3ts/9FPiLZFqYO0xoW4ZL8z2AabTGgJA==" + "version": "4.0.1", + "resolved": "https://verdaccio.lossless.one/@types%2fjs-yaml/-/js-yaml-4.0.1.tgz", + "integrity": "sha512-xdOvNmXmrZqqPy3kuCQ+fz6wA0xU5pji9cd1nDrflWaAWtYLLGk5ykW0H6yg5TVyehHP1pfmuuSaZkhP+kspVA==" }, "@types/mime": { "version": "2.0.3", @@ -2522,6 +2717,14 @@ "resolved": "https://verdaccio.lossless.one/@types%2fminimatch/-/minimatch-3.0.3.tgz", "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" }, + "@types/minio": { + "version": "7.0.7", + "resolved": "https://verdaccio.lossless.one/@types%2fminio/-/minio-7.0.7.tgz", + "integrity": "sha512-cK0VuWZ5zvFmkxQzK46RtJ4qt2Gtrv34hsXDr0D3vqesjrnEKT+0rw0zWk40JtCPkoEFgLdIUbXnePsKjbb80Q==", + "requires": { + "@types/node": "*" + } + }, "@types/minipass": { "version": "2.2.0", "resolved": "https://verdaccio.lossless.one/@types%2fminipass/-/minipass-2.2.0.tgz", @@ -2595,6 +2798,11 @@ "@types/node": "*" } }, + "@types/semver": { + "version": "7.3.4", + "resolved": "https://verdaccio.lossless.one/@types%2fsemver/-/semver-7.3.4.tgz", + "integrity": "sha512-+nVsLKlcUCeMzD2ufHEYuJ9a2ovstb6Dp52A5VsoKxDXgvE051XgHI/33I1EymwkRGQkwnA0LkhnUzituGs4EQ==" + }, "@types/serve-static": { "version": "1.13.5", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.5.tgz", @@ -2769,14 +2977,12 @@ "ansi-regex": { "version": "5.0.0", "resolved": "https://verdaccio.lossless.one/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, "requires": { "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" @@ -2822,7 +3028,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -2937,6 +3142,11 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, + "async": { + "version": "3.2.0", + "resolved": "https://verdaccio.lossless.one/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + }, "async-each": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", @@ -2956,7 +3166,7 @@ }, "at-least-node": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "resolved": "https://verdaccio.lossless.one/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" }, "atob": { @@ -3145,6 +3355,14 @@ } } }, + "block-stream2": { + "version": "2.1.0", + "resolved": "https://verdaccio.lossless.one/block-stream2/-/block-stream2-2.1.0.tgz", + "integrity": "sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==", + "requires": { + "readable-stream": "^3.4.0" + } + }, "bn.js": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", @@ -3762,6 +3980,11 @@ } } }, + "clean-stack": { + "version": "1.3.0", + "resolved": "https://verdaccio.lossless.one/clean-stack/-/clean-stack-1.3.0.tgz", + "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=" + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -3854,7 +4077,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -3862,8 +4084,7 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "color-string": { "version": "1.5.3", @@ -4147,7 +4368,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-3.3.0.tgz", "integrity": "sha512-teWAwfMb1d6brahYyKqcBEb5Yp8PJPvPOdOonXDnvaKOTmKDFNVE8E3Y2XQuzjNV/3XMwHbrX9fHWvrhRKt4Gg==", - "dev": true, "requires": { "type-fest": "^0.8.1" } @@ -4555,7 +4775,6 @@ "version": "1.0.3", "resolved": "https://verdaccio.lossless.one/defaults/-/defaults-1.0.3.tgz", "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, "requires": { "clone": "^1.0.2" }, @@ -4563,8 +4782,7 @@ "clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" } } }, @@ -4980,6 +5198,11 @@ "is-symbol": "^1.0.2" } }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://verdaccio.lossless.one/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==" + }, "es6-promise": { "version": "4.2.8", "resolved": "https://verdaccio.lossless.one/es6-promise/-/es6-promise-4.2.8.tgz", @@ -5043,8 +5266,7 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "estraverse": { "version": "4.3.0", @@ -5469,6 +5691,11 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fast-xml-parser": { + "version": "3.19.0", + "resolved": "https://verdaccio.lossless.one/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz", + "integrity": "sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg==" + }, "fastparse": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", @@ -6566,8 +6793,7 @@ "is-interactive": { "version": "1.0.0", "resolved": "https://verdaccio.lossless.one/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" }, "is-ip": { "version": "3.1.0", @@ -6771,8 +6997,7 @@ "js-base64": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", - "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", - "dev": true + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==" }, "js-tokens": { "version": "4.0.0", @@ -6784,7 +7009,6 @@ "version": "3.13.1", "resolved": "https://verdaccio.lossless.one/js-yaml/-/js-yaml-3.13.1.tgz", "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -6896,6 +7120,11 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "json-stream": { + "version": "1.0.0", + "resolved": "https://verdaccio.lossless.one/json-stream/-/json-stream-1.0.0.tgz", + "integrity": "sha1-GjhU4o0rvuqzHMfd9oPS3cVlJwg=" + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -6943,8 +7172,7 @@ "kind-of": { "version": "6.0.3", "resolved": "https://verdaccio.lossless.one/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, "leven": { "version": "3.1.0", @@ -6998,8 +7226,7 @@ "lodash": { "version": "4.17.20", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" }, "lodash._baseassign": { "version": "3.2.0", @@ -7144,6 +7371,14 @@ "resolved": "https://verdaccio.lossless.one/lowercase-keys/-/lowercase-keys-1.0.1.tgz", "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://verdaccio.lossless.one/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, "magic-string": { "version": "0.22.5", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", @@ -7156,8 +7391,15 @@ "make-error": { "version": "1.3.6", "resolved": "https://verdaccio.lossless.one/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "make-error-cause": { + "version": "2.3.0", + "resolved": "https://verdaccio.lossless.one/make-error-cause/-/make-error-cause-2.3.0.tgz", + "integrity": "sha512-etgt+n4LlOkGSJbBTV9VROHA5R7ekIPS4vfh+bCAoJgRrJWdqJCBbpS3osRJ/HrT7R68MzMiY3L3sDJ/Fd8aBg==", + "requires": { + "make-error": "^1.3.5" + } }, "map-cache": { "version": "0.2.2", @@ -7185,8 +7427,7 @@ "math-random": { "version": "1.0.4", "resolved": "https://verdaccio.lossless.one/math-random/-/math-random-1.0.4.tgz", - "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", - "dev": true + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==" }, "md5.js": { "version": "1.3.5", @@ -7316,8 +7557,7 @@ "min-indent": { "version": "1.0.1", "resolved": "https://verdaccio.lossless.one/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" }, "minimalistic-assert": { "version": "1.0.1", @@ -7342,8 +7582,26 @@ "minimist": { "version": "1.2.5", "resolved": "https://verdaccio.lossless.one/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minio": { + "version": "7.0.18", + "resolved": "https://verdaccio.lossless.one/minio/-/minio-7.0.18.tgz", + "integrity": "sha512-jVRjkw8A5Spf+ETY5OXQUcQckHriuUA3u2+MAcX36btLT8EytlOVivxIseXvyFf9cNn3dy5w1F1UyjMvHU+nqg==", + "requires": { + "async": "^3.1.0", + "block-stream2": "^2.0.0", + "es6-error": "^4.1.1", + "fast-xml-parser": "^3.17.5", + "json-stream": "^1.0.0", + "lodash": "^4.17.20", + "mime-types": "^2.1.14", + "mkdirp": "^0.5.1", + "querystring": "0.2.0", + "through2": "^3.0.1", + "xml": "^1.0.0", + "xml2js": "^0.4.15" + } }, "minipass": { "version": "3.1.3", @@ -7387,11 +7645,15 @@ "version": "0.5.5", "resolved": "https://verdaccio.lossless.one/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, "requires": { "minimist": "^1.2.5" } }, + "moment": { + "version": "2.29.1", + "resolved": "https://verdaccio.lossless.one/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + }, "ms": { "version": "2.1.2", "resolved": "https://verdaccio.lossless.one/ms/-/ms-2.1.2.tgz", @@ -7400,8 +7662,7 @@ "mute-stream": { "version": "0.0.8", "resolved": "https://verdaccio.lossless.one/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "nan": { "version": "2.14.1", @@ -7559,8 +7820,7 @@ "normalize-newline": { "version": "3.0.0", "resolved": "https://verdaccio.lossless.one/normalize-newline/-/normalize-newline-3.0.0.tgz", - "integrity": "sha1-HL6oBKukNgAfg5OKsh7AOdaa6dM=", - "dev": true + "integrity": "sha1-HL6oBKukNgAfg5OKsh7AOdaa6dM=" }, "normalize-path": { "version": "3.0.0", @@ -8945,8 +9205,7 @@ "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" }, "querystring-es3": { "version": "0.2.1", @@ -9005,7 +9264,6 @@ "version": "3.1.1", "resolved": "https://verdaccio.lossless.one/randomatic/-/randomatic-3.1.1.tgz", "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", - "dev": true, "requires": { "is-number": "^4.0.0", "kind-of": "^6.0.0", @@ -9015,8 +9273,7 @@ "is-number": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" } } }, @@ -9551,8 +9808,7 @@ "sax": { "version": "1.2.4", "resolved": "https://verdaccio.lossless.one/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "saxes": { "version": "3.1.11", @@ -9725,8 +9981,7 @@ "signal-exit": { "version": "3.0.3", "resolved": "https://verdaccio.lossless.one/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, "simple-swizzle": { "version": "0.2.2", @@ -9967,8 +10222,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "sshpk": { "version": "1.16.1", @@ -10293,7 +10547,6 @@ "version": "6.0.0", "resolved": "https://verdaccio.lossless.one/strip-ansi/-/strip-ansi-6.0.0.tgz", "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, "requires": { "ansi-regex": "^5.0.0" } @@ -10308,7 +10561,6 @@ "version": "3.0.0", "resolved": "https://verdaccio.lossless.one/strip-indent/-/strip-indent-3.0.0.tgz", "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, "requires": { "min-indent": "^1.0.0" } @@ -10438,7 +10690,6 @@ "version": "3.0.2", "resolved": "https://verdaccio.lossless.one/through2/-/through2-3.0.2.tgz", "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, "requires": { "inherits": "^2.0.4", "readable-stream": "2 || 3" @@ -10656,8 +10907,7 @@ "type-fest": { "version": "0.8.1", "resolved": "https://verdaccio.lossless.one/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" }, "type-is": { "version": "1.6.18", @@ -10873,7 +11123,6 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, "requires": { "punycode": "1.3.2", "querystring": "0.2.0" @@ -10882,8 +11131,7 @@ "punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" } } }, @@ -11032,7 +11280,6 @@ "version": "1.0.1", "resolved": "https://verdaccio.lossless.one/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, "requires": { "defaults": "^1.0.3" } @@ -11121,6 +11368,11 @@ "integrity": "sha512-kpyBI9TlVipZO4diReZMAHWtS0MMa/7Kgx8hwG/EuZLiA6sg4Ah/4TRdASHhRRN3boobzcYgFRUFSgHRge6Qhg==", "dev": true }, + "xml": { + "version": "1.0.1", + "resolved": "https://verdaccio.lossless.one/xml/-/xml-1.0.1.tgz", + "integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=" + }, "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", @@ -11131,7 +11383,6 @@ "version": "0.4.23", "resolved": "https://verdaccio.lossless.one/xml2js/-/xml2js-0.4.23.tgz", "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "dev": true, "requires": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" @@ -11140,8 +11391,7 @@ "xmlbuilder": { "version": "11.0.1", "resolved": "https://verdaccio.lossless.one/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" }, "xmlchars": { "version": "2.2.0", diff --git a/package.json b/package.json index 14e735d..790aa53 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,12 @@ }, "dependencies": { "@pushrocks/consolecolor": "^2.0.1", + "@pushrocks/levelcache": "^1.0.9", "@pushrocks/smartarchive": "^2.0.4", - "@pushrocks/smartfile": "^8.0.9", - "@pushrocks/smartpromise": "^3.1.3", + "@pushrocks/smartfile": "^8.0.10", + "@pushrocks/smartpromise": "^3.1.5", "@pushrocks/smartrequest": "^1.1.51", + "@pushrocks/smartversion": "^2.0.7", "package-json": "^6.5.0" }, "files": [ diff --git a/test/test.ts b/test/test.ts index 890b657..46604be 100644 --- a/test/test.ts +++ b/test/test.ts @@ -45,3 +45,151 @@ tap.test('should get a specific file from a package', async () => { }); tap.start(); + +const hi = { + _id: '@pushrocks/smartversion', + _rev: '2-93b6e6391f7209fcbd1db76c92164777', + name: '@pushrocks/smartversion', + 'dist-tags': { latest: '2.0.4' }, + versions: { + '2.0.0': { + name: '@pushrocks/smartversion', + version: '2.0.0', + private: false, + description: 'handle semver with easy', + main: 'dist/index.js', + typings: 'dist/index.d.ts', + author: { name: 'Lossless GmbH' }, + license: 'MIT', + scripts: { test: '(tstest test/)', build: '(tsbuild)' }, + devDependencies: { + '@gitzone/tsbuild': '^2.0.22', + '@gitzone/tsrun': '^1.1.12', + '@gitzone/tstest': '^1.0.15', + '@pushrocks/tapbundle': '^3.0.5', + '@types/node': '^10.9.4', + }, + dependencies: { '@types/semver': '^5.5.0', semver: '^5.5.1' }, + gitHead: 'df6b1a9730551884aa4c4fae5577b2b11058f508', + _id: '@pushrocks/smartversion@2.0.0', + _npmVersion: '6.2.0', + _nodeVersion: '10.9.0', + _npmUser: { name: 'lossless', email: 'npm@lossless.com' }, + dist: { + integrity: + 'sha512-+loQHivWzEO39X/PEzi+UOptDveez0n8Eu/bDIht55wkjhav33HkNjab8MeK/g76gOia3ZHoPyqLTvD4yvXDiA==', + shasum: 'd663a39d77950de1a743adb0c2eb00e325d230df', + tarball: 'https://registry.npmjs.org/@pushrocks/smartversion/-/smartversion-2.0.0.tgz', + fileCount: 12, + unpackedSize: 12011, + 'npm-signature': + '-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbi7zUCRA9TVsSAnZWagAAigcP/0gRmizQkzjE9Gw8gCeK\n56m41mJQmtl6tRvYVyVGuqfiCaiLvB/B0fkKt2r/MNsJVjC372ayWKya4nev\nTOLSg+g4e9gnkyn8i1OFVE5kr8C4MvLc6P771v2UDXJF5c3pYq6i5fSyGz/s\ngpOuy/KxyVo5wH16yasGWDq9Gl58yp+7vZKR6cc+7Rlq0UhyezhDBRBiKkB0\nk6Y/4J4KWK7CmO+3Y/QUPGBxGmoUHNSiS5cz8vWbycRP7pT11asksgxNPGdv\nyeW/VNVLZkemwrXhSuYKM0DK6aZpjJxk3A8OAyDuHGfZDzAmyaRsfUL84Mgl\nlN1S92CCfuAOyA1os8rsrJU133TV8zVTck3IdmO4AqJ8aB3WNkmNYE5IHxWf\nnmhUUo1Rv/M5fJniTHOBGaeOahFqEp+8URNW1zylC3NoFwiUon1lvnMp1Dd1\nczGPWvQ12ZAeMOR/qpO4RRzTdD45iuvvj2NRhZZN1pthnhUi8XpgMIDuCODT\n2Srew7JBkdfX3F1q/LGgk9e+RYCWTlLPgmzOBUH39ljpfa70liAH5sU+yyfk\nFLfVQlLwWAEwRnkm4j/l/xBWJcwqVG2nDOOzScfYVG3BXSBHo4PfywhFdbnc\nQ3MMrJsrJPhppfMJEEQWlQSkNSCCEV7DDPeH4oK9tKRUdmDaKJpnb6tVZqzM\nBWac\r\n=0NZU\r\n-----END PGP SIGNATURE-----\r\n', + }, + maintainers: [{ name: 'lossless', email: 'npm@lossless.com' }], + directories: {}, + _npmOperationalInternal: { + host: 's3://npm-registry-packages', + tmp: 'tmp/smartversion_2.0.0_1535884499821_0.9273118882229912', + }, + _hasShrinkwrap: false, + }, + '2.0.3': { + name: '@pushrocks/smartversion', + version: '2.0.3', + private: false, + description: 'handle semver with easy', + main: 'dist/index.js', + typings: 'dist/index.d.ts', + author: { name: 'Lossless GmbH' }, + license: 'MIT', + scripts: { test: '(tstest test/)', build: '(tsbuild)' }, + devDependencies: { + '@gitzone/tsbuild': '^2.1.17', + '@gitzone/tsrun': '^1.2.8', + '@gitzone/tstest': '^1.0.24', + '@pushrocks/tapbundle': '^3.0.13', + '@types/node': '^12.7.5', + }, + dependencies: { '@types/semver': '^6.0.2', semver: '^6.3.0' }, + gitHead: 'e364545d0ef6ef7fa1b8467fb48d2b67f09f2d07', + _id: '@pushrocks/smartversion@2.0.3', + _nodeVersion: '12.10.0', + _npmVersion: '6.11.3', + dist: { + integrity: + 'sha512-nhauxBGMxjJtXj+k1Z7H2yB184ZhWhU0NKN5ATwlgfEM4zbbZNjCFRLVg/7sOXvbS2b0QU1aStRQ+6QGC2hW4A==', + shasum: '9272da89412556946c5a3d5ba3b6a253154de6ae', + tarball: 'https://registry.npmjs.org/@pushrocks/smartversion/-/smartversion-2.0.3.tgz', + fileCount: 9, + unpackedSize: 9127, + 'npm-signature': + '-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdeRYfCRA9TVsSAnZWagAApCkP/RrWk6+hxpoTpflJ65x/\nm05egDhfyTs2BZKArkSnvtc+q6Fo3iDlumqiv3HRyHwDBFLgK5gAOgU0jyqW\nmhwumGMfKT4bzG65iU2z6FgS+RhEh3JaKzjgPohr1oEaLOaaKL0S9+Ybxt6u\nkwv4CgnmzQ/6zVZYJ+qFbV0v+n6iiuIbOTS8j7+X0nA/DkvvZ1Nwhng++vH8\nLm8lT78F/vcxHkSf2RfC6kabhVF+vVRBazq/cI4OQ+xjBQC2y+6YxEq/4Hsz\nKZBF9u2ZcyeI7NEuo1FaojvqvLX3lPxi9Xfw2PSO2iri+DS8KIOVgzwJ+9ih\nb1h/vpoFv8dbhZzkqSs/4rab3rvQYqy7AgvslI8mEeOQk/BhrjxQIvG0re3H\nzc0iWlNp6W3Lsf3/gmKGZbhl39ZgQxInfWLNW60ghqzUq85gyAwPDRb2yxez\nP7bMT0qb/bQSmAa63/q3qE+JAjZFQFDB6Pj6sO1p3csv0T+7mRj9T/4pSc8B\nv5rD9t0mVlAZXwmz3zDhpomct3bhUlAidw7tcax8sr9SowA2hqY3TB1uJ52y\nKPDVMQZ4Voi7kft+icYoVm1XkQMwmmedAoTbS49s52wW6dm4CWmnlBOZzzqN\neT4Q1INrTUXaMxRv/zxguk7TV8xi6gRf+EBDtnEKukITWTvvPsGq4SS9toRa\n9L6F\r\n=yVBx\r\n-----END PGP SIGNATURE-----\r\n', + }, + maintainers: [{ name: 'lossless', email: 'npm@lossless.com' }], + _npmUser: { name: 'lossless', email: 'npm@lossless.com' }, + directories: {}, + _npmOperationalInternal: { + host: 's3://npm-registry-packages', + tmp: 'tmp/smartversion_2.0.3_1568216607132_0.9216415895294796', + }, + _hasShrinkwrap: false, + }, + '2.0.4': { + name: '@pushrocks/smartversion', + version: '2.0.4', + private: false, + description: 'handle semver with easy', + main: 'dist/index.js', + typings: 'dist/index.d.ts', + author: { name: 'Lossless GmbH' }, + license: 'MIT', + scripts: { test: '(tstest test/)', build: '(tsbuild)' }, + devDependencies: { + '@gitzone/tsbuild': '^2.1.17', + '@gitzone/tsrun': '^1.2.8', + '@gitzone/tstest': '^1.0.24', + '@pushrocks/tapbundle': '^3.0.13', + '@types/node': '^12.7.5', + tslint: '^5.20.0', + 'tslint-config-prettier': '^1.18.0', + }, + dependencies: { '@types/semver': '^6.0.2', semver: '^6.3.0' }, + gitHead: 'bb8e7cb608f3a116e7bfb0b52dd5ce9a7c4eaec1', + _id: '@pushrocks/smartversion@2.0.4', + _nodeVersion: '12.10.0', + _npmVersion: '6.11.3', + dist: { + integrity: + 'sha512-LrtaWRn1DD2zIUr8nVAsKwZ+Y55TFIVZ0z3xjwAQ46SoiTrFWooeQ2Xw18DqsEo1cEqMZyGAskaJkOaRkXHtUA==', + shasum: '7c6297f9c596e729001c2b6e2a8fa72c40ed42a9', + tarball: 'https://registry.npmjs.org/@pushrocks/smartversion/-/smartversion-2.0.4.tgz', + fileCount: 9, + unpackedSize: 9263, + 'npm-signature': + '-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdeRazCRA9TVsSAnZWagAAxX0P/j12DYB5zjZQh3/IpY1t\n+vzvLmTgn2b0lhheLxUX9EYMW+cethYbd8Q8p/SOsytfB2IHCKBdkpE5ZAIK\nsv7d/myZaihZ9RHCd/UQOj99b/KfdbN/7ndtEL7V4hmcNyWUmebeRsxMhxZ5\nLRvWMZiNsgdXbKxs6JpId3iuSFuTxRgL41smiklcW0nGRp9uMieN8TC3xmOW\nsia6JcvGNQT1/LD9XN6l9U/ZWfzOMaEtjv4Hd9XzOVv0SMYT5Nyv3JQV2Jd5\nc5G5aGZe0QXSB9LwnNUcXC3mrZ9+SvmqpECcV2BTJ+JJlzp4Pny51r2nPyC6\nypdsfTfDzAL6BIq433OScEyjRMcufLC+caGXPCjUhtPW6wlf9kTFiRd2L3uk\nWhg2LmFhL4bHz67ty2wAy8XlLYOS/QFOZLEZr7bZDhINkkqR5RQd5RfkMJ6Q\n0skcsspq69tWKrgY3Uh6aK30Z+g7C4V/KGfquz6EsET9xP+7MRTVcd+FLfC1\ndfCcfe3/l49oXbCPwApH9X8ETc3HDJuSRdfVV7PVsEzbOwN4sqTIS9vAHXDN\ncjAmrhbZkhA7VD4PNjhEov1veo/UOoNB7xlN4JLuRZ40SqCSr4akVnNImUDc\nCg+b16mZhlVpLNgjVjG9rgDD7zCn+zn9EZTsq3/qL4jEcf4JY+T2YKmf7AMb\nhmej\r\n=eqby\r\n-----END PGP SIGNATURE-----\r\n', + }, + maintainers: [{ name: 'lossless', email: 'npm@lossless.com' }], + _npmUser: { name: 'lossless', email: 'npm@lossless.com' }, + directories: {}, + _npmOperationalInternal: { + host: 's3://npm-registry-packages', + tmp: 'tmp/smartversion_2.0.4_1568216754658_0.06886864906713819', + }, + _hasShrinkwrap: false, + }, + }, + time: { + created: '2018-09-02T10:34:59.735Z', + '2.0.0': '2018-09-02T10:34:59.913Z', + modified: '2019-09-11T15:45:58.404Z', + '2.0.3': '2019-09-11T15:43:27.294Z', + '2.0.4': '2019-09-11T15:45:54.786Z', + }, + maintainers: [{ name: 'lossless', email: 'npm@lossless.com' }], + description: 'handle semver with easy', + author: { name: 'Lossless GmbH' }, + license: 'MIT', + readme: + '# @pushrocks/smartversion\nhandle semver with easy\n\n## Availabililty and Links\n* [npmjs.org (npm package)](https://www.npmjs.com/package/@pushrocks/smartversion)\n* [gitlab.com (source)](https://gitlab.com/pushrocks/smartversion)\n* [github.com (source mirror)](https://github.com/pushrocks/smartversion)\n* [docs (typedoc)](https://pushrocks.gitlab.io/smartversion/)\n\n## Status for master\n[![build status](https://gitlab.com/pushrocks/smartversion/badges/master/build.svg)](https://gitlab.com/pushrocks/smartversion/commits/master)\n[![coverage report](https://gitlab.com/pushrocks/smartversion/badges/master/coverage.svg)](https://gitlab.com/pushrocks/smartversion/commits/master)\n[![npm downloads per month](https://img.shields.io/npm/dm/@pushrocks/smartversion.svg)](https://www.npmjs.com/package/@pushrocks/smartversion)\n[![Known Vulnerabilities](https://snyk.io/test/npm/@pushrocks/smartversion/badge.svg)](https://snyk.io/test/npm/@pushrocks/smartversion)\n[![TypeScript](https://img.shields.io/badge/TypeScript->=%203.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)\n[![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)\n[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-prettier-ff69b4.svg)](https://prettier.io/)\n\n## Usage\n\nUse TypeScript for best in class instellisense.\n\nFor further information read the linked docs at the top of this readme.\n\n> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)\n| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)\n\n[![repo-footer](https://lossless.gitlab.io/publicrelations/repofooter.svg)](https://maintainedby.lossless.com)\n', + readmeFilename: 'readme.md', +}; diff --git a/ts/smartnpm.classes.npmpackage.ts b/ts/smartnpm.classes.npmpackage.ts index cd73391..4dac900 100644 --- a/ts/smartnpm.classes.npmpackage.ts +++ b/ts/smartnpm.classes.npmpackage.ts @@ -1,13 +1,35 @@ import * as plugins from './smartnpm.plugins'; import { NpmRegistry } from './smartnpm.classes.npmregistry'; +import { PackageDisttag } from './smartnpm.classes.packagedisttag'; +import { PackageVersion, IVersionData } from './smartnpm.classes.packageversion'; export class NpmPackage { - public static async createFromFullMetadata( + public static async createFromFullMetadataAndVersionData( npmRegistryArg: NpmRegistry, - fullMetadata: plugins.packageJson.FullMetadata + fullMetadataArg: plugins.packageJson.FullMetadata, + versionsDataArg: { + name: string; + 'dist-tags': { [key: string]: string }; + versions: { [key: string]: IVersionData }; + } ) { const npmPackage = new NpmPackage(npmRegistryArg); - Object.assign(npmPackage, fullMetadata); + Object.assign(npmPackage, fullMetadataArg); + npmPackage.allVersions = []; + npmPackage.allDistTags = []; + for (const versionArg of Object.keys(versionsDataArg.versions)) { + const packageVersion = PackageVersion.createFromVersionData( + versionsDataArg.versions[versionArg] + ); + npmPackage.allVersions.push(packageVersion); + } + for (const distTagArg of Object.keys(versionsDataArg['dist-tags'])) { + const packageDistTag = new PackageDisttag( + distTagArg, + versionsDataArg['dist-tags'][distTagArg] + ); + npmPackage.allDistTags.push(packageDistTag); + } return npmPackage; } @@ -15,6 +37,8 @@ export class NpmPackage { public name: string = null; public scope: string = null; public version: string = null; + public allVersions: PackageVersion[]; + public allDistTags: PackageDisttag[]; public description: string = null; public keywords: string[] = null; public date: string; @@ -62,23 +86,54 @@ export class NpmPackage { } /** - * saves the package to memory + * saves the complete package to cache */ - public async saveToMemory() {} + public async saveToCache() {} /** * get file from package */ - public async getFileFromPackage(filePath: string): Promise { + public async getFileFromPackage( + filePath: string, + optionsArg?: { + distTag?: string; + version?: string; + } + ): Promise { const done = plugins.smartpromise.defer(); const smartarchiveInstance = new plugins.smartarchive.SmartArchive(); - const fileObservable = await smartarchiveInstance.extractArchiveFromUrlToObservable( - this.dist.tarball - ); + let tarballUrl = this.dist.tarball; + if (optionsArg && (optionsArg.version || optionsArg.distTag)) { + if (optionsArg.distTag && optionsArg.version) { + throw new Error('Please either sepcify version OR disttag, not both.'); + } + let targetVersion: plugins.smartversion.SmartVersion; + if (optionsArg.distTag) { + const targetDistTag = this.allDistTags.find((distTag) => { + return distTag.name === optionsArg.distTag; + }); + if (targetDistTag) { + targetVersion = new plugins.smartversion.SmartVersion(targetDistTag.targetVersion); + } + } else { + const smartversion = plugins.smartversion.SmartVersion.fromFuzzyString(optionsArg.version); + } + + // lets find the best matching release + const versionStrings = this.allVersions.map((packageVersion) => packageVersion.version); + const bestMatchingVersion = targetVersion.getBestMatch(versionStrings); + tarballUrl = this.allVersions.find( + (packageVersion) => packageVersion.version === bestMatchingVersion + ).dist.tarball; + } + const fileObservable = await smartarchiveInstance.extractArchiveFromUrlToObservable(tarballUrl); const wantedFilePath = plugins.path.join('package', filePath); const subscription = fileObservable.subscribe( (fileArg) => { if (fileArg.path === wantedFilePath) { + // lets care about caching + + // lets resolve with the wanted file done.resolve(fileArg); subscription.unsubscribe(); } @@ -92,4 +147,9 @@ export class NpmPackage { ); return done.promise; } + + /** + * updates the package with information from the registry + */ + update() {} } diff --git a/ts/smartnpm.classes.npmregistry.ts b/ts/smartnpm.classes.npmregistry.ts index 172cfa2..a66140b 100644 --- a/ts/smartnpm.classes.npmregistry.ts +++ b/ts/smartnpm.classes.npmregistry.ts @@ -6,6 +6,7 @@ import { ISearchObject } from './smartnpm.interfaces'; // classes import { NpmPackage } from './smartnpm.classes.npmpackage'; +import { RegistryCache } from './smartnpm.classes.registrycache'; export interface INpmRegistryConstructorOptions { npmRegistryUrl?: string; @@ -13,6 +14,7 @@ export interface INpmRegistryConstructorOptions { export class NpmRegistry { public options: INpmRegistryConstructorOptions; + public registryCache: RegistryCache; private searchDomain = 'https://api.npms.io/v2/search?q='; constructor(optionsArg: INpmRegistryConstructorOptions = {}) { @@ -23,6 +25,7 @@ export class NpmRegistry { ...defaultOptions, ...optionsArg, }; + this.registryCache = new RegistryCache(this); } /** @@ -34,7 +37,11 @@ export class NpmRegistry { registryUrl: this.options.npmRegistryUrl, fullMetadata: true, }); - const npmPackage = await NpmPackage.createFromFullMetadata(this, fullMetadata); + const versionData = await plugins.packageJson(packageName, { + registryUrl: this.options.npmRegistryUrl, + allVersions: true + }); + const npmPackage = await NpmPackage.createFromFullMetadataAndVersionData(this, fullMetadata, versionData as any); return npmPackage; } @@ -52,12 +59,26 @@ export class NpmRegistry { /** * gets a file from a package as Smartfile */ - public async getFileFromPackage(packageNameArg: string, filePath: string): Promise { - const npmPackage = await this.getPackageInfo(packageNameArg); - return npmPackage.getFileFromPackage(filePath); + public async getFileFromPackage(packageNameArg: string, filePath: string, optionsArg?: { + distTag?: string; + version?: string; + }): Promise { + const fileId = `${this.options.npmRegistryUrl}//+//${packageNameArg}//+//${filePath}//+//${optionsArg?.distTag || optionsArg?.version}`; + const cachedFile: plugins.smartfile.Smartfile = await this.registryCache.getCachedFile(fileId); + if (!cachedFile) { + const npmPackage = await this.getPackageInfo(packageNameArg); + const fileResult = await npmPackage.getFileFromPackage(filePath, optionsArg); + this.registryCache.cacheSmartFile(fileId, fileResult); + return fileResult; + } else { + return cachedFile; + } } public async getPackageAsSmartfileVirtualDir(packageNameArg: string): Promise { + /** + * TODO: rewrite as memory only + */ const baseDir = plugins.path.join(paths.nogitDir, packageNameArg.replace('/', '__')); await plugins.smartfile.fs.ensureDir(baseDir); await this.savePackageToDisk(packageNameArg, baseDir); diff --git a/ts/smartnpm.classes.packagedisttag.ts b/ts/smartnpm.classes.packagedisttag.ts new file mode 100644 index 0000000..fbaf0b9 --- /dev/null +++ b/ts/smartnpm.classes.packagedisttag.ts @@ -0,0 +1,11 @@ +import * as plugins from './smartnpm.plugins'; + +export class PackageDisttag { + name: string; + targetVersion: string; + + constructor(nameArg: string, targetVersionArg: string) { + this.name = nameArg; + this.targetVersion = targetVersionArg; + } +} \ No newline at end of file diff --git a/ts/smartnpm.classes.packageversion.ts b/ts/smartnpm.classes.packageversion.ts new file mode 100644 index 0000000..7292716 --- /dev/null +++ b/ts/smartnpm.classes.packageversion.ts @@ -0,0 +1,31 @@ +import * as plugins from './smartnpm.plugins'; + +export interface IVersionData { + name: string; + version: string; + dependencies: { [key: string]: string }; + devDependencies: { [key: string]: string }; + dist: { + integrity: string; + shasum: string; + tarball: string; + }; +} + +export class PackageVersion implements IVersionData { + public static createFromVersionData(versionDataArg: IVersionData) { + const packageVersion = new PackageVersion(); + Object.assign(packageVersion, versionDataArg); + return packageVersion; + } + + name: string; + version: string; + dependencies: { [key: string]: string }; + devDependencies: { [key: string]: string }; + dist: { + integrity: string; + shasum: string; + tarball: string; + }; +} diff --git a/ts/smartnpm.classes.registrycache.ts b/ts/smartnpm.classes.registrycache.ts new file mode 100644 index 0000000..5493d06 --- /dev/null +++ b/ts/smartnpm.classes.registrycache.ts @@ -0,0 +1,30 @@ +import { NpmRegistry } from './smartnpm.classes.npmregistry'; +import * as plugins from './smartnpm.plugins'; + +export class RegistryCache { + npmregistryRef: NpmRegistry; + public levelCache: plugins.levelcache.LevelCache; + + constructor(npmRegistryRefArg: NpmRegistry) { + this.npmregistryRef = npmRegistryRefArg; + this.levelCache = new plugins.levelcache.LevelCache({ + cacheId: encodeURIComponent(this.npmregistryRef.options.npmRegistryUrl), + + }); + } + + public async getCachedFile (fileId: string): Promise { + const cacheEntry = await this.levelCache.retrieveCacheEntryByKey(fileId); + if (cacheEntry) { + return plugins.smartfile.Smartfile.fromFoldedJson(cacheEntry.contents.toString()); + } + return null; + } + + public async cacheSmartFile (fileIdArg: string, smartfileArg: plugins.smartfile.Smartfile) { + await this.levelCache.storeCacheEntryByKey(fileIdArg, new plugins.levelcache.CacheEntry({ + contents: Buffer.from(smartfileArg.foldToJson()), + ttl: 60000 + })); + } +} \ No newline at end of file diff --git a/ts/smartnpm.plugins.ts b/ts/smartnpm.plugins.ts index f22e1ac..e2f009e 100644 --- a/ts/smartnpm.plugins.ts +++ b/ts/smartnpm.plugins.ts @@ -5,12 +5,14 @@ export { path }; // @pushrocks scope import * as consolecolor from '@pushrocks/consolecolor'; +import * as levelcache from '@pushrocks/levelcache'; import * as smartarchive from '@pushrocks/smartarchive'; import * as smartfile from '@pushrocks/smartfile'; import * as smartpromise from '@pushrocks/smartpromise'; import * as smartrequest from '@pushrocks/smartrequest'; +import * as smartversion from '@pushrocks/smartversion'; -export { consolecolor, smartarchive, smartfile, smartpromise, smartrequest }; +export { consolecolor, levelcache, smartarchive, smartfile, smartpromise, smartrequest, smartversion }; // third party scope import packageJson from 'package-json';