From 583a338d99fa8dca74c07182d0471219c382f9d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Kilchenmann?= Date: Mon, 10 May 2021 14:13:36 +0200 Subject: [PATCH] refactor(compiler): enable strict template (DSP-1403) (#432) * refactor(compiler): set strictTemplate in angularCompilerOptions * chore(material): add MatHint to appModule * test(resource): fix tests * chore(deps): clean up node modules * test(ontology): disable one step Test on gh-ci failed because of this: Chrome Headless 90.0.4430.93 (Linux x86_64) PropertyFormComponent should update labels when the value changes FAILED 69 Expected ' Update 70 71 72 ' to equal ' Update '. * test(gh-ci): fix tests --- package-lock.json | 1010 +++++++++++++---- src/app/main/dialog/dialog.component.html | 14 +- src/app/main/dialog/dialog.component.spec.ts | 2 + src/app/main/dialog/dialog.component.ts | 5 + src/app/material-module.ts | 2 + src/app/project/board/board.component.ts | 8 +- .../dataset-tab-view.component.html | 2 +- .../dataset-tab-view.component.ts | 10 +- .../project-tab-view.component.html | 2 +- .../project-tab-view.component.ts | 6 +- .../add-user/add-user.component.ts | 12 +- .../collaboration.component.html | 2 +- .../collaboration/collaboration.component.ts | 14 +- .../select-group/select-group.component.ts | 6 +- .../list-info-form.component.spec.ts | 4 +- .../list-info-form.component.ts | 2 +- .../edit-list-item.component.ts | 13 + .../list-item-form.component.spec.ts | 2 +- .../list-item-form.component.ts | 6 +- .../list/list-item/list-item.component.html | 10 +- .../list-item/list-item.component.spec.ts | 2 +- .../list/list-item/list-item.component.ts | 2 +- src/app/project/list/list.component.html | 2 +- src/app/project/list/list.component.ts | 12 +- .../ontology-form.component.html | 2 +- .../project/ontology/ontology.component.html | 3 +- .../project/ontology/ontology.component.ts | 2 +- .../property-form.component.spec.ts | 2 +- .../resource-class-form.component.html | 4 +- .../add-group/add-group.component.ts | 2 +- .../permission/permission.component.html | 2 +- .../permission/permission.component.ts | 10 +- .../project-form/project-form.component.html | 6 +- .../project-form/project-form.component.ts | 28 +- src/app/project/project.component.ts | 18 +- .../projects-list/projects-list.component.ts | 4 +- src/app/system/projects/projects.component.ts | 2 +- .../users-list/users-list.component.html | 26 +- .../users/users-list/users-list.component.ts | 12 +- .../user/membership/membership.component.ts | 7 +- src/app/user/user-form/user-form.component.ts | 14 +- src/app/user/user.component.ts | 2 +- .../resource-instance-form.component.spec.ts | 18 +- .../resource-properties.component.spec.ts | 3 +- .../resource-properties.component.ts | 3 +- tsconfig.json | 5 + 46 files changed, 984 insertions(+), 341 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7ccb19d9a0..f9023f4ea9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2733,6 +2733,12 @@ "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", "dev": true }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, "node_modules/@types/jsonld": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@types/jsonld/-/jsonld-1.5.5.tgz", @@ -3843,6 +3849,25 @@ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true }, + "node_modules/array-includes": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -3870,6 +3895,23 @@ "node": ">=0.10.0" } }, + "node_modules/array.prototype.flat": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -4542,15 +4584,6 @@ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, - "node_modules/builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -5010,7 +5043,6 @@ "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz", "integrity": "sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==", "dev": true, - "peer": true, "peerDependencies": { "tslib": "^1.10.0" } @@ -5020,7 +5052,6 @@ "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==", "dev": true, - "peer": true, "peerDependencies": { "rxjs": "^6.5.3", "tslib": "^1.10.0", @@ -7042,6 +7073,53 @@ "is-arrayish": "^0.2.1" } }, + "node_modules/es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es5-ext": { "version": "0.10.53", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", @@ -7168,14 +7246,13 @@ } }, "node_modules/eslint-import-resolver-node": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz", - "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", "dev": true, "dependencies": { - "debug": "^2.2.0", - "object-assign": "^4.0.1", - "resolve": "^1.1.6" + "debug": "^2.6.9", + "resolve": "^1.13.1" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { @@ -7228,27 +7305,30 @@ "dev": true }, "node_modules/eslint-plugin-import": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz", - "integrity": "sha1-crowb60wXWfEgWNIpGmaQimsi04=", + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", "dev": true, "dependencies": { - "builtin-modules": "^1.1.1", + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", "contains-path": "^0.1.0", - "debug": "^2.2.0", + "debug": "^2.6.9", "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.2.0", - "eslint-module-utils": "^2.0.0", - "has": "^1.0.1", - "lodash.cond": "^4.3.0", - "minimatch": "^3.0.3", - "pkg-up": "^1.0.0" + "eslint-import-resolver-node": "^0.3.4", + "eslint-module-utils": "^2.6.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.1", + "read-pkg-up": "^2.0.0", + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "2.x - 3.x" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0" } }, "node_modules/eslint-plugin-import/node_modules/debug": { @@ -7315,16 +7395,6 @@ "node": ">=10" } }, - "node_modules/eslint-plugin-prefer-arrow": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz", - "integrity": "sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ==", - "dev": true, - "peer": true, - "peerDependencies": { - "eslint": ">=2.0.0" - } - }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -8746,6 +8816,15 @@ "node": ">=0.10.0" } }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -9683,6 +9762,15 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "node_modules/is-bigint": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -9695,12 +9783,39 @@ "node": ">=8" } }, + "node_modules/is-boolean-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "node_modules/is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-color-stop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", @@ -9749,9 +9864,9 @@ } }, "node_modules/is-date-object": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.3.tgz", - "integrity": "sha512-tDpEUInNcy2Yw3lNSepK3Wdw1RnXLcIVienz6Ou631Acl15cJyRWK4dgA1vCmOEgIbtOV0W7MHg+AR2Gdg1NXQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", "dev": true, "engines": { "node": ">= 0.4" @@ -9846,6 +9961,18 @@ "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", "dev": true }, + "node_modules/is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -9855,6 +9982,18 @@ "node": ">=0.12.0" } }, + "node_modules/is-number-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -9910,13 +10049,13 @@ } }, "node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9940,6 +10079,33 @@ "node": ">=0.10.0" } }, + "node_modules/is-string": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -10811,6 +10977,33 @@ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, + "node_modules/load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -10858,12 +11051,6 @@ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, - "node_modules/lodash.cond": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", - "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", - "dev": true - }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -11902,6 +12089,33 @@ "node": ">=6" } }, + "node_modules/normalize-package-data": { + "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, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -12210,6 +12424,15 @@ "node": ">=0.10.0" } }, + "node_modules/object-inspect": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", + "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object-is": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", @@ -12277,6 +12500,24 @@ "node": ">=0.10.0" } }, + "node_modules/object.values": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -12963,43 +13204,6 @@ "node": ">=4" } }, - "node_modules/pkg-up": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", - "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=", - "dev": true, - "dependencies": { - "find-up": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/pnp-webpack-plugin": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", @@ -14328,6 +14532,45 @@ "npm-normalize-package-bin": "^1.0.1" } }, + "node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "dependencies": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "dependencies": { + "pify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -15976,6 +16219,16 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", @@ -16466,6 +16719,32 @@ "node": ">=8" } }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -16478,6 +16757,15 @@ "node": ">=6" } }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -17226,6 +17514,30 @@ } } }, + "node_modules/tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, "node_modules/tslib": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", @@ -17355,6 +17667,21 @@ "node": "*" } }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -17640,6 +17967,16 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "node_modules/validate-npm-package-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", @@ -19610,6 +19947,22 @@ "which": "bin/which" } }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -21575,14 +21928,12 @@ "@ngx-translate/core": { "version": "12.1.2", "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-12.1.2.tgz", - "integrity": "sha512-ZudJsqIxTKlLmPoqK8gJY3UpMGujR0Xm7HfXL6AR79yGRS23QqpjAhMfx4v5qUCcHMmQ9/78bW8QJLfp31c7vQ==", - "requires": {} + "integrity": "sha512-ZudJsqIxTKlLmPoqK8gJY3UpMGujR0Xm7HfXL6AR79yGRS23QqpjAhMfx4v5qUCcHMmQ9/78bW8QJLfp31c7vQ==" }, "@ngx-translate/http-loader": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-5.0.0.tgz", - "integrity": "sha512-8+aV7N52qed+6t4LIu4Yru/PkeBX4TR2ioXGwXzQE5syqSLTj/8TgKQIi3i2Z61ZhPxQG1qrGbapUoGQzUDVeg==", - "requires": {} + "integrity": "sha512-8+aV7N52qed+6t4LIu4Yru/PkeBX4TR2ioXGwXzQE5syqSLTj/8TgKQIi3i2Z61ZhPxQG1qrGbapUoGQzUDVeg==" }, "@nodelib/fs.scandir": { "version": "2.1.4", @@ -22136,6 +22487,12 @@ "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", "dev": true }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, "@types/jsonld": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@types/jsonld/-/jsonld-1.5.5.tgz", @@ -22722,8 +23079,7 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true, - "requires": {} + "dev": true }, "adjust-sourcemap-loader": { "version": "3.0.0", @@ -22786,15 +23142,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "requires": {} + "dev": true }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "alphanum-sort": { "version": "1.0.2", @@ -22974,6 +23328,19 @@ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true }, + "array-includes": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.5" + } + }, "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -22992,6 +23359,17 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, + "array.prototype.flat": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -23543,12 +23921,6 @@ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -23724,8 +24096,7 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", - "dev": true, - "requires": {} + "dev": true }, "ckeditor5-custom-build": { "version": "git+ssh://git@github.com/dasch-swiss/ckeditor_custom_build.git#c3c67816fd7fa7e7dfd9295ef99a5e49ca431876", @@ -23895,6 +24266,8 @@ "integrity": "sha512-v3+E0Ucu2xWJMOJ2fA/q9pDT/hlxHftHGPUay1/1cTgyPV5JTHFdO9hqo837Sx2s9vKBMTt5gO+lhF95PO6J+g==", "dev": true, "requires": { + "@angular/compiler": "9.0.0", + "@angular/core": "9.0.0", "app-root-path": "^3.0.0", "aria-query": "^3.0.0", "axobject-query": "2.0.2", @@ -23910,18 +24283,16 @@ }, "dependencies": { "@angular/compiler": { - "version": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz", "integrity": "sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==", - "dev": true, - "peer": true, - "requires": {} + "dev": true }, "@angular/core": { - "version": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==", - "dev": true, - "peer": true, - "requires": {} + "dev": true }, "source-map": { "version": "0.5.7", @@ -24755,8 +25126,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.0.tgz", "integrity": "sha512-xvxmTszdrvSyTACdPe8VU5J6p4sm3egpgw54dILvNqt5eBUv6TFjACLhSxtRuEsxYrgy8uDy269YjScO5aKbGA==", - "dev": true, - "requires": {} + "dev": true }, "csso": { "version": "4.2.0", @@ -25648,6 +26018,41 @@ "is-arrayish": "^0.2.1" } }, + "es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "es5-ext": { "version": "0.10.53", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", @@ -25806,14 +26211,13 @@ } }, "eslint-import-resolver-node": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz", - "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", "dev": true, "requires": { - "debug": "^2.2.0", - "object-assign": "^4.0.1", - "resolve": "^1.1.6" + "debug": "^2.6.9", + "resolve": "^1.13.1" }, "dependencies": { "debug": { @@ -25867,21 +26271,24 @@ "dev": true }, "eslint-plugin-import": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz", - "integrity": "sha1-crowb60wXWfEgWNIpGmaQimsi04=", + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", "dev": true, "requires": { - "builtin-modules": "^1.1.1", + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", "contains-path": "^0.1.0", - "debug": "^2.2.0", + "debug": "^2.6.9", "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.2.0", - "eslint-module-utils": "^2.0.0", - "has": "^1.0.1", - "lodash.cond": "^4.3.0", - "minimatch": "^3.0.3", - "pkg-up": "^1.0.0" + "eslint-import-resolver-node": "^0.3.4", + "eslint-module-utils": "^2.6.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.1", + "read-pkg-up": "^2.0.0", + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" }, "dependencies": { "debug": { @@ -25937,14 +26344,6 @@ } } }, - "eslint-plugin-prefer-arrow": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz", - "integrity": "sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ==", - "dev": true, - "peer": true, - "requires": {} - }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -27039,6 +27438,12 @@ } } }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -27457,8 +27862,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} + "dev": true }, "ieee754": { "version": "1.2.1", @@ -27784,6 +28188,12 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-bigint": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", + "dev": true + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -27793,12 +28203,27 @@ "binary-extensions": "^2.0.0" } }, + "is-boolean-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, "is-color-stop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", @@ -27840,9 +28265,9 @@ } }, "is-date-object": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.3.tgz", - "integrity": "sha512-tDpEUInNcy2Yw3lNSepK3Wdw1RnXLcIVienz6Ou631Acl15cJyRWK4dgA1vCmOEgIbtOV0W7MHg+AR2Gdg1NXQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", "dev": true }, "is-descriptor": { @@ -27904,12 +28329,24 @@ "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", "dev": true }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-number-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", + "dev": true + }, "is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -27950,13 +28387,13 @@ } }, "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.2" } }, "is-resolvable": { @@ -27971,6 +28408,21 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, + "is-string": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -28493,8 +28945,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.6.0.tgz", "integrity": "sha512-ELO9yf0cNqpzaNLsfFgXd/wxZVYkE2+ECUwhMHUD4PZ17kcsPsYsVyjquiRqyMn2jkd2sHt0IeMyAyq1MC23Fw==", - "dev": true, - "requires": {} + "dev": true }, "karma-source-map-support": { "version": "1.4.0", @@ -28665,6 +29116,29 @@ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + } + } + }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -28703,12 +29177,6 @@ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, - "lodash.cond": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", - "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", - "dev": true - }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -29553,6 +30021,32 @@ "abbrev": "1" } }, + "normalize-package-data": { + "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", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -29793,6 +30287,12 @@ } } }, + "object-inspect": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", + "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", + "dev": true + }, "object-is": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", @@ -29839,6 +30339,18 @@ "isobject": "^3.0.1" } }, + "object.values": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "has": "^1.0.3" + } + }, "obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -30388,36 +30900,6 @@ "find-up": "^2.1.0" } }, - "pkg-up": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", - "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=", - "dev": true, - "requires": { - "find-up": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - } - } - }, "pnp-webpack-plugin": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", @@ -30535,29 +31017,25 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.0.tgz", "integrity": "sha512-Umig6Gxs8m20RihiXY6QkePd6mp4FxkA1Dg+f/Kd6uw0gEMfKRjDeQOyFkLibexbJJGHpE3lrN/Q0R9SMrUMbQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-duplicates": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.0.tgz", "integrity": "sha512-vEJJ+Y3pFUnO1FyCBA6PSisGjHtnphL3V6GsNvkASq/VkP3OX5/No5RYXXLxHa2QegStNzg6HYrYdo71uR4caQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-empty": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.0.tgz", "integrity": "sha512-+wigy099Y1xZxG36WG5L1f2zeH1oicntkJEW4TDIqKKDO2g9XVB3OhoiHTu08rDEjLnbcab4rw0BAccwi2VjiQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-overridden": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.0.tgz", "integrity": "sha512-hybnScTaZM2iEA6kzVQ6Spozy7kVdLw+lGw8hftLlBEzt93uzXoltkYp9u0tI8xbfhxDLTOOzHsHQCkYdmzRUg==", - "dev": true, - "requires": {} + "dev": true }, "postcss-import": { "version": "14.0.0", @@ -30689,8 +31167,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -30725,8 +31202,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.0.tgz", "integrity": "sha512-pqsCkgo9KmQP0ew6DqSA+uP9YN6EfsW20pQ3JU5JoQge09Z6Too4qU0TNDsTNWuEaP8SWsMp+19l15210MsDZQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-normalize-display-values": { "version": "5.0.0", @@ -31374,6 +31850,38 @@ "npm-normalize-package-bin": "^1.0.1" } }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "dependencies": { + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + } + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -32712,6 +33220,16 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, "spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", @@ -33117,6 +33635,26 @@ } } }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -33126,6 +33664,12 @@ "ansi-regex": "^4.1.0" } }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -33519,8 +34063,7 @@ "three-spritetext": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/three-spritetext/-/three-spritetext-1.6.2.tgz", - "integrity": "sha512-VALj40t81Z6x/fDnY/tts8QU+mBl77bxoynBbcn/DW4oxfzZSwjaOfkQOe0jYpLoK2vtP0bAULvGgwIYnsN6oQ==", - "requires": {} + "integrity": "sha512-VALj40t81Z6x/fDnY/tts8QU+mBl77bxoynBbcn/DW4oxfzZSwjaOfkQOe0jYpLoK2vtP0bAULvGgwIYnsN6oQ==" }, "through": { "version": "2.3.8", @@ -33697,6 +34240,29 @@ "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", "dev": true }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, "tslib": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", @@ -33787,6 +34353,18 @@ "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==", "dev": true }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -34031,6 +34609,16 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "validate-npm-package-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", @@ -35627,6 +36215,19 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -35809,8 +36410,7 @@ "version": "7.4.5", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", - "dev": true, - "requires": {} + "dev": true }, "xml2js": { "version": "0.4.23", diff --git a/src/app/main/dialog/dialog.component.html b/src/app/main/dialog/dialog.component.html index 4d8c667ff9..53b0529374 100644 --- a/src/app/main/dialog/dialog.component.html +++ b/src/app/main/dialog/dialog.component.html @@ -6,7 +6,7 @@ - + @@ -99,7 +99,7 @@
- +
@@ -141,7 +141,7 @@
-
@@ -248,9 +248,9 @@ -
+
-
@@ -289,14 +289,14 @@
- +
- +
diff --git a/src/app/main/dialog/dialog.component.spec.ts b/src/app/main/dialog/dialog.component.spec.ts index 1015c16195..66123239f1 100644 --- a/src/app/main/dialog/dialog.component.spec.ts +++ b/src/app/main/dialog/dialog.component.spec.ts @@ -1,3 +1,4 @@ +import { CommonModule } from '@angular/common'; import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; import { ReactiveFormsModule } from '@angular/forms'; import { MatAutocompleteModule } from '@angular/material/autocomplete'; @@ -52,6 +53,7 @@ describe('DialogComponent', () => { PropertyFormComponent ], imports: [ + CommonModule, DspActionModule, MatAutocompleteModule, MatButtonModule, diff --git a/src/app/main/dialog/dialog.component.ts b/src/app/main/dialog/dialog.component.ts index 84fa8a5505..73d19590e2 100644 --- a/src/app/main/dialog/dialog.component.ts +++ b/src/app/main/dialog/dialog.component.ts @@ -1,5 +1,6 @@ import { Component, Inject, OnInit } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { PropertyInfoObject } from 'src/app/project/ontology/default-data/default-properties'; export interface DialogData { mode: string; // switch mode @@ -10,6 +11,10 @@ export interface DialogData { comment?: string; name?: string; existing?: string[]; + propInfo?: PropertyInfoObject; + position?: number; + parentIri?: string; + projectCode?: string; } @Component({ diff --git a/src/app/material-module.ts b/src/app/material-module.ts index ca30c7aeba..cfa42c6bad 100644 --- a/src/app/material-module.ts +++ b/src/app/material-module.ts @@ -11,6 +11,7 @@ import { MatChipsModule } from '@angular/material/chips'; import { MatDatepickerModule } from '@angular/material/datepicker'; import { MatDialogModule } from '@angular/material/dialog'; import { MatExpansionModule } from '@angular/material/expansion'; +import { MatFormFieldModule } from '@angular/material/form-field'; import { MatGridListModule } from '@angular/material/grid-list'; import { MatIconModule } from '@angular/material/icon'; import { MatInputModule } from '@angular/material/input'; @@ -43,6 +44,7 @@ const matModules = [ MatDatepickerModule, MatDialogModule, MatExpansionModule, + MatFormFieldModule, MatGridListModule, MatIconModule, MatInputModule, diff --git a/src/app/project/board/board.component.ts b/src/app/project/board/board.component.ts index 48947edf65..0963bb2579 100644 --- a/src/app/project/board/board.component.ts +++ b/src/app/project/board/board.component.ts @@ -43,7 +43,7 @@ export class BoardComponent implements OnInit { projectAdmin = false; // project shortcode; as identifier in project cache service - projectcode: string; + projectCode: string; // project data project: ReadProject; @@ -77,11 +77,11 @@ export class BoardComponent implements OnInit { ) { // get the shortcode of the current project this._route.parent.paramMap.subscribe((params: Params) => { - this.projectcode = params.get('shortcode'); + this.projectCode = params.get('shortcode'); }); // set the page title - this._titleService.setTitle('Project ' + this.projectcode); + this._titleService.setTitle('Project ' + this.projectCode); } ngOnInit() { @@ -101,7 +101,7 @@ export class BoardComponent implements OnInit { getProject() { // get the project data from cache - this._cache.get(this.projectcode).subscribe( + this._cache.get(this.projectCode).subscribe( (response: ReadProject) => { this.project = response; diff --git a/src/app/project/board/dataset-tab-view/dataset-tab-view.component.html b/src/app/project/board/dataset-tab-view/dataset-tab-view.component.html index dc10a07dbb..673aab2d4f 100644 --- a/src/app/project/board/dataset-tab-view/dataset-tab-view.component.html +++ b/src/app/project/board/dataset-tab-view/dataset-tab-view.component.html @@ -9,7 +9,7 @@

Selected dataset: {{ metadata.title }}

-
+

diff --git a/src/app/project/board/dataset-tab-view/dataset-tab-view.component.ts b/src/app/project/board/dataset-tab-view/dataset-tab-view.component.ts index fd10fc5057..87bb381f60 100644 --- a/src/app/project/board/dataset-tab-view/dataset-tab-view.component.ts +++ b/src/app/project/board/dataset-tab-view/dataset-tab-view.component.ts @@ -1,4 +1,4 @@ -import { Component, Input } from '@angular/core'; +import { Component, Input, OnInit } from '@angular/core'; import { Dataset } from '@dasch-swiss/dsp-js'; @Component({ @@ -6,7 +6,7 @@ import { Dataset } from '@dasch-swiss/dsp-js'; templateUrl: './dataset-tab-view.component.html', styleUrls: ['./dataset-tab-view.component.scss'] }) -export class DatasetTabViewComponent { +export class DatasetTabViewComponent implements OnInit { // metadata input object @Input() metadata: Dataset; @@ -14,6 +14,8 @@ export class DatasetTabViewComponent { // number of datasets available for this project @Input() noOfDatasets: number; + metadataObject: {[key: string]: any}; + // metadata keys that we do not want to display excludeKeys = ['project', 'qualifiedAttribution']; @@ -22,4 +24,8 @@ export class DatasetTabViewComponent { // date keys from metadata object for formatting dateKeys = ['dateCreated', 'dateModified', 'datePublished']; + + ngOnInit() { + this.metadataObject = this.metadata; + } } diff --git a/src/app/project/board/project-tab-view/project-tab-view.component.html b/src/app/project/board/project-tab-view/project-tab-view.component.html index dcc11ff2ae..d032629e55 100644 --- a/src/app/project/board/project-tab-view/project-tab-view.component.html +++ b/src/app/project/board/project-tab-view/project-tab-view.component.html @@ -2,7 +2,7 @@
-
+

diff --git a/src/app/project/board/project-tab-view/project-tab-view.component.ts b/src/app/project/board/project-tab-view/project-tab-view.component.ts index f776a38eaf..72befa6878 100644 --- a/src/app/project/board/project-tab-view/project-tab-view.component.ts +++ b/src/app/project/board/project-tab-view/project-tab-view.component.ts @@ -1,7 +1,7 @@ import { Component, Input, OnInit } from '@angular/core'; import { DataManagementPlan, - Grant, IId, Organization, Person, SingleProject + Grant, IId, IUrl, Organization, Person, Place, SingleProject } from '@dasch-swiss/dsp-js'; import { MetadataService } from '../dataset-metadata.service'; @@ -16,6 +16,8 @@ export class ProjectTabViewComponent implements OnInit { @Input() selectedProject: SingleProject; @Input() subProperties: Object; + projectObject: {[key: string]: any}; + // metadata keys that we do not want to display in template excludeKeys = ['contactPoint']; @@ -36,6 +38,8 @@ export class ProjectTabViewComponent implements OnInit { ngOnInit() { + this.projectObject = this.selectedProject; + // get DMP if (this.selectedProject.dataManagementPlan) { this.dmps = this.getDMP(this.selectedProject.dataManagementPlan); diff --git a/src/app/project/collaboration/add-user/add-user.component.ts b/src/app/project/collaboration/add-user/add-user.component.ts index 7fb21bc354..8d2b91eeb3 100644 --- a/src/app/project/collaboration/add-user/add-user.component.ts +++ b/src/app/project/collaboration/add-user/add-user.component.ts @@ -30,7 +30,7 @@ export class AddUserComponent implements OnInit { * project name to get existing team members * or to know where to add selected user */ - @Input() projectcode: string; + @Input() projectCode: string; /** * event emitter, when the selected user will be added to the list @@ -141,7 +141,7 @@ export class AddUserComponent implements OnInit { const members: string[] = []; // get all members of this project; response from cache - this._cache.get('members_of_' + this.projectcode, this._dspApiConnection.admin.projectsEndpoint.getProjectMembersByShortcode(this.projectcode)).subscribe( + this._cache.get('members_of_' + this.projectCode, this._dspApiConnection.admin.projectsEndpoint.getProjectMembersByShortcode(this.projectCode)).subscribe( (res: ApiResponseData) => { for (const m of res.body.members) { members.push(m.id); @@ -291,14 +291,14 @@ export class AddUserComponent implements OnInit { this.selectedUser = response.body.user; // the following request should never start - this.isAlreadyMember = (!!response.body.user.projects.find(p => p.shortcode === this.projectcode)); + this.isAlreadyMember = (!!response.body.user.projects.find(p => p.shortcode === this.projectCode)); if (!this.isAlreadyMember) { this.loading = true; - // get project iri by projectcode - this._cache.get(this.projectcode).subscribe( + // get project iri by projectCode + this._cache.get(this.projectCode).subscribe( (p: ReadProject) => { // add user to project this._dspApiConnection.admin.usersEndpoint.addUserToProjectMembership(this.selectedUser.id, p.id).subscribe( @@ -355,7 +355,7 @@ export class AddUserComponent implements OnInit { position: { top: '112px' }, - data: { project: this.projectcode, name: this.selectUserForm.controls['username'].value, mode: mode } + data: { project: this.projectCode, name: this.selectUserForm.controls['username'].value, mode: mode } }; const dialogRef = this._dialog.open(DialogComponent, dialogConfig); diff --git a/src/app/project/collaboration/collaboration.component.html b/src/app/project/collaboration/collaboration.component.html index 22c1ee423f..8aad59d9ff 100644 --- a/src/app/project/collaboration/collaboration.component.html +++ b/src/app/project/collaboration/collaboration.component.html @@ -1,6 +1,6 @@
- diff --git a/src/app/project/collaboration/collaboration.component.ts b/src/app/project/collaboration/collaboration.component.ts index 30935ab5e6..d704421bd4 100644 --- a/src/app/project/collaboration/collaboration.component.ts +++ b/src/app/project/collaboration/collaboration.component.ts @@ -33,7 +33,7 @@ export class CollaborationComponent implements OnInit { projectAdmin = false; // project shortcode; as identifier in project cache service - projectcode: string; + projectCode: string; // project data project: ReadProject; @@ -57,11 +57,11 @@ export class CollaborationComponent implements OnInit { // get the shortcode of the current project this._route.parent.paramMap.subscribe((params: Params) => { - this.projectcode = params.get('shortcode'); + this.projectCode = params.get('shortcode'); }); // set the page title - this._titleService.setTitle('Project ' + this.projectcode + ' | Collaboration'); + this._titleService.setTitle('Project ' + this.projectCode + ' | Collaboration'); // --> TODO go back to project page, if the logged-in user has no admin rights // is the logged-in user a project admin? @@ -86,7 +86,7 @@ export class CollaborationComponent implements OnInit { this.sysAdmin = this.session.user.sysAdmin; // get the project data from cache - this._cache.get(this.projectcode).subscribe( + this._cache.get(this.projectCode).subscribe( (response: ReadProject) => { this.project = response; @@ -112,10 +112,10 @@ export class CollaborationComponent implements OnInit { */ initList(): void { // set the cache - this._cache.get('members_of_' + this.projectcode, this._dspApiConnection.admin.projectsEndpoint.getProjectMembersByShortcode(this.projectcode)); + this._cache.get('members_of_' + this.projectCode, this._dspApiConnection.admin.projectsEndpoint.getProjectMembersByShortcode(this.projectCode)); // get the project data from cache - this._cache.get('members_of_' + this.projectcode, this._dspApiConnection.admin.projectsEndpoint.getProjectMembersByShortcode(this.projectcode)).subscribe( + this._cache.get('members_of_' + this.projectCode, this._dspApiConnection.admin.projectsEndpoint.getProjectMembersByShortcode(this.projectCode)).subscribe( (response: ApiResponseData) => { this.projectMembers = response.body.members; @@ -148,7 +148,7 @@ export class CollaborationComponent implements OnInit { // referesh the component this.loading = true; // update the cache - this._cache.del('members_of_' + this.projectcode); + this._cache.del('members_of_' + this.projectCode); this.initList(); diff --git a/src/app/project/collaboration/select-group/select-group.component.ts b/src/app/project/collaboration/select-group/select-group.component.ts index edd9e2b4e3..7b40525821 100644 --- a/src/app/project/collaboration/select-group/select-group.component.ts +++ b/src/app/project/collaboration/select-group/select-group.component.ts @@ -13,7 +13,7 @@ import { ErrorHandlerService } from 'src/app/main/error/error-handler.service'; export class SelectGroupComponent implements OnInit { // project short code - @Input() projectcode: string; + @Input() projectCode: string; // project iri @Input() projectid: string; @@ -50,10 +50,10 @@ export class SelectGroupComponent implements OnInit { setList() { // set cache for groups - this._cache.get('groups_of_' + this.projectcode, this._dspApiConnection.admin.groupsEndpoint.getGroups()); + this._cache.get('groups_of_' + this.projectCode, this._dspApiConnection.admin.groupsEndpoint.getGroups()); // update list of groups with the project specific groups - this._cache.get('groups_of_' + this.projectcode, this._dspApiConnection.admin.groupsEndpoint.getGroups()).subscribe( + this._cache.get('groups_of_' + this.projectCode, this._dspApiConnection.admin.groupsEndpoint.getGroups()).subscribe( (response: ApiResponseData) => { for (const group of response.body.groups) { if (group.project.id === this.projectid) { diff --git a/src/app/project/list/list-info-form/list-info-form.component.spec.ts b/src/app/project/list/list-info-form/list-info-form.component.spec.ts index 061deae18f..b67d0438aa 100644 --- a/src/app/project/list/list-info-form/list-info-form.component.spec.ts +++ b/src/app/project/list/list-info-form/list-info-form.component.spec.ts @@ -47,7 +47,7 @@ class TestHostUpdateListComponent { * test host component to simulate parent component for creating a new list. */ @Component({ - template: '' + template: '' }) class TestHostCreateListComponent { @@ -55,7 +55,7 @@ class TestHostCreateListComponent { mode = 'create'; - projectcode = '0001'; + projectCode = '0001'; projectIri = 'http://rdfh.ch/projects/0001'; diff --git a/src/app/project/list/list-info-form/list-info-form.component.ts b/src/app/project/list/list-info-form/list-info-form.component.ts index b2600efc5b..0f85179880 100644 --- a/src/app/project/list/list-info-form/list-info-form.component.ts +++ b/src/app/project/list/list-info-form/list-info-form.component.ts @@ -28,7 +28,7 @@ export class ListInfoFormComponent implements OnInit { @Input() mode: 'create' | 'update'; // project short code - @Input() projectcode: string; + @Input() projectCode: string; @Input() projectIri: string; diff --git a/src/app/project/list/list-item-form/edit-list-item/edit-list-item.component.ts b/src/app/project/list/list-item-form/edit-list-item/edit-list-item.component.ts index 47ebc63883..625d1756bc 100644 --- a/src/app/project/list/list-item-form/edit-list-item/edit-list-item.component.ts +++ b/src/app/project/list/list-item-form/edit-list-item/edit-list-item.component.ts @@ -8,10 +8,12 @@ import { List, ListNodeInfo, ListNodeInfoResponse, + ReadProject, StringLiteral, UpdateChildNodeRequest } from '@dasch-swiss/dsp-js'; import { DspApiConnectionToken } from '@dasch-swiss/dsp-ui'; +import { CacheService } from 'src/app/main/cache/cache.service'; import { ErrorHandlerService } from 'src/app/main/error/error-handler.service'; @Component({ @@ -64,12 +66,23 @@ export class EditListItemComponent implements OnInit { constructor( @Inject(DspApiConnectionToken) private _dspApiConnection: KnoraApiConnection, + private _cache: CacheService, private _errorHandler: ErrorHandlerService ) { } ngOnInit(): void { this.loading = true; + // get the project data from cache + this._cache.get(this.projectCode).subscribe( + (response: ReadProject) => { + this.projectIri = response.id; + }, + (error: ApiResponseError) => { + this._errorHandler.showMessage(error); + } + ); + // if updating a node, get the existing node info if (this.mode === 'update') { this._dspApiConnection.admin.listsEndpoint.getListNodeInfo(this.iri).subscribe( diff --git a/src/app/project/list/list-item-form/list-item-form.component.spec.ts b/src/app/project/list/list-item-form/list-item-form.component.spec.ts index 5eb669bccf..f8b470ade0 100644 --- a/src/app/project/list/list-item-form/list-item-form.component.spec.ts +++ b/src/app/project/list/list-item-form/list-item-form.component.spec.ts @@ -32,7 +32,7 @@ import { ListItemFormComponent, ListNodeOperation } from './list-item-form.compo [language]="language" (refreshParent)="updateView($event)" [projectIri]="projectIri" - [projectcode]="projectCode" + [projectCode]="projectCode" [labels]="labels"> ` }) diff --git a/src/app/project/list/list-item-form/list-item-form.component.ts b/src/app/project/list/list-item-form/list-item-form.component.ts index fc8f011ac2..5d50bbe58d 100644 --- a/src/app/project/list/list-item-form/list-item-form.component.ts +++ b/src/app/project/list/list-item-form/list-item-form.component.ts @@ -59,7 +59,7 @@ export class ListItemFormComponent implements OnInit { /** * project shortcode */ - @Input() projectcode?: string; + @Input() projectCode?: string; /** * project id @@ -142,7 +142,7 @@ export class ListItemFormComponent implements OnInit { const childNode: CreateChildNodeRequest = new CreateChildNodeRequest(); childNode.parentNodeIri = this.parentIri; childNode.projectIri = this.projectIri; - childNode.name = this.projectcode + '-' + Math.random().toString(36).substr(2) + Math.random().toString(36).substr(2); + childNode.name = this.projectCode + '-' + Math.random().toString(36).substr(2) + Math.random().toString(36).substr(2); // initialize labels let i = 0; @@ -222,7 +222,7 @@ export class ListItemFormComponent implements OnInit { title: mode === 'editListNode' || 'deleteListNode' ? name : '', id: iri, project: this.projectIri, - projectCode: this.projectcode, + projectCode: this.projectCode, parentIri: this.parentIri, position: this.position } diff --git a/src/app/project/list/list-item/list-item.component.html b/src/app/project/list/list-item/list-item.component.html index 561bd5f6f9..7d1f8d56cc 100644 --- a/src/app/project/list/list-item/list-item.component.html +++ b/src/app/project/list/list-item/list-item.component.html @@ -10,7 +10,7 @@ @@ -18,7 +18,7 @@ + [projectIri]="projectIri" [projectCode]="projectCode" (refreshChildren)="updateParentNodeChildren($event, node.position)"> @@ -26,14 +26,14 @@
@@ -43,7 +43,7 @@
-
diff --git a/src/app/project/list/list-item/list-item.component.spec.ts b/src/app/project/list/list-item/list-item.component.spec.ts index 1ff1d09416..8ad8cb70fa 100644 --- a/src/app/project/list/list-item/list-item.component.spec.ts +++ b/src/app/project/list/list-item/list-item.component.spec.ts @@ -22,7 +22,7 @@ import { ListItemComponent } from './list-item.component'; [list]="list" [parentIri]="parentIri" [projectIri]="projectIri" - [projectcode]="projectCode"> + [projectCode]="projectCode"> ` }) class TestHostComponent implements OnInit { diff --git a/src/app/project/list/list-item/list-item.component.ts b/src/app/project/list/list-item/list-item.component.ts index 67f38b3d89..6f6e7c6ad0 100644 --- a/src/app/project/list/list-item/list-item.component.ts +++ b/src/app/project/list/list-item/list-item.component.ts @@ -24,7 +24,7 @@ export class ListItemComponent implements OnInit { @Input() parentIri?: string; - @Input() projectcode: string; + @Input() projectCode: string; @Input() projectIri: string; diff --git a/src/app/project/list/list.component.html b/src/app/project/list/list.component.html index 356c4f59da..6b48ef5320 100644 --- a/src/app/project/list/list.component.html +++ b/src/app/project/list/list.component.html @@ -79,7 +79,7 @@

- +

diff --git a/src/app/project/list/list.component.ts b/src/app/project/list/list.component.ts index 7d109045d8..5b16cf76f4 100644 --- a/src/app/project/list/list.component.ts +++ b/src/app/project/list/list.component.ts @@ -38,7 +38,7 @@ export class ListComponent implements OnInit { projectAdmin = false; // project shortcode; as identifier in project cache service - projectcode: string; + projectCode: string; // project data project: ReadProject; @@ -83,7 +83,7 @@ export class ListComponent implements OnInit { // get the shortcode of the current project this._route.parent.paramMap.subscribe((params: Params) => { - this.projectcode = params.get('shortcode'); + this.projectCode = params.get('shortcode'); }); // get list iri from route @@ -93,9 +93,9 @@ export class ListComponent implements OnInit { // set the page title if (this.listIri) { - this._titleService.setTitle('Project ' + this.projectcode + ' | List'); + this._titleService.setTitle('Project ' + this.projectCode + ' | List'); } else { - this._titleService.setTitle('Project ' + this.projectcode + ' | Lists'); + this._titleService.setTitle('Project ' + this.projectCode + ' | Lists'); } } @@ -110,7 +110,7 @@ export class ListComponent implements OnInit { this.sysAdmin = this.session.user.sysAdmin; // get the project data from cache - this._cache.get(this.projectcode).subscribe( + this._cache.get(this.projectCode).subscribe( (response: ReadProject) => { this.project = response; @@ -186,7 +186,7 @@ export class ListComponent implements OnInit { this.list = this.lists.find(i => i.id === id); - const goto = 'project/' + this.projectcode + '/lists/' + encodeURIComponent(id); + const goto = 'project/' + this.projectCode + '/lists/' + encodeURIComponent(id); this._router.navigateByUrl(goto, { skipLocationChange: false }); setTimeout(() => { diff --git a/src/app/project/ontology/ontology-form/ontology-form.component.html b/src/app/project/ontology/ontology-form/ontology-form.component.html index 305f09c1c1..b0cd1fe52a 100644 --- a/src/app/project/ontology/ontology-form/ontology-form.component.html +++ b/src/app/project/ontology/ontology-form/ontology-form.component.html @@ -24,7 +24,7 @@ diff --git a/src/app/project/ontology/ontology.component.html b/src/app/project/ontology/ontology.component.html index 97cf903641..db135d6168 100644 --- a/src/app/project/ontology/ontology.component.html +++ b/src/app/project/ontology/ontology.component.html @@ -140,7 +140,7 @@

@@ -193,7 +193,6 @@

objectType is not a linkValue (otherwise we have the property twice) --> diff --git a/src/app/project/ontology/ontology.component.ts b/src/app/project/ontology/ontology.component.ts index 75abde78d9..9df70bb29d 100644 --- a/src/app/project/ontology/ontology.component.ts +++ b/src/app/project/ontology/ontology.component.ts @@ -372,7 +372,7 @@ export class OntologyComponent implements OnInit { position: { top: '112px' }, - data: { id: resClassInfo.iri, title: resClassInfo.label, subtitle: 'Customize resource class', mode: mode, project: this.project.id } + data: { id: resClassInfo.iri, title: resClassInfo.label, subtitle: 'Customize resource class', mode: mode, project: this.projectCode } }; const dialogRef = this._dialog.open( diff --git a/src/app/project/ontology/property-form/property-form.component.spec.ts b/src/app/project/ontology/property-form/property-form.component.spec.ts index 33984178b7..b99180fd0b 100644 --- a/src/app/project/ontology/property-form/property-form.component.spec.ts +++ b/src/app/project/ontology/property-form/property-form.component.spec.ts @@ -247,7 +247,7 @@ describe('PropertyFormComponent', () => { const hostCompDe = simpleTextHostFixture.debugElement; const submitButton: DebugElement = hostCompDe.query(By.css('button.submit')); - expect(submitButton.nativeElement.innerText).toEqual(' Update '); + expect(submitButton.nativeElement.innerText).toContain('Update'); simpleTextHostComponent.propertyFormComponent.handleData([], 'labels'); simpleTextHostFixture.detectChanges(); diff --git a/src/app/project/ontology/resource-class-form/resource-class-form.component.html b/src/app/project/ontology/resource-class-form/resource-class-form.component.html index 2fba513d57..5733370d02 100644 --- a/src/app/project/ontology/resource-class-form/resource-class-form.component.html +++ b/src/app/project/ontology/resource-class-form/resource-class-form.component.html @@ -8,7 +8,7 @@
@@ -39,7 +39,7 @@
diff --git a/src/app/project/project-form/project-form.component.ts b/src/app/project/project-form/project-form.component.ts index 7e66ce86f1..2f625ac270 100644 --- a/src/app/project/project-form/project-form.component.ts +++ b/src/app/project/project-form/project-form.component.ts @@ -28,10 +28,10 @@ export class ProjectFormComponent implements OnInit { /** * param of project form component: - * Optional projectcode; if exists we are in edit mode + * Optional projectCode; if exists we are in edit mode * otherwise we build empty form to create new project */ - @Input() projectcode?: string; + @Input() projectCode?: string; /** * output of project form component: @@ -143,12 +143,12 @@ export class ProjectFormComponent implements OnInit { ngOnInit() { - // if projectcode exists, we are in edit mode + // if projectCode exists, we are in edit mode // otherwise create new project - if (this.projectcode) { + if (this.projectCode) { // edit existing project // get origin project data first - this._dspApiConnection.admin.projectsEndpoint.getProjectByShortcode(this.projectcode).subscribe( + this._dspApiConnection.admin.projectsEndpoint.getProjectByShortcode(this.projectCode).subscribe( (response: ApiResponseData) => { // save the origin project data in case of reset this.project = response.body.project; @@ -204,13 +204,13 @@ export class ProjectFormComponent implements OnInit { buildForm(project: ReadProject): void { // if project is defined, we're in the edit mode // otherwise "create new project" mode is active - // edit mode is true, when a projectcode exists + // edit mode is true, when a projectCode exists // disabled is true, if project status is false (= archived); const disabled = (!project.status); // separate description - if (!this.projectcode) { + if (!this.projectCode) { this.description = [new StringLiteral()]; this.formErrors['description'] = ''; } @@ -220,7 +220,7 @@ export class ProjectFormComponent implements OnInit { this.form = this._fb.group({ 'shortname': new FormControl({ - value: project.shortname, disabled: (this.projectcode) + value: project.shortname, disabled: (this.projectCode) }, [ Validators.required, Validators.minLength(this.shortnameMinLength), @@ -234,7 +234,7 @@ export class ProjectFormComponent implements OnInit { Validators.required ]), 'shortcode': new FormControl({ - value: project.shortcode, disabled: ((this.projectcode) && project.shortcode !== null) + value: project.shortcode, disabled: ((this.projectCode) && project.shortcode !== null) }, [ Validators.required, Validators.minLength(this.shortcodeMinLength), @@ -342,7 +342,7 @@ export class ProjectFormComponent implements OnInit { // }]); - if (this.projectcode) { + if (this.projectCode) { const projectData: UpdateProjectRequest = new UpdateProjectRequest(); projectData.description = [new StringLiteral()]; // projectData.description = this.description; @@ -367,7 +367,7 @@ export class ProjectFormComponent implements OnInit { this.buildForm(this.project); // update cache - this._cache.set(this.projectcode, response); + this._cache.set(this.projectCode, response); this.success = true; @@ -508,12 +508,12 @@ export class ProjectFormComponent implements OnInit { // refresh the component this.loading = true; // update the cache - this._cache.del(this.projectcode); - this._dspApiConnection.admin.projectsEndpoint.getProjectByShortcode(this.projectcode).subscribe( + this._cache.del(this.projectCode); + this._dspApiConnection.admin.projectsEndpoint.getProjectByShortcode(this.projectCode).subscribe( (response: ApiResponseData) => { this.project = response.body.project; - this._cache.set(this.projectcode, this.project); + this._cache.set(this.projectCode, this.project); this.buildForm(this.project); window.location.reload(); diff --git a/src/app/project/project.component.ts b/src/app/project/project.component.ts index 0f97397391..ed5d8db544 100644 --- a/src/app/project/project.component.ts +++ b/src/app/project/project.component.ts @@ -25,7 +25,7 @@ export class ProjectComponent implements OnInit { projectAdmin = false; // project shortcode; as identifier in project cache service - projectcode: string; + projectCode: string; // project data project: ReadProject; @@ -45,16 +45,16 @@ export class ProjectComponent implements OnInit { private _titleService: Title ) { // get the shortcode of the current project - this.projectcode = this._route.snapshot.params.shortcode; + this.projectCode = this._route.snapshot.params.shortcode; // get session this.session = this._session.getSession(); // set the page title - this._titleService.setTitle('Project ' + this.projectcode); + this._titleService.setTitle('Project ' + this.projectCode); // error handling in case of wrong project shortcode - this.error = this.validateShortcode(this.projectcode); + this.error = this.validateShortcode(this.projectCode); } ngOnInit() { @@ -63,11 +63,11 @@ export class ProjectComponent implements OnInit { this.loading = true; // get current project data, project members and project groups // and set the project cache here - this._dspApiConnection.admin.projectsEndpoint.getProjectByShortcode(this.projectcode).subscribe( + this._dspApiConnection.admin.projectsEndpoint.getProjectByShortcode(this.projectCode).subscribe( (response: ApiResponseData) => { this.project = response.body.project; - this._cache.set(this.projectcode, this.project); + this._cache.set(this.projectCode, this.project); if (!this.project.status) { this.color = 'warn'; @@ -89,11 +89,11 @@ export class ProjectComponent implements OnInit { // set the cache for project members and groups if (this.projectAdmin) { - this._cache.get('members_of_' + this.projectcode, this._dspApiConnection.admin.projectsEndpoint.getProjectMembersByShortcode(this.projectcode)); - this._cache.get('groups_of_' + this.projectcode, this._dspApiConnection.admin.groupsEndpoint.getGroups()); + this._cache.get('members_of_' + this.projectCode, this._dspApiConnection.admin.projectsEndpoint.getProjectMembersByShortcode(this.projectCode)); + this._cache.get('groups_of_' + this.projectCode, this._dspApiConnection.admin.groupsEndpoint.getGroups()); } - if (this._cache.has(this.projectcode)) { + if (this._cache.has(this.projectCode)) { this.loading = false; } }, diff --git a/src/app/system/projects/projects-list/projects-list.component.ts b/src/app/system/projects/projects-list/projects-list.component.ts index 8923b2cf93..0d9143f6f6 100644 --- a/src/app/system/projects/projects-list/projects-list.component.ts +++ b/src/app/system/projects/projects-list/projects-list.component.ts @@ -129,7 +129,7 @@ export class ProjectsListComponent implements OnInit { * @param code * @param page */ - openProjectPage(code: string, page: 'collaboration' | 'ontologies' | 'lists') { + openProjectPage(code: string, page?: 'collaboration' | 'ontologies' | 'lists') { this._router.navigateByUrl('/refresh', { skipLocationChange: true }).then( () => { if (page) { @@ -141,7 +141,7 @@ export class ProjectsListComponent implements OnInit { ); } - openDialog(mode: string, name: string, id?: string): void { + openDialog(mode: string, name?: string, id?: string): void { const dialogConfig: MatDialogConfig = { width: '560px', maxHeight: '80vh', diff --git a/src/app/system/projects/projects.component.ts b/src/app/system/projects/projects.component.ts index f3eba7827b..0edcd1fec4 100644 --- a/src/app/system/projects/projects.component.ts +++ b/src/app/system/projects/projects.component.ts @@ -156,7 +156,7 @@ export class ProjectsComponent implements OnInit { // referesh the component this.loading = true; // update the cache - // this._cache.del('members_of_' + this.projectcode); + // this._cache.del('members_of_' + this.projectCode); this.initList(); // refresh child component: add user diff --git a/src/app/system/users/users-list/users-list.component.html b/src/app/system/users/users-list/users-list.component.html index 4845408d93..8cf788db2b 100644 --- a/src/app/system/users/users-list/users-list.component.html +++ b/src/app/system/users/users-list/users-list.component.html @@ -22,8 +22,8 @@

- {{list.length | i18nPlural: itemPluralMapping['member']}} - {{list.length | i18nPlural: itemPluralMapping['user']}} + {{list.length | i18nPlural: itemPluralMapping['member']}} + {{list.length | i18nPlural: itemPluralMapping['user']}}

@@ -56,17 +56,17 @@
- + Admin - + System Admin - @@ -79,7 +79,7 @@
- - - - - diff --git a/src/app/system/users/users-list/users-list.component.ts b/src/app/system/users/users-list/users-list.component.ts index b1980f73a5..8e3f1a5e52 100644 --- a/src/app/system/users/users-list/users-list.component.ts +++ b/src/app/system/users/users-list/users-list.component.ts @@ -63,7 +63,7 @@ export class UsersListComponent implements OnInit { adminGroupIri: string = Constants.ProjectAdminGroupIRI; // project shortcode; as identifier in project cache service - projectcode: string; + projectCode: string; // project data project: ReadProject; @@ -105,7 +105,7 @@ export class UsersListComponent implements OnInit { // get the shortcode of the current project if (this._route.parent.paramMap) { this._route.parent.paramMap.subscribe((params: Params) => { - this.projectcode = params.get('shortcode'); + this.projectCode = params.get('shortcode'); }); } } @@ -118,10 +118,10 @@ export class UsersListComponent implements OnInit { // is the logged-in user system admin? this.sysAdmin = this.session.user.sysAdmin; - if (this.projectcode) { + if (this.projectCode) { // get the project data from cache - this._cache.get(this.projectcode).subscribe( + this._cache.get(this.projectCode).subscribe( (response: ReadProject) => { this.project = response; // is logged-in user projectAdmin? @@ -273,7 +273,7 @@ export class UsersListComponent implements OnInit { // logged-in user is NOT system admin: // go to project page and reload project admin interface this._router.navigateByUrl('/refresh', { skipLocationChange: true }).then( - () => this._router.navigate(['/project/' + this.projectcode]) + () => this._router.navigate(['/project/' + this.projectCode]) ); } @@ -324,7 +324,7 @@ export class UsersListComponent implements OnInit { * delete and reactivate user * */ - openDialog(mode: string, name: string, iri?: string): void { + openDialog(mode: string, name?: string, iri?: string): void { const dialogConfig: MatDialogConfig = { width: '560px', maxHeight: '80vh', diff --git a/src/app/user/membership/membership.component.ts b/src/app/user/membership/membership.component.ts index 0cf7e9b8f3..207d9da7b9 100644 --- a/src/app/user/membership/membership.component.ts +++ b/src/app/user/membership/membership.component.ts @@ -10,6 +10,7 @@ import { ReadUser, UserResponse } from '@dasch-swiss/dsp-js'; +import { PermissionsData } from '@dasch-swiss/dsp-js/src/models/admin/permissions-data'; import { AutocompleteItem, DspApiConnectionToken, Session } from '@dasch-swiss/dsp-ui'; import { CacheService } from 'src/app/main/cache/cache.service'; import { ErrorHandlerService } from 'src/app/main/error/error-handler.service'; @@ -124,10 +125,10 @@ export class MembershipComponent implements OnInit { // --> TODO update cache of project // get shortcode from iri; not the best way right now - const projectcode: string = iri.replace('http://rdfh.ch/projects/', ''); + const projectCode: string = iri.replace('http://rdfh.ch/projects/', ''); // reset the cache of project members - this._cache.get('members_of_' + projectcode, this._dspApiConnection.admin.projectsEndpoint.getProjectMembersByShortcode(projectcode)); + this._cache.get('members_of_' + projectCode, this._dspApiConnection.admin.projectsEndpoint.getProjectMembersByShortcode(projectCode)); } @@ -190,7 +191,7 @@ export class MembershipComponent implements OnInit { * @param [iri] project id * @returns boolean */ - userIsProjectAdmin(permissions: IPermissions, iri: string): boolean { + userIsProjectAdmin(permissions: PermissionsData, iri: string): boolean { return (permissions.groupsPerProject[iri].indexOf(Constants.ProjectAdminGroupIRI) > -1); } diff --git a/src/app/user/user-form/user-form.component.ts b/src/app/user/user-form/user-form.component.ts index 9b4cf0c0f8..aea06cb619 100644 --- a/src/app/user/user-form/user-form.component.ts +++ b/src/app/user/user-form/user-form.component.ts @@ -45,7 +45,7 @@ export class UserFormComponent implements OnInit, OnChanges { * we get a project shortcode and a name (e-mail or username) * from the "add-user-autocomplete" input */ - @Input() projectcode?: string; + @Input() projectCode?: string; @Input() name?: string; /** @@ -228,7 +228,7 @@ export class UserFormComponent implements OnInit, OnChanges { } // get parameters from url, if they exist - // this.projectcode = this._route.snapshot.queryParams['project']; + // this.projectCode = this._route.snapshot.queryParams['project']; // const name: string = this._route.snapshot.queryParams['value']; const newUser: ReadUser = new ReadUser(); @@ -420,16 +420,16 @@ export class UserFormComponent implements OnInit, OnChanges { this._cache.del('allUsers'); this._cache.get('allUsers', this._dspApiConnection.admin.usersEndpoint.getUsers()); - if (this.projectcode) { - // if a projectcode exists, add the user to the project - // get project iri by projectcode - this._cache.get(this.projectcode).subscribe( + if (this.projectCode) { + // if a projectCode exists, add the user to the project + // get project iri by projectCode + this._cache.get(this.projectCode).subscribe( (res: ReadProject) => { // add user to project this._dspApiConnection.admin.usersEndpoint.addUserToProjectMembership(this.user.id, res.id).subscribe( () => { // update project cache and member of project cache - this._cache.get('members_of_' + this.projectcode, this._dspApiConnection.admin.projectsEndpoint.getProjectMembersByShortcode(this.projectcode)); + this._cache.get('members_of_' + this.projectCode, this._dspApiConnection.admin.projectsEndpoint.getProjectMembersByShortcode(this.projectCode)); this.closeDialog.emit(this.user); this.loading = false; }, diff --git a/src/app/user/user.component.ts b/src/app/user/user.component.ts index f53c301fee..46c6837bc2 100644 --- a/src/app/user/user.component.ts +++ b/src/app/user/user.component.ts @@ -38,7 +38,7 @@ export class UserComponent implements OnInit { /* parent.paramMap.subscribe((params: Params) => { - this.projectcode = params.get('shortcode'); + this.projectCode = params.get('shortcode'); }); */ diff --git a/src/app/workspace/resource/resource-instance-form/resource-instance-form.component.spec.ts b/src/app/workspace/resource/resource-instance-form/resource-instance-form.component.spec.ts index f5717ef1af..03b14354fb 100644 --- a/src/app/workspace/resource/resource-instance-form/resource-instance-form.component.spec.ts +++ b/src/app/workspace/resource/resource-instance-form/resource-instance-form.component.spec.ts @@ -1,15 +1,18 @@ import { HarnessLoader } from '@angular/cdk/testing'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { Component, DebugElement, EventEmitter, Inject, Input, OnInit, Output, QueryList, ViewChild, ViewChildren } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; import { MatButtonHarness } from '@angular/material/button/testing'; import { MatOptionModule } from '@angular/material/core'; import { MatDialogModule } from '@angular/material/dialog'; +import { MatFormFieldModule } from '@angular/material/form-field'; import { MatSelectModule } from '@angular/material/select'; import { MatSnackBarModule } from '@angular/material/snack-bar'; import { By } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { Router } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; import { ApiResponseData, @@ -33,7 +36,7 @@ import { UsersEndpointAdmin } from '@dasch-swiss/dsp-js'; import { OntologyCache } from '@dasch-swiss/dsp-js/src/cache/ontology-cache/OntologyCache'; -import { DspApiConnectionToken, IntValueComponent, Session, SessionService, ValueService } from '@dasch-swiss/dsp-ui'; +import { DspActionModule, DspApiConnectionToken, IntValueComponent, Session, SessionService, ValueService } from '@dasch-swiss/dsp-ui'; import { TranslateModule } from '@ngx-translate/core'; import { of } from 'rxjs'; import { AjaxResponse } from 'rxjs/ajax'; @@ -263,13 +266,16 @@ describe('ResourceInstanceFormComponent', () => { MockCreateIntValueComponent ], imports: [ - RouterTestingModule, - ReactiveFormsModule, + BrowserAnimationsModule, + DspActionModule, + MatButtonModule, MatDialogModule, + MatFormFieldModule, + MatOptionModule, MatSelectModule, MatSnackBarModule, - MatOptionModule, - BrowserAnimationsModule, + ReactiveFormsModule, + RouterTestingModule, TranslateModule.forRoot() ], providers: [ diff --git a/src/app/workspace/resource/resource-properties/resource-properties.component.spec.ts b/src/app/workspace/resource/resource-properties/resource-properties.component.spec.ts index efe4386619..8aa3f8ca6e 100644 --- a/src/app/workspace/resource/resource-properties/resource-properties.component.spec.ts +++ b/src/app/workspace/resource/resource-properties/resource-properties.component.spec.ts @@ -20,8 +20,6 @@ import { DspActionModule, DspApiConfigToken, DspApiConnectionToken, - DspCoreModule, - DspViewerModule, EmitEvent, Events, PropertyInfoValues, @@ -157,6 +155,7 @@ describe('ResourcePropertiesComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ + DspActionModule, MatIconModule, MatTooltipModule ], diff --git a/src/app/workspace/resource/resource-properties/resource-properties.component.ts b/src/app/workspace/resource/resource-properties/resource-properties.component.ts index 39f8b07b1d..c92f5d64e6 100644 --- a/src/app/workspace/resource/resource-properties/resource-properties.component.ts +++ b/src/app/workspace/resource/resource-properties/resource-properties.component.ts @@ -100,7 +100,8 @@ export class ResourcePropertiesComponent implements OnInit, OnDestroy { } // listen for the AddValue event to be emitted and call hideAddValueForm() - // this.valueOperationEventSubscription = this._valueOperationEventService.on(Events.ValueAdded, () => this.hideAddValueForm()); + // this._valueOperationEventService.on(Events.ValueAdded, () => this.hideAddValueForm()) + this.valueOperationEventSubscriptions = []; // subscribe to the ValueOperationEventService and listen for an event to be emitted this.valueOperationEventSubscriptions.push(this._valueOperationEventService.on( diff --git a/tsconfig.json b/tsconfig.json index e4b5c15eba..378d43895a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -19,5 +19,10 @@ "es2018", "dom" ] + }, + "angularCompilerOptions": { + "fullTemplateTypeCheck": true, + "preserveWhitespaces": true, + "strictTemplate": true } }