🔼 Bumped moleculer to 0.14.23
This commit is contained in:
@@ -225,7 +225,7 @@ const brokerConfig: BrokerOptions = {
|
||||
middlewares: [],
|
||||
|
||||
// Register custom REPL commands.
|
||||
replCommands: null,
|
||||
// replCommands: null,
|
||||
/*
|
||||
// Called after broker created.
|
||||
created : (broker: ServiceBroker): void => {},
|
||||
|
||||
238
package-lock.json
generated
238
package-lock.json
generated
@@ -33,12 +33,12 @@
|
||||
"leven": "^3.1.0",
|
||||
"lodash": "^4.17.21",
|
||||
"mkdirp": "^0.5.5",
|
||||
"moleculer": "^0.14.19",
|
||||
"moleculer": "^0.14.23",
|
||||
"moleculer-bull": "github:rishighan/moleculer-bull",
|
||||
"moleculer-db": "^0.8.17",
|
||||
"moleculer-db-adapter-mongo": "^0.4.7",
|
||||
"moleculer-db-adapter-mongoose": "^0.8.12",
|
||||
"moleculer-io": "^2.0.0",
|
||||
"moleculer-io": "^2.1.0",
|
||||
"moleculer-web": "^0.10.4",
|
||||
"mongoosastic-ts": "^5.0.7",
|
||||
"mongoose": "^5.12.7",
|
||||
@@ -1447,14 +1447,6 @@
|
||||
"@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": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@swiftcarrot/color-fns/-/color-fns-3.2.0.tgz",
|
||||
@@ -2046,9 +2038,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/args": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/args/-/args-5.0.1.tgz",
|
||||
"integrity": "sha512-1kqmFCFsPffavQFGt8OxJdIcETti99kySRUPMpOhaGjL6mRJn8HFU1OxKY5bMqfZKUwTQc1mZkAjmGYaVOHFtQ==",
|
||||
"version": "5.0.3",
|
||||
"resolved": "https://registry.npmjs.org/args/-/args-5.0.3.tgz",
|
||||
"integrity": "sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==",
|
||||
"dependencies": {
|
||||
"camelcase": "5.0.0",
|
||||
"chalk": "2.4.2",
|
||||
@@ -2102,12 +2094,12 @@
|
||||
"node_modules/args/node_modules/color-name": {
|
||||
"version": "1.1.3",
|
||||
"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": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
|
||||
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
|
||||
"engines": {
|
||||
"node": ">=0.8.0"
|
||||
}
|
||||
@@ -2115,7 +2107,7 @@
|
||||
"node_modules/args/node_modules/has-flag": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
|
||||
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
@@ -2123,7 +2115,7 @@
|
||||
"node_modules/args/node_modules/leven": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
|
||||
"integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=",
|
||||
"integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
@@ -3767,9 +3759,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/engine.io": {
|
||||
"version": "6.1.3",
|
||||
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.3.tgz",
|
||||
"integrity": "sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA==",
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz",
|
||||
"integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==",
|
||||
"dependencies": {
|
||||
"@types/cookie": "^0.4.1",
|
||||
"@types/cors": "^2.8.12",
|
||||
@@ -3787,12 +3779,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/engine.io-parser": {
|
||||
"version": "5.0.3",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz",
|
||||
"integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==",
|
||||
"dependencies": {
|
||||
"@socket.io/base64-arraybuffer": "~1.0.2"
|
||||
},
|
||||
"version": "5.0.4",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz",
|
||||
"integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
}
|
||||
@@ -4471,9 +4460,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/eventemitter2": {
|
||||
"version": "6.4.5",
|
||||
"resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz",
|
||||
"integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw=="
|
||||
"version": "6.4.7",
|
||||
"resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz",
|
||||
"integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg=="
|
||||
},
|
||||
"node_modules/execa": {
|
||||
"version": "5.1.1",
|
||||
@@ -7228,9 +7217,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/kleur": {
|
||||
"version": "4.1.4",
|
||||
"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz",
|
||||
"integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==",
|
||||
"version": "4.1.5",
|
||||
"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
|
||||
"integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
@@ -7828,23 +7817,24 @@
|
||||
"integrity": "sha1-ilSTsPZzgvv3BcJg4HBDZlWn3Po="
|
||||
},
|
||||
"node_modules/moleculer": {
|
||||
"version": "0.14.19",
|
||||
"resolved": "https://registry.npmjs.org/moleculer/-/moleculer-0.14.19.tgz",
|
||||
"integrity": "sha512-XtZwfYHk2xP6mnTEf2h44OPh/ha0jMqK4bCCROMNRdngBZR2i3LKruZA1SeHUBW+1HtDh2GliAEG7a0rW9VZhg==",
|
||||
"version": "0.14.23",
|
||||
"resolved": "https://registry.npmjs.org/moleculer/-/moleculer-0.14.23.tgz",
|
||||
"integrity": "sha512-DE84fy8+1QiA7kUkF9ce4nyDdptBDlLFQfsaUccTScMGAbEjye5e+zfoI9iSA9rznwvshC8tgLhbOcnQBMn/HA==",
|
||||
"dependencies": {
|
||||
"args": "^5.0.1",
|
||||
"eventemitter2": "^6.4.5",
|
||||
"args": "^5.0.3",
|
||||
"eventemitter2": "^6.4.7",
|
||||
"fastest-validator": "^1.12.0",
|
||||
"glob": "^7.2.0",
|
||||
"ipaddr.js": "^2.0.1",
|
||||
"kleur": "^4.1.4",
|
||||
"kleur": "^4.1.5",
|
||||
"lodash": "^4.17.21",
|
||||
"lru-cache": "^6.0.0",
|
||||
"node-fetch": "^2.6.1",
|
||||
"node-fetch": "^2.6.7",
|
||||
"recursive-watch": "^1.1.4"
|
||||
},
|
||||
"bin": {
|
||||
"moleculer-runner": "bin/moleculer-runner.js"
|
||||
"moleculer-runner": "bin/moleculer-runner.js",
|
||||
"moleculer-runner-esm": "bin/moleculer-runner.mjs"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.x.x"
|
||||
@@ -7853,27 +7843,27 @@
|
||||
"url": "https://github.com/moleculerjs/moleculer?sponsor=1"
|
||||
},
|
||||
"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",
|
||||
"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",
|
||||
"debug": "^4.0.0",
|
||||
"etcd3": "^1.0.0",
|
||||
"ioredis": "^4.0.0",
|
||||
"ioredis": "^4.0.0 || ^5.0.0",
|
||||
"jaeger-client": "^3.0.0",
|
||||
"kafka-node": "^5.0.0",
|
||||
"log4js": "^6.0.0",
|
||||
"mqtt": "^4.0.0",
|
||||
"msgpack5": "^5.0.0",
|
||||
"msgpack5": "^5.0.0 || ^6.0.0",
|
||||
"nats": "^1.0.0 || ^2.0.0",
|
||||
"node-nats-streaming": "^0.0.51 || ^0.2.0 || ^0.3.0",
|
||||
"notepack.io": "^2.0.0",
|
||||
"pino": "^6.0.0 || ^7.0.0",
|
||||
"protobufjs": "^6.0.0",
|
||||
"notepack.io": "^2.0.0 || ^3.0.0",
|
||||
"pino": "^6.0.0 || ^7.0.0 || ^8.0.0",
|
||||
"protobufjs": "^6.0.0 || ^7.0.0",
|
||||
"redlock": "^4.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"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
@@ -7994,9 +7984,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/moleculer-db-adapter-mongoose": {
|
||||
"version": "0.8.12",
|
||||
"resolved": "https://registry.npmjs.org/moleculer-db-adapter-mongoose/-/moleculer-db-adapter-mongoose-0.8.12.tgz",
|
||||
"integrity": "sha512-bWxpkHH7YFLoqBYD12Nl7hd/fmF+gVbC9Xc+dtW8QF68hm+iul6yTTcJVVWm7OZ4zRykBuuj6sssqPzsie+MfQ==",
|
||||
"version": "0.8.14",
|
||||
"resolved": "https://registry.npmjs.org/moleculer-db-adapter-mongoose/-/moleculer-db-adapter-mongoose-0.8.14.tgz",
|
||||
"integrity": "sha512-XKESD8BzxbQaP52PcHPt5kFz5mC5epGPq8IiXQp9hbPkkpERp1RJIbMGLFQyeAx7wlNxASAMEAxq0uEUMqulDQ==",
|
||||
"dependencies": {
|
||||
"bluebird": "^3.7.2",
|
||||
"lodash": "^4.17.21"
|
||||
@@ -8010,13 +8000,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/moleculer-io": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/moleculer-io/-/moleculer-io-2.0.0.tgz",
|
||||
"integrity": "sha512-de/t7cG5at5KYPiukkR+cEnZ0nb0xRmSHkCoLrd7mmHfNI8+FwoUbg1fE2+Yt5aoEnVhpvY7UE2x8qcBOT6T3w==",
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/moleculer-io/-/moleculer-io-2.1.0.tgz",
|
||||
"integrity": "sha512-lekTCMc5ZVZ/h/vfKISRkOQWTmBpOJHa1lqmoGt6asCaQv78V+Q9/I1qw56gYOVD1vNlkCsS6ZkZPUW6Z35Y/w==",
|
||||
"dependencies": {
|
||||
"kleur": "^4.1.4",
|
||||
"kleur": "^4.1.5",
|
||||
"lodash": "^4.17.21",
|
||||
"socket.io": "^4.4.1"
|
||||
"socket.io": "^4.5.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.x.x"
|
||||
@@ -8072,9 +8062,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/moment": {
|
||||
"version": "2.29.3",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz",
|
||||
"integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==",
|
||||
"version": "2.29.4",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
|
||||
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
@@ -12674,15 +12664,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/socket.io": {
|
||||
"version": "4.4.1",
|
||||
"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz",
|
||||
"integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==",
|
||||
"version": "4.5.1",
|
||||
"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz",
|
||||
"integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==",
|
||||
"dependencies": {
|
||||
"accepts": "~1.3.4",
|
||||
"base64id": "~2.0.0",
|
||||
"debug": "~4.3.2",
|
||||
"engine.io": "~6.1.0",
|
||||
"socket.io-adapter": "~2.3.3",
|
||||
"engine.io": "~6.2.0",
|
||||
"socket.io-adapter": "~2.4.0",
|
||||
"socket.io-parser": "~4.0.4"
|
||||
},
|
||||
"engines": {
|
||||
@@ -12690,14 +12680,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/socket.io-adapter": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz",
|
||||
"integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ=="
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz",
|
||||
"integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg=="
|
||||
},
|
||||
"node_modules/socket.io-parser": {
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz",
|
||||
"integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==",
|
||||
"version": "4.0.5",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz",
|
||||
"integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==",
|
||||
"dependencies": {
|
||||
"@types/component-emitter": "^1.2.10",
|
||||
"component-emitter": "~1.3.0",
|
||||
@@ -13785,7 +13775,7 @@
|
||||
"node_modules/vary": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
||||
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
|
||||
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
@@ -15283,11 +15273,6 @@
|
||||
"@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": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@swiftcarrot/color-fns/-/color-fns-3.2.0.tgz",
|
||||
@@ -15746,9 +15731,9 @@
|
||||
}
|
||||
},
|
||||
"args": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/args/-/args-5.0.1.tgz",
|
||||
"integrity": "sha512-1kqmFCFsPffavQFGt8OxJdIcETti99kySRUPMpOhaGjL6mRJn8HFU1OxKY5bMqfZKUwTQc1mZkAjmGYaVOHFtQ==",
|
||||
"version": "5.0.3",
|
||||
"resolved": "https://registry.npmjs.org/args/-/args-5.0.3.tgz",
|
||||
"integrity": "sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==",
|
||||
"requires": {
|
||||
"camelcase": "5.0.0",
|
||||
"chalk": "2.4.2",
|
||||
@@ -15790,22 +15775,22 @@
|
||||
"color-name": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
|
||||
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
|
||||
},
|
||||
"escape-string-regexp": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
|
||||
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
|
||||
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
|
||||
},
|
||||
"leven": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
|
||||
"integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA="
|
||||
"integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA=="
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "5.5.0",
|
||||
@@ -17078,9 +17063,9 @@
|
||||
}
|
||||
},
|
||||
"engine.io": {
|
||||
"version": "6.1.3",
|
||||
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.3.tgz",
|
||||
"integrity": "sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA==",
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz",
|
||||
"integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==",
|
||||
"requires": {
|
||||
"@types/cookie": "^0.4.1",
|
||||
"@types/cors": "^2.8.12",
|
||||
@@ -17103,12 +17088,9 @@
|
||||
}
|
||||
},
|
||||
"engine.io-parser": {
|
||||
"version": "5.0.3",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz",
|
||||
"integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==",
|
||||
"requires": {
|
||||
"@socket.io/base64-arraybuffer": "~1.0.2"
|
||||
}
|
||||
"version": "5.0.4",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz",
|
||||
"integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg=="
|
||||
},
|
||||
"enquirer": {
|
||||
"version": "2.3.6",
|
||||
@@ -17659,9 +17641,9 @@
|
||||
}
|
||||
},
|
||||
"eventemitter2": {
|
||||
"version": "6.4.5",
|
||||
"resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz",
|
||||
"integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw=="
|
||||
"version": "6.4.7",
|
||||
"resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz",
|
||||
"integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg=="
|
||||
},
|
||||
"execa": {
|
||||
"version": "5.1.1",
|
||||
@@ -19759,9 +19741,9 @@
|
||||
"integrity": "sha512-pgsE40/SvC7st04AHiISNewaIMUbY5V/K8b21ekiPiFoYs/EYSdsGa+FJArB1d441uq4Q8zZyIxvAzkGNlBdRw=="
|
||||
},
|
||||
"kleur": {
|
||||
"version": "4.1.4",
|
||||
"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz",
|
||||
"integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA=="
|
||||
"version": "4.1.5",
|
||||
"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
|
||||
"integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="
|
||||
},
|
||||
"leven": {
|
||||
"version": "3.1.0",
|
||||
@@ -20294,19 +20276,19 @@
|
||||
"integrity": "sha1-ilSTsPZzgvv3BcJg4HBDZlWn3Po="
|
||||
},
|
||||
"moleculer": {
|
||||
"version": "0.14.19",
|
||||
"resolved": "https://registry.npmjs.org/moleculer/-/moleculer-0.14.19.tgz",
|
||||
"integrity": "sha512-XtZwfYHk2xP6mnTEf2h44OPh/ha0jMqK4bCCROMNRdngBZR2i3LKruZA1SeHUBW+1HtDh2GliAEG7a0rW9VZhg==",
|
||||
"version": "0.14.23",
|
||||
"resolved": "https://registry.npmjs.org/moleculer/-/moleculer-0.14.23.tgz",
|
||||
"integrity": "sha512-DE84fy8+1QiA7kUkF9ce4nyDdptBDlLFQfsaUccTScMGAbEjye5e+zfoI9iSA9rznwvshC8tgLhbOcnQBMn/HA==",
|
||||
"requires": {
|
||||
"args": "^5.0.1",
|
||||
"eventemitter2": "^6.4.5",
|
||||
"args": "^5.0.3",
|
||||
"eventemitter2": "^6.4.7",
|
||||
"fastest-validator": "^1.12.0",
|
||||
"glob": "^7.2.0",
|
||||
"ipaddr.js": "^2.0.1",
|
||||
"kleur": "^4.1.4",
|
||||
"kleur": "^4.1.5",
|
||||
"lodash": "^4.17.21",
|
||||
"lru-cache": "^6.0.0",
|
||||
"node-fetch": "^2.6.1",
|
||||
"node-fetch": "^2.6.7",
|
||||
"recursive-watch": "^1.1.4"
|
||||
}
|
||||
},
|
||||
@@ -20340,22 +20322,22 @@
|
||||
}
|
||||
},
|
||||
"moleculer-db-adapter-mongoose": {
|
||||
"version": "0.8.12",
|
||||
"resolved": "https://registry.npmjs.org/moleculer-db-adapter-mongoose/-/moleculer-db-adapter-mongoose-0.8.12.tgz",
|
||||
"integrity": "sha512-bWxpkHH7YFLoqBYD12Nl7hd/fmF+gVbC9Xc+dtW8QF68hm+iul6yTTcJVVWm7OZ4zRykBuuj6sssqPzsie+MfQ==",
|
||||
"version": "0.8.14",
|
||||
"resolved": "https://registry.npmjs.org/moleculer-db-adapter-mongoose/-/moleculer-db-adapter-mongoose-0.8.14.tgz",
|
||||
"integrity": "sha512-XKESD8BzxbQaP52PcHPt5kFz5mC5epGPq8IiXQp9hbPkkpERp1RJIbMGLFQyeAx7wlNxASAMEAxq0uEUMqulDQ==",
|
||||
"requires": {
|
||||
"bluebird": "^3.7.2",
|
||||
"lodash": "^4.17.21"
|
||||
}
|
||||
},
|
||||
"moleculer-io": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/moleculer-io/-/moleculer-io-2.0.0.tgz",
|
||||
"integrity": "sha512-de/t7cG5at5KYPiukkR+cEnZ0nb0xRmSHkCoLrd7mmHfNI8+FwoUbg1fE2+Yt5aoEnVhpvY7UE2x8qcBOT6T3w==",
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/moleculer-io/-/moleculer-io-2.1.0.tgz",
|
||||
"integrity": "sha512-lekTCMc5ZVZ/h/vfKISRkOQWTmBpOJHa1lqmoGt6asCaQv78V+Q9/I1qw56gYOVD1vNlkCsS6ZkZPUW6Z35Y/w==",
|
||||
"requires": {
|
||||
"kleur": "^4.1.4",
|
||||
"kleur": "^4.1.5",
|
||||
"lodash": "^4.17.21",
|
||||
"socket.io": "^4.4.1"
|
||||
"socket.io": "^4.5.1"
|
||||
}
|
||||
},
|
||||
"moleculer-repl": {
|
||||
@@ -20396,9 +20378,9 @@
|
||||
}
|
||||
},
|
||||
"moment": {
|
||||
"version": "2.29.3",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz",
|
||||
"integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw=="
|
||||
"version": "2.29.4",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
|
||||
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
|
||||
},
|
||||
"mongodb": {
|
||||
"version": "3.7.3",
|
||||
@@ -23684,27 +23666,27 @@
|
||||
"integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ=="
|
||||
},
|
||||
"socket.io": {
|
||||
"version": "4.4.1",
|
||||
"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz",
|
||||
"integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==",
|
||||
"version": "4.5.1",
|
||||
"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz",
|
||||
"integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==",
|
||||
"requires": {
|
||||
"accepts": "~1.3.4",
|
||||
"base64id": "~2.0.0",
|
||||
"debug": "~4.3.2",
|
||||
"engine.io": "~6.1.0",
|
||||
"socket.io-adapter": "~2.3.3",
|
||||
"engine.io": "~6.2.0",
|
||||
"socket.io-adapter": "~2.4.0",
|
||||
"socket.io-parser": "~4.0.4"
|
||||
}
|
||||
},
|
||||
"socket.io-adapter": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz",
|
||||
"integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ=="
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz",
|
||||
"integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg=="
|
||||
},
|
||||
"socket.io-parser": {
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz",
|
||||
"integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==",
|
||||
"version": "4.0.5",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz",
|
||||
"integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==",
|
||||
"requires": {
|
||||
"@types/component-emitter": "^1.2.10",
|
||||
"component-emitter": "~1.3.0",
|
||||
@@ -24590,7 +24572,7 @@
|
||||
"vary": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
||||
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
|
||||
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
|
||||
},
|
||||
"verror": {
|
||||
"version": "1.10.0",
|
||||
|
||||
@@ -61,12 +61,12 @@
|
||||
"leven": "^3.1.0",
|
||||
"lodash": "^4.17.21",
|
||||
"mkdirp": "^0.5.5",
|
||||
"moleculer": "^0.14.19",
|
||||
"moleculer": "^0.14.23",
|
||||
"moleculer-bull": "github:rishighan/moleculer-bull",
|
||||
"moleculer-db": "^0.8.17",
|
||||
"moleculer-db-adapter-mongo": "^0.4.7",
|
||||
"moleculer-db-adapter-mongoose": "^0.8.12",
|
||||
"moleculer-io": "^2.0.0",
|
||||
"moleculer-io": "^2.1.0",
|
||||
"moleculer-web": "^0.10.4",
|
||||
"mongoosastic-ts": "^5.0.7",
|
||||
"mongoose": "^5.12.7",
|
||||
|
||||
@@ -20,76 +20,68 @@ export default class ImageTransformation extends Service {
|
||||
schema: ServiceSchema<{}> = { name: "imagetransformation" }
|
||||
) {
|
||||
super(broker);
|
||||
this.parseServiceSchema(
|
||||
Service.mergeSchemas(
|
||||
{
|
||||
name: "imagetransformation",
|
||||
mixins: [],
|
||||
settings: {
|
||||
// Available fields in the responses
|
||||
fields: ["_id", "name", "quantity", "price"],
|
||||
this.parseServiceSchema({
|
||||
name: "imagetransformation",
|
||||
mixins: [],
|
||||
settings: {
|
||||
// Available fields in the responses
|
||||
fields: ["_id", "name", "quantity", "price"],
|
||||
|
||||
// Validator for the `create` & `insert` actions.
|
||||
entityValidator: {
|
||||
name: "string|min:3",
|
||||
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: {},
|
||||
// Validator for the `create` & `insert` actions.
|
||||
entityValidator: {
|
||||
name: "string|min:3",
|
||||
price: "number|positive",
|
||||
},
|
||||
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: {},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,120 +21,108 @@ export default class OpdsService extends Service {
|
||||
schema: ServiceSchema<{}> = { name: "opds" }
|
||||
) {
|
||||
super(broker);
|
||||
this.parseServiceSchema(
|
||||
Service.mergeSchemas(
|
||||
{
|
||||
name: "opds",
|
||||
mixins: [],
|
||||
settings: {
|
||||
port: process.env.PORT || 3001,
|
||||
},
|
||||
hooks: {},
|
||||
actions: {
|
||||
serve: {
|
||||
rest: "POST /serve",
|
||||
handler: async (ctx) => {
|
||||
return buildAsync(
|
||||
initMain({
|
||||
title: `title`,
|
||||
subtitle: `subtitle`,
|
||||
icon: "/favicon.ico",
|
||||
}),
|
||||
[
|
||||
async (feed: Feed) => {
|
||||
feed.id =
|
||||
"urn:uuid:2853dacf-ed79-42f5-8e8a-a7bb3d1ae6a2";
|
||||
feed.books = feed.books || [];
|
||||
await FastGlob(
|
||||
[
|
||||
"*.cbr",
|
||||
"*.cbz",
|
||||
"*.cb7",
|
||||
"*.cba",
|
||||
"*.cbt",
|
||||
],
|
||||
{
|
||||
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,
|
||||
},
|
||||
});
|
||||
this.parseServiceSchema({
|
||||
name: "opds",
|
||||
mixins: [],
|
||||
settings: {
|
||||
port: process.env.PORT || 3001,
|
||||
},
|
||||
hooks: {},
|
||||
actions: {
|
||||
serve: {
|
||||
rest: "POST /serve",
|
||||
handler: async (ctx) => {
|
||||
return buildAsync(
|
||||
initMain({
|
||||
title: `title`,
|
||||
subtitle: `subtitle`,
|
||||
icon: "/favicon.ico",
|
||||
}),
|
||||
[
|
||||
async (feed: Feed) => {
|
||||
feed.id =
|
||||
"urn:uuid:2853dacf-ed79-42f5-8e8a-a7bb3d1ae6a2";
|
||||
feed.books = feed.books || [];
|
||||
await FastGlob(
|
||||
[
|
||||
"*.cbr",
|
||||
"*.cbz",
|
||||
"*.cb7",
|
||||
"*.cba",
|
||||
"*.cbt",
|
||||
],
|
||||
{
|
||||
cwd: COMICS_DIRECTORY,
|
||||
}
|
||||
);
|
||||
return data;
|
||||
).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,
|
||||
},
|
||||
});
|
||||
});
|
||||
return data;
|
||||
});
|
||||
},
|
||||
methods: {},
|
||||
},
|
||||
schema
|
||||
)
|
||||
);
|
||||
},
|
||||
methods: {},
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,166 +20,157 @@ export default class SettingsService extends Service {
|
||||
schema: ServiceSchema<{}> = { name: "search" }
|
||||
) {
|
||||
super(broker);
|
||||
this.parseServiceSchema(
|
||||
Service.mergeSchemas(
|
||||
{
|
||||
name: "search",
|
||||
mixins: [DbMixin("comics", Comic)],
|
||||
hooks: {},
|
||||
actions: {
|
||||
searchComic: {
|
||||
rest: "POST /searchComic",
|
||||
params: {},
|
||||
timeout: 400000,
|
||||
async handler(
|
||||
ctx: Context<{
|
||||
queryObjects: [];
|
||||
elasticSearchQueries: [
|
||||
{
|
||||
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
|
||||
);
|
||||
this.parseServiceSchema({
|
||||
name: "search",
|
||||
mixins: [DbMixin("comics", Comic)],
|
||||
hooks: {},
|
||||
actions: {
|
||||
searchComic: {
|
||||
rest: "POST /searchComic",
|
||||
params: {},
|
||||
timeout: 400000,
|
||||
async handler(
|
||||
ctx: Context<{
|
||||
queryObjects: [];
|
||||
elasticSearchQueries: [
|
||||
{
|
||||
elasticSearchQuery: object;
|
||||
}
|
||||
},
|
||||
},
|
||||
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,
|
||||
];
|
||||
}>
|
||||
) {
|
||||
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,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
},
|
||||
},
|
||||
deleteElasticSearchIndices: {
|
||||
rest: "GET /deleteElasticSearchIndices",
|
||||
params: {},
|
||||
handler: async (ctx: Context<{}>) => {
|
||||
return await eSClient.indices.delete({
|
||||
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
|
||||
);
|
||||
}
|
||||
},
|
||||
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: {},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,91 +18,79 @@ export default class SettingsService extends Service {
|
||||
schema: ServiceSchema<{}> = { name: "settings" }
|
||||
) {
|
||||
super(broker);
|
||||
this.parseServiceSchema(
|
||||
Service.mergeSchemas(
|
||||
{
|
||||
name: "settings",
|
||||
mixins: [DbMixin("settings", Settings)],
|
||||
settings: {},
|
||||
hooks: {},
|
||||
actions: {
|
||||
getSettings: {
|
||||
rest: "GET /getAllSettings",
|
||||
params: {},
|
||||
async handler(
|
||||
ctx: Context<{ settingsKey: string }>
|
||||
) {
|
||||
const settings = await Settings.find({});
|
||||
if (isEmpty(settings)) {
|
||||
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
|
||||
);
|
||||
},
|
||||
},
|
||||
this.parseServiceSchema({
|
||||
name: "settings",
|
||||
mixins: [DbMixin("settings", Settings)],
|
||||
settings: {},
|
||||
hooks: {},
|
||||
actions: {
|
||||
getSettings: {
|
||||
rest: "GET /getAllSettings",
|
||||
params: {},
|
||||
async handler(ctx: Context<{ settingsKey: string }>) {
|
||||
const settings = await Settings.find({});
|
||||
if (isEmpty(settings)) {
|
||||
return {};
|
||||
}
|
||||
console.log(settings[0]);
|
||||
return settings[0];
|
||||
},
|
||||
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: {},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,70 +12,71 @@ export default class SocketService extends Service {
|
||||
schema: ServiceSchema<{}> = { name: "socket" }
|
||||
) {
|
||||
super(broker);
|
||||
this.parseServiceSchema(
|
||||
Service.mergeSchemas(
|
||||
{
|
||||
name: "socket",
|
||||
mixins: [SocketIOService],
|
||||
settings: {
|
||||
port: process.env.PORT || 3001,
|
||||
io: {
|
||||
namespaces: {
|
||||
"/": {
|
||||
events: {
|
||||
call: {
|
||||
// whitelist: ["math.*", "say.*", "accounts.*", "rooms.*", "io.*"],
|
||||
},
|
||||
action: async (data, ack) => {
|
||||
// write your handler function here.
|
||||
switch (data.type) {
|
||||
case "LS_IMPORT":
|
||||
console.log(
|
||||
`Recieved ${data.type} event.`
|
||||
);
|
||||
// 1. Send task to queue
|
||||
await this.broker.call(
|
||||
"library.newImport",
|
||||
data.data,
|
||||
{}
|
||||
);
|
||||
break;
|
||||
case "LS_TOGGLE_IMPORT_QUEUE":
|
||||
await this.broker.call(
|
||||
"importqueue.toggleImportQueue",
|
||||
data.data,
|
||||
{}
|
||||
);
|
||||
break;
|
||||
case "LS_SINGLE_IMPORT":
|
||||
console.info("AirDC++ finished a download -> ")
|
||||
console.log(data);
|
||||
await this.broker.call("library.importDownloadedFileToLibrary", data.data, {});
|
||||
break;
|
||||
}
|
||||
},
|
||||
},
|
||||
this.parseServiceSchema({
|
||||
name: "socket",
|
||||
mixins: [SocketIOService],
|
||||
settings: {
|
||||
port: process.env.PORT || 3001,
|
||||
io: {
|
||||
namespaces: {
|
||||
"/": {
|
||||
events: {
|
||||
call: {
|
||||
// whitelist: ["math.*", "say.*", "accounts.*", "rooms.*", "io.*"],
|
||||
},
|
||||
action: async (data, ack) => {
|
||||
// write your handler function here.
|
||||
switch (data.type) {
|
||||
case "LS_IMPORT":
|
||||
console.log(
|
||||
`Recieved ${data.type} event.`
|
||||
);
|
||||
// 1. Send task to queue
|
||||
await this.broker.call(
|
||||
"library.newImport",
|
||||
data.data,
|
||||
{}
|
||||
);
|
||||
break;
|
||||
case "LS_TOGGLE_IMPORT_QUEUE":
|
||||
await this.broker.call(
|
||||
"importqueue.toggleImportQueue",
|
||||
data.data,
|
||||
{}
|
||||
);
|
||||
break;
|
||||
case "LS_SINGLE_IMPORT":
|
||||
console.info(
|
||||
"AirDC++ finished a download -> "
|
||||
);
|
||||
console.log(data);
|
||||
await this.broker.call(
|
||||
"library.importDownloadedFileToLibrary",
|
||||
data.data,
|
||||
{}
|
||||
);
|
||||
break;
|
||||
}
|
||||
},
|
||||
},
|
||||
options: {
|
||||
adapter: redisAdapter({
|
||||
host: redisURL.hostname,
|
||||
port: 6379,
|
||||
}),
|
||||
},
|
||||
},
|
||||
},
|
||||
hooks: {},
|
||||
actions: {},
|
||||
methods: {},
|
||||
async started() {
|
||||
this.io.on("connection", (data) =>
|
||||
console.log("socket.io server initialized.")
|
||||
);
|
||||
options: {
|
||||
adapter: redisAdapter({
|
||||
host: redisURL.hostname,
|
||||
port: 6379,
|
||||
}),
|
||||
},
|
||||
},
|
||||
schema
|
||||
)
|
||||
);
|
||||
},
|
||||
hooks: {},
|
||||
actions: {},
|
||||
methods: {},
|
||||
async started() {
|
||||
this.io.on("connection", (data) =>
|
||||
console.log("socket.io server initialized.")
|
||||
);
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user