🔼 Bumped moleculer to 0.14.23

This commit is contained in:
2022-08-18 00:29:25 -07:00
parent b0a7e42461
commit d2c171ab5e
8 changed files with 550 additions and 608 deletions

View File

@@ -225,7 +225,7 @@ const brokerConfig: BrokerOptions = {
middlewares: [], middlewares: [],
// Register custom REPL commands. // Register custom REPL commands.
replCommands: null, // replCommands: null,
/* /*
// Called after broker created. // Called after broker created.
created : (broker: ServiceBroker): void => {}, created : (broker: ServiceBroker): void => {},

238
package-lock.json generated
View File

@@ -33,12 +33,12 @@
"leven": "^3.1.0", "leven": "^3.1.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"mkdirp": "^0.5.5", "mkdirp": "^0.5.5",
"moleculer": "^0.14.19", "moleculer": "^0.14.23",
"moleculer-bull": "github:rishighan/moleculer-bull", "moleculer-bull": "github:rishighan/moleculer-bull",
"moleculer-db": "^0.8.17", "moleculer-db": "^0.8.17",
"moleculer-db-adapter-mongo": "^0.4.7", "moleculer-db-adapter-mongo": "^0.4.7",
"moleculer-db-adapter-mongoose": "^0.8.12", "moleculer-db-adapter-mongoose": "^0.8.12",
"moleculer-io": "^2.0.0", "moleculer-io": "^2.1.0",
"moleculer-web": "^0.10.4", "moleculer-web": "^0.10.4",
"mongoosastic-ts": "^5.0.7", "mongoosastic-ts": "^5.0.7",
"mongoose": "^5.12.7", "mongoose": "^5.12.7",
@@ -1447,14 +1447,6 @@
"@sinonjs/commons": "^1.7.0" "@sinonjs/commons": "^1.7.0"
} }
}, },
"node_modules/@socket.io/base64-arraybuffer": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
"integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==",
"engines": {
"node": ">= 0.6.0"
}
},
"node_modules/@swiftcarrot/color-fns": { "node_modules/@swiftcarrot/color-fns": {
"version": "3.2.0", "version": "3.2.0",
"resolved": "https://registry.npmjs.org/@swiftcarrot/color-fns/-/color-fns-3.2.0.tgz", "resolved": "https://registry.npmjs.org/@swiftcarrot/color-fns/-/color-fns-3.2.0.tgz",
@@ -2046,9 +2038,9 @@
} }
}, },
"node_modules/args": { "node_modules/args": {
"version": "5.0.1", "version": "5.0.3",
"resolved": "https://registry.npmjs.org/args/-/args-5.0.1.tgz", "resolved": "https://registry.npmjs.org/args/-/args-5.0.3.tgz",
"integrity": "sha512-1kqmFCFsPffavQFGt8OxJdIcETti99kySRUPMpOhaGjL6mRJn8HFU1OxKY5bMqfZKUwTQc1mZkAjmGYaVOHFtQ==", "integrity": "sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==",
"dependencies": { "dependencies": {
"camelcase": "5.0.0", "camelcase": "5.0.0",
"chalk": "2.4.2", "chalk": "2.4.2",
@@ -2102,12 +2094,12 @@
"node_modules/args/node_modules/color-name": { "node_modules/args/node_modules/color-name": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
}, },
"node_modules/args/node_modules/escape-string-regexp": { "node_modules/args/node_modules/escape-string-regexp": {
"version": "1.0.5", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"engines": { "engines": {
"node": ">=0.8.0" "node": ">=0.8.0"
} }
@@ -2115,7 +2107,7 @@
"node_modules/args/node_modules/has-flag": { "node_modules/args/node_modules/has-flag": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"engines": { "engines": {
"node": ">=4" "node": ">=4"
} }
@@ -2123,7 +2115,7 @@
"node_modules/args/node_modules/leven": { "node_modules/args/node_modules/leven": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
"integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==",
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
} }
@@ -3767,9 +3759,9 @@
} }
}, },
"node_modules/engine.io": { "node_modules/engine.io": {
"version": "6.1.3", "version": "6.2.0",
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.3.tgz", "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz",
"integrity": "sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA==", "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==",
"dependencies": { "dependencies": {
"@types/cookie": "^0.4.1", "@types/cookie": "^0.4.1",
"@types/cors": "^2.8.12", "@types/cors": "^2.8.12",
@@ -3787,12 +3779,9 @@
} }
}, },
"node_modules/engine.io-parser": { "node_modules/engine.io-parser": {
"version": "5.0.3", "version": "5.0.4",
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz",
"integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==",
"dependencies": {
"@socket.io/base64-arraybuffer": "~1.0.2"
},
"engines": { "engines": {
"node": ">=10.0.0" "node": ">=10.0.0"
} }
@@ -4471,9 +4460,9 @@
"dev": true "dev": true
}, },
"node_modules/eventemitter2": { "node_modules/eventemitter2": {
"version": "6.4.5", "version": "6.4.7",
"resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz",
"integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==" "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg=="
}, },
"node_modules/execa": { "node_modules/execa": {
"version": "5.1.1", "version": "5.1.1",
@@ -7228,9 +7217,9 @@
} }
}, },
"node_modules/kleur": { "node_modules/kleur": {
"version": "4.1.4", "version": "4.1.5",
"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
"integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
"engines": { "engines": {
"node": ">=6" "node": ">=6"
} }
@@ -7828,23 +7817,24 @@
"integrity": "sha1-ilSTsPZzgvv3BcJg4HBDZlWn3Po=" "integrity": "sha1-ilSTsPZzgvv3BcJg4HBDZlWn3Po="
}, },
"node_modules/moleculer": { "node_modules/moleculer": {
"version": "0.14.19", "version": "0.14.23",
"resolved": "https://registry.npmjs.org/moleculer/-/moleculer-0.14.19.tgz", "resolved": "https://registry.npmjs.org/moleculer/-/moleculer-0.14.23.tgz",
"integrity": "sha512-XtZwfYHk2xP6mnTEf2h44OPh/ha0jMqK4bCCROMNRdngBZR2i3LKruZA1SeHUBW+1HtDh2GliAEG7a0rW9VZhg==", "integrity": "sha512-DE84fy8+1QiA7kUkF9ce4nyDdptBDlLFQfsaUccTScMGAbEjye5e+zfoI9iSA9rznwvshC8tgLhbOcnQBMn/HA==",
"dependencies": { "dependencies": {
"args": "^5.0.1", "args": "^5.0.3",
"eventemitter2": "^6.4.5", "eventemitter2": "^6.4.7",
"fastest-validator": "^1.12.0", "fastest-validator": "^1.12.0",
"glob": "^7.2.0", "glob": "^7.2.0",
"ipaddr.js": "^2.0.1", "ipaddr.js": "^2.0.1",
"kleur": "^4.1.4", "kleur": "^4.1.5",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"lru-cache": "^6.0.0", "lru-cache": "^6.0.0",
"node-fetch": "^2.6.1", "node-fetch": "^2.6.7",
"recursive-watch": "^1.1.4" "recursive-watch": "^1.1.4"
}, },
"bin": { "bin": {
"moleculer-runner": "bin/moleculer-runner.js" "moleculer-runner": "bin/moleculer-runner.js",
"moleculer-runner-esm": "bin/moleculer-runner.mjs"
}, },
"engines": { "engines": {
"node": ">= 10.x.x" "node": ">= 10.x.x"
@@ -7853,27 +7843,27 @@
"url": "https://github.com/moleculerjs/moleculer?sponsor=1" "url": "https://github.com/moleculerjs/moleculer?sponsor=1"
}, },
"peerDependencies": { "peerDependencies": {
"amqplib": "^0.7.0 || ^0.8.0", "amqplib": "^0.7.0 || ^0.8.0 || ^0.9.0 || ^0.10.0",
"avsc": "^5.0.0", "avsc": "^5.0.0",
"bunyan": "^1.0.0", "bunyan": "^1.0.0",
"cbor-x": "^0.8.3 || ^0.9.0", "cbor-x": "^0.8.3 || ^0.9.0 || ^1.2.0",
"dd-trace": "^0.33.0 || ^0.34.0 || ^0.35.0 || ^0.36.0 || >=1.0.0 <1.6.0", "dd-trace": "^0.33.0 || ^0.34.0 || ^0.35.0 || ^0.36.0 || >=1.0.0 <1.6.0",
"debug": "^4.0.0", "debug": "^4.0.0",
"etcd3": "^1.0.0", "etcd3": "^1.0.0",
"ioredis": "^4.0.0", "ioredis": "^4.0.0 || ^5.0.0",
"jaeger-client": "^3.0.0", "jaeger-client": "^3.0.0",
"kafka-node": "^5.0.0", "kafka-node": "^5.0.0",
"log4js": "^6.0.0", "log4js": "^6.0.0",
"mqtt": "^4.0.0", "mqtt": "^4.0.0",
"msgpack5": "^5.0.0", "msgpack5": "^5.0.0 || ^6.0.0",
"nats": "^1.0.0 || ^2.0.0", "nats": "^1.0.0 || ^2.0.0",
"node-nats-streaming": "^0.0.51 || ^0.2.0 || ^0.3.0", "node-nats-streaming": "^0.0.51 || ^0.2.0 || ^0.3.0",
"notepack.io": "^2.0.0", "notepack.io": "^2.0.0 || ^3.0.0",
"pino": "^6.0.0 || ^7.0.0", "pino": "^6.0.0 || ^7.0.0 || ^8.0.0",
"protobufjs": "^6.0.0", "protobufjs": "^6.0.0 || ^7.0.0",
"redlock": "^4.0.0", "redlock": "^4.0.0",
"rhea-promise": "^1.0.0 || ^2.0.0", "rhea-promise": "^1.0.0 || ^2.0.0",
"thrift": "^0.12.0", "thrift": "^0.12.0 || ^0.16.0",
"winston": "^3.0.0" "winston": "^3.0.0"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
@@ -7994,9 +7984,9 @@
} }
}, },
"node_modules/moleculer-db-adapter-mongoose": { "node_modules/moleculer-db-adapter-mongoose": {
"version": "0.8.12", "version": "0.8.14",
"resolved": "https://registry.npmjs.org/moleculer-db-adapter-mongoose/-/moleculer-db-adapter-mongoose-0.8.12.tgz", "resolved": "https://registry.npmjs.org/moleculer-db-adapter-mongoose/-/moleculer-db-adapter-mongoose-0.8.14.tgz",
"integrity": "sha512-bWxpkHH7YFLoqBYD12Nl7hd/fmF+gVbC9Xc+dtW8QF68hm+iul6yTTcJVVWm7OZ4zRykBuuj6sssqPzsie+MfQ==", "integrity": "sha512-XKESD8BzxbQaP52PcHPt5kFz5mC5epGPq8IiXQp9hbPkkpERp1RJIbMGLFQyeAx7wlNxASAMEAxq0uEUMqulDQ==",
"dependencies": { "dependencies": {
"bluebird": "^3.7.2", "bluebird": "^3.7.2",
"lodash": "^4.17.21" "lodash": "^4.17.21"
@@ -8010,13 +8000,13 @@
} }
}, },
"node_modules/moleculer-io": { "node_modules/moleculer-io": {
"version": "2.0.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/moleculer-io/-/moleculer-io-2.0.0.tgz", "resolved": "https://registry.npmjs.org/moleculer-io/-/moleculer-io-2.1.0.tgz",
"integrity": "sha512-de/t7cG5at5KYPiukkR+cEnZ0nb0xRmSHkCoLrd7mmHfNI8+FwoUbg1fE2+Yt5aoEnVhpvY7UE2x8qcBOT6T3w==", "integrity": "sha512-lekTCMc5ZVZ/h/vfKISRkOQWTmBpOJHa1lqmoGt6asCaQv78V+Q9/I1qw56gYOVD1vNlkCsS6ZkZPUW6Z35Y/w==",
"dependencies": { "dependencies": {
"kleur": "^4.1.4", "kleur": "^4.1.5",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"socket.io": "^4.4.1" "socket.io": "^4.5.1"
}, },
"engines": { "engines": {
"node": ">= 10.x.x" "node": ">= 10.x.x"
@@ -8072,9 +8062,9 @@
} }
}, },
"node_modules/moment": { "node_modules/moment": {
"version": "2.29.3", "version": "2.29.4",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
"integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==", "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
"engines": { "engines": {
"node": "*" "node": "*"
} }
@@ -12674,15 +12664,15 @@
} }
}, },
"node_modules/socket.io": { "node_modules/socket.io": {
"version": "4.4.1", "version": "4.5.1",
"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz",
"integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==", "integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==",
"dependencies": { "dependencies": {
"accepts": "~1.3.4", "accepts": "~1.3.4",
"base64id": "~2.0.0", "base64id": "~2.0.0",
"debug": "~4.3.2", "debug": "~4.3.2",
"engine.io": "~6.1.0", "engine.io": "~6.2.0",
"socket.io-adapter": "~2.3.3", "socket.io-adapter": "~2.4.0",
"socket.io-parser": "~4.0.4" "socket.io-parser": "~4.0.4"
}, },
"engines": { "engines": {
@@ -12690,14 +12680,14 @@
} }
}, },
"node_modules/socket.io-adapter": { "node_modules/socket.io-adapter": {
"version": "2.3.3", "version": "2.4.0",
"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz",
"integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==" "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg=="
}, },
"node_modules/socket.io-parser": { "node_modules/socket.io-parser": {
"version": "4.0.4", "version": "4.0.5",
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz",
"integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==",
"dependencies": { "dependencies": {
"@types/component-emitter": "^1.2.10", "@types/component-emitter": "^1.2.10",
"component-emitter": "~1.3.0", "component-emitter": "~1.3.0",
@@ -13785,7 +13775,7 @@
"node_modules/vary": { "node_modules/vary": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
"engines": { "engines": {
"node": ">= 0.8" "node": ">= 0.8"
} }
@@ -15283,11 +15273,6 @@
"@sinonjs/commons": "^1.7.0" "@sinonjs/commons": "^1.7.0"
} }
}, },
"@socket.io/base64-arraybuffer": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
"integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ=="
},
"@swiftcarrot/color-fns": { "@swiftcarrot/color-fns": {
"version": "3.2.0", "version": "3.2.0",
"resolved": "https://registry.npmjs.org/@swiftcarrot/color-fns/-/color-fns-3.2.0.tgz", "resolved": "https://registry.npmjs.org/@swiftcarrot/color-fns/-/color-fns-3.2.0.tgz",
@@ -15746,9 +15731,9 @@
} }
}, },
"args": { "args": {
"version": "5.0.1", "version": "5.0.3",
"resolved": "https://registry.npmjs.org/args/-/args-5.0.1.tgz", "resolved": "https://registry.npmjs.org/args/-/args-5.0.3.tgz",
"integrity": "sha512-1kqmFCFsPffavQFGt8OxJdIcETti99kySRUPMpOhaGjL6mRJn8HFU1OxKY5bMqfZKUwTQc1mZkAjmGYaVOHFtQ==", "integrity": "sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==",
"requires": { "requires": {
"camelcase": "5.0.0", "camelcase": "5.0.0",
"chalk": "2.4.2", "chalk": "2.4.2",
@@ -15790,22 +15775,22 @@
"color-name": { "color-name": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
}, },
"escape-string-regexp": { "escape-string-regexp": {
"version": "1.0.5", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
}, },
"has-flag": { "has-flag": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
}, },
"leven": { "leven": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
"integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA=="
}, },
"supports-color": { "supports-color": {
"version": "5.5.0", "version": "5.5.0",
@@ -17078,9 +17063,9 @@
} }
}, },
"engine.io": { "engine.io": {
"version": "6.1.3", "version": "6.2.0",
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.3.tgz", "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz",
"integrity": "sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA==", "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==",
"requires": { "requires": {
"@types/cookie": "^0.4.1", "@types/cookie": "^0.4.1",
"@types/cors": "^2.8.12", "@types/cors": "^2.8.12",
@@ -17103,12 +17088,9 @@
} }
}, },
"engine.io-parser": { "engine.io-parser": {
"version": "5.0.3", "version": "5.0.4",
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz",
"integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg=="
"requires": {
"@socket.io/base64-arraybuffer": "~1.0.2"
}
}, },
"enquirer": { "enquirer": {
"version": "2.3.6", "version": "2.3.6",
@@ -17659,9 +17641,9 @@
} }
}, },
"eventemitter2": { "eventemitter2": {
"version": "6.4.5", "version": "6.4.7",
"resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz",
"integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==" "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg=="
}, },
"execa": { "execa": {
"version": "5.1.1", "version": "5.1.1",
@@ -19759,9 +19741,9 @@
"integrity": "sha512-pgsE40/SvC7st04AHiISNewaIMUbY5V/K8b21ekiPiFoYs/EYSdsGa+FJArB1d441uq4Q8zZyIxvAzkGNlBdRw==" "integrity": "sha512-pgsE40/SvC7st04AHiISNewaIMUbY5V/K8b21ekiPiFoYs/EYSdsGa+FJArB1d441uq4Q8zZyIxvAzkGNlBdRw=="
}, },
"kleur": { "kleur": {
"version": "4.1.4", "version": "4.1.5",
"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
"integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==" "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="
}, },
"leven": { "leven": {
"version": "3.1.0", "version": "3.1.0",
@@ -20294,19 +20276,19 @@
"integrity": "sha1-ilSTsPZzgvv3BcJg4HBDZlWn3Po=" "integrity": "sha1-ilSTsPZzgvv3BcJg4HBDZlWn3Po="
}, },
"moleculer": { "moleculer": {
"version": "0.14.19", "version": "0.14.23",
"resolved": "https://registry.npmjs.org/moleculer/-/moleculer-0.14.19.tgz", "resolved": "https://registry.npmjs.org/moleculer/-/moleculer-0.14.23.tgz",
"integrity": "sha512-XtZwfYHk2xP6mnTEf2h44OPh/ha0jMqK4bCCROMNRdngBZR2i3LKruZA1SeHUBW+1HtDh2GliAEG7a0rW9VZhg==", "integrity": "sha512-DE84fy8+1QiA7kUkF9ce4nyDdptBDlLFQfsaUccTScMGAbEjye5e+zfoI9iSA9rznwvshC8tgLhbOcnQBMn/HA==",
"requires": { "requires": {
"args": "^5.0.1", "args": "^5.0.3",
"eventemitter2": "^6.4.5", "eventemitter2": "^6.4.7",
"fastest-validator": "^1.12.0", "fastest-validator": "^1.12.0",
"glob": "^7.2.0", "glob": "^7.2.0",
"ipaddr.js": "^2.0.1", "ipaddr.js": "^2.0.1",
"kleur": "^4.1.4", "kleur": "^4.1.5",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"lru-cache": "^6.0.0", "lru-cache": "^6.0.0",
"node-fetch": "^2.6.1", "node-fetch": "^2.6.7",
"recursive-watch": "^1.1.4" "recursive-watch": "^1.1.4"
} }
}, },
@@ -20340,22 +20322,22 @@
} }
}, },
"moleculer-db-adapter-mongoose": { "moleculer-db-adapter-mongoose": {
"version": "0.8.12", "version": "0.8.14",
"resolved": "https://registry.npmjs.org/moleculer-db-adapter-mongoose/-/moleculer-db-adapter-mongoose-0.8.12.tgz", "resolved": "https://registry.npmjs.org/moleculer-db-adapter-mongoose/-/moleculer-db-adapter-mongoose-0.8.14.tgz",
"integrity": "sha512-bWxpkHH7YFLoqBYD12Nl7hd/fmF+gVbC9Xc+dtW8QF68hm+iul6yTTcJVVWm7OZ4zRykBuuj6sssqPzsie+MfQ==", "integrity": "sha512-XKESD8BzxbQaP52PcHPt5kFz5mC5epGPq8IiXQp9hbPkkpERp1RJIbMGLFQyeAx7wlNxASAMEAxq0uEUMqulDQ==",
"requires": { "requires": {
"bluebird": "^3.7.2", "bluebird": "^3.7.2",
"lodash": "^4.17.21" "lodash": "^4.17.21"
} }
}, },
"moleculer-io": { "moleculer-io": {
"version": "2.0.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/moleculer-io/-/moleculer-io-2.0.0.tgz", "resolved": "https://registry.npmjs.org/moleculer-io/-/moleculer-io-2.1.0.tgz",
"integrity": "sha512-de/t7cG5at5KYPiukkR+cEnZ0nb0xRmSHkCoLrd7mmHfNI8+FwoUbg1fE2+Yt5aoEnVhpvY7UE2x8qcBOT6T3w==", "integrity": "sha512-lekTCMc5ZVZ/h/vfKISRkOQWTmBpOJHa1lqmoGt6asCaQv78V+Q9/I1qw56gYOVD1vNlkCsS6ZkZPUW6Z35Y/w==",
"requires": { "requires": {
"kleur": "^4.1.4", "kleur": "^4.1.5",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"socket.io": "^4.4.1" "socket.io": "^4.5.1"
} }
}, },
"moleculer-repl": { "moleculer-repl": {
@@ -20396,9 +20378,9 @@
} }
}, },
"moment": { "moment": {
"version": "2.29.3", "version": "2.29.4",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
"integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==" "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
}, },
"mongodb": { "mongodb": {
"version": "3.7.3", "version": "3.7.3",
@@ -23684,27 +23666,27 @@
"integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==" "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ=="
}, },
"socket.io": { "socket.io": {
"version": "4.4.1", "version": "4.5.1",
"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz",
"integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==", "integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==",
"requires": { "requires": {
"accepts": "~1.3.4", "accepts": "~1.3.4",
"base64id": "~2.0.0", "base64id": "~2.0.0",
"debug": "~4.3.2", "debug": "~4.3.2",
"engine.io": "~6.1.0", "engine.io": "~6.2.0",
"socket.io-adapter": "~2.3.3", "socket.io-adapter": "~2.4.0",
"socket.io-parser": "~4.0.4" "socket.io-parser": "~4.0.4"
} }
}, },
"socket.io-adapter": { "socket.io-adapter": {
"version": "2.3.3", "version": "2.4.0",
"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz",
"integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==" "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg=="
}, },
"socket.io-parser": { "socket.io-parser": {
"version": "4.0.4", "version": "4.0.5",
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz",
"integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==",
"requires": { "requires": {
"@types/component-emitter": "^1.2.10", "@types/component-emitter": "^1.2.10",
"component-emitter": "~1.3.0", "component-emitter": "~1.3.0",
@@ -24590,7 +24572,7 @@
"vary": { "vary": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
}, },
"verror": { "verror": {
"version": "1.10.0", "version": "1.10.0",

View File

@@ -61,12 +61,12 @@
"leven": "^3.1.0", "leven": "^3.1.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"mkdirp": "^0.5.5", "mkdirp": "^0.5.5",
"moleculer": "^0.14.19", "moleculer": "^0.14.23",
"moleculer-bull": "github:rishighan/moleculer-bull", "moleculer-bull": "github:rishighan/moleculer-bull",
"moleculer-db": "^0.8.17", "moleculer-db": "^0.8.17",
"moleculer-db-adapter-mongo": "^0.4.7", "moleculer-db-adapter-mongo": "^0.4.7",
"moleculer-db-adapter-mongoose": "^0.8.12", "moleculer-db-adapter-mongoose": "^0.8.12",
"moleculer-io": "^2.0.0", "moleculer-io": "^2.1.0",
"moleculer-web": "^0.10.4", "moleculer-web": "^0.10.4",
"mongoosastic-ts": "^5.0.7", "mongoosastic-ts": "^5.0.7",
"mongoose": "^5.12.7", "mongoose": "^5.12.7",

View File

@@ -20,76 +20,68 @@ export default class ImageTransformation extends Service {
schema: ServiceSchema<{}> = { name: "imagetransformation" } schema: ServiceSchema<{}> = { name: "imagetransformation" }
) { ) {
super(broker); super(broker);
this.parseServiceSchema( this.parseServiceSchema({
Service.mergeSchemas( name: "imagetransformation",
{ mixins: [],
name: "imagetransformation", settings: {
mixins: [], // Available fields in the responses
settings: { fields: ["_id", "name", "quantity", "price"],
// Available fields in the responses
fields: ["_id", "name", "quantity", "price"],
// Validator for the `create` & `insert` actions. // Validator for the `create` & `insert` actions.
entityValidator: { entityValidator: {
name: "string|min:3", name: "string|min:3",
price: "number|positive", price: "number|positive",
},
},
hooks: {},
actions: {
resize: {
rest: "POST /resizeImage",
params: {},
async handler(
ctx: Context<{
imageFile: string | Buffer;
newWidth: number;
newHeight: number;
outputPath: string;
}>
) {
const resizeResult = await resizeImage(
ctx.params.imageFile,
ctx.params.outputPath,
ctx.params.newWidth,
ctx.params.newHeight
);
return { resizeOperationStatus: resizeResult };
},
},
analyze: {
rest: "POST /analyze",
params: {},
handler: async (
ctx: Context<{ imageFilePath: string }>
) => {
const url = new URL(ctx.params.imageFilePath);
const pathName = url.pathname;
const decodedImageFileURI = decodeURI(pathName);
const finalImagePath = path.resolve(
"." + decodedImageFileURI
);
const analyzedData = await analyze(
finalImagePath
);
const colorHistogramData =
await getColorHistogramData(
finalImagePath,
false
);
return {
analyzedData,
colorHistogramData,
};
},
},
},
methods: {},
}, },
schema },
) hooks: {},
); actions: {
resize: {
rest: "POST /resizeImage",
params: {},
async handler(
ctx: Context<{
imageFile: string | Buffer;
newWidth: number;
newHeight: number;
outputPath: string;
}>
) {
const resizeResult = await resizeImage(
ctx.params.imageFile,
ctx.params.outputPath,
ctx.params.newWidth,
ctx.params.newHeight
);
return { resizeOperationStatus: resizeResult };
},
},
analyze: {
rest: "POST /analyze",
params: {},
handler: async (
ctx: Context<{ imageFilePath: string }>
) => {
const url = new URL(ctx.params.imageFilePath);
const pathName = url.pathname;
const decodedImageFileURI = decodeURI(pathName);
const finalImagePath = path.resolve(
"." + decodedImageFileURI
);
const analyzedData = await analyze(finalImagePath);
const colorHistogramData = await getColorHistogramData(
finalImagePath,
false
);
return {
analyzedData,
colorHistogramData,
};
},
},
},
methods: {},
});
} }
} }

View File

@@ -21,120 +21,108 @@ export default class OpdsService extends Service {
schema: ServiceSchema<{}> = { name: "opds" } schema: ServiceSchema<{}> = { name: "opds" }
) { ) {
super(broker); super(broker);
this.parseServiceSchema( this.parseServiceSchema({
Service.mergeSchemas( name: "opds",
{ mixins: [],
name: "opds", settings: {
mixins: [], port: process.env.PORT || 3001,
settings: { },
port: process.env.PORT || 3001, hooks: {},
}, actions: {
hooks: {}, serve: {
actions: { rest: "POST /serve",
serve: { handler: async (ctx) => {
rest: "POST /serve", return buildAsync(
handler: async (ctx) => { initMain({
return buildAsync( title: `title`,
initMain({ subtitle: `subtitle`,
title: `title`, icon: "/favicon.ico",
subtitle: `subtitle`, }),
icon: "/favicon.ico", [
}), async (feed: Feed) => {
[ feed.id =
async (feed: Feed) => { "urn:uuid:2853dacf-ed79-42f5-8e8a-a7bb3d1ae6a2";
feed.id = feed.books = feed.books || [];
"urn:uuid:2853dacf-ed79-42f5-8e8a-a7bb3d1ae6a2"; await FastGlob(
feed.books = feed.books || []; [
await FastGlob( "*.cbr",
[ "*.cbz",
"*.cbr", "*.cb7",
"*.cbz", "*.cba",
"*.cb7", "*.cbt",
"*.cba", ],
"*.cbt", {
], cwd: COMICS_DIRECTORY,
{
cwd: COMICS_DIRECTORY,
}
).each((file, idx) => {
const ext = extname(file);
const title = basename(
file,
ext
);
const href = encodeURI(
`/comics/${file}`
);
const type =
lookup(ext) ||
"application/octet-stream";
const entry =
Entry.deserialize<Entry>({
title,
id: idx.toString(),
links: [
{
rel: EnumLinkRel.ACQUISITION,
href,
type,
} as Link,
],
});
if (
!isUndefined(feed) &&
!isUndefined(feed.books)
) {
feed.books.push(entry);
}
});
return feed;
},
]
).then((feed) => {
ctx.meta.$responseHeaders = {
"Content-Type": " application/xml",
};
let data;
xml2js.parseString(
feed.toXML(),
(err, result) => {
result.feed.link = {
$: {
rel: "self",
href: "/opds-catalogs/root.xml",
type: "application/atom+xml;profile=opds-catalog;kind=navigation",
},
_: "",
};
const builder = new xml2js.Builder({
xmldec: {
version: "1.0",
encoding: "UTF-8",
standalone: false,
},
});
data = builder.buildObject(result, {
renderOpts: {
pretty: true,
indent: " ",
newline: "\n",
allowEmpty: true,
},
});
} }
); ).each((file, idx) => {
return data; const ext = extname(file);
const title = basename(file, ext);
const href = encodeURI(
`/comics/${file}`
);
const type =
lookup(ext) ||
"application/octet-stream";
const entry = Entry.deserialize<Entry>({
title,
id: idx.toString(),
links: [
{
rel: EnumLinkRel.ACQUISITION,
href,
type,
} as Link,
],
});
if (
!isUndefined(feed) &&
!isUndefined(feed.books)
) {
feed.books.push(entry);
}
});
return feed;
},
]
).then((feed) => {
ctx.meta.$responseHeaders = {
"Content-Type": " application/xml",
};
let data;
xml2js.parseString(feed.toXML(), (err, result) => {
result.feed.link = {
$: {
rel: "self",
href: "/opds-catalogs/root.xml",
type: "application/atom+xml;profile=opds-catalog;kind=navigation",
},
_: "",
};
const builder = new xml2js.Builder({
xmldec: {
version: "1.0",
encoding: "UTF-8",
standalone: false,
},
}); });
}, data = builder.buildObject(result, {
}, renderOpts: {
pretty: true,
indent: " ",
newline: "\n",
allowEmpty: true,
},
});
});
return data;
});
}, },
methods: {},
}, },
schema },
) methods: {},
); });
} }
} }

View File

@@ -20,166 +20,157 @@ export default class SettingsService extends Service {
schema: ServiceSchema<{}> = { name: "search" } schema: ServiceSchema<{}> = { name: "search" }
) { ) {
super(broker); super(broker);
this.parseServiceSchema( this.parseServiceSchema({
Service.mergeSchemas( name: "search",
{ mixins: [DbMixin("comics", Comic)],
name: "search", hooks: {},
mixins: [DbMixin("comics", Comic)], actions: {
hooks: {}, searchComic: {
actions: { rest: "POST /searchComic",
searchComic: { params: {},
rest: "POST /searchComic", timeout: 400000,
params: {}, async handler(
timeout: 400000, ctx: Context<{
async handler( queryObjects: [];
ctx: Context<{ elasticSearchQueries: [
queryObjects: []; {
elasticSearchQueries: [ elasticSearchQuery: object;
{
elasticSearchQuery: object;
}
];
}>
) {
const flattenedQueryArray = flatten(
ctx.params.elasticSearchQueries
);
let queries = flattenedQueryArray
.map((item) => JSON.stringify(item))
.join("\n");
queries += "\n";
const { body } = await eSClient.msearch({
body: queries,
});
body.responses.forEach((match) => {
console.log(match.hits);
});
return body.responses;
},
},
issue: {
rest: "POST /searchIssue",
params: {},
handler: async (
ctx: Context<{
query: {
volumeName: string;
issueNumber: string;
};
pagination: {
size: number;
from: number;
};
type: string;
}>
) => {
try {
console.log(ctx.params);
const { query, pagination } = ctx.params;
let eSQuery = {};
switch (ctx.params.type) {
case "all":
Object.assign(eSQuery, {
match_all: {},
});
break;
case "volumeName":
Object.assign(eSQuery, {
multi_match: {
fields: [
"rawFileDetails.name",
"sourcedMetadata.locg.name",
"sourcedMetadata.comicvine.name",
"sourcedMetadata.comicvine.volumeInformation.name",
],
query: query.volumeName,
},
});
break;
case "wanted":
Object.assign(eSQuery, {
bool: {
must: {
term: {
"acquisition.source.wanted":
true,
},
},
},
});
break;
case "volumes":
Object.assign(eSQuery, {
exists: {
field: "sourcedMetadata.comicvine.volumeInformation",
},
});
break;
}
console.log(
"Searching ElasticSearch index with this query -> "
);
console.log(
JSON.stringify(eSQuery, null, 2)
);
const result = await eSClient.search(
{
index: "comics",
body: {
query: eSQuery,
},
...pagination,
},
{ hydrate: true }
);
return result;
} catch (error) {
return new Errors.MoleculerClientError(
"Failed to return data",
404,
"ElasticSearch error",
error
);
} }
}, ];
}, }>
groupIssuesByBundles: { ) {
rest: "GET /groupIssuesByBundles", const flattenedQueryArray = flatten(
params: {}, ctx.params.elasticSearchQueries
handler: async ( );
ctx: Context<{ bundleIds: [] }> let queries = flattenedQueryArray
) => { .map((item) => JSON.stringify(item))
// params: array of bundle IDs .join("\n");
if (!isNil(ctx.params.bundleIds)) { queries += "\n";
return await Comic.find({ const { body } = await eSClient.msearch({
"acquisition.directconnect.downloads": { body: queries,
$elemMatch: { });
bundleId: { body.responses.forEach((match) => {
$in: ctx.params.bundleIds, console.log(match.hits);
});
return body.responses;
},
},
issue: {
rest: "POST /searchIssue",
params: {},
handler: async (
ctx: Context<{
query: {
volumeName: string;
issueNumber: string;
};
pagination: {
size: number;
from: number;
};
type: string;
}>
) => {
try {
console.log(ctx.params);
const { query, pagination } = ctx.params;
let eSQuery = {};
switch (ctx.params.type) {
case "all":
Object.assign(eSQuery, {
match_all: {},
});
break;
case "volumeName":
Object.assign(eSQuery, {
multi_match: {
fields: [
"rawFileDetails.name",
"sourcedMetadata.locg.name",
"sourcedMetadata.comicvine.name",
"sourcedMetadata.comicvine.volumeInformation.name",
],
query: query.volumeName,
},
});
break;
case "wanted":
Object.assign(eSQuery, {
bool: {
must: {
term: {
"acquisition.source.wanted":
true,
}, },
}, },
}, },
}); });
} break;
}, case "volumes":
}, Object.assign(eSQuery, {
deleteElasticSearchIndices: { exists: {
rest: "GET /deleteElasticSearchIndices", field: "sourcedMetadata.comicvine.volumeInformation",
params: {}, },
handler: async (ctx: Context<{}>) => { });
return await eSClient.indices.delete({ break;
}
console.log(
"Searching ElasticSearch index with this query -> "
);
console.log(JSON.stringify(eSQuery, null, 2));
const result = await eSClient.search(
{
index: "comics", index: "comics",
}); body: {
}, query: eSQuery,
}, },
...pagination,
},
{ hydrate: true }
);
return result;
} catch (error) {
return new Errors.MoleculerClientError(
"Failed to return data",
404,
"ElasticSearch error",
error
);
}
}, },
methods: {},
}, },
schema groupIssuesByBundles: {
) rest: "GET /groupIssuesByBundles",
); params: {},
handler: async (ctx: Context<{ bundleIds: [] }>) => {
// params: array of bundle IDs
if (!isNil(ctx.params.bundleIds)) {
return await Comic.find({
"acquisition.directconnect.downloads": {
$elemMatch: {
bundleId: {
$in: ctx.params.bundleIds,
},
},
},
});
}
},
},
deleteElasticSearchIndices: {
rest: "GET /deleteElasticSearchIndices",
params: {},
handler: async (ctx: Context<{}>) => {
return await eSClient.indices.delete({
index: "comics",
});
},
},
},
methods: {},
});
} }
} }

View File

@@ -18,91 +18,79 @@ export default class SettingsService extends Service {
schema: ServiceSchema<{}> = { name: "settings" } schema: ServiceSchema<{}> = { name: "settings" }
) { ) {
super(broker); super(broker);
this.parseServiceSchema( this.parseServiceSchema({
Service.mergeSchemas( name: "settings",
{ mixins: [DbMixin("settings", Settings)],
name: "settings", settings: {},
mixins: [DbMixin("settings", Settings)], hooks: {},
settings: {}, actions: {
hooks: {}, getSettings: {
actions: { rest: "GET /getAllSettings",
getSettings: { params: {},
rest: "GET /getAllSettings", async handler(ctx: Context<{ settingsKey: string }>) {
params: {}, const settings = await Settings.find({});
async handler( if (isEmpty(settings)) {
ctx: Context<{ settingsKey: string }> return {};
) { }
const settings = await Settings.find({}); console.log(settings[0]);
if (isEmpty(settings)) { return settings[0];
return {};
}
console.log(settings[0]);
return settings[0];
},
},
saveSettings: {
rest: "POST /saveSettings",
params: {},
async handler(
ctx: Context<{
settingsPayload: {
host: object;
airDCPPUserSettings: object;
hubs: [];
};
settingsObjectId: string;
}>
) {
console.log("varan bhat", ctx.params);
const { host, airDCPPUserSettings, hubs } =
ctx.params.settingsPayload;
let query = {
host,
airDCPPUserSettings,
hubs,
};
const keysToUpdate = pickBy(query, identity);
let updateQuery = {};
map(Object.keys(keysToUpdate), (key) => {
updateQuery[`directConnect.client.${key}`] =
query[key];
});
const options = {
upsert: true,
new: true,
setDefaultsOnInsert: true,
};
const filter = {
_id: new ObjectId(
ctx.params.settingsObjectId
),
};
const result = Settings.findOneAndUpdate(
filter,
{ $set: updateQuery },
options
);
return result;
},
},
deleteSettings: {
rest: "POST /deleteSettings",
params: {},
async handler(ctx: Context<{}>) {
return await Settings.remove(
{},
(result) => result
);
},
},
}, },
methods: {},
}, },
schema
) saveSettings: {
); rest: "POST /saveSettings",
params: {},
async handler(
ctx: Context<{
settingsPayload: {
host: object;
airDCPPUserSettings: object;
hubs: [];
};
settingsObjectId: string;
}>
) {
console.log("varan bhat", ctx.params);
const { host, airDCPPUserSettings, hubs } =
ctx.params.settingsPayload;
let query = {
host,
airDCPPUserSettings,
hubs,
};
const keysToUpdate = pickBy(query, identity);
let updateQuery = {};
map(Object.keys(keysToUpdate), (key) => {
updateQuery[`directConnect.client.${key}`] =
query[key];
});
const options = {
upsert: true,
new: true,
setDefaultsOnInsert: true,
};
const filter = {
_id: new ObjectId(ctx.params.settingsObjectId),
};
const result = Settings.findOneAndUpdate(
filter,
{ $set: updateQuery },
options
);
return result;
},
},
deleteSettings: {
rest: "POST /deleteSettings",
params: {},
async handler(ctx: Context<{}>) {
return await Settings.remove({}, (result) => result);
},
},
},
methods: {},
});
} }
} }

View File

@@ -12,70 +12,71 @@ export default class SocketService extends Service {
schema: ServiceSchema<{}> = { name: "socket" } schema: ServiceSchema<{}> = { name: "socket" }
) { ) {
super(broker); super(broker);
this.parseServiceSchema( this.parseServiceSchema({
Service.mergeSchemas( name: "socket",
{ mixins: [SocketIOService],
name: "socket", settings: {
mixins: [SocketIOService], port: process.env.PORT || 3001,
settings: { io: {
port: process.env.PORT || 3001, namespaces: {
io: { "/": {
namespaces: { events: {
"/": { call: {
events: { // whitelist: ["math.*", "say.*", "accounts.*", "rooms.*", "io.*"],
call: { },
// whitelist: ["math.*", "say.*", "accounts.*", "rooms.*", "io.*"], action: async (data, ack) => {
}, // write your handler function here.
action: async (data, ack) => { switch (data.type) {
// write your handler function here. case "LS_IMPORT":
switch (data.type) { console.log(
case "LS_IMPORT": `Recieved ${data.type} event.`
console.log( );
`Recieved ${data.type} event.` // 1. Send task to queue
); await this.broker.call(
// 1. Send task to queue "library.newImport",
await this.broker.call( data.data,
"library.newImport", {}
data.data, );
{} break;
); case "LS_TOGGLE_IMPORT_QUEUE":
break; await this.broker.call(
case "LS_TOGGLE_IMPORT_QUEUE": "importqueue.toggleImportQueue",
await this.broker.call( data.data,
"importqueue.toggleImportQueue", {}
data.data, );
{} break;
); case "LS_SINGLE_IMPORT":
break; console.info(
case "LS_SINGLE_IMPORT": "AirDC++ finished a download -> "
console.info("AirDC++ finished a download -> ") );
console.log(data); console.log(data);
await this.broker.call("library.importDownloadedFileToLibrary", data.data, {}); await this.broker.call(
break; "library.importDownloadedFileToLibrary",
} data.data,
}, {}
}, );
break;
}
}, },
},
options: {
adapter: redisAdapter({
host: redisURL.hostname,
port: 6379,
}),
}, },
}, },
}, },
hooks: {}, options: {
actions: {}, adapter: redisAdapter({
methods: {}, host: redisURL.hostname,
async started() { port: 6379,
this.io.on("connection", (data) => }),
console.log("socket.io server initialized.")
);
}, },
}, },
schema },
) hooks: {},
); actions: {},
methods: {},
async started() {
this.io.on("connection", (data) =>
console.log("socket.io server initialized.")
);
},
});
} }
} }