diff --git a/frontend/package-lock.json b/frontend/package-lock.json index d785fb9..7eedd64 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,6 +1,6 @@ { "name": "@rwth-acis/las2peer-project-service-frontend", - "version": "0.3.1", + "version": "0.3.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -20,9 +20,9 @@ "dev": true }, "@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.16.7", @@ -31,9 +31,9 @@ } }, "@lit/reactive-element": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.3.2.tgz", - "integrity": "sha512-A2e18XzPMrIh35nhIdE4uoqRzoIpEU5vZYuQN4S3Ee1zkGdYC27DP12pewbw/RLgPHzaE4kx/YqxMzebOpm0dA==" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.3.3.tgz", + "integrity": "sha512-ukelZ49tzUqgOAEbVujl/U62JNK3wdn5kKtXVqrjKND4QvHACZOMOYaZI6/5Jd8vsg+Fq9HDwiib70FBLydOiQ==" }, "@polymer/font-roboto": { "version": "3.0.2", @@ -501,15 +501,15 @@ } }, "@rollup/plugin-node-resolve": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.2.1.tgz", - "integrity": "sha512-btX7kzGvp1JwShQI9V6IM841YKNPYjKCvUbNrQ2EcVYbULtUd/GH6wZ/qdqH13j9pOHBER+EZXNN2L8RSJhVRA==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz", + "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", "deepmerge": "^4.2.2", + "is-builtin-module": "^3.1.0", "is-module": "^1.0.0", "resolve": "^1.19.0" } @@ -560,9 +560,9 @@ } }, "@types/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-0mPF08jn9zYI0n0Q/Pnz7C4kThdSt+6LD4amsrYDDpgBfrVWa3TcCOxKX1zkGgYniGagRv8heN2cbh+CAn+uuQ==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz", + "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==", "dev": true }, "@types/cookies": { @@ -596,9 +596,9 @@ } }, "@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "version": "4.17.29", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", + "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", "dev": true, "requires": { "@types/node": "*", @@ -656,9 +656,9 @@ "dev": true }, "@types/node": { - "version": "17.0.26", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.26.tgz", - "integrity": "sha512-z/FG/6DUO7pnze3AE3TBGIjGGKkvCcGcWINe1C7cADY8hKLJPDYpzsNE37uExQ4md5RFtTCvg+M8Mu1Enyeg2A==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz", + "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==", "dev": true }, "@types/parse5": { @@ -722,16 +722,16 @@ } }, "@web/dev-server": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.1.31.tgz", - "integrity": "sha512-FGrnVwnL/pIxak1VZgOgnwcxvP90gx2LmXeU56nvZQ3CWNMAdS1rnQI3jMjMk6FwUt/wnlLk7pl6xGkm6iNwHA==", + "version": "0.1.32", + "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.1.32.tgz", + "integrity": "sha512-XcM3XPlGEPHx5pKcQ+pG7Lhw84sRV8BNpBxsAN6z9VkvSIVkJscFmLnmjqO5z85/m8uPMfm/gHimOsRVS8MFpg==", "dev": true, "requires": { "@babel/code-frame": "^7.12.11", "@types/command-line-args": "^5.0.0", "@web/config-loader": "^0.1.3", - "@web/dev-server-core": "^0.3.17", - "@web/dev-server-rollup": "^0.3.16", + "@web/dev-server-core": "^0.3.18", + "@web/dev-server-rollup": "^0.3.18", "camelcase": "^6.2.0", "command-line-args": "^5.1.1", "command-line-usage": "^6.1.1", @@ -744,9 +744,9 @@ } }, "@web/dev-server-core": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.3.17.tgz", - "integrity": "sha512-vN1dwQ8yDHGiAvCeUo9xFfjo+pFl8TW+pON7k9kfhbegrrB8CKhJDUxmHbZsyQUmjf/iX57/LhuWj1xGhRL8AA==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.3.18.tgz", + "integrity": "sha512-o8EBGKXlBjAaQZiYNE1RZsNZJFQHjjr9FwuJyP2fsN+dkdZRhOjp4/E46hl2rB17Qgq4AizFmds8enmF/hU5dw==", "dev": true, "requires": { "@types/koa": "^2.11.6", @@ -770,24 +770,24 @@ }, "dependencies": { "ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", + "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", "dev": true } } }, "@web/dev-server-rollup": { - "version": "0.3.16", - "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.3.16.tgz", - "integrity": "sha512-JviPK0KFO2LjlK/Y1YMJtO9t+87uay7K+88BNC15VVrRV/j6PTk5D+ljDuSksSTQLD5XHKPd7QLbXINqyE5/lg==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.3.18.tgz", + "integrity": "sha512-NrZnrYw0IsnLFtTIynOrUsYpcFYV0wdy6Co8TrUIlcdtgAAjcRX9/0nJeWhm6NDjcSZMZM9NT6UhqFduq7196Q==", "dev": true, "requires": { "@rollup/plugin-node-resolve": "^13.0.4", - "@web/dev-server-core": "^0.3.16", + "@web/dev-server-core": "^0.3.18", "nanocolors": "^0.2.1", "parse5": "^6.0.1", - "rollup": "^2.66.1", + "rollup": "^2.67.0", "whatwg-url": "^11.0.0" } }, @@ -829,7 +829,7 @@ "after": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/after/-/after-0.8.1.tgz", - "integrity": "sha1-q11PuIP1loFtNRX495HAr0ht1ic=" + "integrity": "sha512-SuI3vWhCFeSmkmmJ3efyuOkrhGyp/AuHthh3F5DinGYh2kR9t/0xUlm3/Vn2qMScfgg+cKho5fW7TUEYUhYeiA==" }, "ansi-styles": { "version": "3.2.1", @@ -859,7 +859,7 @@ "arraybuffer.slice": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", - "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=" + "integrity": "sha512-6ZjfQaBSy6CuIH0+B0NrxMfDE5VIOCP/5gOqSpEIsaAZx9/giszzrXg6PZ7G51U/n88UmlAgYLNQ9wAnII7PJA==" }, "async": { "version": "2.6.4", @@ -873,12 +873,12 @@ "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" }, "base64-arraybuffer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz", - "integrity": "sha1-R030qfLaJOBd8xWMOx2zw81GoVQ=" + "integrity": "sha512-ewBKKVVPIl78B26mYQHYlaxR7NydMiD/GxwLNIwTAfLIE4xhN2Gxcy30//azq5UrejXjzGpWjcBu3NUJxzMMzg==" }, "base64-js": { "version": "1.5.1", @@ -888,12 +888,12 @@ "benchmark": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-1.0.0.tgz", - "integrity": "sha1-Lx4vpMNZ8REiqhgwgiGOlX45DHM=" + "integrity": "sha512-qSlOi0If8sI+icu3l/W5rd4R0etJz9orLPWpDdt1lPgEFzEHYYnkfMuotj+Lx5SyMkmfawlPoW9RmoEm19ziHA==" }, "better-assert": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "integrity": "sha512-bYeph2DFlpK1XmGs6fvlLRUN29QISM3GBuUwSFsMY2XRx4AvC0WNCS57j4c/xGrK2RS24C1w3YoBOsw9fT46tQ==", "requires": { "callsite": "1.0.0" } @@ -907,13 +907,13 @@ "bindings": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=", + "integrity": "sha512-u4cBQNepWxYA55FunZSM7wMi55yQaN0otnhhilNoWHq0MfOfJeQx0v0mRRpolGOExPjZcl6FtB0BB8Xkb88F0g==", "optional": true }, "blob": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=" + "integrity": "sha512-YRc9zvVz4wNaxcXmiSgb9LAg7YYwqQ2xd0Sj6osfA7k/PKmIGVlnOYs3wOFdkRC9/JpQu8sGt/zHgJV7xzerfg==" }, "braces": { "version": "3.0.2", @@ -927,7 +927,7 @@ "bufferutil": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-1.2.1.tgz", - "integrity": "sha1-N75dNuHgZJIiHmjUdLGsWOUQy9c=", + "integrity": "sha512-rtE2s2JHFmfaldMwWFSUaPTxfxq6Um3xw9PEUK5bAfW83UTXp3WQpE7slnD2bd9GUgb0BA7JC/7ZxeBrIq+8Dw==", "optional": true, "requires": { "bindings": "1.2.x", @@ -935,9 +935,9 @@ } }, "builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true }, "cache-content-type": { @@ -953,7 +953,7 @@ "callsite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" + "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==" }, "camelcase": { "version": "6.3.0", @@ -991,13 +991,13 @@ "clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", "dev": true }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true }, "color-convert": { @@ -1012,7 +1012,7 @@ "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==", "dev": true }, "command-line-args": { @@ -1056,17 +1056,17 @@ "component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + "integrity": "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==" }, "component-emitter": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", - "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=" + "integrity": "sha512-YhIbp3PJiznERfjlIkK0ue4obZxt2S60+0W8z24ZymOHT8sHloOqWOqZRU2eN5OlY8U08VFsP02letcu26FilA==" }, "component-inherit": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==" }, "content-disposition": { "version": "0.5.4", @@ -1112,12 +1112,12 @@ "debug": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", - "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=" + "integrity": "sha512-EohAb3+DSHSGx8carOSKJe8G0ayV5/i609OD0J2orCkuyae7SyZSz2aoLmQF2s0Pj5gITDebwPH7GFBlqOUQ1Q==" }, "deep-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", "dev": true }, "deep-extend": { @@ -1141,7 +1141,7 @@ "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "dev": true }, "depd": { @@ -1159,19 +1159,19 @@ "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true }, "engine.io-client": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.5.4.tgz", - "integrity": "sha1-xq1lpldSopy5MMaRHledKyjREGw=", + "integrity": "sha512-6ad4/4A/hOqJT381LC8Ozk3yLxE3YqITBnHTMh2/zAYqXGgtWk4CdxbpvO5acZlma1SJseFVx4CEi8ED/92qmg==", "requires": { "component-emitter": "1.1.2", "component-inherit": "0.0.3", @@ -1189,7 +1189,7 @@ "debug": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz", - "integrity": "sha1-W5wla9VLbsAigxdvqKDt5tFUy/g=", + "integrity": "sha512-plA8d2GHafT7kXzMDs5r7NSfYP7IKHdO8rZPVAqI33Eum7Vq/Ef/ETXm6NncF/RMif4fzI0RetSArZ6PMIxP0g==", "requires": { "ms": "0.6.2" } @@ -1197,7 +1197,7 @@ "parseuri": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.4.tgz", - "integrity": "sha1-gGWCo5iH4eoY3V4v4OAZAiaOk1A=", + "integrity": "sha512-9pW0ZCCDtEIzW7beHfLg2N13pgctOVRq1Z+1PKdpsF4wD9GhYUMAAxBhmPRPVVy1fg2z+eH/8uw8dgA0j9DNzw==", "requires": { "better-assert": "~1.0.0" } @@ -1207,7 +1207,7 @@ "engine.io-parser": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.2.2.tgz", - "integrity": "sha1-zQgQQf7qOcZDI/95uCqQpyr8zN0=", + "integrity": "sha512-eZ0Vx2rCg8z5J4rVVtAH4TWF/GiYG5UEtnRMmdwUseD2OShabn783jFziwHYr+ofBodUdF+v/XjGzY/kcpLsmg==", "requires": { "after": "0.8.1", "arraybuffer.slice": "0.0.6", @@ -1226,13 +1226,13 @@ "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true }, "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==", "dev": true }, "estree-walker": { @@ -1244,7 +1244,7 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true }, "fill-range": { @@ -1268,7 +1268,7 @@ "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true }, "fsevents": { @@ -1315,7 +1315,7 @@ "has-binary": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.6.tgz", - "integrity": "sha1-JTJvOc+k9hath4eJTjryz7x7bhA=", + "integrity": "sha512-aBByfHrIiIt6PQ+jFXsLIFVNpHVyXDcCZ77VZ4kvxv6TvTwipSTDNvKnPN5xOi/cQTcxhLa4lBV2b49pZGQgXw==", "requires": { "isarray": "0.0.1" } @@ -1323,7 +1323,7 @@ "has-cors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.0.3.tgz", - "integrity": "sha1-UCrLmzEE2sM90mMOry+IiwuvTLM=", + "integrity": "sha512-Mxk1ba23PNtB3zPigreijApS3uuH9bhgZkqQtLQj7ydWHsGeb9uOtk4gsK6mZj4rYG6VNS/CT9G1XkYfgItpKg==", "requires": { "global": "https://github.com/component/global/archive/v2.0.1.tar.gz" } @@ -1331,7 +1331,7 @@ "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==", "dev": true }, "has-symbols": { @@ -1375,7 +1375,7 @@ "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true } } @@ -1383,7 +1383,7 @@ "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==" }, "inherits": { "version": "2.0.4", @@ -1392,9 +1392,9 @@ "dev": true }, "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", "dev": true }, "is-binary-path": { @@ -1406,6 +1406,15 @@ "binary-extensions": "^2.0.0" } }, + "is-builtin-module": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", + "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", + "dev": true, + "requires": { + "builtin-modules": "^3.0.0" + } + }, "is-core-module": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", @@ -1424,7 +1433,7 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, "is-generator-function": { @@ -1448,7 +1457,7 @@ "is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", "dev": true }, "is-number": { @@ -1475,7 +1484,7 @@ "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" }, "isbinaryfile": { "version": "4.0.10", @@ -1492,7 +1501,7 @@ "json3": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/json3/-/json3-3.2.6.tgz", - "integrity": "sha1-9u/JPAagTemuxTBT3yVZuxniA4s=" + "integrity": "sha512-KA+GHhYTLTo7Ri4DyjwUgW8kn98AYtVZtBC94qL5yD0ZSYct8/eF8qBmTNyk+gPE578bKeIL4WBq+MUyd1I26g==" }, "keygrip": { "version": "1.1.0", @@ -1710,18 +1719,18 @@ } }, "lit-element": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.2.0.tgz", - "integrity": "sha512-HbE7yt2SnUtg5DCrWt028oaU4D5F4k/1cntAFHTkzY8ZIa8N0Wmu92PxSxucsQSOXlODFrICkQ5x/tEshKi13g==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.2.1.tgz", + "integrity": "sha512-2PxyE9Yq9Jyo/YBK2anycaHcqo93YvB5D+24JxloPVqryW/BOXekne+jGsm0Ke3E5E2v7CDgkmpEmCAzYfrHCQ==", "requires": { "@lit/reactive-element": "^1.3.0", "lit-html": "^2.2.0" } }, "lit-html": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.2.3.tgz", - "integrity": "sha512-vI4j3eWwtQaR8q/O63juZVliBIFMio716X719/lSsGH4UWPy2/7Qf377jsNs4cx3gCHgIbx8yxFgXFQ/igZyXQ==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.2.6.tgz", + "integrity": "sha512-xOKsPmq/RAKJ6dUeOxhmOYFjcjf0Q7aSdfBJgdJkOfCUnkmmJPxNrlZpRBeVe1Gg50oYWMlgm6ccAE/SpJgSdw==", "requires": { "@types/trusted-types": "^2.0.2" } @@ -1735,7 +1744,7 @@ "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", "dev": true }, "lru-cache": { @@ -1750,7 +1759,7 @@ "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true }, "mime-db": { @@ -1786,12 +1795,12 @@ "ms": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz", - "integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw=" + "integrity": "sha512-/pc3eh7TWorTtbvXg8je4GvrvEqCfH7PA3P7iW01yL2E53FKixzgMBaQi0NOPbMJqY34cBSvR0tZtmlTkdUG4A==" }, "nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", + "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", "optional": true }, "nanocolors": { @@ -1815,7 +1824,7 @@ "object-component": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" + "integrity": "sha512-S0sN3agnVh2SZNEIGc0N1X4Z5K0JeFbGBrnuZpsxuUh5XLF0BnvWkMjRXo/zGKLd/eghvNIKcx1pQkmUjXIyrA==" }, "oidc-client": { "version": "github:rwth-acis/oidc-client-js#d3205cf842a127bc645446a9aada46c9801a4709", @@ -1840,7 +1849,7 @@ "only": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", - "integrity": "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=", + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==", "dev": true }, "open": { @@ -1880,7 +1889,7 @@ "options": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=" + "integrity": "sha512-bOj3L1ypm++N+n7CEbbe473A414AB7z+amKYshRb//iuL3MpdDCLhPnw6aVTdKB9g5ZRVHIEp8eUln6L2NUStg==" }, "parse5": { "version": "6.0.1", @@ -1891,7 +1900,7 @@ "parsejson": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.1.tgz", - "integrity": "sha1-mxDGwNglq1ieaFFTgm3go7oni8w=", + "integrity": "sha512-W9CRvTfYQY/kbRc5Q6YTWarb/QDxdEGbd6RCP8CLUQDJV89RVHoS2A0dZYNtAcq31fulGNN4ZhAhiQQazwlKJg==", "requires": { "better-assert": "~1.0.0" } @@ -1899,7 +1908,7 @@ "parseqs": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.2.tgz", - "integrity": "sha1-nf5wss3aw4i95PNbHyQPpYrb5sc=", + "integrity": "sha512-vyyyfQGUFZnDhgrrdn+hh1JuOfvbXU5oRr6dijfkSIbaFuxGgTSCA/RNVcsADmo0k2NX6wERVTMKkXokjuObJA==", "requires": { "better-assert": "~1.0.0" } @@ -1907,7 +1916,7 @@ "parseuri": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.2.tgz", - "integrity": "sha1-20GHjy1pZHGL6HCzFAlz2Ak74VY=", + "integrity": "sha512-m0H+R0u5LXOx8sbxufnvgKrRLpkVpvtMf0AyWXYSqLwo2MWrVEgCIbgpaSVa398xl6wTLe0A7CGhiC4hBdEzHQ==", "requires": { "better-assert": "~1.0.0" } @@ -1921,7 +1930,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-parse": { @@ -1994,12 +2003,12 @@ "dev": true }, "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "requires": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.9.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -2007,7 +2016,7 @@ "resolve-path": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", - "integrity": "sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc=", + "integrity": "sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==", "dev": true, "requires": { "http-errors": "~1.6.2", @@ -2017,13 +2026,13 @@ "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true }, "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, "requires": { "depd": "~1.1.2", @@ -2035,7 +2044,7 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, "setprototypeof": { @@ -2047,9 +2056,9 @@ } }, "rollup": { - "version": "2.70.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.2.tgz", - "integrity": "sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==", + "version": "2.75.7", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz", + "integrity": "sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -2086,7 +2095,7 @@ "socket.io-client": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.3.7.tgz", - "integrity": "sha1-erfAabjVBCXrJl8DH4Spfm6+cZw=", + "integrity": "sha512-yA4irP1priy7yewFB31N44xjFcGxRI4Yjyk572rdMdKAMtEPS+ntgzV0H0VSiky5DE1vh6djUNZHiOaXRdxi6w==", "requires": { "backo2": "1.0.2", "component-bind": "1.0.0", @@ -2104,7 +2113,7 @@ "socket.io-parser": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.4.tgz", - "integrity": "sha1-+c4ZvxkJYIzrFdl3IeI7/dHnz2U=", + "integrity": "sha512-j0TD2g5DtrmQwcBy+C0RejylNk43rdeCBRRm8EBExrE/f5RlztV+d0k4PRR/tXrcaLcgZeXRpsZvcPVKHarj8g==", "requires": { "benchmark": "1.0.0", "component-emitter": "1.1.2", @@ -2116,7 +2125,7 @@ "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true }, "supports-color": { @@ -2163,7 +2172,7 @@ "to-array": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.3.tgz", - "integrity": "sha1-1F2txjY0F/YPKEdP6lDs3btPSZE=" + "integrity": "sha512-JQk/QMS4oHyU2VufVeyjN25dcnZnr1PV1pa1oKSj7l5tVO9WrU62og3fYzB3mrgJZZgBxdrrA/v6iZzMDuyFYw==" }, "to-regex-range": { "version": "5.0.1", @@ -2214,12 +2223,12 @@ "ultron": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=" + "integrity": "sha512-QMpnpVtYaWEeY+MwKDN/UdKlE/LsFZXM5lO1u7GaZzNgmIbGixHEmVMIKT+vqYOALu3m5GYQy9kz4Xu4IVn7Ow==" }, "utf-8-validate": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-1.2.2.tgz", - "integrity": "sha1-i7hxpHQeCFxwSHynrNvX1tNgKes=", + "integrity": "sha512-CcV1z1L/e1wFAZwl8T6o1MmxIsg/ClZ4nmUolyIhb3ZJKbD/ZQTZXstCf6BiRcvaThSJVI8SqWLodWq/hnWDxQ==", "optional": true, "requires": { "bindings": "~1.2.1", @@ -2229,7 +2238,7 @@ "nan": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "integrity": "sha1-+zxZ1F/k7/4hXwuJD4rfbrMtIjI=", + "integrity": "sha512-Ym8Mn5u8D8Fwo7fHWhD7xEyKe/y/J8Epkxp6iJfZhtgnRva+GN+dQddiWGE2cksWCV92K/HzdHlJWo7aZJDlFw==", "optional": true } } @@ -2237,12 +2246,12 @@ "utf8": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.0.tgz", - "integrity": "sha1-DP7FyAUtRKI+OqqQgQToB1+V39U=" + "integrity": "sha512-meBQCGPqrY9eH0gLoJ45HzjLWGKLaROTGkWPbWhyGO/b/Q7lB3T3NClcKe6aQCgDXF3hwx5WzYBXbA+c8j17Yw==" }, "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==", "dev": true }, "webidl-conversions": { @@ -2282,7 +2291,7 @@ "ws": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/ws/-/ws-0.8.0.tgz", - "integrity": "sha1-rGDrrTEhIdAeFswzg9fsZ60PDx8=", + "integrity": "sha512-JRxYZsisQGuKfRb+QohqX+CZhH3CE++Zz/BZpouhGbf/MLvL9qQ1i7Zp/uLGMxs67z6IX/3/aymoAVuoJzRieQ==", "requires": { "bufferutil": "1.2.x", "options": ">=0.0.5", diff --git a/gradle.properties b/gradle.properties index 4d87287..23799a4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ -core.version=1.2.0 +core.version=1.2.2 service.name=i5.las2peer.services.projectService service.class=ProjectService -service.version=1.0.1 +service.version=1.1.0 java.version=17 las2peer_user1.name=alice diff --git a/project_service/build.gradle b/project_service/build.gradle index 85845c3..fa9d6f6 100644 --- a/project_service/build.gradle +++ b/project_service/build.gradle @@ -31,6 +31,8 @@ dependencies { // las2peer bundle which is not necessary in the runtime path // compileOnly will be moved into the lib dir afterwards implementation "i5:las2peer-bundle:${project.property('core.version')}" + + implementation "com.konghq:unirest-java:3.13.10" } diff --git a/project_service/src/main/java/i5/las2peer/services/projectService/ProjectService.java b/project_service/src/main/java/i5/las2peer/services/projectService/ProjectService.java index d6735df..a170d59 100644 --- a/project_service/src/main/java/i5/las2peer/services/projectService/ProjectService.java +++ b/project_service/src/main/java/i5/las2peer/services/projectService/ProjectService.java @@ -30,6 +30,7 @@ import i5.las2peer.api.persistency.EnvelopeOperationFailedException; import i5.las2peer.restMapper.RESTService; import i5.las2peer.restMapper.annotations.ServicePath; +import i5.las2peer.services.projectService.chat.ChatManager; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; @@ -189,6 +190,15 @@ public JSONObject getProjectMetadataRMI(String system, String projectName) { return metadata; } + public JSONObject getProjectChatInfo(String system, String projectName) { + Response r = this.getProjectByName(system, projectName); + if(r.getStatus() != 200) return null; + String entity = (String) r.getEntity(); + JSONObject projectJSON = (JSONObject) JSONValue.parse(entity); + JSONObject chatInfo = (JSONObject) projectJSON.get("chatInfo"); + return chatInfo; + } + /** * Creates a new project in the pastry storage. Therefore, the user needs to be * authorized. First, checks if a project with the given name already exists. If @@ -286,6 +296,15 @@ public Response postProject(@PathParam("system") String system, String inputProj } } + // check if chat channel should be created + if(this.systemsConfig.isChannelCreationEnabled(system)) { + ChatManager chatManager = this.systemsConfig.getChatManager(system); + JSONObject chatInfo = chatManager.createProjectChannel(project, system); + if(chatInfo != null) { + project.setChatInfo(chatInfo); + } + } + ProjectContainer cc = new ProjectContainer(); cc.addProject(project); diff --git a/project_service/src/main/java/i5/las2peer/services/projectService/chat/ChatConfig.java b/project_service/src/main/java/i5/las2peer/services/projectService/chat/ChatConfig.java new file mode 100644 index 0000000..2289eab --- /dev/null +++ b/project_service/src/main/java/i5/las2peer/services/projectService/chat/ChatConfig.java @@ -0,0 +1,8 @@ +package i5.las2peer.services.projectService.chat; + +/** + * Super class for all chat configurations. + * Currently, only RocketChat config is implemented. + */ +public abstract class ChatConfig { +} diff --git a/project_service/src/main/java/i5/las2peer/services/projectService/chat/ChatManager.java b/project_service/src/main/java/i5/las2peer/services/projectService/chat/ChatManager.java new file mode 100644 index 0000000..1a5e619 --- /dev/null +++ b/project_service/src/main/java/i5/las2peer/services/projectService/chat/ChatManager.java @@ -0,0 +1,20 @@ +package i5.las2peer.services.projectService.chat; + +import i5.las2peer.services.projectService.project.Project; +import org.json.simple.JSONObject; + +/** + * Super class for all chat managers. + * Currently, only RocketChat is implemented. + */ +public abstract class ChatManager { + + protected ChatConfig config; + + public ChatManager(ChatConfig config) { + this.config = config; + } + + public abstract JSONObject createProjectChannel(Project project, String systemName); + +} diff --git a/project_service/src/main/java/i5/las2peer/services/projectService/chat/RocketChatConfig.java b/project_service/src/main/java/i5/las2peer/services/projectService/chat/RocketChatConfig.java new file mode 100644 index 0000000..4499898 --- /dev/null +++ b/project_service/src/main/java/i5/las2peer/services/projectService/chat/RocketChatConfig.java @@ -0,0 +1,49 @@ +package i5.las2peer.services.projectService.chat; + +import org.json.simple.JSONObject; + +/** + * RocketChat instance configuration. + */ +public class RocketChatConfig extends ChatConfig { + + /** + * Public url of RocketChat instance. + */ + private String url; + + /** + * Auth token of bot account that is used to make API calls. + */ + private String botAuthToken; + + /** + * User ID of bot account that is used to make API calls. + */ + private String botUserId; + + public RocketChatConfig(String url, String botAuthToken, String botUserId) { + this.url = url; + this.botAuthToken = botAuthToken; + this.botUserId = botUserId; + } + + public static RocketChatConfig fromJSON(JSONObject config) { + String url = (String) config.get("url"); + String botAuthToken = (String) config.get("botAuthToken"); + String botUserId = (String) config.get("botUserId"); + return new RocketChatConfig(url, botAuthToken, botUserId); + } + + public String getUrl() { + return url; + } + + public String getBotAuthToken() { + return botAuthToken; + } + + public String getBotUserId() { + return botUserId; + } +} diff --git a/project_service/src/main/java/i5/las2peer/services/projectService/chat/RocketChatManager.java b/project_service/src/main/java/i5/las2peer/services/projectService/chat/RocketChatManager.java new file mode 100644 index 0000000..c65a055 --- /dev/null +++ b/project_service/src/main/java/i5/las2peer/services/projectService/chat/RocketChatManager.java @@ -0,0 +1,51 @@ +package i5.las2peer.services.projectService.chat; + +import i5.las2peer.services.projectService.project.Project; +import kong.unirest.HttpResponse; +import kong.unirest.Unirest; +import org.json.simple.JSONObject; +import org.json.simple.JSONValue; + +/** + * ChatManager for RocketChat. Allows to create channels for las2peer projects. + */ +public class RocketChatManager extends ChatManager { + + public RocketChatManager(ChatConfig config) { + super(config); + } + + @Override + public JSONObject createProjectChannel(Project project, String systemName) { + String channelName = project.getName().replaceAll(" ", "") + "_" + systemName; + + JSONObject body = new JSONObject(); + body.put("name", channelName); + + HttpResponse response = Unirest.post(getConfig().getUrl() + "/api/v1/channels.create") + .header("X-Auth-Token", getConfig().getBotAuthToken()) + .header("X-User-Id", getConfig().getBotUserId()) + .header("Content-Type", "application/json") + .body(body.toJSONString()) + .asString(); + + if(!response.isSuccess()) { + System.out.println("RocketChat channel creation failed with status code: " + response.getStatus()); + return null; + } + + JSONObject res = (JSONObject) JSONValue.parse(response.getBody()); + JSONObject resChannel = (JSONObject) res.get("channel"); + + JSONObject channelInfo = new JSONObject(); + channelInfo.put("type", "RocketChat"); + channelInfo.put("url", getConfig().getUrl()); + channelInfo.put("channelId", resChannel.get("_id")); + channelInfo.put("chatUrl", getConfig().getUrl() + "/channel/" + resChannel.get("_id")); + return channelInfo; + } + + private RocketChatConfig getConfig() { + return (RocketChatConfig) this.config; + } +} diff --git a/project_service/src/main/java/i5/las2peer/services/projectService/project/Project.java b/project_service/src/main/java/i5/las2peer/services/projectService/project/Project.java index c207037..bda5f0f 100644 --- a/project_service/src/main/java/i5/las2peer/services/projectService/project/Project.java +++ b/project_service/src/main/java/i5/las2peer/services/projectService/project/Project.java @@ -5,6 +5,7 @@ import java.util.HashMap; import java.util.List; +import org.json.simple.JSONArray; import org.json.simple.JSONValue; import org.json.simple.JSONObject; import org.json.simple.parser.ParseException; @@ -58,6 +59,8 @@ public class Project implements Serializable { */ private HashMap memberGitHubUsernames; + private JSONObject chatInfo = new JSONObject(); + /** * Creates a project object from the given JSON string. This constructor should * be used before storing new projects. @@ -152,6 +155,7 @@ public JSONObject toJSONObject() { if(this.gitHubProjectConnected()) { jsonProject.put("gitHubProject", this.connectedGitHubProject.toJSONObject()); } + jsonProject.put("chatInfo", this.chatInfo); return jsonProject; } @@ -286,4 +290,8 @@ public boolean removeNonGroupMembersGitHubAccess(String system, String[] groupMe } return changed; } + + public void setChatInfo(JSONObject chatInfo) { + this.chatInfo = chatInfo; + } } diff --git a/project_service/src/main/java/i5/las2peer/services/projectService/util/ProjectServiceSystem.java b/project_service/src/main/java/i5/las2peer/services/projectService/util/ProjectServiceSystem.java index 90bd480..683d4af 100644 --- a/project_service/src/main/java/i5/las2peer/services/projectService/util/ProjectServiceSystem.java +++ b/project_service/src/main/java/i5/las2peer/services/projectService/util/ProjectServiceSystem.java @@ -1,5 +1,8 @@ package i5.las2peer.services.projectService.util; +import i5.las2peer.services.projectService.chat.ChatManager; +import i5.las2peer.services.projectService.chat.RocketChatConfig; +import i5.las2peer.services.projectService.chat.RocketChatManager; import org.json.simple.JSONObject; import i5.las2peer.services.projectService.ProjectService; @@ -18,6 +21,8 @@ public class ProjectServiceSystem { private static final String JSON_KEY_GITHUB_PROJECTS_ENABLED = "gitHubProjectsEnabled"; private static final String JSON_KEY_GITHUB_ORGANIZATION = "gitHubOrganization"; private static final String JSON_KEY_GITHUB_PERSONAL_ACCESS_TOKEN = "gitHubPersonalAccessToken"; + + private static final String JSON_KEY_ROCKET_CHAT_CONFIG = "rocketchat"; /** * Name of the system. Example: SBF @@ -53,6 +58,8 @@ public class ProjectServiceSystem { * to create new GitHub projects in the used GitHub organization. */ private String gitHubPersonalAccessToken; + + private RocketChatConfig rocketChatConfig = null; public ProjectServiceSystem(String systemName, JSONObject systemJSON) { this.name = systemName; @@ -75,6 +82,10 @@ public ProjectServiceSystem(String systemName, JSONObject systemJSON) { this.gitHubPersonalAccessToken = (String) systemJSON.get(JSON_KEY_GITHUB_PERSONAL_ACCESS_TOKEN); } + if(systemJSON.containsKey(JSON_KEY_ROCKET_CHAT_CONFIG)) { + this.rocketChatConfig = RocketChatConfig.fromJSON((JSONObject) systemJSON.get(JSON_KEY_ROCKET_CHAT_CONFIG)); + } + this.eventListenerService = (String) systemJSON.getOrDefault(JSON_KEY_EVENT_LISTENER_SERVICE, null); } @@ -106,4 +117,16 @@ public String getGitHubOrganization() { public String getGitHubPersonalAccessToken() { return this.gitHubPersonalAccessToken; } + + public RocketChatConfig getRocketChatConfig() { + return rocketChatConfig; + } + + public boolean isChannelCreationEnabled() { + return this.rocketChatConfig != null; + } + + public ChatManager getChatManager() { + return new RocketChatManager(this.rocketChatConfig); + } } diff --git a/project_service/src/main/java/i5/las2peer/services/projectService/util/SystemsConfig.java b/project_service/src/main/java/i5/las2peer/services/projectService/util/SystemsConfig.java index a2fbfc2..f393dcd 100644 --- a/project_service/src/main/java/i5/las2peer/services/projectService/util/SystemsConfig.java +++ b/project_service/src/main/java/i5/las2peer/services/projectService/util/SystemsConfig.java @@ -3,6 +3,8 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; + +import i5.las2peer.services.projectService.chat.ChatManager; import org.json.simple.JSONObject; import i5.las2peer.services.projectService.ProjectService; @@ -91,4 +93,18 @@ public String getGitHubPATBySystem(String systemName) { } return null; } + + public boolean isChannelCreationEnabled(String systemName) { + for(ProjectServiceSystem system : this.systems) { + if(system.getName().equals(systemName)) return system.isChannelCreationEnabled(); + } + return false; + } + + public ChatManager getChatManager(String systemName) { + for(ProjectServiceSystem system : this.systems) { + if(system.getName().equals(systemName)) return system.getChatManager(); + } + return null; + } } diff --git a/project_service/src/test/java/i5/las2peer/services/projectService/chat/RocketChatConfigTest.java b/project_service/src/test/java/i5/las2peer/services/projectService/chat/RocketChatConfigTest.java new file mode 100644 index 0000000..54812e7 --- /dev/null +++ b/project_service/src/test/java/i5/las2peer/services/projectService/chat/RocketChatConfigTest.java @@ -0,0 +1,26 @@ +package i5.las2peer.services.projectService.chat; + +import org.json.simple.JSONObject; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class RocketChatConfigTest { + + private static String url = "http://url.com"; + private static String botAuthToken = "token"; + private static String botUserId = "id"; + + @Test + public void fromJSONTest() { + JSONObject configJSON = new JSONObject(); + configJSON.put("url", url); + configJSON.put("botAuthToken", botAuthToken); + configJSON.put("botUserId", botUserId); + + RocketChatConfig chatConfig = RocketChatConfig.fromJSON(configJSON); + assertEquals(chatConfig.getUrl(), url); + assertEquals(chatConfig.getBotAuthToken(), botAuthToken); + assertEquals(chatConfig.getBotUserId(), botUserId); + } +} \ No newline at end of file