diff --git a/package-lock.json b/package-lock.json index 663e0c9..ab119c3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,24 +12,27 @@ "@types/mkdirp": "^1.0.0", "@types/node": "^13.9.8", "@types/pino": "^6.3.8", + "7zip-bin": "^5.1.1", "fs-extra": "^10.0.0", - "JSONStream": "^1.3.5", "lodash": "^4.17.21", - "moleculer": "^0.14.0", - "moleculer-db": "^0.8.4", + "moleculer": "^0.14.16", + "moleculer-db": "^0.8.13", "moleculer-db-adapter-mongo": "^0.4.7", "moleculer-db-adapter-mongoose": "^0.8.9", "moleculer-web": "^0.9.0", "mongoose": "^5.12.7", "mongoose-paginate-v2": "^1.3.18", "nats": "^1.3.2", + "node-7z": "^3.0.0", + "node-calibre": "^2.1.1", "node-unrar-js": "^1.0.2", "pino": "^6.11.3", "pino-pretty": "^4.7.1", "sharp": "^0.28.1", "socket.io": "^4.1.1", - "socket.io-stream": "^0.9.1", + "socket.io-stream": "^0.5.3", "typescript": "^3.8.3", + "unrar": "github:cnboker/node-unrar", "unzipper": "^0.10.11", "xml2js": "^0.4.23" }, @@ -1517,6 +1520,11 @@ } } }, + "node_modules/7zip-bin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", + "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==" + }, "node_modules/abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", @@ -2770,11 +2778,6 @@ "node": ">= 0.8" } }, - "node_modules/component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" - }, "node_modules/component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -2948,9 +2951,9 @@ } }, "node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dependencies": { "ms": "2.1.2" }, @@ -2963,6 +2966,15 @@ } } }, + "node_modules/debuglog": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-0.0.2.tgz", + "integrity": "sha1-bA3PB+LD90UkYpt0Fmi9RsezYus=", + "optional": true, + "engines": { + "node": "*" + } + }, "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -4228,9 +4240,9 @@ "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" }, "node_modules/fastest-validator": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/fastest-validator/-/fastest-validator-1.10.1.tgz", - "integrity": "sha512-nhQP8JI16Ltml3kFKCEckKzxmPDYXZw0r+zF83Kf5qcJmA2Hoo4ORSo+SduxNiIbKpSS0i+3mV/UPhu8Po7Qkw==" + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/fastest-validator/-/fastest-validator-1.11.1.tgz", + "integrity": "sha512-y0pXBCgGfY3mqbBL9sn2LtAxfJICyOr5cuOnCjyiKg4VoXVmDaLBDwnnj4QC1pSY5B4upln5k8RyLszlLXzXlw==" }, "node_modules/fb-watchman": { "version": "2.0.1", @@ -5081,9 +5093,9 @@ } }, "node_modules/ipaddr.js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.0.tgz", - "integrity": "sha512-S54H9mIj0rbxRIyrDMEuuER86LdlgUg9FSeZ8duQb6CUG2iRrA36MYVQBSprTF/ZeAwvyQ5mDGuNvIPM0BIl3w==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", "engines": { "node": ">= 10" } @@ -7238,29 +7250,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, "node_modules/jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -7388,12 +7377,37 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==" + }, + "node_modules/lodash.defaultto": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/lodash.defaultto/-/lodash.defaultto-4.14.0.tgz", + "integrity": "sha1-OL09QlrO5zPg4ru9TkspcRzC7hE=" + }, + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=" + }, + "node_modules/lodash.isempty": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" + }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, + "node_modules/lodash.negate": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lodash.negate/-/lodash.negate-3.0.2.tgz", + "integrity": "sha1-nIl7C/YQAZ4LQ7j/Pwr+89e2bzQ=" + }, "node_modules/lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -7766,17 +7780,17 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" }, "node_modules/moleculer": { - "version": "0.14.13", - "resolved": "https://registry.npmjs.org/moleculer/-/moleculer-0.14.13.tgz", - "integrity": "sha512-ak5MIFWb0WwMBIIqw/cKlhFj+0huA7LjAYrv5bLSdluG0+aBRl3ZtST+6Ix4UA5qZ6cwhMsX+m9QtXGIs6CdVA==", + "version": "0.14.16", + "resolved": "https://registry.npmjs.org/moleculer/-/moleculer-0.14.16.tgz", + "integrity": "sha512-MbHMsKh+sEJeu5/ANnjt23bDciDMTuhmh+AYUWMUbEbEBK2axhSEYtb3LK7Mf4WD4tatRHQQ+HdZ+KySo7K4+Q==", "dependencies": { "args": "^5.0.1", "es6-error": "^4.1.1", "eventemitter2": "^6.4.4", - "fastest-validator": "^1.10.1", + "fastest-validator": "^1.11.1", "fn-args": "^5.0.0", - "glob": "^7.1.6", - "ipaddr.js": "^2.0.0", + "glob": "^7.1.7", + "ipaddr.js": "^2.0.1", "kleur": "^4.1.4", "lodash": "^4.17.21", "lru-cache": "^6.0.0", @@ -7791,6 +7805,98 @@ }, "funding": { "url": "https://github.com/moleculerjs/moleculer?sponsor=1" + }, + "peerDependencies": { + "amqplib": "^0.7.0", + "avsc": "^5.0.0", + "bunyan": "^1.0.0", + "cbor-x": "^0.8.3", + "dd-trace": "^0.33.0", + "debug": "^4.0.0", + "etcd3": "^1.0.0", + "ioredis": "^4.0.0", + "jaeger-client": "^3.0.0", + "kafka-node": "^5.0.0", + "log4js": "^6.0.0", + "mqtt": "^4.0.0", + "msgpack5": "^5.0.0", + "nats": "^1.0.0 || ^2.0.0", + "node-nats-streaming": "^0.0.51 || ^0.3.0", + "notepack.io": "2.0.0", + "pino": "^6.0.0", + "protobufjs": "^6.0.0", + "redlock": "^4.0.0", + "rhea-promise": "^1.0.0 || ^2.0.0", + "thrift": "^0.12.0", + "winston": "^3.0.0" + }, + "peerDependenciesMeta": { + "amqplib": { + "optional": true + }, + "avsc": { + "optional": true + }, + "bunyan": { + "optional": true + }, + "cbor-x": { + "optional": true + }, + "dd-trace": { + "optional": true + }, + "debug": { + "optional": true + }, + "etcd3": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "jaeger-client": { + "optional": true + }, + "kafka-node": { + "optional": true + }, + "log4js": { + "optional": true + }, + "mqtt": { + "optional": true + }, + "msgpack5": { + "optional": true + }, + "nats": { + "optional": true + }, + "node-nats-streaming": { + "optional": true + }, + "notepack.io": { + "optional": true + }, + "pino": { + "optional": true + }, + "protobufjs": { + "optional": true + }, + "redlock": { + "optional": true + }, + "rhea-promise": { + "optional": true + }, + "thrift": { + "optional": true + }, + "winston": { + "optional": true + } } }, "node_modules/moleculer-db": { @@ -8146,6 +8252,23 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node_modules/node-7z": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-7z/-/node-7z-3.0.0.tgz", + "integrity": "sha512-KIznWSxIkOYO/vOgKQfJEaXd7rgoFYKZbaurainCEdMhYc7V7mRHX+qdf2HgbpQFcdJL/Q6/XOPrDLoBeTfuZA==", + "dependencies": { + "debug": "^4.3.2", + "lodash.defaultsdeep": "^4.6.1", + "lodash.defaultto": "^4.14.0", + "lodash.flattendeep": "^4.4.0", + "lodash.isempty": "^4.4.0", + "lodash.negate": "^3.0.2", + "normalize-path": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/node-abi": { "version": "2.26.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.26.0.tgz", @@ -8167,6 +8290,11 @@ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz", "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==" }, + "node_modules/node-calibre": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/node-calibre/-/node-calibre-2.1.1.tgz", + "integrity": "sha512-t68lVmU+VznsivQKM6Fr1HSRQ2+m54OouiDkeCzRUQJO3N4h9l60DlcHFu2HAn6Kw5nsZEbOtnkk5OBhhOErxA==" + }, "node_modules/node-fetch": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", @@ -8278,7 +8406,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -10493,27 +10620,25 @@ } }, "node_modules/socket.io-stream": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/socket.io-stream/-/socket.io-stream-0.9.1.tgz", - "integrity": "sha1-QhJYMWKIuDrGk7DUPv0J1tQ6upc=", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/socket.io-stream/-/socket.io-stream-0.5.3.tgz", + "integrity": "sha1-AxV8Wl7rPSbiSc0d7ks3e2yCnLA=", "dependencies": { - "component-bind": "~1.0.0", - "debug": "~2.2.0" + "debug": "*", + "readable-stream": "1.1.9" } }, - "node_modules/socket.io-stream/node_modules/debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "node_modules/socket.io-stream/node_modules/readable-stream": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.9.tgz", + "integrity": "sha1-2HEw+/j57pw7QFizxYo+MNsvz90=", "dependencies": { - "ms": "0.7.1" + "core-util-is": "~1.0.0" + }, + "optionalDependencies": { + "debuglog": "0.0.2" } }, - "node_modules/socket.io-stream/node_modules/ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" - }, "node_modules/sonic-boom": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.4.1.tgz", @@ -11151,7 +11276,8 @@ "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true }, "node_modules/timers-ext": { "version": "0.1.7", @@ -11569,6 +11695,14 @@ "node": ">= 0.8" } }, + "node_modules/unrar": { + "version": "0.1.7", + "resolved": "git+ssh://git@github.com/cnboker/node-unrar.git#5f07cf1672bea8ee23cf01d7c9a5f3451d687c09", + "license": "MIT", + "engines": { + "node": ">= 0.10.21" + } + }, "node_modules/unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -13312,6 +13446,11 @@ "tsutils": "^3.17.1" } }, + "7zip-bin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", + "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==" + }, "abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", @@ -14292,11 +14431,6 @@ "delayed-stream": "~1.0.0" } }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" - }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -14442,13 +14576,19 @@ "integrity": "sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q==" }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "requires": { "ms": "2.1.2" } }, + "debuglog": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-0.0.2.tgz", + "integrity": "sha1-bA3PB+LD90UkYpt0Fmi9RsezYus=", + "optional": true + }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -15491,9 +15631,9 @@ "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" }, "fastest-validator": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/fastest-validator/-/fastest-validator-1.10.1.tgz", - "integrity": "sha512-nhQP8JI16Ltml3kFKCEckKzxmPDYXZw0r+zF83Kf5qcJmA2Hoo4ORSo+SduxNiIbKpSS0i+3mV/UPhu8Po7Qkw==" + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/fastest-validator/-/fastest-validator-1.11.1.tgz", + "integrity": "sha512-y0pXBCgGfY3mqbBL9sn2LtAxfJICyOr5cuOnCjyiKg4VoXVmDaLBDwnnj4QC1pSY5B4upln5k8RyLszlLXzXlw==" }, "fb-watchman": { "version": "2.0.1", @@ -16135,9 +16275,9 @@ "dev": true }, "ipaddr.js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.0.tgz", - "integrity": "sha512-S54H9mIj0rbxRIyrDMEuuER86LdlgUg9FSeZ8duQb6CUG2iRrA36MYVQBSprTF/ZeAwvyQ5mDGuNvIPM0BIl3w==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==" }, "is-accessor-descriptor": { "version": "1.0.0", @@ -17773,20 +17913,6 @@ "universalify": "^2.0.0" } }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" - }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -17892,12 +18018,37 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==" + }, + "lodash.defaultto": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/lodash.defaultto/-/lodash.defaultto-4.14.0.tgz", + "integrity": "sha1-OL09QlrO5zPg4ru9TkspcRzC7hE=" + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=" + }, + "lodash.isempty": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" + }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, + "lodash.negate": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lodash.negate/-/lodash.negate-3.0.2.tgz", + "integrity": "sha1-nIl7C/YQAZ4LQ7j/Pwr+89e2bzQ=" + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -18189,17 +18340,17 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" }, "moleculer": { - "version": "0.14.13", - "resolved": "https://registry.npmjs.org/moleculer/-/moleculer-0.14.13.tgz", - "integrity": "sha512-ak5MIFWb0WwMBIIqw/cKlhFj+0huA7LjAYrv5bLSdluG0+aBRl3ZtST+6Ix4UA5qZ6cwhMsX+m9QtXGIs6CdVA==", + "version": "0.14.16", + "resolved": "https://registry.npmjs.org/moleculer/-/moleculer-0.14.16.tgz", + "integrity": "sha512-MbHMsKh+sEJeu5/ANnjt23bDciDMTuhmh+AYUWMUbEbEBK2axhSEYtb3LK7Mf4WD4tatRHQQ+HdZ+KySo7K4+Q==", "requires": { "args": "^5.0.1", "es6-error": "^4.1.1", "eventemitter2": "^6.4.4", - "fastest-validator": "^1.10.1", + "fastest-validator": "^1.11.1", "fn-args": "^5.0.0", - "glob": "^7.1.6", - "ipaddr.js": "^2.0.0", + "glob": "^7.1.7", + "ipaddr.js": "^2.0.1", "kleur": "^4.1.4", "lodash": "^4.17.21", "lru-cache": "^6.0.0", @@ -18459,6 +18610,20 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-7z": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-7z/-/node-7z-3.0.0.tgz", + "integrity": "sha512-KIznWSxIkOYO/vOgKQfJEaXd7rgoFYKZbaurainCEdMhYc7V7mRHX+qdf2HgbpQFcdJL/Q6/XOPrDLoBeTfuZA==", + "requires": { + "debug": "^4.3.2", + "lodash.defaultsdeep": "^4.6.1", + "lodash.defaultto": "^4.14.0", + "lodash.flattendeep": "^4.4.0", + "lodash.isempty": "^4.4.0", + "lodash.negate": "^3.0.2", + "normalize-path": "^3.0.0" + } + }, "node-abi": { "version": "2.26.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.26.0.tgz", @@ -18479,6 +18644,11 @@ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz", "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==" }, + "node-calibre": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/node-calibre/-/node-calibre-2.1.1.tgz", + "integrity": "sha512-t68lVmU+VznsivQKM6Fr1HSRQ2+m54OouiDkeCzRUQJO3N4h9l60DlcHFu2HAn6Kw5nsZEbOtnkk5OBhhOErxA==" + }, "node-fetch": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", @@ -18580,8 +18750,7 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, "npm-run-path": { "version": "4.0.1", @@ -20307,26 +20476,22 @@ } }, "socket.io-stream": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/socket.io-stream/-/socket.io-stream-0.9.1.tgz", - "integrity": "sha1-QhJYMWKIuDrGk7DUPv0J1tQ6upc=", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/socket.io-stream/-/socket.io-stream-0.5.3.tgz", + "integrity": "sha1-AxV8Wl7rPSbiSc0d7ks3e2yCnLA=", "requires": { - "component-bind": "~1.0.0", - "debug": "~2.2.0" + "debug": "*", + "readable-stream": "1.1.9" }, "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "readable-stream": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.9.tgz", + "integrity": "sha1-2HEw+/j57pw7QFizxYo+MNsvz90=", "requires": { - "ms": "0.7.1" + "core-util-is": "~1.0.0", + "debuglog": "0.0.2" } - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" } } }, @@ -20854,7 +21019,8 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true }, "timers-ext": { "version": "0.1.7", @@ -21178,6 +21344,10 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, + "unrar": { + "version": "git+ssh://git@github.com/cnboker/node-unrar.git#5f07cf1672bea8ee23cf01d7c9a5f3451d687c09", + "from": "unrar@github:cnboker/node-unrar" + }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", diff --git a/package.json b/package.json index 300d994..99e9085 100644 --- a/package.json +++ b/package.json @@ -37,24 +37,27 @@ "@types/mkdirp": "^1.0.0", "@types/node": "^13.9.8", "@types/pino": "^6.3.8", + "7zip-bin": "^5.1.1", "fs-extra": "^10.0.0", - "JSONStream": "^1.3.5", "lodash": "^4.17.21", - "moleculer": "^0.14.0", - "moleculer-db": "^0.8.4", + "moleculer": "^0.14.16", + "moleculer-db": "^0.8.13", "moleculer-db-adapter-mongo": "^0.4.7", "moleculer-db-adapter-mongoose": "^0.8.9", "moleculer-web": "^0.9.0", "mongoose": "^5.12.7", "mongoose-paginate-v2": "^1.3.18", "nats": "^1.3.2", + "node-7z": "^3.0.0", + "node-calibre": "^2.1.1", "node-unrar-js": "^1.0.2", "pino": "^6.11.3", "pino-pretty": "^4.7.1", "sharp": "^0.28.1", "socket.io": "^4.1.1", - "socket.io-stream": "^0.9.1", + "socket.io-stream": "^0.5.3", "typescript": "^3.8.3", + "unrar": "github:cnboker/node-unrar", "unzipper": "^0.10.11", "xml2js": "^0.4.23" }, diff --git a/services/api.service.ts b/services/api.service.ts index 58cf45b..55d597c 100644 --- a/services/api.service.ts +++ b/services/api.service.ts @@ -1,6 +1,9 @@ import { Service, ServiceBroker, Context } from "moleculer"; import ApiGateway from "moleculer-web"; -import { extractArchive } from "../utils/uncompression.utils"; +import { + extractArchive, + getCoversFromFile, +} from "../utils/uncompression.utils"; import { map } from "lodash"; const IO = require("socket.io")(); @@ -112,54 +115,57 @@ export default class ApiService extends Service { ", Params:", params ); + getCoversFromFile(); const { extractionOptions, walkedFolders } = params; - switch (extractionOptions.extractionMode) { - case "bulk": - map(walkedFolders, async (folder, idx) => { - let comicBookCoverMetadata = - await extractArchive( - extractionOptions, - folder - ); - const dbImportResult = - await this.broker.call( - "import.rawImportToDB", - { - importStatus: { - isImported: true, - tagged: false, - matchedResult: { - score: "0", - }, - }, - rawFileDetails: - comicBookCoverMetadata, - }, - {} - ); - - client.emit("comicBookCoverMetadata", { - comicBookCoverMetadata, - dbImportResult, - }); - }); - - case "single": - return await extractArchive( - extractionOptions, - walkedFolders[0] - ); - default: - console.log( - "Unknown extraction mode selected." - ); - return { - message: - "Unknown extraction mode selected.", - errorCode: "90", - data: `${extractionOptions}`, - }; - } + // switch (extractionOptions.extractionMode) { + // case "bulk": + // map(walkedFolders, async (folder, idx) => { + // // let comicBookCoverMetadata = + // // await extractArchive( + // // extractionOptions, + // // folder + // // ); + // // const dbImportResult = + // // await this.broker.call( + // // "import.rawImportToDB", + // // { + // // importStatus: { + // // isImported: true, + // // tagged: false, + // // matchedResult: { + // // score: "0", + // // }, + // // }, + // // rawFileDetails: + // // comicBookCoverMetadata, + // // }, + // // {} + // // ); + // // + // // client.emit("comicBookCoverMetadata", { + // // comicBookCoverMetadata, + // // dbImportResult, + // // }); + // }); + // + // case "single": + // + // // return await extractArchive( + // // extractionOptions, + // // walkedFolders[0] + // // ); + // default: + // console.log( + // "Unknown extraction mode selected." + // ); + // + // return { + // message: + // "Unknown extraction mode selected.", + // errorCode: "90", + // data: `${extractionOptions}`, + // }; + // } } ); diff --git a/utils/uncompression.utils.ts b/utils/uncompression.utils.ts index a2207d1..072a64b 100644 --- a/utils/uncompression.utils.ts +++ b/utils/uncompression.utils.ts @@ -31,12 +31,14 @@ SOFTWARE. * Initial: 2021/05/04 Rishi Ghan */ -import { createReadStream, createWriteStream } from "fs"; +import { createReadStream, createWriteStream, readFileSync } from "fs"; const fse = require("fs-extra"); import { default as unzipper } from "unzipper"; import _ from "lodash"; -import { each, isEmpty, map } from "lodash"; +import { each, isEmpty, map, flatten } from "lodash"; +import path from "path"; + import { IExplodedPathResponse, IExtractComicBookCoverErrorResponse, @@ -53,9 +55,37 @@ import { } from "../utils/file.utils"; import { resizeImage } from "./imagetransformation.utils"; const { writeFile, readFile } = require("fs").promises; -const unrarer = require("node-unrar-js"); -export const unrar = async ( +import sevenBin from "7zip-bin"; +import { list, extract } from "node-7z"; +const pathTo7zip = sevenBin.path7za; +const unrarer = require("node-unrar-js"); +const { Calibre } = require("node-calibre"); + +export const getCoversFromFile = async () => { + try { + const calibre = new Calibre({ + library: path.resolve("userdata/calibre-lib"), + }); + + let result: string; + result = await calibre.run( + "ebook-meta", + [ + path.resolve( + "comics/A Hypothetical Lizard (2004)/Hypothetical_Lizard_T01.cbr" + ), + ], + { + getCover: path.resolve("userdata/covers/shoo/o.jpg"), + } + ); + console.log("AJSDASDLASDASDASLK!@#!@#!@#!#@#!@#!@", result); + } catch (error) { + console.log(error); + } +}; +export const unzip = async ( extractionOptions: IExtractionOptions, walkedFolder: IFolderData ): Promise< @@ -67,78 +97,100 @@ export const unrar = async ( const directoryOptions = { mode: 0o2775, }; - const fileBuffer = await readFile(paths.inputFilePath).catch((err) => - console.error("Failed to read file", err) - ); + try { await fse.ensureDir(paths.targetPath, directoryOptions); logger.info(`${paths.targetPath} was created.`); } catch (error) { logger.error(`${error}: Couldn't create directory.`); } - - const extractor = await unrarer.createExtractorFromData({ - data: fileBuffer, - }); - switch (extractionOptions.extractTarget) { case "cover": - console.log(walkedFolder); - return new Promise(async (resolve, reject) => { + return new Promise((resolve, reject) => { try { - let fileNameToExtract = ""; - const list = extractor.getFileList(); - const fileHeaders = [...list.fileHeaders]; - each(fileHeaders, async (fileHeader) => { - const fileName = explodePath(fileHeader.name).fileName; - if ( - fileName !== "" && - fileHeader.flags.directory === false && - isValidImageFileExtension(fileName) && - isEmpty(fileNameToExtract) - ) { - logger.info( - `Attempting to write ${fileHeader.name}` - ); - fileNameToExtract = fileHeader.name; - const file = extractor.extract({ - files: [fileHeader.name], - }); - const extractedFile = [...file.files][0]; - const fileArrayBuffer = extractedFile.extraction; + let firstImg; - // Resize it to the specified width - const outputFilePath = - paths.targetPath + "/" + fileName; - await resizeImage( - fileArrayBuffer, - outputFilePath, - 200 + const listStream = list(path.resolve(paths.inputFilePath), { + $cherryPick: ["*.png", "*.jpg", , "*.jpeg", "*.webp"], + $bin: pathTo7zip, + $progress: true, + recursive: true, + }); + + listStream.on("data", (data) => { + // set firstImg to the first result + if (!firstImg) firstImg = data; + }); + listStream.on("end", () => { + if (firstImg) { + const extractStream = extract( + paths.inputFilePath, + paths.targetPath, + { + $cherryPick: firstImg.file, + $bin: pathTo7zip, + $progress: true, + recursive: true, + } ); - let comicBookMetadata = { - name: `${fileName}`, - path: paths.targetPath, - fileSize: fileHeader.packSize, - containedIn: walkedFolder.containedIn, - }; - if (validateComicBookMetadata(comicBookMetadata)) { - resolve(comicBookMetadata); - } + extractStream.on("data", (data) => { + //do something with the image + console.log(data); + }); } }); } catch (error) { - logger.error(`${error}: Couldn't write file.`); - reject(error); + console.log(error); } + // resolve({ + // name: `${extractedFiles[0].fileHeader.name}`, + // path: paths.targetPath, + // fileSize: extractedFiles[0].fileHeader.packSize, + // containedIn: walkedFolder.containedIn, + // + // }) }); case "all": + break; + + default: + return { + message: "File format not supported, yet.", + errorCode: "90", + data: "asda", + }; + } +}; + +export const unrar = async ( + extractionOptions: IExtractionOptions, + walkedFolder: IFolderData +): Promise => { + switch (extractionOptions.extractTarget) { + case "cover": return new Promise(async (resolve, reject) => { + const paths = constructPaths(extractionOptions, walkedFolder); + const directoryOptions = { + mode: 0o2775, + }; try { + const fileBuffer = await readFile( + paths.inputFilePath + ).catch((err) => console.error("Failed to read file", err)); + try { + await fse.ensureDir(paths.targetPath, directoryOptions); + logger.info(`${paths.targetPath} was created.`); + } catch (error) { + logger.error(`${error}: Couldn't create directory.`); + } + + const extractor = await unrarer.createExtractorFromData({ + data: fileBuffer, + }); const files = extractor.extract({}); const extractedFiles = [...files.files]; - const comicBookCoverFiles: IExtractedComicBookCoverFile[] = - []; + for (const file of extractedFiles) { logger.info( `Attempting to write ${file.fileHeader.name}` @@ -157,93 +209,23 @@ export const unrar = async ( fileBuffer ); } - comicBookCoverFiles.push({ - name: `${file.fileHeader.name}`, - path: paths.targetPath, - fileSize: file.fileHeader.packSize, - containedIn: walkedFolder.containedIn, - }); } - resolve(_.flatten(comicBookCoverFiles)); - } catch (error) { resolve({ - message: `${error}`, - errorCode: "500", - data: walkedFolder.name, - }); - } - }); - - default: - return { - message: "File format not supported, yet.", - errorCode: "90", - data: "asda", - }; - } -}; - -export const unzip = async ( - extractionOptions: IExtractionOptions, - walkedFolder: IFolderData -): Promise< - | IExtractedComicBookCoverFile[] - | IExtractedComicBookCoverFile - | IExtractComicBookCoverErrorResponse -> => { - const directoryOptions = { - mode: 0o2775, - }; - const paths = constructPaths(extractionOptions, walkedFolder); - const extractedFiles: IExtractedComicBookCoverFile[] = []; - - try { - await fse.ensureDir(paths.targetPath, directoryOptions); - logger.info(`${paths.targetPath} was created or already exists.`); - } catch (error) { - logger.error(`${error} Couldn't create directory.`); - } - - const zip = createReadStream(paths.inputFilePath).pipe( - unzipper.Parse({ forceStream: true }) - ); - for await (const entry of zip) { - const fileName = explodePath(entry.path).fileName; - const size = entry.vars.uncompressedSize; - if ( - extractedFiles.length === 1 && - extractionOptions.extractTarget === "cover" - ) { - break; - } - if ( - fileName !== "" && - entry.type !== "Directory" && - isValidImageFileExtension(fileName) - ) { - logger.info(`Attempting to write ${fileName}`); - entry - .pipe(createWriteStream(paths.targetPath + "/" + fileName)) - .on("finish", () => { - extractedFiles.push({ - name: fileName, - fileSize: size, + name: `${extractedFiles[0].fileHeader.name}`, path: paths.targetPath, + fileSize: extractedFiles[0].fileHeader.packSize, containedIn: walkedFolder.containedIn, }); - }); - } - entry.autodrain(); + } catch (error) { + logger.error(`${error}: Couldn't write file.`); + reject(error); + } + }); + case "all": + break; + default: + break; } - - return new Promise(async (resolve, reject) => { - logger.info(""); - if (extractionOptions.extractTarget === "cover") { - resolve(extractedFiles[0]); - } else { - resolve(extractedFiles); - } - }); }; export const extractArchive = async ( @@ -284,6 +266,7 @@ export const getCovers = async ( > => { switch (options.extractionMode) { case "bulk": + console.log("asdas BULK"); const extractedDataPromises = map( walkedFolders, async (folder) => await extractArchive(options, folder) diff --git a/yarn.lock b/yarn.lock index 31a23f7..33eebbe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -744,6 +744,11 @@ "semver" "^7.3.2" "tsutils" "^3.17.1" +"7zip-bin@^5.1.1": + "integrity" "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==" + "resolved" "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz" + "version" "5.1.1" + "abab@^2.0.0": "integrity" "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" "resolved" "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz" @@ -1543,11 +1548,6 @@ dependencies: "delayed-stream" "~1.0.0" -"component-bind@~1.0.0": - "integrity" "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" - "resolved" "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz" - "version" "1.0.0" - "component-emitter@^1.2.1", "component-emitter@~1.3.0": "integrity" "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" "resolved" "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" @@ -1689,6 +1689,13 @@ "resolved" "https://registry.npmjs.org/dateformat/-/dateformat-4.5.1.tgz" "version" "4.5.1" +"debug@*", "debug@^4.0.0", "debug@^4.0.1", "debug@^4.1.0", "debug@^4.1.1", "debug@^4.3.2", "debug@~4.3.1": + "integrity" "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==" + "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz" + "version" "4.3.2" + dependencies: + "ms" "2.1.2" + "debug@^2.2.0": "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" @@ -1710,20 +1717,6 @@ dependencies: "ms" "2.0.0" -"debug@^4.0.1", "debug@^4.1.0", "debug@^4.1.1", "debug@~4.3.1": - "integrity" "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz" - "version" "4.3.1" - dependencies: - "ms" "2.1.2" - -"debug@~2.2.0": - "integrity" "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "ms" "0.7.1" - "debug@2.6.9": "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" @@ -1738,6 +1731,11 @@ dependencies: "ms" "2.0.0" +"debuglog@0.0.2": + "integrity" "sha1-bA3PB+LD90UkYpt0Fmi9RsezYus=" + "resolved" "https://registry.npmjs.org/debuglog/-/debuglog-0.0.2.tgz" + "version" "0.0.2" + "decamelize@^1.2.0": "integrity" "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" @@ -2405,10 +2403,10 @@ "resolved" "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz" "version" "2.0.7" -"fastest-validator@^1.10.1": - "integrity" "sha512-nhQP8JI16Ltml3kFKCEckKzxmPDYXZw0r+zF83Kf5qcJmA2Hoo4ORSo+SduxNiIbKpSS0i+3mV/UPhu8Po7Qkw==" - "resolved" "https://registry.npmjs.org/fastest-validator/-/fastest-validator-1.10.1.tgz" - "version" "1.10.1" +"fastest-validator@^1.11.1": + "integrity" "sha512-y0pXBCgGfY3mqbBL9sn2LtAxfJICyOr5cuOnCjyiKg4VoXVmDaLBDwnnj4QC1pSY5B4upln5k8RyLszlLXzXlw==" + "resolved" "https://registry.npmjs.org/fastest-validator/-/fastest-validator-1.11.1.tgz" + "version" "1.11.1" "fb-watchman@^2.0.0": "integrity" "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==" @@ -2650,7 +2648,7 @@ dependencies: "is-glob" "^4.0.1" -"glob@^7.1.1", "glob@^7.1.2", "glob@^7.1.3", "glob@^7.1.4", "glob@^7.1.6": +"glob@^7.1.1", "glob@^7.1.2", "glob@^7.1.3", "glob@^7.1.4", "glob@^7.1.6", "glob@^7.1.7": "integrity" "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==" "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" "version" "7.1.7" @@ -2916,10 +2914,10 @@ "resolved" "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz" "version" "2.1.0" -"ipaddr.js@^2.0.0": - "integrity" "sha512-S54H9mIj0rbxRIyrDMEuuER86LdlgUg9FSeZ8duQb6CUG2iRrA36MYVQBSprTF/ZeAwvyQ5mDGuNvIPM0BIl3w==" - "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.0.tgz" - "version" "2.0.0" +"ipaddr.js@^2.0.1": + "integrity" "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==" + "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz" + "version" "2.0.1" "is-accessor-descriptor@^0.1.6": "integrity" "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=" @@ -3695,19 +3693,6 @@ optionalDependencies: "graceful-fs" "^4.1.6" -"jsonparse@^1.2.0": - "integrity" "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" - "resolved" "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" - "version" "1.3.1" - -"JSONStream@^1.3.5": - "integrity" "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==" - "resolved" "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" - "version" "1.3.5" - dependencies: - "jsonparse" "^1.2.0" - "through" ">=2.2.7 <3" - "jsprim@^1.2.2": "integrity" "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=" "resolved" "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz" @@ -3831,11 +3816,36 @@ dependencies: "p-locate" "^4.1.0" +"lodash.defaultsdeep@^4.6.1": + "integrity" "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==" + "resolved" "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz" + "version" "4.6.1" + +"lodash.defaultto@^4.14.0": + "integrity" "sha1-OL09QlrO5zPg4ru9TkspcRzC7hE=" + "resolved" "https://registry.npmjs.org/lodash.defaultto/-/lodash.defaultto-4.14.0.tgz" + "version" "4.14.0" + +"lodash.flattendeep@^4.4.0": + "integrity" "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=" + "resolved" "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz" + "version" "4.4.0" + +"lodash.isempty@^4.4.0": + "integrity" "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" + "resolved" "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz" + "version" "4.4.0" + "lodash.memoize@4.x": "integrity" "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" "resolved" "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" "version" "4.1.2" +"lodash.negate@^3.0.2": + "integrity" "sha1-nIl7C/YQAZ4LQ7j/Pwr+89e2bzQ=" + "resolved" "https://registry.npmjs.org/lodash.negate/-/lodash.negate-3.0.2.tgz" + "version" "3.0.2" + "lodash.sortby@^4.7.0": "integrity" "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" "resolved" "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" @@ -4050,7 +4060,7 @@ "bluebird" "^3.7.2" "lodash" "^4.17.20" -"moleculer-db@^0.8.4": +"moleculer-db@^0.8.13": "integrity" "sha512-nsODdYa/UwQ2weFbFsbfHvLuyqDCUWaVwDf7WOYYs/m4VhwC6g5sPiLBWjqIDJjLQA+Ftkbxh+4zditmherneQ==" "resolved" "https://registry.npmjs.org/moleculer-db/-/moleculer-db-0.8.14.tgz" "version" "0.8.14" @@ -4093,18 +4103,18 @@ "qs" "^6.9.1" "serve-static" "^1.14.1" -"moleculer@^0.12.0 || ^0.13.0 || ^0.14.0", "moleculer@^0.13.0 || ^0.14.0", "moleculer@^0.14.0": - "integrity" "sha512-ak5MIFWb0WwMBIIqw/cKlhFj+0huA7LjAYrv5bLSdluG0+aBRl3ZtST+6Ix4UA5qZ6cwhMsX+m9QtXGIs6CdVA==" - "resolved" "https://registry.npmjs.org/moleculer/-/moleculer-0.14.13.tgz" - "version" "0.14.13" +"moleculer@^0.12.0 || ^0.13.0 || ^0.14.0", "moleculer@^0.13.0 || ^0.14.0", "moleculer@^0.14.16": + "integrity" "sha512-MbHMsKh+sEJeu5/ANnjt23bDciDMTuhmh+AYUWMUbEbEBK2axhSEYtb3LK7Mf4WD4tatRHQQ+HdZ+KySo7K4+Q==" + "resolved" "https://registry.npmjs.org/moleculer/-/moleculer-0.14.16.tgz" + "version" "0.14.16" dependencies: "args" "^5.0.1" "es6-error" "^4.1.1" "eventemitter2" "^6.4.4" - "fastest-validator" "^1.10.1" + "fastest-validator" "^1.11.1" "fn-args" "^5.0.0" - "glob" "^7.1.6" - "ipaddr.js" "^2.0.0" + "glob" "^7.1.7" + "ipaddr.js" "^2.0.1" "kleur" "^4.1.4" "lodash" "^4.17.21" "lru-cache" "^6.0.0" @@ -4173,11 +4183,6 @@ "resolved" "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz" "version" "1.1.4" -"ms@0.7.1": - "integrity" "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" - "resolved" "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - "version" "0.7.1" - "ms@2.0.0": "integrity" "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" @@ -4220,7 +4225,7 @@ "resolved" "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz" "version" "1.0.2" -"nats@^1.3.2": +"nats@^1.0.0 || ^2.0.0", "nats@^1.3.2": "integrity" "sha512-Jf4qesEF0Ay0D4AMw3OZnKMRTQm+6oZ5q8/m4gpy5bTmiDiK6wCXbZpzEslmezGpE93LV3RojNEG6dpK/mysLQ==" "resolved" "https://registry.npmjs.org/nats/-/nats-1.4.12.tgz" "version" "1.4.12" @@ -4264,6 +4269,19 @@ "resolved" "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" "version" "1.0.5" +"node-7z@^3.0.0": + "integrity" "sha512-KIznWSxIkOYO/vOgKQfJEaXd7rgoFYKZbaurainCEdMhYc7V7mRHX+qdf2HgbpQFcdJL/Q6/XOPrDLoBeTfuZA==" + "resolved" "https://registry.npmjs.org/node-7z/-/node-7z-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "debug" "^4.3.2" + "lodash.defaultsdeep" "^4.6.1" + "lodash.defaultto" "^4.14.0" + "lodash.flattendeep" "^4.4.0" + "lodash.isempty" "^4.4.0" + "lodash.negate" "^3.0.2" + "normalize-path" "^3.0.0" + "node-abi@^2.21.0": "integrity" "sha512-ag/Vos/mXXpWLLAYWsAoQdgS+gW7IwvgMLOgqopm/DbzAjazLltzgzpVMsFlgmo9TzG5hGXeaBZx2AI731RIsQ==" "resolved" "https://registry.npmjs.org/node-abi/-/node-abi-2.26.0.tgz" @@ -4276,6 +4294,11 @@ "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz" "version" "3.1.0" +"node-calibre@^2.1.1": + "integrity" "sha512-t68lVmU+VznsivQKM6Fr1HSRQ2+m54OouiDkeCzRUQJO3N4h9l60DlcHFu2HAn6Kw5nsZEbOtnkk5OBhhOErxA==" + "resolved" "https://registry.npmjs.org/node-calibre/-/node-calibre-2.1.1.tgz" + "version" "2.1.1" + "node-fetch@^2.6.1": "integrity" "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz" @@ -4686,7 +4709,7 @@ "resolved" "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz" "version" "3.2.0" -"pino@^6.11.3": +"pino@^6.0.0", "pino@^6.11.3": "integrity" "sha512-drPtqkkSf0ufx2gaea3TryFiBHdNIdXKf5LN0hTM82SXI4xVIve2wLwNg92e1MT6m3jASLu6VO7eGY6+mmGeyw==" "resolved" "https://registry.npmjs.org/pino/-/pino-6.11.3.tgz" "version" "6.11.3" @@ -4933,6 +4956,15 @@ "string_decoder" "^1.1.1" "util-deprecate" "^1.0.1" +"readable-stream@1.1.9": + "integrity" "sha1-2HEw+/j57pw7QFizxYo+MNsvz90=" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.9.tgz" + "version" "1.1.9" + dependencies: + "core-util-is" "~1.0.0" + optionalDependencies: + "debuglog" "0.0.2" + "realpath-native@^2.0.0": "integrity" "sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q==" "resolved" "https://registry.npmjs.org/realpath-native/-/realpath-native-2.0.0.tgz" @@ -5440,13 +5472,13 @@ "component-emitter" "~1.3.0" "debug" "~4.3.1" -"socket.io-stream@^0.9.1": - "integrity" "sha1-QhJYMWKIuDrGk7DUPv0J1tQ6upc=" - "resolved" "https://registry.npmjs.org/socket.io-stream/-/socket.io-stream-0.9.1.tgz" - "version" "0.9.1" +"socket.io-stream@^0.5.3": + "integrity" "sha1-AxV8Wl7rPSbiSc0d7ks3e2yCnLA=" + "resolved" "https://registry.npmjs.org/socket.io-stream/-/socket.io-stream-0.5.3.tgz" + "version" "0.5.3" dependencies: - "component-bind" "~1.0.0" - "debug" "~2.2.0" + "debug" "*" + "readable-stream" "1.1.9" "socket.io@^4.1.1": "integrity" "sha512-YKPdhaYRGEXjP+VqoKlfOEPgDjm0aMq1YWonjHg4rBU1xJCmgceNh2XL1vO4czWupH+WX1+d9Wqb768h7BC5kw==" @@ -5835,7 +5867,7 @@ "resolved" "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz" "version" "5.0.0" -"through@^2.3.6", "through@>=2.2.7 <3": +"through@^2.3.6": "integrity" "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" "version" "2.3.8" @@ -6119,6 +6151,10 @@ "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" "version" "1.0.0" +"unrar@github:cnboker/node-unrar": + "resolved" "git+ssh://git@github.com/cnboker/node-unrar.git#5f07cf1672bea8ee23cf01d7c9a5f3451d687c09" + "version" "0.1.7" + "unset-value@^1.0.0": "integrity" "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=" "resolved" "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz"