From 827827905b71c71dfa9299a9deb92a8c9cfc0e20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wieland=20Sch=C3=B6bl?= Date: Wed, 13 Feb 2019 17:10:47 +0100 Subject: [PATCH] feat: use config for MultiSearchRoute --- config/default.ts | 1 + package-lock.json | 347 +++++++++++++++++++++------------ package.json | 32 +-- src/app.ts | 2 + src/routes/MultiSearchRoute.ts | 6 +- src/routes/Route.ts | 9 +- 6 files changed, 254 insertions(+), 143 deletions(-) diff --git a/config/default.ts b/config/default.ts index dcd5a27f..025f6e3c 100644 --- a/config/default.ts +++ b/config/default.ts @@ -55,6 +55,7 @@ const config: Partial = { SCThingType.Diff, SCThingType.Floor, ], + maxMultiSearchRouteQueries: 5, name: 'Technische Universität Berlin', namespace: '909a8cbc-8520-456c-b474-ef1525f14209', sortableFields: [ diff --git a/package-lock.json b/package-lock.json index b7f58fa6..106b08e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,12 +5,14 @@ "requires": true, "dependencies": { "@openstapps/configuration": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@openstapps/configuration/-/configuration-0.5.0.tgz", - "integrity": "sha512-XBRdgDWqwaaSUUwOdo0Y2FlkR6lZVI+gIONoYWkZ/EAH+feC6oEKPQNuhj/7l0YLO4Z+Zll8udM7AWKh4ivMWA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@openstapps/configuration/-/configuration-0.6.0.tgz", + "integrity": "sha512-ArEbUWMwBqrzYzhYKEdQPoYA0M8jxdmCahouukbbrlWz6Ca3h5K1n3C7FG8g17bMYoVkthkJXt4uHMYtsQTY1A==", "dev": true, "requires": { + "@types/chalk": "2.2.0", "@types/node": "10.12.15", + "chalk": "2.4.2", "commander": "2.19.0", "tslint": "5.12.0", "tslint-eslint-rules": "5.4.0" @@ -25,9 +27,9 @@ } }, "@openstapps/core": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@openstapps/core/-/core-0.2.0.tgz", - "integrity": "sha512-iABNfAgeNKEOx16eZ0ezDBPbgNZk6T2JP2ezcYDQgHOREU45fYtn2nPiHTX0Q/4hdlF3jGWDYQzQ9ydOZHnIjw==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@openstapps/core/-/core-0.11.0.tgz", + "integrity": "sha512-vCT09LVDRcSELK/F5RBe6IqXWow7kolkWMADXRIW5YqvAy/BpfUhta/v+YxFk/dp+umzMmCv9tRgZRxrznStGw==", "requires": { "@types/geojson": "1.0.6", "@types/json-patch": "0.0.30", @@ -67,6 +69,39 @@ "typedoc": "0.14.0" }, "dependencies": { + "@openstapps/logger": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@openstapps/logger/-/logger-0.0.3.tgz", + "integrity": "sha512-Q1kghyVNIXepfuLcdy2gFygI6jpxTBV0oqwM46hqzST4w/DNmDnzpScVQNQf5C0PhLUihPNhpjLnu6i7ujIX3g==", + "requires": { + "@types/circular-json": "0.4.0", + "@types/node": "10.12.10", + "@types/nodemailer": "4.6.5", + "circular-json": "0.5.9", + "nodemailer": "4.7.0" + }, + "dependencies": { + "@types/node": { + "version": "10.12.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.10.tgz", + "integrity": "sha512-8xZEYckCbUVgK8Eg7lf5Iy4COKJ5uXlnIOnePN0WUwSQggy9tolM+tDJf7wMOnT/JT/W9xDYIaYggt3mRV2O5w==" + } + } + }, + "@types/node": { + "version": "10.12.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", + "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" + }, + "@types/nodemailer": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-4.6.5.tgz", + "integrity": "sha512-cbs2HFLj33TBqzcCqTrs+6/mgTX3xl0odbApv3vTdF2+JERLxh5rDZCasXhvy+YqaiUNBr2I1RjNCdbKGs1Bnw==", + "requires": { + "@types/events": "*", + "@types/node": "*" + } + }, "ajv": { "version": "6.6.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", @@ -83,6 +118,21 @@ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=" }, + "ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + } + }, "typedoc": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.14.0.tgz", @@ -106,25 +156,44 @@ "typedoc-default-themes": "^0.5.0", "typescript": "3.2.x" } + }, + "typescript": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.4.tgz", + "integrity": "sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg==" } } }, "@openstapps/logger": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@openstapps/logger/-/logger-0.0.3.tgz", - "integrity": "sha512-Q1kghyVNIXepfuLcdy2gFygI6jpxTBV0oqwM46hqzST4w/DNmDnzpScVQNQf5C0PhLUihPNhpjLnu6i7ujIX3g==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@openstapps/logger/-/logger-0.0.5.tgz", + "integrity": "sha512-XzWt+5h4Y7ki0IFXrIuT7Qc6CHU+5QmrS0bf9wzP+OQ0qiEGb4KoJ3/y5CiXCebI3JC2wPJsUDpKYitV+kLWCQ==", "requires": { "@types/circular-json": "0.4.0", - "@types/node": "10.12.10", + "@types/node": "10.12.18", "@types/nodemailer": "4.6.5", "circular-json": "0.5.9", - "nodemailer": "4.7.0" + "nodemailer": "5.1.1" }, "dependencies": { "@types/node": { - "version": "10.12.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.10.tgz", - "integrity": "sha512-8xZEYckCbUVgK8Eg7lf5Iy4COKJ5uXlnIOnePN0WUwSQggy9tolM+tDJf7wMOnT/JT/W9xDYIaYggt3mRV2O5w==" + "version": "10.12.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", + "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" + }, + "@types/nodemailer": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-4.6.5.tgz", + "integrity": "sha512-cbs2HFLj33TBqzcCqTrs+6/mgTX3xl0odbApv3vTdF2+JERLxh5rDZCasXhvy+YqaiUNBr2I1RjNCdbKGs1Bnw==", + "requires": { + "@types/events": "*", + "@types/node": "*" + } + }, + "nodemailer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-5.1.1.tgz", + "integrity": "sha512-hKGCoeNdFL2W7S76J/Oucbw0/qRlfG815tENdhzcqTpSjKgAN91mFOqU2lQUflRRxFM7iZvCyaFcAR9noc/CqQ==" } } }, @@ -148,6 +217,15 @@ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.7.tgz", "integrity": "sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA==" }, + "@types/chalk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@types/chalk/-/chalk-2.2.0.tgz", + "integrity": "sha512-1zzPV9FDe1I/WHhRkf9SNgqtRJWZqrBWgu7JGveuHmmyR9CnAPCie2N/x+iHrgnpYBIcCJWHBoMRv2TRWktsvw==", + "dev": true, + "requires": { + "chalk": "*" + } + }, "@types/circular-json": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/@types/circular-json/-/circular-json-0.4.0.tgz", @@ -186,9 +264,9 @@ } }, "@types/elasticsearch": { - "version": "5.0.30", - "resolved": "https://registry.npmjs.org/@types/elasticsearch/-/elasticsearch-5.0.30.tgz", - "integrity": "sha512-swxiNcLOtnHhJhAE5HcUL3WsKLHr8rEQ+fwpaJ0x4dfEE3oK2kGUoyz4wCcQfvulcMm2lShyxZ+2E4BQJzsAlg==", + "version": "5.0.31", + "resolved": "https://registry.npmjs.org/@types/elasticsearch/-/elasticsearch-5.0.31.tgz", + "integrity": "sha512-XiYeE0vQMJG6rSrDw2WgNIK1RelWB1FmplDJGlmlLG5/Cb75Q0+EHS0X38hzptI+jjvyvPorE6pvJkgPoM6hhg==", "dev": true }, "@types/events": { @@ -197,9 +275,9 @@ "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==" }, "@types/express": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.0.tgz", - "integrity": "sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.1.tgz", + "integrity": "sha512-V0clmJow23WeyblmACoxbHBu2JKlE5TiIme6Lem14FnPW9gsttyHtk6wq7njcdIWH1njAaFgR8gW09lgY98gQg==", "dev": true, "requires": { "@types/body-parser": "*", @@ -208,20 +286,19 @@ } }, "@types/express-serve-static-core": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.0.tgz", - "integrity": "sha512-lTeoCu5NxJU4OD9moCgm0ESZzweAx0YqsAcab6OB0EB3+As1OaHtKnaGJvcngQxYsi9UNv0abn4/DRavrRxt4w==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.1.tgz", + "integrity": "sha512-QgbIMRU1EVRry5cIu1ORCQP4flSYqLM1lS5LYyGWfKnFT3E58f0gKto7BR13clBFVrVZ0G0rbLZ1hUpSkgQQOA==", "dev": true, "requires": { - "@types/events": "*", "@types/node": "*", "@types/range-parser": "*" } }, "@types/fs-extra": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-5.0.4.tgz", - "integrity": "sha512-DsknoBvD8s+RFfSGjmERJ7ZOP1HI0UZRA3FSI+Zakhrc/Gy26YQsLI+m5V5DHxroHRJqCDLKJp7Hixn8zyaF7g==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-5.0.5.tgz", + "integrity": "sha512-w7iqhDH9mN8eLClQOYTkhdYUOSpp25eXxfc6VbFOGtzxW34JcvctH2bKjj4jD4++z4R5iO5D+pg48W2e03I65A==", "requires": { "@types/node": "*" } @@ -272,9 +349,9 @@ "integrity": "sha512-cDB930/7MbzaGF6U3IwSQp6XBru8xWajF5PV2YZZeV8DyiliTuld11afVztGI9+yJZ29il5E+NpGA6ooV/Cjkg==" }, "@types/mime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz", - "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz", + "integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==", "dev": true }, "@types/minimatch": { @@ -302,39 +379,32 @@ "integrity": "sha512-RTVWV485OOf4+nO2+feurk0chzHkSjkjALiejpHltyuMf/13fGymbbNNFrSKdSSUg1TIwzszXdWsVirxgqYiFA==" }, "@types/node": { - "version": "10.12.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", - "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" + "version": "10.12.27", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.27.tgz", + "integrity": "sha512-e9wgeY6gaY21on3ve0xAjgBVjGDWq/xUteK0ujsE53bUoxycMkqfnkUgMt6ffZtykZ5X12Mg3T7Pw4TRCObDKg==" }, "@types/node-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@types/node-cache/-/node-cache-4.1.1.tgz", - "integrity": "sha512-dFZY8H8uaf4qtd+a18jS5VChiI1apGXh6N6SXdRf4SPfdLG/D+oNvsEM2Ic0ee+nFqJLAsRy4+R0qkvO45CIWA==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@types/node-cache/-/node-cache-4.1.3.tgz", + "integrity": "sha512-3hsqnv3H1zkOhjygJaJUYmgz5+FcPO3vejBX7cE9/cnuINOJYrzkfOnUCvpwGe9kMZANIHJA7J5pOdeyv52OEw==", "dev": true, "requires": { "@types/node": "*" } }, "@types/node-cron": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/node-cron/-/node-cron-2.0.0.tgz", - "integrity": "sha512-JGP9lBkMYc/a1/RdwgP9latBZw9lHz6W36CnjRZB7dADWD/g820gu9hIaVvD/+9f+XwhbGhnMwDrpJLfhBpVeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/node-cron/-/node-cron-2.0.1.tgz", + "integrity": "sha512-4zI46oAthqIiwhNYV3maJn8teE5Ry//pUHkrZ6m4pysdiLHMaHQJ3g5x0JVwhypISPK2pqx2tImA2fDD77jvJQ==", "dev": true }, "@types/nodemailer": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-4.6.5.tgz", - "integrity": "sha512-cbs2HFLj33TBqzcCqTrs+6/mgTX3xl0odbApv3vTdF2+JERLxh5rDZCasXhvy+YqaiUNBr2I1RjNCdbKGs1Bnw==", + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-4.6.6.tgz", + "integrity": "sha512-N2czhXs7fbQhvoquEGzmHAWttnxLfrM3+cWMRFX4hTQq4GE3VyaSE3MOOse4VoNgvtti/H5ow/Hq9KXu/UMWqA==", + "dev": true, "requires": { - "@types/events": "*", "@types/node": "*" - }, - "dependencies": { - "@types/node": { - "version": "10.12.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.12.tgz", - "integrity": "sha512-Pr+6JRiKkfsFvmU/LK68oBRCQeEg36TyAbPhc2xpez24OOZZCuoIhWGTd39VZy6nGafSbxzGouFPTFD/rR1A0A==" - } } }, "@types/promise-queue": { @@ -344,9 +414,9 @@ "dev": true }, "@types/range-parser": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.2.tgz", - "integrity": "sha512-HtKGu+qG1NPvYe1z7ezLsyIaXYyi8SoAVqWDZgDQ8dLrsZvSzUNCwZyfX33uhWxL/SU0ZDQZ3nwZ0nimt507Kw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", "dev": true }, "@types/serve-static": { @@ -440,6 +510,11 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, + "arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==" + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -796,15 +871,15 @@ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, "conventional-changelog": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.0.5.tgz", - "integrity": "sha512-JYSVGJbnOl9S2gkZwmoJ+wX2gxNVHodUmEiv+eIykeJBNX0zN5vJ3oa2xCvk2HiF7TZ+Les0eq/aX49dcymONA==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.0.6.tgz", + "integrity": "sha512-1b96x3G67lDKakRvMm+VvYGwgRk+C8aapHKL5iZ/TJzzD/RuyGA2diHNEsR+uPHmQ7/A4Ts7j6N+VNqUoOfksg==", "dev": true, "requires": { - "conventional-changelog-angular": "^5.0.2", + "conventional-changelog-angular": "^5.0.3", "conventional-changelog-atom": "^2.0.1", "conventional-changelog-codemirror": "^2.0.1", - "conventional-changelog-core": "^3.1.5", + "conventional-changelog-core": "^3.1.6", "conventional-changelog-ember": "^2.0.2", "conventional-changelog-eslint": "^3.0.1", "conventional-changelog-express": "^2.0.1", @@ -814,9 +889,9 @@ } }, "conventional-changelog-angular": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.2.tgz", - "integrity": "sha512-yx7m7lVrXmt4nKWQgWZqxSALEiAKZhOAcbxdUaU9575mB0CzXVbgrgpfSnSP7OqWDUTYGD0YVJ0MSRdyOPgAwA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.3.tgz", + "integrity": "sha512-YD1xzH7r9yXQte/HF9JBuEDfvjxxwDGGwZU1+ndanbY0oFgA+Po1T9JDSpPLdP0pZT6MhCAsdvFKC4TJ4MTJTA==", "dev": true, "requires": { "compare-func": "^1.3.1", @@ -833,13 +908,13 @@ } }, "conventional-changelog-cli": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-2.0.11.tgz", - "integrity": "sha512-00Z4EZfpuQxvStA5fjJXdixXCtRd5/AUMUOhYKOomhH3cRFqzF/P0MP8vavT9wnGkR0eba9mrWsMuqeVszPRxQ==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-2.0.12.tgz", + "integrity": "sha512-6wh9W5Gpr9DM40E8cFi0qa6JotVm4Jq+suksuqgKnm544H8ZXsRhgGNXShDASOteY9brv9fX8/+fE/QL1wHqbA==", "dev": true, "requires": { "add-stream": "^1.0.0", - "conventional-changelog": "^3.0.5", + "conventional-changelog": "^3.0.6", "lodash": "^4.2.1", "meow": "^4.0.0", "tempfile": "^1.1.1" @@ -855,12 +930,12 @@ } }, "conventional-changelog-core": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-3.1.5.tgz", - "integrity": "sha512-iwqAotS4zk0wA4S84YY1JCUG7X3LxaRjJxuUo6GI4dZuIy243j5nOg/Ora35ExT4DOiw5dQbMMQvw2SUjh6moQ==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-3.1.6.tgz", + "integrity": "sha512-5teTAZOtJ4HLR6384h50nPAaKdDr+IaU0rnD2Gg2C3MS7hKsEPH8pZxrDNqam9eOSPQg9tET6uZY79zzgSz+ig==", "dev": true, "requires": { - "conventional-changelog-writer": "^4.0.2", + "conventional-changelog-writer": "^4.0.3", "conventional-commits-parser": "^3.0.1", "dateformat": "^3.0.0", "get-pkg-repo": "^1.0.0", @@ -928,21 +1003,35 @@ "dev": true }, "conventional-changelog-writer": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.2.tgz", - "integrity": "sha512-d8/FQY/fix2xXEBUhOo8u3DCbyEw3UOQgYHxLsPDw+wHUDma/GQGAGsGtoH876WyNs32fViHmTOUrgRKVLvBug==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.3.tgz", + "integrity": "sha512-bIlpSiQtQZ1+nDVHEEh798Erj2jhN/wEjyw9sfxY9es6h7pREE5BNJjfv0hXGH/FTrAsEpHUq4xzK99eePpwuA==", "dev": true, "requires": { "compare-func": "^1.3.1", "conventional-commits-filter": "^2.0.1", "dateformat": "^3.0.0", - "handlebars": "^4.0.2", + "handlebars": "^4.1.0", "json-stringify-safe": "^5.0.1", "lodash": "^4.2.1", "meow": "^4.0.0", "semver": "^5.5.0", "split": "^1.0.0", "through2": "^2.0.0" + }, + "dependencies": { + "handlebars": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.0.tgz", + "integrity": "sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w==", + "dev": true, + "requires": { + "async": "^2.5.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + } + } } }, "conventional-commits-filter": { @@ -1130,12 +1219,6 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz", "integrity": "sha1-wBzKqa5LiXxtDD4hCuUvPHqEQ3U=", "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true } } }, @@ -1163,9 +1246,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "elasticsearch": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/elasticsearch/-/elasticsearch-15.3.0.tgz", - "integrity": "sha512-anZpNB65mqr0aKAN/YPR5OFmD09KnbxBxzyc5vINkip6ECpyCSvBqCKbQNNY/FNwKop2urkRmtnU2sY5cVw1cw==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/elasticsearch/-/elasticsearch-15.4.1.tgz", + "integrity": "sha512-IL46Sv9krCKtpvlI37/vQVQrWx6QeT1OJhfWW6L3fIXzR1Vv5utO+DHYz8AosUI6vlkxShoq+y6sUIBhTF1OIg==", "requires": { "agentkeepalive": "^3.4.1", "chalk": "^1.0.0", @@ -1701,9 +1784,9 @@ "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" }, "handlebars": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", - "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.0.tgz", + "integrity": "sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w==", "requires": { "async": "^2.5.0", "optimist": "^0.6.1", @@ -1847,15 +1930,6 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, "is-finite": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", @@ -1940,9 +2014,9 @@ "dev": true }, "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, "isexe": { @@ -2325,9 +2399,9 @@ "dev": true }, "moment": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.23.0.tgz", - "integrity": "sha512-3IE39bHVqFbWWaPOMHZF98Q9c3LDKGTmypMiTM2QygGXXElkFWIH7GxfmlwmY2vwa+wmNsoYZmG2iusf1ZjJoA==" + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" }, "morgan": { "version": "1.9.1", @@ -2385,15 +2459,26 @@ "integrity": "sha512-IludxDypFpYw4xpzKdMAozBSkzKHmNBvGanUREjJItgJ2NYcK/s8+PggVhj7c2yGFQykKsnnmv1+Aqo0ZfjHmw==" }, "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", + "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } } }, "npm-run-path": { @@ -2727,6 +2812,14 @@ "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } } }, "rechoir": { @@ -2915,9 +3008,9 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", - "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", + "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -3157,18 +3250,22 @@ } }, "ts-node": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", - "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.0.2.tgz", + "integrity": "sha512-MosTrinKmaAcWgO8tqMjMJB22h+sp3Rd1i4fdoWY4mhBDekOwIAKI/bzmRi7IcbCmjquccYg2gcF6NBkLgr0Tw==", "requires": { - "arrify": "^1.0.0", - "buffer-from": "^1.1.0", + "arg": "^4.1.0", "diff": "^3.1.0", "make-error": "^1.1.1", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", "source-map-support": "^0.5.6", - "yn": "^2.0.0" + "yn": "^3.0.0" + }, + "dependencies": { + "yn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.0.0.tgz", + "integrity": "sha512-+Wo/p5VRfxUgBUGy2j/6KX2mj9AYJWOHuhMjMcbBFc3y54o9/4buK1ksBvuiK01C3kby8DH9lSmJdSxw+4G/2Q==" + } } }, "tslib": { @@ -3215,9 +3312,9 @@ "dev": true }, "tsutils": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.7.0.tgz", - "integrity": "sha512-n+e+3q7Jx2kfZw7tjfI9axEIWBY0sFMOlC+1K70X0SeXpO/UYSB+PN+E9tIJNqViB7oiXQdqD7dNchnvoneZew==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.8.0.tgz", + "integrity": "sha512-XQdPhgcoTbCD8baXC38PQ0vpTZ8T3YrE+vR66YIj/xvDt1//8iAhafpIT/4DmvzzC1QFapEImERu48Pa01dIUA==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -3284,6 +3381,14 @@ "shelljs": "^0.8.2", "typedoc-default-themes": "^0.5.0", "typescript": "3.2.x" + }, + "dependencies": { + "typescript": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.4.tgz", + "integrity": "sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg==", + "dev": true + } } }, "typedoc-default-themes": { @@ -3292,9 +3397,9 @@ "integrity": "sha1-bcJDPnjti+qOiHo6zeLzF4W9Yic=" }, "typescript": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.2.tgz", - "integrity": "sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg==" + "version": "3.3.3333", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.3.3333.tgz", + "integrity": "sha512-JjSKsAfuHBE/fB2oZ8NxtRTk5iGcg6hkYXMnZ3Wc+b2RSqejEqTaem11mHASMnFilHrax3sLK0GDzcJrekZYLw==" }, "tz-offset": { "version": "0.0.1", diff --git a/package.json b/package.json index e963c571..e6358a11 100644 --- a/package.json +++ b/package.json @@ -20,17 +20,17 @@ "tslint": "tslint 'src/**/*.ts'" }, "dependencies": { - "@openstapps/core": "0.2.0", - "@openstapps/core-tools": "^0.3.0", - "@openstapps/logger": "0.0.3", + "@openstapps/core": "0.11.0", + "@openstapps/core-tools": "0.3.0", + "@openstapps/logger": "0.0.5", "body-parser": "1.18.3", "config": "3.0.1", "cors": "2.8.5", - "elasticsearch": "15.3.0", + "elasticsearch": "15.4.1", "express": "4.16.4", "express-promise-router": "3.0.3", "fs-extra": "7.0.1", - "moment": "2.23.0", + "moment": "2.24.0", "morgan": "1.9.1", "node-cache": "4.2.0", "node-cron": "2.0.3", @@ -39,30 +39,30 @@ "request": "2.88.0", "semver": "5.6.0", "sha1": "1.1.1", - "ts-node": "7.0.1", + "ts-node": "8.0.2", "uuid": "3.3.2" }, "devDependencies": { - "@openstapps/configuration": "0.5.0", + "@openstapps/configuration": "0.6.0", "@types/body-parser": "1.17.0", "@types/config": "0.0.34", "@types/cors": "2.8.4", - "@types/elasticsearch": "5.0.30", - "@types/express": "4.16.0", - "@types/fs-extra": "5.0.4", + "@types/elasticsearch": "5.0.31", + "@types/express": "4.16.1", + "@types/fs-extra": "5.0.5", "@types/morgan": "1.7.35", - "@types/node": "10.12.18", - "@types/node-cache": "4.1.1", - "@types/node-cron": "2.0.0", - "@types/nodemailer": "4.6.5", + "@types/node": "10.12.27", + "@types/node-cache": "4.1.3", + "@types/node-cron": "2.0.1", + "@types/nodemailer": "4.6.6", "@types/promise-queue": "2.2.0", "@types/sha1": "1.1.1", "@types/uuid": "3.4.4", - "conventional-changelog-cli": "2.0.11", + "conventional-changelog-cli": "2.0.12", "get-port": "4.1.0", "prepend-file-cli": "1.0.6", "rimraf": "2.6.3", "typedoc": "0.14.2", - "typescript": "3.2.2" + "typescript": "3.3.3333" } } diff --git a/src/app.ts b/src/app.ts index 98e0b5a1..a9f0c009 100644 --- a/src/app.ts +++ b/src/app.ts @@ -65,6 +65,8 @@ async function configureApp() { // validate the config file const configValidation = scValidator.validate(config.util.toObject(), 'SCConfigFile'); + // use the config file + app.set('config', config.util.toObject()); // validation failed if (configValidation.errors.length > 0) { diff --git a/src/routes/MultiSearchRoute.ts b/src/routes/MultiSearchRoute.ts index 0fb762e1..01f18b32 100644 --- a/src/routes/MultiSearchRoute.ts +++ b/src/routes/MultiSearchRoute.ts @@ -14,6 +14,7 @@ * along with this program. If not, see . */ import { + SCConfigFile, SCMultiSearchRequest, SCMultiSearchResponse, SCMultiSearchRoute, @@ -32,11 +33,12 @@ export const multiSearchRouter = createRoute { + const config: SCConfigFile = app.get('config'); const bulkMemory: BulkStorage = app.get('bulk'); const queryNames = Object.keys(request); - if (queryNames.length > 5) { - return new SCTooManyRequestsErrorResponse(app.get('isProductiveEnvironment')); + if (queryNames.length > config.backend.maxMultiSearchRouteQueries) { + throw new SCTooManyRequestsErrorResponse(app.get('isProductiveEnvironment')); } // get a map of promises for each query diff --git a/src/routes/Route.ts b/src/routes/Route.ts index e7d86347..03b2fa31 100644 --- a/src/routes/Route.ts +++ b/src/routes/Route.ts @@ -22,6 +22,7 @@ import { import {Validator} from '@openstapps/core-tools/lib/validate'; import {Application, Router} from 'express'; import PromiseRouter from 'express-promise-router'; +import {ValidationError} from 'jsonschema'; import {logger} from '../common'; import {isHttpMethod} from './HTTPTypes'; @@ -91,11 +92,11 @@ export function createRoute( const response = await handler(req.body, req.app, req.params); // validate response generated by handler - const responseValidation = validator.validate(response, routeClass.responseBodyName); + const responseErrors: ValidationError[] = validator.validate(response, routeClass.responseBodyName).errors; - if (responseValidation.errors.length > 0) { + if (responseErrors.length > 0) { const validationError = new SCValidationErrorResponse( - responseValidation.errors, + responseErrors, req.app.get('isProductiveEnvironment'), ); const internalServerError = new SCInternalServerErrorResponse( @@ -115,7 +116,7 @@ export function createRoute( res.json(response); } catch (error) { // if the error response is allowed on the route - if (routeClass.errorNames.indexOf(error.constructor.name) > -1) { + if (routeClass.errorNames.some((constructorType) => error instanceof constructorType)) { // respond with the error from the handler res.status(error.statusCode); res.json(error);