diff --git a/package-lock.json b/package-lock.json index 3482170..783ed41 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,17 +8,30 @@ "name": "billibox-vue", "version": "0.1.0", "dependencies": { + "@fortawesome/fontawesome-pro": "^6.1.1", + "animate.css": "^4.1.1", + "bootstrap": "^5.1.3", "core-js": "^3.8.3", - "vue": "^3.2.13" + "fs": "^0.0.1-security", + "keycloak-js": "^17.0.1", + "vue": "^3.2.13", + "vue-class-component": "^8.0.0-0", + "vue-router": "^4.0.14", + "vuex": "^4.0.2" }, "devDependencies": { "@babel/core": "^7.12.16", "@babel/eslint-parser": "^7.12.16", + "@typescript-eslint/eslint-plugin": "^5.4.0", + "@typescript-eslint/parser": "^5.4.0", "@vue/cli-plugin-babel": "~5.0.0", "@vue/cli-plugin-eslint": "~5.0.0", + "@vue/cli-plugin-typescript": "~5.0.0", "@vue/cli-service": "~5.0.0", + "@vue/eslint-config-typescript": "^9.1.0", "eslint": "^7.32.0", - "eslint-plugin-vue": "^8.0.3" + "eslint-plugin-vue": "^8.0.3", + "typescript": "~4.5.5" } }, "node_modules/@achrinza/node-ipc": { @@ -1735,6 +1748,14 @@ "node": ">=10" } }, + "node_modules/@fortawesome/fontawesome-pro": { + "version": "6.1.1", + "resolved": "https://npm.fontawesome.com/@fortawesome/fontawesome-pro/-/6.1.1/fontawesome-pro-6.1.1.tgz", + "integrity": "sha512-0w6GM8sCXNpcBLUz4bx61JvjjoCvfEIz5wBz2KjLNw9qk1F2XiUWuifXobvLbwaA7kqPGBRPo3U8Zw7zyaJ9sA==", + "engines": { + "node": ">=6" + } + }, "node_modules/@hapi/hoek": { "version": "9.2.1", "resolved": "https://registry.npmmirror.com/@hapi/hoek/-/hoek-9.2.1.tgz", @@ -2150,6 +2171,12 @@ "@types/node": "*" } }, + "node_modules/@types/webpack-env": { + "version": "1.16.3", + "resolved": "https://registry.npmmirror.com/@types/webpack-env/-/webpack-env-1.16.3.tgz", + "integrity": "sha512-9gtOPPkfyNoEqCQgx4qJKkuNm/x0R2hKR7fdl7zvTJyHnIisuE/LfvXOsYWL0o3qq6uiBnKZNNNzi3l0y/X+xw==", + "dev": true + }, "node_modules/@types/ws": { "version": "8.5.3", "resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.5.3.tgz", @@ -2159,6 +2186,212 @@ "@types/node": "*" } }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.16.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.16.0.tgz", + "integrity": "sha512-SJoba1edXvQRMmNI505Uo4XmGbxCK9ARQpkvOd00anxzri9RNQk0DDCxD+LIl+jYhkzOJiOMMKYEHnHEODjdCw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.16.0", + "@typescript-eslint/type-utils": "5.16.0", + "@typescript-eslint/utils": "5.16.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.16.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.16.0.tgz", + "integrity": "sha512-fkDq86F0zl8FicnJtdXakFs4lnuebH6ZADDw6CYQv0UZeIjHvmEw87m9/29nk2Dv5Lmdp0zQ3zDQhiMWQf/GbA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.16.0", + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/typescript-estree": "5.16.0", + "debug": "^4.3.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.16.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.16.0.tgz", + "integrity": "sha512-P+Yab2Hovg8NekLIR/mOElCDPyGgFZKhGoZA901Yax6WR6HVeGLbsqJkZ+Cvk5nts/dAlFKm8PfL43UZnWdpIQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/visitor-keys": "5.16.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.16.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.16.0.tgz", + "integrity": "sha512-SKygICv54CCRl1Vq5ewwQUJV/8padIWvPgCxlWPGO/OgQLCijY9G7lDu6H+mqfQtbzDNlVjzVWQmeqbLMBLEwQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.16.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.16.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.16.0.tgz", + "integrity": "sha512-oUorOwLj/3/3p/HFwrp6m/J2VfbLC8gjW5X3awpQJ/bSG+YRGFS4dpsvtQ8T2VNveV+LflQHjlLvB6v0R87z4g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.16.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.16.0.tgz", + "integrity": "sha512-SE4VfbLWUZl9MR+ngLSARptUv2E8brY0luCdgmUevU6arZRY/KxYoLI/3V/yxaURR8tLRN7bmZtJdgmzLHI6pQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/visitor-keys": "5.16.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.16.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.16.0.tgz", + "integrity": "sha512-iYej2ER6AwmejLWMWzJIHy3nPJeGDuCqf8Jnb+jAQVoPpmWzwQOfa9hWVB8GIQE5gsCv/rfN4T+AYb/V06WseQ==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.16.0", + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/typescript-estree": "5.16.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.16.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.16.0.tgz", + "integrity": "sha512-jqxO8msp5vZDhikTwq9ubyMHqZ67UIvawohr4qF3KhlpL7gzSjOd+8471H3nh5LyABkaI85laEKKU8SnGUK5/g==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.16.0", + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@vue/babel-helper-vue-jsx-merge-props": { "version": "1.2.1", "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz", @@ -2443,6 +2676,39 @@ "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" } }, + "node_modules/@vue/cli-plugin-typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-typescript/-/cli-plugin-typescript-5.0.4.tgz", + "integrity": "sha512-ITIt9hDc94gI4UCdsoAKYtFp2LAXF9fNYQqXminTnctd0UuTSXGvQcLmCnMYgKfKPVVcAWfG3vCMiB5bsd+Kyg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.16", + "@types/webpack-env": "^1.15.2", + "@vue/cli-shared-utils": "^5.0.4", + "babel-loader": "^8.2.2", + "fork-ts-checker-webpack-plugin": "^6.4.0", + "globby": "^11.0.2", + "thread-loader": "^3.0.0", + "ts-loader": "^9.2.5", + "webpack": "^5.54.0", + "yorkie": "^2.0.0" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0", + "cache-loader": "^4.1.0", + "typescript": ">=2", + "vue": "^2 || ^3.2.13", + "vue-template-compiler": "^2.0.0" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, "node_modules/@vue/cli-plugin-vuex": { "version": "5.0.4", "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.4.tgz", @@ -2781,6 +3047,29 @@ "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", "dev": true }, + "node_modules/@vue/devtools-api": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.1.3.tgz", + "integrity": "sha512-79InfO2xHv+WHIrH1bHXQUiQD/wMls9qBk6WVwGCbdwP7/3zINtvqPNMtmSHXsIKjvUAHc8L0ouOj6ZQQRmcXg==" + }, + "node_modules/@vue/eslint-config-typescript": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/@vue/eslint-config-typescript/-/eslint-config-typescript-9.1.0.tgz", + "integrity": "sha512-j/852/ZYQ5wDvCD3HE2q4uqJwJAceer2FwoEch1nFo+zTOsPrbzbE3cuWIs3kvu5hdFsGTMYwRwjI6fqZKDMxQ==", + "dev": true, + "dependencies": { + "vue-eslint-parser": "^8.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0", + "eslint-plugin-vue": "^8.0.1" + } + }, "node_modules/@vue/reactivity": { "version": "3.2.31", "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.31.tgz", @@ -3163,6 +3452,11 @@ "ajv": "^6.9.1" } }, + "node_modules/animate.css": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/animate.css/-/animate.css-4.1.1.tgz", + "integrity": "sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==" + }, "node_modules/ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -3403,8 +3697,7 @@ "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "node_modules/batch": { "version": "0.6.1", @@ -3512,6 +3805,18 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, + "node_modules/bootstrap": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", + "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + }, + "peerDependencies": { + "@popperjs/core": "^2.10.2" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -5763,6 +6068,172 @@ } } }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.0", + "resolved": "https://registry.npmmirror.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz", + "integrity": "sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz", @@ -5790,6 +6261,11 @@ "node": ">= 0.6" } }, + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=" + }, "node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", @@ -6618,6 +7094,11 @@ "node": ">=0.6.0" } }, + "node_modules/js-sha256": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", + "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", @@ -6697,6 +7178,15 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/keycloak-js": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/keycloak-js/-/keycloak-js-17.0.1.tgz", + "integrity": "sha512-mbLBSoogCBX5VYeKCdEz8BaRWVL9twzSqArRU3Mo3Z7vEO1mghGZJ5IzREfiMEi7kTUZtk5i9mu+Yc0koGkK6g==", + "dependencies": { + "base64-js": "^1.5.1", + "js-sha256": "^0.9.0" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", @@ -9841,12 +10331,131 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true }, + "node_modules/ts-loader": { + "version": "9.2.8", + "resolved": "https://registry.npmmirror.com/ts-loader/-/ts-loader-9.2.8.tgz", + "integrity": "sha512-gxSak7IHUuRtwKf3FIPSW1VpZcqF9+MBrHOvBp9cjHh+525SjtCIJKVGjRKIAfxBwDGDGCFF00rTfzB1quxdSw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ts-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/tslib": { "version": "2.3.1", "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.1.tgz", "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", "dev": true }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", @@ -9881,6 +10490,19 @@ "node": ">= 0.6" } }, + "node_modules/typescript": { + "version": "4.5.5", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.5.5.tgz", + "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -10015,6 +10637,14 @@ "@vue/shared": "3.2.31" } }, + "node_modules/vue-class-component": { + "version": "8.0.0-rc.1", + "resolved": "https://registry.npmmirror.com/vue-class-component/-/vue-class-component-8.0.0-rc.1.tgz", + "integrity": "sha512-w1nMzsT/UdbDAXKqhwTmSoyuJzUXKrxLE77PCFVuC6syr8acdFDAq116xgvZh9UCuV0h+rlCtxXolr3Hi3HyPQ==", + "peerDependencies": { + "vue": "^3.0.0" + } + }, "node_modules/vue-eslint-parser": { "version": "8.3.0", "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", @@ -10194,6 +10824,20 @@ "node": ">=8" } }, + "node_modules/vue-router": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.14.tgz", + "integrity": "sha512-wAO6zF9zxA3u+7AkMPqw9LjoUCjSxfFvINQj3E/DceTt6uEz1XZLraDhdg2EYmvVwTBSGlLYsUw8bDmx0754Mw==", + "dependencies": { + "@vue/devtools-api": "^6.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, "node_modules/vue-style-loader": { "version": "4.1.3", "resolved": "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz", @@ -10216,6 +10860,17 @@ "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", "dev": true }, + "node_modules/vuex": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.2.tgz", + "integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==", + "dependencies": { + "@vue/devtools-api": "^6.0.0-beta.11" + }, + "peerDependencies": { + "vue": "^3.0.2" + } + }, "node_modules/watchpack": { "version": "2.3.1", "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.3.1.tgz", @@ -12115,6 +12770,11 @@ } } }, + "@fortawesome/fontawesome-pro": { + "version": "6.1.1", + "resolved": "https://npm.fontawesome.com/@fortawesome/fontawesome-pro/-/6.1.1/fontawesome-pro-6.1.1.tgz", + "integrity": "sha512-0w6GM8sCXNpcBLUz4bx61JvjjoCvfEIz5wBz2KjLNw9qk1F2XiUWuifXobvLbwaA7kqPGBRPo3U8Zw7zyaJ9sA==" + }, "@hapi/hoek": { "version": "9.2.1", "resolved": "https://registry.npmmirror.com/@hapi/hoek/-/hoek-9.2.1.tgz", @@ -12490,6 +13150,12 @@ "@types/node": "*" } }, + "@types/webpack-env": { + "version": "1.16.3", + "resolved": "https://registry.npmmirror.com/@types/webpack-env/-/webpack-env-1.16.3.tgz", + "integrity": "sha512-9gtOPPkfyNoEqCQgx4qJKkuNm/x0R2hKR7fdl7zvTJyHnIisuE/LfvXOsYWL0o3qq6uiBnKZNNNzi3l0y/X+xw==", + "dev": true + }, "@types/ws": { "version": "8.5.3", "resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.5.3.tgz", @@ -12499,6 +13165,142 @@ "@types/node": "*" } }, + "@typescript-eslint/eslint-plugin": { + "version": "5.16.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.16.0.tgz", + "integrity": "sha512-SJoba1edXvQRMmNI505Uo4XmGbxCK9ARQpkvOd00anxzri9RNQk0DDCxD+LIl+jYhkzOJiOMMKYEHnHEODjdCw==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.16.0", + "@typescript-eslint/type-utils": "5.16.0", + "@typescript-eslint/utils": "5.16.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "5.16.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.16.0.tgz", + "integrity": "sha512-fkDq86F0zl8FicnJtdXakFs4lnuebH6ZADDw6CYQv0UZeIjHvmEw87m9/29nk2Dv5Lmdp0zQ3zDQhiMWQf/GbA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.16.0", + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/typescript-estree": "5.16.0", + "debug": "^4.3.2" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.16.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.16.0.tgz", + "integrity": "sha512-P+Yab2Hovg8NekLIR/mOElCDPyGgFZKhGoZA901Yax6WR6HVeGLbsqJkZ+Cvk5nts/dAlFKm8PfL43UZnWdpIQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/visitor-keys": "5.16.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.16.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.16.0.tgz", + "integrity": "sha512-SKygICv54CCRl1Vq5ewwQUJV/8padIWvPgCxlWPGO/OgQLCijY9G7lDu6H+mqfQtbzDNlVjzVWQmeqbLMBLEwQ==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.16.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.16.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.16.0.tgz", + "integrity": "sha512-oUorOwLj/3/3p/HFwrp6m/J2VfbLC8gjW5X3awpQJ/bSG+YRGFS4dpsvtQ8T2VNveV+LflQHjlLvB6v0R87z4g==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.16.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.16.0.tgz", + "integrity": "sha512-SE4VfbLWUZl9MR+ngLSARptUv2E8brY0luCdgmUevU6arZRY/KxYoLI/3V/yxaURR8tLRN7bmZtJdgmzLHI6pQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/visitor-keys": "5.16.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "5.16.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.16.0.tgz", + "integrity": "sha512-iYej2ER6AwmejLWMWzJIHy3nPJeGDuCqf8Jnb+jAQVoPpmWzwQOfa9hWVB8GIQE5gsCv/rfN4T+AYb/V06WseQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.16.0", + "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/typescript-estree": "5.16.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.16.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.16.0.tgz", + "integrity": "sha512-jqxO8msp5vZDhikTwq9ubyMHqZ67UIvawohr4qF3KhlpL7gzSjOd+8471H3nh5LyABkaI85laEKKU8SnGUK5/g==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.16.0", + "eslint-visitor-keys": "^3.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + } + } + }, "@vue/babel-helper-vue-jsx-merge-props": { "version": "1.2.1", "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz", @@ -12726,11 +13528,30 @@ "@vue/cli-shared-utils": "^5.0.4" } }, + "@vue/cli-plugin-typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-typescript/-/cli-plugin-typescript-5.0.4.tgz", + "integrity": "sha512-ITIt9hDc94gI4UCdsoAKYtFp2LAXF9fNYQqXminTnctd0UuTSXGvQcLmCnMYgKfKPVVcAWfG3vCMiB5bsd+Kyg==", + "dev": true, + "requires": { + "@babel/core": "^7.12.16", + "@types/webpack-env": "^1.15.2", + "@vue/cli-shared-utils": "^5.0.4", + "babel-loader": "^8.2.2", + "fork-ts-checker-webpack-plugin": "^6.4.0", + "globby": "^11.0.2", + "thread-loader": "^3.0.0", + "ts-loader": "^9.2.5", + "webpack": "^5.54.0", + "yorkie": "^2.0.0" + } + }, "@vue/cli-plugin-vuex": { "version": "5.0.4", "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.4.tgz", "integrity": "sha512-dBwiD6mT9+V2HTHcwaWE8qFNgTk5I/NUvxYVeUN3Mmmpo4y/1RxXnr7BlKGnaQsTypb2RFk3KowqIJtg7s+E3Q==", - "dev": true + "dev": true, + "requires": {} }, "@vue/cli-service": { "version": "5.0.4", @@ -12998,6 +13819,20 @@ } } }, + "@vue/devtools-api": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.1.3.tgz", + "integrity": "sha512-79InfO2xHv+WHIrH1bHXQUiQD/wMls9qBk6WVwGCbdwP7/3zINtvqPNMtmSHXsIKjvUAHc8L0ouOj6ZQQRmcXg==" + }, + "@vue/eslint-config-typescript": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/@vue/eslint-config-typescript/-/eslint-config-typescript-9.1.0.tgz", + "integrity": "sha512-j/852/ZYQ5wDvCD3HE2q4uqJwJAceer2FwoEch1nFo+zTOsPrbzbE3cuWIs3kvu5hdFsGTMYwRwjI6fqZKDMxQ==", + "dev": true, + "requires": { + "vue-eslint-parser": "^8.0.0" + } + }, "@vue/reactivity": { "version": "3.2.31", "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.31.tgz", @@ -13256,13 +14091,15 @@ "version": "1.8.0", "resolved": "https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true + "dev": true, + "requires": {} }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "requires": {} }, "acorn-walk": { "version": "8.2.0", @@ -13331,7 +14168,13 @@ "version": "3.5.2", "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} + }, + "animate.css": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/animate.css/-/animate.css-4.1.1.tgz", + "integrity": "sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==" }, "ansi-colors": { "version": "4.1.1", @@ -13517,8 +14360,7 @@ "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "batch": { "version": "0.6.1", @@ -13616,6 +14458,12 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, + "bootstrap": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", + "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", + "requires": {} + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -14357,7 +15205,8 @@ "version": "3.1.0", "resolved": "https://registry.npmmirror.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz", "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true + "dev": true, + "requires": {} }, "csso": { "version": "4.2.0", @@ -15420,6 +16269,123 @@ "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", "dev": true }, + "fork-ts-checker-webpack-plugin": { + "version": "6.5.0", + "resolved": "https://registry.npmmirror.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz", + "integrity": "sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + } + } + }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz", @@ -15438,6 +16404,11 @@ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true }, + "fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=" + }, "fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", @@ -15795,7 +16766,8 @@ "version": "5.1.0", "resolved": "https://registry.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true + "dev": true, + "requires": {} }, "ieee754": { "version": "1.2.1", @@ -16088,6 +17060,11 @@ "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", "dev": true }, + "js-sha256": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", + "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", @@ -16150,6 +17127,15 @@ "universalify": "^2.0.0" } }, + "keycloak-js": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/keycloak-js/-/keycloak-js-17.0.1.tgz", + "integrity": "sha512-mbLBSoogCBX5VYeKCdEz8BaRWVL9twzSqArRU3Mo3Z7vEO1mghGZJ5IzREfiMEi7kTUZtk5i9mu+Yc0koGkK6g==", + "requires": { + "base64-js": "^1.5.1", + "js-sha256": "^0.9.0" + } + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", @@ -17241,25 +18227,29 @@ "version": "5.1.1", "resolved": "https://registry.npmmirror.com/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-duplicates": { "version": "5.1.0", "resolved": "https://registry.npmmirror.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-empty": { "version": "5.1.1", "resolved": "https://registry.npmmirror.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-overridden": { "version": "5.1.0", "resolved": "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-loader": { "version": "6.2.1", @@ -17349,7 +18339,8 @@ "version": "3.0.0", "resolved": "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -17384,7 +18375,8 @@ "version": "5.1.0", "resolved": "https://registry.npmmirror.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true + "dev": true, + "requires": {} }, "postcss-normalize-display-values": { "version": "5.1.0", @@ -18603,12 +19595,101 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true }, + "ts-loader": { + "version": "9.2.8", + "resolved": "https://registry.npmmirror.com/ts-loader/-/ts-loader-9.2.8.tgz", + "integrity": "sha512-gxSak7IHUuRtwKf3FIPSW1VpZcqF9+MBrHOvBp9cjHh+525SjtCIJKVGjRKIAfxBwDGDGCFF00rTfzB1quxdSw==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "tslib": { "version": "2.3.1", "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.1.tgz", "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", "dev": true }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", @@ -18634,6 +19715,12 @@ "mime-types": "~2.1.24" } }, + "typescript": { + "version": "4.5.5", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.5.5.tgz", + "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "dev": true + }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -18741,6 +19828,12 @@ "@vue/shared": "3.2.31" } }, + "vue-class-component": { + "version": "8.0.0-rc.1", + "resolved": "https://registry.npmmirror.com/vue-class-component/-/vue-class-component-8.0.0-rc.1.tgz", + "integrity": "sha512-w1nMzsT/UdbDAXKqhwTmSoyuJzUXKrxLE77PCFVuC6syr8acdFDAq116xgvZh9UCuV0h+rlCtxXolr3Hi3HyPQ==", + "requires": {} + }, "vue-eslint-parser": { "version": "8.3.0", "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", @@ -18879,6 +19972,14 @@ } } }, + "vue-router": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.14.tgz", + "integrity": "sha512-wAO6zF9zxA3u+7AkMPqw9LjoUCjSxfFvINQj3E/DceTt6uEz1XZLraDhdg2EYmvVwTBSGlLYsUw8bDmx0754Mw==", + "requires": { + "@vue/devtools-api": "^6.0.0" + } + }, "vue-style-loader": { "version": "4.1.3", "resolved": "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz", @@ -18903,6 +20004,14 @@ "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", "dev": true }, + "vuex": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.2.tgz", + "integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==", + "requires": { + "@vue/devtools-api": "^6.0.0-beta.11" + } + }, "watchpack": { "version": "2.3.1", "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.3.1.tgz", @@ -19216,7 +20325,8 @@ "version": "8.5.0", "resolved": "https://registry.npmmirror.com/ws/-/ws-8.5.0.tgz", "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "dev": true + "dev": true, + "requires": {} } } }, @@ -19343,7 +20453,8 @@ "version": "7.5.7", "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.7.tgz", "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "dev": true + "dev": true, + "requires": {} }, "y18n": { "version": "5.0.8", diff --git a/package.json b/package.json index 8cb65ef..e2149f5 100644 --- a/package.json +++ b/package.json @@ -8,17 +8,30 @@ "lint": "vue-cli-service lint" }, "dependencies": { + "@fortawesome/fontawesome-pro": "^6.1.1", + "animate.css": "^4.1.1", + "bootstrap": "^5.1.3", "core-js": "^3.8.3", - "vue": "^3.2.13" + "fs": "^0.0.1-security", + "keycloak-js": "^17.0.1", + "vue": "^3.2.13", + "vue-class-component": "^8.0.0-0", + "vue-router": "^4.0.14", + "vuex": "^4.0.2" }, "devDependencies": { "@babel/core": "^7.12.16", "@babel/eslint-parser": "^7.12.16", + "@typescript-eslint/eslint-plugin": "^5.4.0", + "@typescript-eslint/parser": "^5.4.0", "@vue/cli-plugin-babel": "~5.0.0", "@vue/cli-plugin-eslint": "~5.0.0", + "@vue/cli-plugin-typescript": "~5.0.0", "@vue/cli-service": "~5.0.0", + "@vue/eslint-config-typescript": "^9.1.0", "eslint": "^7.32.0", - "eslint-plugin-vue": "^8.0.3" + "eslint-plugin-vue": "^8.0.3", + "typescript": "~4.5.5" }, "eslintConfig": { "root": true, @@ -27,10 +40,11 @@ }, "extends": [ "plugin:vue/vue3-essential", - "eslint:recommended" + "eslint:recommended", + "@vue/typescript" ], "parserOptions": { - "parser": "@babel/eslint-parser" + "parser": "@typescript-eslint/parser" }, "rules": {} }, diff --git a/src/App.vue b/src/App.vue index 591a031..7a4e0f4 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,26 +1,46 @@ - - + - diff --git a/src/components/HelloWorld.vue b/src/components/HelloWorld.vue deleted file mode 100644 index 879051a..0000000 --- a/src/components/HelloWorld.vue +++ /dev/null @@ -1,58 +0,0 @@ - - - {{ msg }} - - For a guide and recipes on how to configure / customize this project, - check out the - vue-cli documentation. - - Installed CLI Plugins - - babel - eslint - - Essential Links - - Core Docs - Forum - Community Chat - Twitter - News - - Ecosystem - - vue-router - vuex - vue-devtools - vue-loader - awesome-vue - - - - - - - - diff --git a/src/components/auth/LoginUser.vue b/src/components/auth/LoginUser.vue new file mode 100644 index 0000000..34bfbf1 --- /dev/null +++ b/src/components/auth/LoginUser.vue @@ -0,0 +1,13 @@ + +Login User + + + + + \ No newline at end of file diff --git a/src/components/auth/RegisterUser.vue b/src/components/auth/RegisterUser.vue new file mode 100644 index 0000000..bd98f7e --- /dev/null +++ b/src/components/auth/RegisterUser.vue @@ -0,0 +1,13 @@ + +RegisterUser + + + + + \ No newline at end of file diff --git a/src/components/camera/CameraList.vue b/src/components/camera/CameraList.vue new file mode 100644 index 0000000..e5458c6 --- /dev/null +++ b/src/components/camera/CameraList.vue @@ -0,0 +1,55 @@ + + + + Wir haben {{cameras.length}} in der Liste + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/camera/CameraListItem.vue b/src/components/camera/CameraListItem.vue new file mode 100644 index 0000000..3033fd2 --- /dev/null +++ b/src/components/camera/CameraListItem.vue @@ -0,0 +1,48 @@ + + + {{ camera.name }} + + {{camera.year_of_production}} + + + + + + + \ No newline at end of file diff --git a/src/layouts/TheCameraLayout.vue b/src/layouts/TheCameraLayout.vue new file mode 100644 index 0000000..e69de29 diff --git a/src/layouts/TheEmptyLayout.vue b/src/layouts/TheEmptyLayout.vue new file mode 100644 index 0000000..7b7831c --- /dev/null +++ b/src/layouts/TheEmptyLayout.vue @@ -0,0 +1,19 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/layouts/TheTwoColumnsLayout.vue b/src/layouts/TheTwoColumnsLayout.vue new file mode 100644 index 0000000..09d273c --- /dev/null +++ b/src/layouts/TheTwoColumnsLayout.vue @@ -0,0 +1,52 @@ + + + + + + Linke Spalte + + + + Rechte Spalte + + + + + + + + diff --git a/src/main.js b/src/main.js index 01433bc..89480a7 100644 --- a/src/main.js +++ b/src/main.js @@ -1,4 +1,9 @@ -import { createApp } from 'vue' -import App from './App.vue' - -createApp(App).mount('#app') +import { createApp } from 'vue'; +import App from './App.vue'; +import store from './store'; +import router from './router'; +createApp(App) + .use(store) + .use(router) + .mount('#app'); +//# sourceMappingURL=main.js.map \ No newline at end of file diff --git a/src/main.js.bak b/src/main.js.bak new file mode 100644 index 0000000..c0dc826 --- /dev/null +++ b/src/main.js.bak @@ -0,0 +1,45 @@ +import Vue from 'vue' +import App from './App.vue' +import Keycloak from "keycloak-js"; + +const initOptions = { + url: 'http://auth.toking.de/', realm: 'toking', clientId: 'billibox', onLoad: 'login-required' +} +//const app = createApp(App); + +const keycloak = Keycloak(initOptions); + +keycloak.init({ onLoad: initOptions.onLoad }).then((auth) => { + if (!auth) { + window.location.reload(); + } else { + Vue.$log.info("Authenticated"); + + new Vue({ + el: '#app', + render: h => h(App, { props: { keycloak: keycloak } }) + }) + } + + +//Token Refresh + setInterval(() => { + keycloak.updateToken(70).then((refreshed) => { + if (refreshed) { + Vue.$log.info('Token refreshed' + refreshed); + } else { + Vue.$log.warn('Token not refreshed, valid for ' + + Math.round(keycloak.tokenParsed.exp + keycloak.timeSkew - new Date().getTime() / 1000) + ' seconds'); + } + }).catch(() => { + Vue.$log.error('Failed to refresh token'); + }); + }, 6000) + +}).catch(() => { + Vue.$log.error("Authenticated Failed"); +}); + + + +//app.mount('#app') \ No newline at end of file diff --git a/src/main.js.bak.js b/src/main.js.bak.js new file mode 100644 index 0000000..706581d --- /dev/null +++ b/src/main.js.bak.js @@ -0,0 +1,38 @@ +import Vue from 'vue'; +import App from './App.vue'; +import Keycloak from "keycloak-js"; +const initOptions = { + url: 'http://auth.toking.de/', realm: 'toking', clientId: 'billibox', onLoad: 'login-required' +}; +//const app = createApp(App); +const keycloak = Keycloak(initOptions); +keycloak.init({ onLoad: initOptions.onLoad }).then((auth) => { + if (!auth) { + window.location.reload(); + } + else { + Vue.$log.info("Authenticated"); + new Vue({ + el: '#app', + render: h => h(App, { props: { keycloak: keycloak } }) + }); + } + //Token Refresh + setInterval(() => { + keycloak.updateToken(70).then((refreshed) => { + if (refreshed) { + Vue.$log.info('Token refreshed' + refreshed); + } + else { + Vue.$log.warn('Token not refreshed, valid for ' + + Math.round(keycloak.tokenParsed.exp + keycloak.timeSkew - new Date().getTime() / 1000) + ' seconds'); + } + }).catch(() => { + Vue.$log.error('Failed to refresh token'); + }); + }, 6000); +}).catch(() => { + Vue.$log.error("Authenticated Failed"); +}); +//app.mount('#app') +//# sourceMappingURL=main.js.bak.js.map \ No newline at end of file diff --git a/src/main.js.bak.js.map b/src/main.js.bak.js.map new file mode 100644 index 0000000..fa85d45 --- /dev/null +++ b/src/main.js.bak.js.map @@ -0,0 +1 @@ +{"version":3,"file":"main.js.bak.js","sourceRoot":"","sources":["main.js.bak.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,GAAG,MAAM,WAAW,CAAA;AAC3B,OAAO,QAAQ,MAAM,aAAa,CAAC;AAEnC,MAAM,WAAW,GAAG;IAChB,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB;CACjG,CAAA;AACD,8BAA8B;AAE9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;AAEvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;IACxD,IAAI,CAAC,IAAI,EAAE;QACP,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;KAC5B;SAAM;QACH,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE/B,IAAI,GAAG,CAAC;YACJ,EAAE,EAAE,MAAM;YACV,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC;SACzD,CAAC,CAAA;KACL;IAGL,eAAe;IACX,WAAW,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;YACxC,IAAI,SAAS,EAAE;gBACX,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC;aAChD;iBAAM;gBACH,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC;sBACzC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,GAAG,QAAQ,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;aAC9G;QACL,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACV,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,IAAI,CAAC,CAAA;AAEZ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;IACV,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAIH,mBAAmB"} \ No newline at end of file diff --git a/src/main.js.map b/src/main.js.map new file mode 100644 index 0000000..20aac05 --- /dev/null +++ b/src/main.js.map @@ -0,0 +1 @@ +{"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,GAAG,MAAM,WAAW,CAAA;AAC3B,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,MAAM,MAAM,UAAU,CAAA;AAG7B,SAAS,CAAC,GAAG,CAAC;KACT,GAAG,CAAC,KAAK,CAAC;KACV,GAAG,CAAC,MAAM,CAAC;KACX,KAAK,CAAC,MAAM,CAAC,CAAA"} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..f7a5a08 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,10 @@ +import { createApp } from 'vue' +import App from './App.vue' +import store from './store'; +import router from './router' + + +createApp(App) + .use(store) + .use(router) + .mount('#app') diff --git a/src/pages/CreateCameraPage.vue b/src/pages/CreateCameraPage.vue new file mode 100644 index 0000000..e6e0b9c --- /dev/null +++ b/src/pages/CreateCameraPage.vue @@ -0,0 +1,18 @@ + + CreateCameraPage + + + + + \ No newline at end of file diff --git a/src/pages/EditCameraPage.vue b/src/pages/EditCameraPage.vue new file mode 100644 index 0000000..b8253b7 --- /dev/null +++ b/src/pages/EditCameraPage.vue @@ -0,0 +1,18 @@ + + EditCameraPage + + + + + \ No newline at end of file diff --git a/src/pages/HomePage.vue b/src/pages/HomePage.vue new file mode 100644 index 0000000..116f78e --- /dev/null +++ b/src/pages/HomePage.vue @@ -0,0 +1,63 @@ + + + + + Billibox + Die kleine Welt alter Fotoapparate + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/pages/NotFoundPage.vue b/src/pages/NotFoundPage.vue new file mode 100644 index 0000000..a1db51f --- /dev/null +++ b/src/pages/NotFoundPage.vue @@ -0,0 +1,18 @@ + + NotFoundPage + + + + + \ No newline at end of file diff --git a/src/pages/ReadCameraPage.vue b/src/pages/ReadCameraPage.vue new file mode 100644 index 0000000..8bbf1cb --- /dev/null +++ b/src/pages/ReadCameraPage.vue @@ -0,0 +1,18 @@ + + ReadCameraPage + + + + + \ No newline at end of file diff --git a/src/pages/ReadListPage.vue b/src/pages/ReadListPage.vue new file mode 100644 index 0000000..05767dd --- /dev/null +++ b/src/pages/ReadListPage.vue @@ -0,0 +1,62 @@ + + + + + Billibox + Die kleine Welt alter Fotoapparate + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..2e88297 --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,26 @@ +import { createRouter, createWebHistory } from "vue-router"; +import NotFoundPage from "@/pages/NotFoundPage.vue"; +import routes from "@/routes"; +import store from "@/store"; +const router = createRouter({ + // Options + history: createWebHistory(), + routes: [...routes, + { + path: "/:pathMatch(.*)*", + component: NotFoundPage, + // Alternativ mit Redirect auf Root + // redirect: "/" + } + ] +}); +router.beforeEach((to, from, next) => { + if (to.meta.requiresAuth && !store.getters.isAuthenticated) { + next("/"); + } + else { + next(); + } +}); +export default router; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/src/router/index.js.map b/src/router/index.js.map new file mode 100644 index 0000000..d72e1dd --- /dev/null +++ b/src/router/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,YAAY,MAAM,0BAA0B,CAAC;AAEpD,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,MAAM,MAAM,GAAG,YAAY,CAAE;IACzB,UAAU;IACV,OAAO,EAAE,gBAAgB,EAAE;IAC3B,MAAM,EAAE,CAAE,GAAG,MAAM;QACf;YACI,IAAI,EAAE,kBAAkB;YACxB,SAAS,EAAE,YAAY;YACvB,mCAAmC;YAC/C,2BAA2B;SAClB;KACJ;CAEJ,CAAC,CAAC;AAGH,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IACjC,IAAG,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE;QACvD,IAAI,CAAC,GAAG,CAAC,CAAA;KACZ;SAAM;QACH,IAAI,EAAE,CAAC;KACV;AACL,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"} \ No newline at end of file diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..f4a8657 --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,32 @@ +import { createRouter, createWebHistory } from "vue-router"; + +import NotFoundPage from "@/pages/NotFoundPage.vue"; + +import routes from "@/routes"; + +import store from "@/store"; + +const router = createRouter( { + // Options + history: createWebHistory(), + routes: [ ...routes , + { + path: "/:pathMatch(.*)*", + component: NotFoundPage, + // Alternativ mit Redirect auf Root +// redirect: "/" + } + ] + +}); + + +router.beforeEach((to, from, next) => { + if(to.meta.requiresAuth && !store.getters.isAuthenticated) { + next("/") + } else { + next(); + } +}); + +export default router; \ No newline at end of file diff --git a/src/routes/admin-routes.js b/src/routes/admin-routes.js new file mode 100644 index 0000000..a3a3b8a --- /dev/null +++ b/src/routes/admin-routes.js @@ -0,0 +1,12 @@ +import CreateCameraPage from "@/pages/CreateCameraPage.vue"; +const shopRoutes = [ + { + path: "/admin/camera/create", + component: CreateCameraPage, + meta: { + requiresAuth: true + } + }, +]; +export default shopRoutes; +//# sourceMappingURL=admin-routes.js.map \ No newline at end of file diff --git a/src/routes/admin-routes.js.map b/src/routes/admin-routes.js.map new file mode 100644 index 0000000..bc1f740 --- /dev/null +++ b/src/routes/admin-routes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"admin-routes.js","sourceRoot":"","sources":["admin-routes.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,8BAA8B,CAAC;AAI5D,MAAM,UAAU,GAAG;IACf;QACI,IAAI,EAAE,sBAAsB;QAC5B,SAAS,EAAE,gBAAgB;QAC3B,IAAI,EAAE;YACF,YAAY,EAAE,IAAI;SACrB;KACJ;CAEJ,CAAA;AAED,eAAe,UAAU,CAAC"} \ No newline at end of file diff --git a/src/routes/admin-routes.ts b/src/routes/admin-routes.ts new file mode 100644 index 0000000..c446fed --- /dev/null +++ b/src/routes/admin-routes.ts @@ -0,0 +1,17 @@ +import ShopPage from "@/pages/ShopPage.vue"; +import CreateCameraPage from "@/pages/CreateCameraPage.vue"; +import ReadProductPage from "@/pages/ReadProductPage.vue"; +import component from "*.vue"; + +const shopRoutes = [ + { + path: "/admin/camera/create", + component: CreateCameraPage, + meta: { + requiresAuth: true + } + }, + +] + +export default shopRoutes; \ No newline at end of file diff --git a/src/routes/app-routes.js b/src/routes/app-routes.js new file mode 100644 index 0000000..4b4f7b7 --- /dev/null +++ b/src/routes/app-routes.js @@ -0,0 +1,40 @@ +import store from "@/store"; +import ReadCameraPage from "@/pages/ReadCameraPage.vue"; +import ReadListPage from "@/pages/ReadListPage.vue"; +const appRoutes = [ + { + path: "/", + alias: "/home", + name: "home", + component: () => import('@/pages/HomePage.vue'), + beforeEnter: (to, from, next) => { + if (store.getters.isAuthenticated) { + next("/shop"); + } + else { + next(); + } + } + }, + { + path: "/read/cameara/:id", + name: "ReadProduct", + component: ReadCameraPage, + props: true, + meta: { + requiresAuth: false, + // enterTransition: "rubberBand" + } + }, + { + path: "/list", + component: ReadListPage, + props: true, + meta: { + requiresAuth: false, + // enterTransition: "rubberBand" + } + }, +]; +export default appRoutes; +//# sourceMappingURL=app-routes.js.map \ No newline at end of file diff --git a/src/routes/app-routes.js.map b/src/routes/app-routes.js.map new file mode 100644 index 0000000..9f69256 --- /dev/null +++ b/src/routes/app-routes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"app-routes.js","sourceRoot":"","sources":["app-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,YAAY,MAAM,0BAA0B,CAAC;AAGpD,MAAM,SAAS,GAAG;IACd;QACI,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;QAC/C,WAAW,EAAE,CAAC,EAAM,EAAE,IAAQ,EAAE,IAAQ,EAAE,EAAE;YACxC,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE;gBAC/B,IAAI,CAAC,OAAO,CAAC,CAAC;aACjB;iBAAM;gBACH,IAAI,EAAE,CAAC;aACV;QACL,CAAC;KACJ;IACD;QACI,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,cAAc;QACzB,KAAK,EAAE,IAAI;QACX,IAAI,EAAE;YACF,YAAY,EAAE,KAAK;YACpB,gCAAgC;SAClC;KAEJ;IAED;QACI,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,YAAY;QACvB,KAAK,EAAE,IAAI;QACX,IAAI,EAAE;YACF,YAAY,EAAE,KAAK;YACnB,gCAAgC;SACnC;KAEJ;CACJ,CAAA;AAED,eAAe,SAAS,CAAC"} \ No newline at end of file diff --git a/src/routes/app-routes.ts b/src/routes/app-routes.ts new file mode 100644 index 0000000..c342971 --- /dev/null +++ b/src/routes/app-routes.ts @@ -0,0 +1,44 @@ +import store from "@/store"; +import ReadCameraPage from "@/pages/ReadCameraPage.vue"; +import ReadListPage from "@/pages/ReadListPage.vue"; + + +const appRoutes = [ + { + path: "/", + alias: "/home", + name: "home", + component: () => import('@/pages/HomePage.vue'), + beforeEnter: (to:any, from:any, next:any) => { + if (store.getters.isAuthenticated) { + next("/shop"); + } else { + next(); + } + } + }, + { + path: "/read/cameara/:id", + name: "ReadProduct", + component: ReadCameraPage, + props: true, + meta: { + requiresAuth: false, + // enterTransition: "rubberBand" + } + + }, + + { + path: "/list", + component: ReadListPage, + props: true, + meta: { + requiresAuth: false, + // enterTransition: "rubberBand" + } + + }, +] + +export default appRoutes; \ No newline at end of file diff --git a/src/routes/index.js b/src/routes/index.js new file mode 100644 index 0000000..3049f4b --- /dev/null +++ b/src/routes/index.js @@ -0,0 +1,5 @@ +import adminRoutes from "@/routes/admin-routes"; +import appRoutes from '@/routes/app-routes'; +const routes = [...adminRoutes, ...appRoutes]; +export default routes; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/src/routes/index.js.map b/src/routes/index.js.map new file mode 100644 index 0000000..dc12be7 --- /dev/null +++ b/src/routes/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAE5C,MAAM,MAAM,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,SAAS,CAAC,CAAC;AAE9C,eAAe,MAAM,CAAC"} \ No newline at end of file diff --git a/src/routes/index.ts b/src/routes/index.ts new file mode 100644 index 0000000..61e1b99 --- /dev/null +++ b/src/routes/index.ts @@ -0,0 +1,6 @@ +import adminRoutes from "@/routes/admin-routes"; +import appRoutes from '@/routes/app-routes'; + +const routes = [...adminRoutes, ...appRoutes]; + +export default routes; \ No newline at end of file diff --git a/src/seed.js b/src/seed.js new file mode 100644 index 0000000..4f4cea8 --- /dev/null +++ b/src/seed.js @@ -0,0 +1,214 @@ +export const shape = [ + { schluessel: "neu", name: "neu", beschreibung: '' }, + { schluessel: "neuwertig", name: "neuwertig", beschreibung: '' }, + { schluessel: "lg", name: "leichte Gebrauchsspuren", beschreibung: '' }, + { schluessel: "mg", name: "mittlere Gebrauchsspuren", beschreibung: '' }, + { schluessel: "ag", name: "abgenutzt", beschreibung: '' }, + { schluessel: "eg", name: "eingeschränkte Funktion", beschreibung: '' }, + { schluessel: "defekt", name: "defekt", beschreibung: '' }, +]; +export const buildtype = [ + { schluessel: "box", name: "Box", beschreibung: '' }, + { schluessel: "kb", name: "Kleinbildkamera", beschreibung: '' }, + { schluessel: "slr", name: "Spiegelreflex", beschreibung: '' }, + { schluessel: "dslr", name: "Digitale Spiegelreflex", beschreibung: '' }, + { schluessel: "mf", name: "Mittelformat", beschreibung: '' }, + { schluessel: "gf", name: "Großformat", beschreibung: '' }, + { schluessel: "aps", name: "Digitalkamera", beschreibung: '' }, + { schluessel: "holz", name: "Holzkamera", beschreibung: '' }, + { schluessel: "platte", name: "Plattenkamera", beschreibung: '' }, + { schluessel: "fach", name: "Fachkamera", beschreibung: '' }, + { schluessel: "lf", name: "Lichtfeldkamera", beschreibung: '' }, + { schluessel: "balg", name: "Balgenkamera", beschreibung: '' }, + { schluessel: "sof", name: "Sofortbild", beschreibung: '' }, +]; +export const brands = [ + { schluessel: 'agfa', name: 'Agfa', beschreibung: 'Filme aller Art sowie analoge Kameras' }, + { schluessel: 'alpa', name: 'Alpa', beschreibung: 'Mittelformat analog/digital (früher Kleinbild).' }, + { schluessel: 'arca_swiss', name: 'Arca-Swiss', beschreibung: 'Großformatkameras.' }, + { schluessel: 'bilora', name: 'Bilora', beschreibung: 'Kleinbildkameras.' }, + { schluessel: 'braun_photo_technik', name: 'Braun Photo Technik', beschreibung: 'Kameras, Diaprojektoren' }, + { schluessel: 'bronica', name: 'Bronica', beschreibung: 'Mittelformatkameras.' }, + { schluessel: 'cambo', name: 'Cambo', beschreibung: 'Großformatkameras.' }, + { schluessel: 'camogli', name: 'Camogli', beschreibung: 'Mittelformatkameras.' }, + { schluessel: 'canham_cameras', name: 'Canham Cameras', beschreibung: 'Großformatkameras.' }, + { schluessel: 'canon', name: 'Canon', beschreibung: 'APS-Kameras, Digitalkameras, Kleinbildkameras, Objektive.' }, + { schluessel: 'carena', name: 'Carena', beschreibung: 'Kleinbildkameras, Objektive' }, + { schluessel: 'casio', name: 'Casio', beschreibung: 'Digitalkameras.' }, + { schluessel: 'chinon', name: 'Chinon', beschreibung: 'Digitalkameras, Kleinbildkameras.' }, + { + schluessel: 'contax', + name: 'Contax', + beschreibung: 'APS-Kameras, Digitalkameras, Kleinbildkameras, Mittelformatkameras.' + }, + { schluessel: 'dr_gilde', name: 'Dr. Gilde', beschreibung: 'Mittelformatkameras.' }, + { + schluessel: 'dhw_fototechnik', + name: 'DHW Fototechnik', + beschreibung: 'digitale und analoge Mittelformatkameras, TLR Mittelformatkameras, Fachkameras, Kleinbildkameras' + }, + { schluessel: 'epson', name: 'Epson', beschreibung: 'Digitalkameras.' }, + { + schluessel: 'ernemann_Werke_AG', + name: 'Ernemann-Werke AG', + beschreibung: 'Kinoprojektoren und Kameras, darunter die Ermanox mit damals lichtstärkstem Serienobjektiv der Welt' + }, + { schluessel: 'fed', name: 'FED', beschreibung: 'Kleinbildkameras.' }, + { + schluessel: 'fujifilm', + name: 'Fujifilm', + beschreibung: 'APS-Kameras, Digitalkameras, Kleinbildkameras, Mittelformatkameras.' + }, + { schluessel: 'fandolfi', name: 'Gandolfi', beschreibung: 'Großformatkameras.' }, + { schluessel: 'fottschalt', name: 'Gottschalt', beschreibung: 'Fachkameras.' }, + { schluessel: 'hasselblad', name: 'Hasselblad', beschreibung: 'Kleinbildkameras, Mittelformatkameras.' }, + { schluessel: 'hitachi', name: 'Hitachi', beschreibung: 'Digitalkameras.' }, + { schluessel: 'hewlett-Packard (HP)', name: 'Hewlett-Packard (HP)', beschreibung: 'Digitalkameras.' }, + { schluessel: 'horseman', name: 'Horseman', beschreibung: 'Großformatkameras, Mittelformatkameras.' }, + { schluessel: 'ihagee', name: 'Ihagee', beschreibung: 'Kleinbildkameras (Bezeichnungen Exa und Exakta).' }, + { schluessel: 'jenoptik', name: 'Jenoptik', beschreibung: 'Digitalkameras.' }, + { schluessel: 'jvc', name: 'JVC', beschreibung: 'Digitalkameras.' }, + { schluessel: 'kalimar', name: 'Kalimar', beschreibung: 'Kleinbildkameras, Mittelformatkameras, Objektive.' }, + { + schluessel: 'kamera_werk_dresden', + name: 'Kamera Werk Dresden', + beschreibung: 'Panoramakameras für Kleinbild und Mittelformat (Bezeichnung Noblex).' + }, + { schluessel: 'kiev', name: 'Kiev', beschreibung: 'Mittelformatkameras, Kleinbildkameras.' }, + { schluessel: 'kodak', name: 'Kodak', beschreibung: 'APS-Kameras, Kleinbildkameras, Digitalkameras.' }, + { + schluessel: 'konica', + name: 'Konica', + beschreibung: 'APS-Kameras, Digitalkameras, Kleinbildkameras, Mittelformatkameras, Objektive.' + }, + { + schluessel: 'konica_minolta', + name: 'Konica Minolta', + beschreibung: 'Fusion aus Konica und Minolta; Digitalkameras, Objektive.' + }, + { schluessel: 'kōwa', name: 'Kōwa', beschreibung: 'Mittelformatkameras.' }, + { schluessel: 'kyocera', name: 'Kyocera', beschreibung: '(siehe auch Yashica und Contax): Digitalkameras.' }, + { schluessel: 'leaf', name: 'Leaf', beschreibung: 'Digitale Rückwände für Mittelformatkameras.' }, + { + schluessel: 'leica', + name: 'Leica', + beschreibung: 'APS-Kameras, Analogkameras, Digitalkameras, Kleinbildkameras.' + }, + { schluessel: 'linhof', name: 'Linhof', beschreibung: 'Großformatkameras, Mittelformatkameras.' }, + { schluessel: 'lomo', name: 'Lomo', beschreibung: 'analoge Kleinbildsucherkameras.' }, + { schluessel: 'lotus_view', name: 'Lotus-View', beschreibung: 'Großformatkameras.' }, + { schluessel: 'mamiya', name: 'Mamiya', beschreibung: 'Kleinbildkameras, Mittelformatkameras, Digitalkameras' }, + { schluessel: 'meyer_optik', name: 'Meyer-Optik', beschreibung: 'v. a. Objektive' }, + { + schluessel: 'minolta', + name: 'Minolta', + beschreibung: 'APS-Kameras, Digitalkameras, Kleinbildkameras, Mittelformatkameras, Objektive.' + }, + { schluessel: 'minox', name: 'Minox', beschreibung: 'Digitalkameras, Kleinbildkameras.' }, + { schluessel: 'mustek', name: 'Mustek', beschreibung: 'Digitalkameras.' }, + { + schluessel: 'nikon', + name: 'Nikon', + beschreibung: 'APS-Kameras, Digitalkameras, Kleinbildkameras, Objektive für GF-Kameras.' + }, + { schluessel: 'olympus', name: 'Olympus', beschreibung: 'APS-Kameras, Digitalkameras, Kleinbildkameras.' }, + { schluessel: 'panasonic', name: 'Panasonic', beschreibung: 'Digitalkameras, Smartphones.' }, + { + schluessel: 'pentacon', + name: 'Pentacon', + beschreibung: 'Digitalkameras, Kleinbildkameras (Bezeichnung Praktica), früher auch Mittelformatkameras.' + }, + { schluessel: 'pentax', name: 'Pentax', beschreibung: 'Digitalkameras, Kleinbildkameras, Mittelformatkameras.' }, + { schluessel: 'phase_one', name: 'Phase One', beschreibung: 'Digitalkameras (digitaler Rückteile).' }, + { schluessel: 'plaubel', name: 'Plaubel', beschreibung: 'Großformatkameras' }, + { schluessel: 'polaroid', name: 'Polaroid', beschreibung: 'Digitalkameras, Sofortbildsysteme chemisch.' }, + { schluessel: 'rbt', name: 'RBT', beschreibung: 'Stereokameras und Projektoren.' }, + { + schluessel: 'reflekta_kamerawerk_tharandt', + name: 'Reflekta-Kamerawerk Tharandt', + beschreibung: 'TLR Mittelformatkameras, Reflekta' + }, + { schluessel: 'ricoh', name: 'Ricoh', beschreibung: 'Digitalkameras, Kleinbildkameras.' }, + { schluessel: 'rheinmetall', name: 'Rheinmetall', beschreibung: 'Kleinbildkameras EXA, Exakta' }, + { + schluessel: 'rollei', + name: 'Rollei', + beschreibung: 'Digitalkameras, Kleinbildkameras, digitale und analoge Mittelformatkameras, TLR Mittelformatkameras.' + }, + { + schluessel: 'sakar_international', + name: 'Sakar International', + beschreibung: 'Zubehör, Digitalkameras, Marken Vivitar, Kodak' + }, + { schluessel: 'salyut', name: 'Salyut', beschreibung: 'Mittelformatkameras.' }, + { schluessel: 'samsung', name: 'Samsung', beschreibung: 'Digitalkameras, Kleinbildkameras.' }, + { schluessel: 'sanyo', name: 'Sanyo', beschreibung: 'Digitalkameras.' }, + { schluessel: 'sigma', name: 'Sigma', beschreibung: 'Digitalkameras, Kleinbildkameras, Objektive.' }, + { schluessel: 'silvestri', name: 'Silvestri', beschreibung: 'Großformatkameras.' }, + { schluessel: 'sinar', name: 'Sinar', beschreibung: 'Digitalkameras, Großformatkameras.' }, + { schluessel: 'sony', name: 'Sony', beschreibung: 'Digitalkameras, Objektive.' }, + { schluessel: 'tachihara', name: 'Tachihara', beschreibung: 'Mittelformatkameras' }, + { schluessel: 'tamron', name: 'Tamron', beschreibung: 'Objektive' }, + { schluessel: 'teamwork', name: 'Teamwork', beschreibung: 'Mittelformatkameras' }, + { schluessel: 'tokina', name: 'Tokina', beschreibung: 'Objektive' }, + { schluessel: 'topcon', name: 'Topcon', beschreibung: 'Kleinbildkameras' }, + { schluessel: 'toshiba', name: 'Toshiba', beschreibung: 'Digitalkameras, Großformatkameras' }, + { schluessel: 'toyo', name: 'Toyo', beschreibung: 'Großformatkameras' }, + { schluessel: 'yashica', name: 'Yashica', beschreibung: 'Digitalkameras, Kleinbildkameras.' }, + { schluessel: 'yashica_kyocera', name: 'Yashica-Kyocera', beschreibung: 'Mittelformatkameras.' }, + { schluessel: 'vinten', name: 'Vinten', beschreibung: 'Luftbildkameras.' }, + { schluessel: 'vivitar', name: 'Vivitar', beschreibung: 'Digitalkameras, Wechselobjektive.' }, + { + schluessel: 'voigtländer', + name: 'Voigtländer', + beschreibung: 'APS-Kameras, Digitalkameras, Kleinbildkameras, erstes Foto-Zoomobjektiv der Welt, aktuell: ausschließlich Objektive.' + }, + { schluessel: 'walker_cameras', name: 'Walker Cameras', beschreibung: 'Großformatkameras.' }, + { + schluessel: 'welta', + name: 'Welta', + beschreibung: 'Mittelformatkameras, TLR, Kleinbildkameras. Später aufgegangen in Pentacon.' + }, + { + schluessel: 'wünsche_emil_ag', + name: 'Wünsche, Emil AG', + beschreibung: 'Magazinkameras, Laufboden-Klappkameras mit Klappmechanismus, Reisekameras; aufgegangen in ICA Dresden im Jahre 1909.' + }, + { schluessel: 'zeiss_ikon', name: 'Zeiss Ikon', beschreibung: 'Kleinbildkameras.' }, + { schluessel: 'zenit', name: 'Zenit', beschreibung: 'Kleinbildkameras, Mittelformatkameras.' }, + { schluessel: 'zenza_bronica', name: 'Zenza Bronica', beschreibung: 'Mittelformatkameras.' }, + { schluessel: 'zorki', name: 'Zorki', beschreibung: 'Kleinbildkameras.' }, +]; +export const cameras = [ + { + id: "pentax_19", + brand_key: "pentax", + shape_key: "neuwertig", + name: "Pentax K30", + buildtype: "slr", + description: "Langer Text", + year_of_production: 2000, + year_of_purchase: 2022, + }, + { + id: "pentax_20", + brand_key: "pentax", + shape_key: "neuwertig", + name: "Pentax K50", + buildtype: "slr", + description: "Langer Text", + year_of_production: 2000, + year_of_purchase: 2022, + }, + { + id: "pentax_21", + brand_key: "pentax", + shape_key: "neuwertig", + name: "Pentax K3", + buildtype: "slr", + description: "Langer Text", + year_of_production: 2000, + year_of_purchase: 2022, + } +]; +//# sourceMappingURL=seed.js.map \ No newline at end of file diff --git a/src/seed.js.map b/src/seed.js.map new file mode 100644 index 0000000..41da235 --- /dev/null +++ b/src/seed.js.map @@ -0,0 +1 @@ +{"version":3,"file":"seed.js","sourceRoot":"","sources":["seed.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/seed.ts b/src/seed.ts new file mode 100644 index 0000000..1ac849e --- /dev/null +++ b/src/seed.ts @@ -0,0 +1,221 @@ + + +export const shape = [ + {schluessel: "neu", name: "neu", beschreibung: ''}, + {schluessel: "neuwertig", name: "neuwertig", beschreibung: ''}, + {schluessel: "lg", name: "leichte Gebrauchsspuren", beschreibung: ''}, + {schluessel: "mg", name: "mittlere Gebrauchsspuren", beschreibung: ''}, + {schluessel: "ag", name: "abgenutzt", beschreibung: ''}, + {schluessel: "eg", name: "eingeschränkte Funktion", beschreibung: ''}, + {schluessel: "defekt", name: "defekt", beschreibung: ''}, + ]; + +export const buildtype= [ + {schluessel: "box", name: "Box", beschreibung: ''}, + {schluessel: "kb", name: "Kleinbildkamera", beschreibung: ''}, + {schluessel: "slr", name: "Spiegelreflex", beschreibung: ''}, + {schluessel: "dslr", name: "Digitale Spiegelreflex", beschreibung: ''}, + {schluessel: "mf", name: "Mittelformat", beschreibung: ''}, + {schluessel: "gf", name: "Großformat", beschreibung: ''}, + {schluessel: "aps", name: "Digitalkamera", beschreibung: ''}, + {schluessel: "holz", name: "Holzkamera", beschreibung: ''}, + {schluessel: "platte", name: "Plattenkamera", beschreibung: ''}, + {schluessel: "fach", name: "Fachkamera", beschreibung: ''}, + {schluessel: "lf", name: "Lichtfeldkamera", beschreibung: ''}, + {schluessel: "balg", name: "Balgenkamera", beschreibung: ''}, + {schluessel: "sof", name: "Sofortbild", beschreibung: ''}, + + ]; +export const brands= [ + {schluessel: 'agfa', name: 'Agfa', beschreibung: 'Filme aller Art sowie analoge Kameras'}, + {schluessel: 'alpa', name: 'Alpa', beschreibung: 'Mittelformat analog/digital (früher Kleinbild).'}, + {schluessel: 'arca_swiss', name: 'Arca-Swiss', beschreibung: 'Großformatkameras.'}, + {schluessel: 'bilora', name: 'Bilora', beschreibung: 'Kleinbildkameras.'}, + {schluessel: 'braun_photo_technik', name: 'Braun Photo Technik', beschreibung: 'Kameras, Diaprojektoren'}, + {schluessel: 'bronica', name: 'Bronica', beschreibung: 'Mittelformatkameras.'}, + {schluessel: 'cambo', name: 'Cambo', beschreibung: 'Großformatkameras.'}, + {schluessel: 'camogli', name: 'Camogli', beschreibung: 'Mittelformatkameras.'}, + {schluessel: 'canham_cameras', name: 'Canham Cameras', beschreibung: 'Großformatkameras.'}, + {schluessel: 'canon', name: 'Canon', beschreibung: 'APS-Kameras, Digitalkameras, Kleinbildkameras, Objektive.'}, + {schluessel: 'carena', name: 'Carena', beschreibung: 'Kleinbildkameras, Objektive'}, + {schluessel: 'casio', name: 'Casio', beschreibung: 'Digitalkameras.'}, + {schluessel: 'chinon', name: 'Chinon', beschreibung: 'Digitalkameras, Kleinbildkameras.'}, + { + schluessel: 'contax', + name: 'Contax', + beschreibung: 'APS-Kameras, Digitalkameras, Kleinbildkameras, Mittelformatkameras.' + }, + {schluessel: 'dr_gilde', name: 'Dr. Gilde', beschreibung: 'Mittelformatkameras.'}, + { + schluessel: 'dhw_fototechnik', + name: 'DHW Fototechnik', + beschreibung: 'digitale und analoge Mittelformatkameras, TLR Mittelformatkameras, Fachkameras, Kleinbildkameras' + }, + {schluessel: 'epson', name: 'Epson', beschreibung: 'Digitalkameras.'}, + { + schluessel: 'ernemann_Werke_AG', + name: 'Ernemann-Werke AG', + beschreibung: 'Kinoprojektoren und Kameras, darunter die Ermanox mit damals lichtstärkstem Serienobjektiv der Welt' + }, + {schluessel: 'fed', name: 'FED', beschreibung: 'Kleinbildkameras.'}, + { + schluessel: 'fujifilm', + name: 'Fujifilm', + beschreibung: 'APS-Kameras, Digitalkameras, Kleinbildkameras, Mittelformatkameras.' + }, + {schluessel: 'fandolfi', name: 'Gandolfi', beschreibung: 'Großformatkameras.'}, + {schluessel: 'fottschalt', name: 'Gottschalt', beschreibung: 'Fachkameras.'}, + {schluessel: 'hasselblad', name: 'Hasselblad', beschreibung: 'Kleinbildkameras, Mittelformatkameras.'}, + {schluessel: 'hitachi', name: 'Hitachi', beschreibung: 'Digitalkameras.'}, + {schluessel: 'hewlett-Packard (HP)', name: 'Hewlett-Packard (HP)', beschreibung: 'Digitalkameras.'}, + {schluessel: 'horseman', name: 'Horseman', beschreibung: 'Großformatkameras, Mittelformatkameras.'}, + {schluessel: 'ihagee', name: 'Ihagee', beschreibung: 'Kleinbildkameras (Bezeichnungen Exa und Exakta).'}, + {schluessel: 'jenoptik', name: 'Jenoptik', beschreibung: 'Digitalkameras.'}, + {schluessel: 'jvc', name: 'JVC', beschreibung: 'Digitalkameras.'}, + {schluessel: 'kalimar', name: 'Kalimar', beschreibung: 'Kleinbildkameras, Mittelformatkameras, Objektive.'}, + { + schluessel: 'kamera_werk_dresden', + name: 'Kamera Werk Dresden', + beschreibung: 'Panoramakameras für Kleinbild und Mittelformat (Bezeichnung Noblex).' + }, + {schluessel: 'kiev', name: 'Kiev', beschreibung: 'Mittelformatkameras, Kleinbildkameras.'}, + {schluessel: 'kodak', name: 'Kodak', beschreibung: 'APS-Kameras, Kleinbildkameras, Digitalkameras.'}, + { + schluessel: 'konica', + name: 'Konica', + beschreibung: 'APS-Kameras, Digitalkameras, Kleinbildkameras, Mittelformatkameras, Objektive.' + }, + { + schluessel: 'konica_minolta', + name: 'Konica Minolta', + beschreibung: 'Fusion aus Konica und Minolta; Digitalkameras, Objektive.' + }, + {schluessel: 'kōwa', name: 'Kōwa', beschreibung: 'Mittelformatkameras.'}, + {schluessel: 'kyocera', name: 'Kyocera', beschreibung: '(siehe auch Yashica und Contax): Digitalkameras.'}, + {schluessel: 'leaf', name: 'Leaf', beschreibung: 'Digitale Rückwände für Mittelformatkameras.'}, + { + schluessel: 'leica', + name: 'Leica', + beschreibung: 'APS-Kameras, Analogkameras, Digitalkameras, Kleinbildkameras.' + }, + {schluessel: 'linhof', name: 'Linhof', beschreibung: 'Großformatkameras, Mittelformatkameras.'}, + {schluessel: 'lomo', name: 'Lomo', beschreibung: 'analoge Kleinbildsucherkameras.'}, + {schluessel: 'lotus_view', name: 'Lotus-View', beschreibung: 'Großformatkameras.'}, + {schluessel: 'mamiya', name: 'Mamiya', beschreibung: 'Kleinbildkameras, Mittelformatkameras, Digitalkameras'}, + {schluessel: 'meyer_optik', name: 'Meyer-Optik', beschreibung: 'v. a. Objektive'}, + { + schluessel: 'minolta', + name: 'Minolta', + beschreibung: 'APS-Kameras, Digitalkameras, Kleinbildkameras, Mittelformatkameras, Objektive.' + }, + {schluessel: 'minox', name: 'Minox', beschreibung: 'Digitalkameras, Kleinbildkameras.'}, + {schluessel: 'mustek', name: 'Mustek', beschreibung: 'Digitalkameras.'}, + { + schluessel: 'nikon', + name: 'Nikon', + beschreibung: 'APS-Kameras, Digitalkameras, Kleinbildkameras, Objektive für GF-Kameras.' + }, + {schluessel: 'olympus', name: 'Olympus', beschreibung: 'APS-Kameras, Digitalkameras, Kleinbildkameras.'}, + {schluessel: 'panasonic', name: 'Panasonic', beschreibung: 'Digitalkameras, Smartphones.'}, + { + schluessel: 'pentacon', + name: 'Pentacon', + beschreibung: 'Digitalkameras, Kleinbildkameras (Bezeichnung Praktica), früher auch Mittelformatkameras.' + }, + {schluessel: 'pentax', name: 'Pentax', beschreibung: 'Digitalkameras, Kleinbildkameras, Mittelformatkameras.'}, + {schluessel: 'phase_one', name: 'Phase One', beschreibung: 'Digitalkameras (digitaler Rückteile).'}, + {schluessel: 'plaubel', name: 'Plaubel', beschreibung: 'Großformatkameras'}, + {schluessel: 'polaroid', name: 'Polaroid', beschreibung: 'Digitalkameras, Sofortbildsysteme chemisch.'}, + {schluessel: 'rbt', name: 'RBT', beschreibung: 'Stereokameras und Projektoren.'}, + { + schluessel: 'reflekta_kamerawerk_tharandt', + name: 'Reflekta-Kamerawerk Tharandt', + beschreibung: 'TLR Mittelformatkameras, Reflekta' + }, + {schluessel: 'ricoh', name: 'Ricoh', beschreibung: 'Digitalkameras, Kleinbildkameras.'}, + {schluessel: 'rheinmetall', name: 'Rheinmetall', beschreibung: 'Kleinbildkameras EXA, Exakta'}, + { + schluessel: 'rollei', + name: 'Rollei', + beschreibung: 'Digitalkameras, Kleinbildkameras, digitale und analoge Mittelformatkameras, TLR Mittelformatkameras.' + }, + { + schluessel: 'sakar_international', + name: 'Sakar International', + beschreibung: 'Zubehör, Digitalkameras, Marken Vivitar, Kodak' + }, + {schluessel: 'salyut', name: 'Salyut', beschreibung: 'Mittelformatkameras.'}, + {schluessel: 'samsung', name: 'Samsung', beschreibung: 'Digitalkameras, Kleinbildkameras.'}, + {schluessel: 'sanyo', name: 'Sanyo', beschreibung: 'Digitalkameras.'}, + {schluessel: 'sigma', name: 'Sigma', beschreibung: 'Digitalkameras, Kleinbildkameras, Objektive.'}, + {schluessel: 'silvestri', name: 'Silvestri', beschreibung: 'Großformatkameras.'}, + {schluessel: 'sinar', name: 'Sinar', beschreibung: 'Digitalkameras, Großformatkameras.'}, + {schluessel: 'sony', name: 'Sony', beschreibung: 'Digitalkameras, Objektive.'}, + {schluessel: 'tachihara', name: 'Tachihara', beschreibung: 'Mittelformatkameras'}, + {schluessel: 'tamron', name: 'Tamron', beschreibung: 'Objektive'}, + {schluessel: 'teamwork', name: 'Teamwork', beschreibung: 'Mittelformatkameras'}, + {schluessel: 'tokina', name: 'Tokina', beschreibung: 'Objektive'}, + {schluessel: 'topcon', name: 'Topcon', beschreibung: 'Kleinbildkameras'}, + {schluessel: 'toshiba', name: 'Toshiba', beschreibung: 'Digitalkameras, Großformatkameras'}, + {schluessel: 'toyo', name: 'Toyo', beschreibung: 'Großformatkameras'}, + {schluessel: 'yashica', name: 'Yashica', beschreibung: 'Digitalkameras, Kleinbildkameras.'}, + {schluessel: 'yashica_kyocera', name: 'Yashica-Kyocera', beschreibung: 'Mittelformatkameras.'}, + {schluessel: 'vinten', name: 'Vinten', beschreibung: 'Luftbildkameras.'}, + {schluessel: 'vivitar', name: 'Vivitar', beschreibung: 'Digitalkameras, Wechselobjektive.'}, + { + schluessel: 'voigtländer', + name: 'Voigtländer', + beschreibung: 'APS-Kameras, Digitalkameras, Kleinbildkameras, erstes Foto-Zoomobjektiv der Welt, aktuell: ausschließlich Objektive.' + }, + {schluessel: 'walker_cameras', name: 'Walker Cameras', beschreibung: 'Großformatkameras.'}, + { + schluessel: 'welta', + name: 'Welta', + beschreibung: 'Mittelformatkameras, TLR, Kleinbildkameras. Später aufgegangen in Pentacon.' + }, + { + schluessel: 'wünsche_emil_ag', + name: 'Wünsche, Emil AG', + beschreibung: 'Magazinkameras, Laufboden-Klappkameras mit Klappmechanismus, Reisekameras; aufgegangen in ICA Dresden im Jahre 1909.' + }, + {schluessel: 'zeiss_ikon', name: 'Zeiss Ikon', beschreibung: 'Kleinbildkameras.'}, + {schluessel: 'zenit', name: 'Zenit', beschreibung: 'Kleinbildkameras, Mittelformatkameras.'}, + {schluessel: 'zenza_bronica', name: 'Zenza Bronica', beschreibung: 'Mittelformatkameras.'}, + {schluessel: 'zorki', name: 'Zorki', beschreibung: 'Kleinbildkameras.'}, + ] + + +export const cameras = [ + { + id: "pentax_19", + brand_key: "pentax", + shape_key: "neuwertig", + name:"Pentax K30", + buildtype: "slr", + description: "Langer Text", + year_of_production: 2000, + year_of_purchase: 2022, + }, + { + id: "pentax_20", + brand_key: "pentax", + shape_key: "neuwertig", + name:"Pentax K50", + buildtype: "slr", + description: "Langer Text", + year_of_production: 2000, + year_of_purchase: 2022, + }, + { + id: "pentax_21", + brand_key: "pentax", + shape_key: "neuwertig", + name:"Pentax K3", + buildtype: "slr", + description: "Langer Text", + year_of_production: 2000, + year_of_purchase: 2022, + } + +] + diff --git a/src/shims-vue.d.ts b/src/shims-vue.d.ts new file mode 100644 index 0000000..3804a43 --- /dev/null +++ b/src/shims-vue.d.ts @@ -0,0 +1,6 @@ +/* eslint-disable */ +declare module '*.vue' { + import type { DefineComponent } from 'vue' + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 0000000..ebee9c1 --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,10 @@ +import { createStore } from 'vuex'; +import authModule from "./modules/auth"; +import cameraModule from "./modules/camera"; +export default createStore({ + modules: { + auth: authModule, + camera: cameraModule + } +}); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/src/store/index.js.map b/src/store/index.js.map new file mode 100644 index 0000000..24782f3 --- /dev/null +++ b/src/store/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAElC,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAE5C,eAAe,WAAW,CAAC;IACvB,OAAO,EAAE;QACL,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,YAAY;KACvB;CACJ,CAAC,CAAA"} \ No newline at end of file diff --git a/src/store/index.ts b/src/store/index.ts new file mode 100644 index 0000000..da4a61d --- /dev/null +++ b/src/store/index.ts @@ -0,0 +1,11 @@ +import { createStore } from 'vuex' + +import authModule from "./modules/auth"; +import cameraModule from "./modules/camera"; + +export default createStore({ + modules: { + auth: authModule, + camera: cameraModule + } +}) \ No newline at end of file diff --git a/src/store/modules/auth/index.js b/src/store/modules/auth/index.js new file mode 100644 index 0000000..2ec57f0 --- /dev/null +++ b/src/store/modules/auth/index.js @@ -0,0 +1,28 @@ +const state = { + userId: null, + token: null +}; +const getters = { + isAuthenticated(state) { + return state.token; + }, + token: (state) => state.token +}; +const mutations = { + setUser(context, payload) { + console.log("mutations.setUser", payload); + state.userId = payload.userId; + state.token = payload.token; + }, +}; +const actions = {}; +const modules = {}; +const authModule = { + state, + getters, + mutations, + actions, + modules +}; +export default authModule; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/src/store/modules/auth/index.js.map b/src/store/modules/auth/index.js.map new file mode 100644 index 0000000..cc5aeaf --- /dev/null +++ b/src/store/modules/auth/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAGA,MAAM,KAAK,GAAG;IACV,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;CACd,CAAC;AAEF,MAAM,OAAO,GAAG;IACZ,eAAe,CAAC,KAAS;QACrB,OAAO,KAAK,CAAC,KAAK,CAAA;IACtB,CAAC;IACD,KAAK,EAAE,CAAC,KAAS,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK;CAEpC,CAAC;AAEF,MAAM,SAAS,GAAG;IACd,OAAO,CAAC,OAA+B,EAAE,OAAW;QAChD,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAC1C,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAChC,CAAC;CACJ,CAAC;AAEF,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,MAAM,OAAO,GAAG,EAAE,CAAC;AAEnB,MAAM,UAAU,GAAG;IACf,KAAK;IACL,OAAO;IACP,SAAS;IACT,OAAO;IACP,OAAO;CACV,CAAA;AAED,eAAe,UAAU,CAAA"} \ No newline at end of file diff --git a/src/store/modules/auth/index.ts b/src/store/modules/auth/index.ts new file mode 100644 index 0000000..a2db293 --- /dev/null +++ b/src/store/modules/auth/index.ts @@ -0,0 +1,36 @@ +import {ActionContext} from "vuex"; + + +const state = { + userId: null, + token: null +}; + +const getters = { + isAuthenticated(state:any ) { + return state.token + }, + token: (state:any) => state.token + +}; + +const mutations = { + setUser(context:ActionContext, payload:any) { + console.log("mutations.setUser", payload); + state.userId = payload.userId; + state.token = payload.token; + }, +}; + +const actions = {}; +const modules = {}; + +const authModule = { + state, + getters, + mutations, + actions, + modules +} + +export default authModule \ No newline at end of file diff --git a/src/store/modules/camera/index.js b/src/store/modules/camera/index.js new file mode 100644 index 0000000..cb4d803 --- /dev/null +++ b/src/store/modules/camera/index.js @@ -0,0 +1,93 @@ +import * as seed from "@/seed"; +const state = { + isInitialized: false, + cameras: [], + brands: [], + shapes: [], + buildtypes: [] +}; +const getters = { + cameras: (state) => state.cameras, + camera: (state) => (id) => state.cameras.find((camera) => camera.id === id), + activeCamera: (state) => state.cameras.find((camera) => camera.active), + brands: (state) => state.brands, + brand: (state) => (id) => state.brands.find((brand) => brand.schluessel === id), + shapes: (state) => state.shapes, + shape: (state) => (id) => state.shapes.find((shape) => shape.schluessel === id), + buildtypes: (state) => state.buildtypes, + buildtype: (state) => (id) => state.buildtypes.find((buildtype) => buildtype.schluessel === id), + isInitialized: (state) => state.isInitialized, +}; +const mutations = { + setCameras(state, payload) { + console.log("mutation.setCameras"); + const camerasDA = []; + payload.map((camera) => { + state.cameras.push({ + ...camera, + edit: false, + active: false + }); + }); + console.log("STORE", state.cameras); + }, + setCameraActiveState(state, payload) { + state.cameras.map((camera) => camera.active = false); + const objCamera = state.cameras.find((camera) => camera.id === payload.id); + objCamera.active = payload.active; + }, + setBrands(state, payload) { + console.log("mutation.setBrands"); + state.brands = payload; + console.log("STORE", state.brands); + }, + setShapes(state, payload) { + console.log("mutation.setShapes"); + state.shapes = payload; + console.log("STORE", state.shapes); + }, + setBuildtypes(state, payload) { + console.log("mutation.setBuildtypes"); + state.buildtypes = payload; + console.log("STORE", state.buildtypes); + }, + setInitialized(state, payload) { + state.isInitialized = payload; + } +}; +const actions = { + fetchCameras(context) { + context.commit("setCameras", seed.cameras); + }, + fetchBrands(context) { + context.commit("setBrands", seed.brands); + }, + fetchBuildTypes(context) { + context.commit("setBuildtypes", seed.buildtype); + }, + fetchShape(context) { + context.commit("setShapes", seed.shape); + }, + setCameraActiveState(context, payload) { + console.log("action.setCameraActiveState", payload); + const cameraObj = state.cameras.find((camera) => camera.id === payload.cameraId); + context.commit("setCameraActiveState", { id: payload.cameraId, active: payload.active }); + }, + initialize(context) { + context.dispatch("fetchCameras"); + context.dispatch("fetchBrands"); + context.dispatch("fetchBuildTypes"); + context.dispatch("fetchShape"); + context.commit("setInitialized", true); + } +}; +const modules = {}; +const cameraModule = { + state, + getters, + mutations, + actions, + modules +}; +export default cameraModule; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/src/store/modules/camera/index.js.map b/src/store/modules/camera/index.js.map new file mode 100644 index 0000000..89e0d2f --- /dev/null +++ b/src/store/modules/camera/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/store/modules/camera/index.ts b/src/store/modules/camera/index.ts new file mode 100644 index 0000000..1a824e5 --- /dev/null +++ b/src/store/modules/camera/index.ts @@ -0,0 +1,104 @@ +import {ActionContext} from "vuex"; +import * as seed from "@/seed"; + +const state = { + isInitialized: false, + cameras: [], + brands: [], + shapes: [], + buildtypes: [] + +}; +const getters = { + cameras: (state: any) => state.cameras, + camera: (state: any) => (id: any) => state.cameras.find((camera: any) => camera.id === id), + activeCamera: (state: any) => state.cameras.find((camera:any) => camera.active ), + + brands: (state: any) => state.brands, + brand: (state: any) => (id: any) => state.brands.find((brand: any) => brand.schluessel === id), + + shapes: (state: any) => state.shapes, + shape: (state: any) => (id: any) => state.shapes.find((shape: any) => shape.schluessel === id), + + buildtypes: (state: any) => state.buildtypes, + buildtype: (state: any) => (id: any) => state.buildtypes.find((buildtype: any) => buildtype.schluessel === id), + + isInitialized: (state:any ) => state.isInitialized, + +}; +const mutations = { + setCameras(state:any, payload:any) { + console.log("mutation.setCameras"); + const camerasDA = []; + payload.map((camera:any) => { + state.cameras.push({ + ...camera, + edit: false, + active: false + }) + }) + console.log("STORE", state.cameras); + }, + setCameraActiveState(state:any, payload:any) { + state.cameras.map((camera:any) => camera.active= false); + const objCamera = state.cameras.find((camera:any) => camera.id === payload.id); + objCamera.active = payload.active; + }, + setBrands(state:any, payload:any) { + console.log("mutation.setBrands"); + state.brands = payload; + console.log("STORE", state.brands); + }, + setShapes(state:any, payload:any) { + console.log("mutation.setShapes"); + state.shapes = payload; + console.log("STORE", state.shapes); + }, + setBuildtypes(state:any, payload:any) { + console.log("mutation.setBuildtypes"); + state.buildtypes = payload; + console.log("STORE", state.buildtypes); + }, + setInitialized(state:any, payload:boolean) { + state.isInitialized = payload; + } +}; +const actions = { + fetchCameras(context:ActionContext) { + context.commit("setCameras", seed.cameras); + }, + fetchBrands(context:ActionContext) { + context.commit("setBrands", seed.brands); + }, + fetchBuildTypes(context:ActionContext) { + context.commit("setBuildtypes", seed.buildtype); + }, + fetchShape(context:ActionContext) { + context.commit("setShapes", seed.shape); + }, + setCameraActiveState(context:ActionContext, payload:any) { + console.log("action.setCameraActiveState", payload) + const cameraObj = state.cameras.find( (camera:any) => camera.id === payload.cameraId); + context.commit("setCameraActiveState", {id: payload.cameraId, active:payload.active}); + + }, + initialize(context:ActionContext) { + context.dispatch("fetchCameras"); + context.dispatch("fetchBrands"); + context.dispatch("fetchBuildTypes"); + context.dispatch("fetchShape"); + context.commit("setInitialized", true); + + } +}; +const modules = {}; + +const cameraModule = { + state, + getters, + mutations, + actions, + modules +} + +export default cameraModule \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1da2106 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,42 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "esnext", + "strict": true, + "jsx": "preserve", + "moduleResolution": "node", + "experimentalDecorators": true, + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "useDefineForClassFields": true, + "sourceMap": true, + "baseUrl": ".", + "types": [ + "webpack-env" + ], + "paths": { + "@/*": [ + "src/*" + ] + }, + "lib": [ + "esnext", + "dom", + "dom.iterable", + "scripthost" + ] + }, + "include": [ + "src/**/*.ts", + "src/**/*.tsx", + "src/**/*.vue", + "tests/**/*.ts", + "tests/**/*.tsx" + ], + "exclude": [ + "node_modules" + ] +}
- For a guide and recipes on how to configure / customize this project, - check out the - vue-cli documentation. -