📔 Trying out node-calibre to generate covers

This commit is contained in:
2021-07-26 21:37:38 -07:00
parent a3d07d62c8
commit b3962d35bc
5 changed files with 564 additions and 366 deletions

402
package-lock.json generated
View File

@@ -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",

View File

@@ -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"
},

View File

@@ -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}`,
// };
// }
}
);

View File

@@ -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<IExtractedComicBookCoverFile> => {
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)

162
yarn.lock
View File

@@ -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"