diff --git a/.gitignore b/.gitignore index 553e134..3bfb608 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,9 @@ .thumbs.db node_modules +# We use yarn, so ignore npm +package-lock.json + # Quasar core related directories .quasar /dist diff --git a/package.json b/package.json index 373c0d0..1afb0f5 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "@quasar/extras": "^1.9.10", "@vue/composition-api": "^0.6.4", "axios": "^0.21.0", + "cordova": "^10.0.0", "core-js": "^3.7.0", "quasar": "^1.14.5", "vue-router": "3.3.2" diff --git a/public/flaschengeist-logo-dark.svg b/public/flaschengeist-logo-dark.svg new file mode 100644 index 0000000..8533c9c --- /dev/null +++ b/public/flaschengeist-logo-dark.svg @@ -0,0 +1,156 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/flaschengeist-logo-white-with-kontur.svg b/public/flaschengeist-logo-white-with-kontur.svg new file mode 100644 index 0000000..de1fc22 --- /dev/null +++ b/public/flaschengeist-logo-white-with-kontur.svg @@ -0,0 +1,139 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/flaschengeist-logo-white.svg b/public/flaschengeist-logo-white.svg new file mode 100644 index 0000000..8fe611d --- /dev/null +++ b/public/flaschengeist-logo-white.svg @@ -0,0 +1,156 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/flaschengeist-logo.svg b/public/flaschengeist-logo.svg new file mode 100644 index 0000000..1fcd881 --- /dev/null +++ b/public/flaschengeist-logo.svg @@ -0,0 +1,146 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src-cordova/config.xml b/src-cordova/config.xml index 2c2c63f..ebcec69 100644 --- a/src-cordova/config.xml +++ b/src-cordova/config.xml @@ -15,10 +15,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src-cordova/package-lock.json b/src-cordova/package-lock.json index 95e776e..01f33ba 100644 --- a/src-cordova/package-lock.json +++ b/src-cordova/package-lock.json @@ -1,945 +1,8 @@ { "name": "de.wu5.flaschengeist", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "de.wu5.flaschengeist", - "version": "1.0.0", - "license": "Apache-2.0", - "devDependencies": { - "cordova-ios": "^6.1.1", - "cordova-plugin-whitelist": "^1.3.4" - } - }, - "node_modules/@netflix/nerror": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@netflix/nerror/-/nerror-1.1.3.tgz", - "integrity": "sha512-b+MGNyP9/LXkapreJzNUzcvuzZslj/RGgdVVJ16P2wSlYatfLycPObImqVJSmNAdyeShvNeM/pl3sVZsObFueg==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "extsprintf": "^1.4.0", - "lodash": "^4.17.15" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", - "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.3", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", - "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.3", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/ansi": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", - "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=", - "dev": true - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/big-integer": { - "version": "1.6.48", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", - "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/bplist-creator": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz", - "integrity": "sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==", - "dev": true, - "dependencies": { - "stream-buffers": "~2.2.0" - } - }, - "node_modules/bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", - "dev": true, - "dependencies": { - "big-integer": "^1.6.44" - }, - "engines": { - "node": ">= 5.10.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/cordova-common": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-4.0.2.tgz", - "integrity": "sha512-od7aNShyuBajzPY83mUEO8tERwwWdFklXETHiXP5Ft87CWeo/tSuwNPFztyTy8XYc74yXdogXKPTJeUHuVzB8Q==", - "dev": true, - "dependencies": { - "@netflix/nerror": "^1.1.3", - "ansi": "^0.3.1", - "bplist-parser": "^0.2.0", - "cross-spawn": "^7.0.1", - "elementtree": "^0.1.7", - "endent": "^1.4.1", - "fast-glob": "^3.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "plist": "^3.0.1", - "q": "^1.5.1", - "read-chunk": "^3.2.0", - "strip-bom": "^4.0.0", - "underscore": "^1.9.2" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/cordova-ios": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/cordova-ios/-/cordova-ios-6.1.1.tgz", - "integrity": "sha512-WHNvjVhkuwRpq95rISVXtcRyd6UGZapbmU+hO/CAn1c0AIT5WnO8mg2mOjv0WDNa0mt/V5P+N2Vig1UWwfxa5Q==", - "dev": true, - "dependencies": { - "cordova-common": "^4.0.2", - "fs-extra": "^9.0.0", - "ios-sim": "^8.0.2", - "nopt": "^4.0.3", - "plist": "^3.0.1", - "semver": "^7.3.2", - "unorm": "^1.6.0", - "which": "^2.0.2", - "xcode": "^3.0.1", - "xml-escape": "^1.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cordova-plugin-whitelist": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/cordova-plugin-whitelist/-/cordova-plugin-whitelist-1.3.4.tgz", - "integrity": "sha512-EYC5eQFVkoYXq39l7tYKE6lEjHJ04mvTmKXxGL7quHLdFPfJMNzru/UYpn92AOfpl3PQaZmou78C7EgmFOwFQQ==", - "dev": true, - "engines": { - "cordovaDependencies": { - "0.0.0": { - "cordova-android": ">=4.0.0" - }, - "2.0.0": { - "cordova": ">100" - } - } - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "node_modules/elementtree": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz", - "integrity": "sha1-mskb5uUvtuYkTE5UpKw+2K6OKcA=", - "dev": true, - "dependencies": { - "sax": "1.1.4" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/endent": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/endent/-/endent-1.4.1.tgz", - "integrity": "sha512-buHTb5c8AC9NshtP6dgmNLYkiT+olskbq1z6cEGvfGCF3Qphbu/1zz5Xu+yjTDln8RbxNhPoUyJ5H8MSrp1olQ==", - "dev": true, - "dependencies": { - "dedent": "^0.7.0", - "fast-json-parse": "^1.0.3", - "objectorarray": "^1.0.4" - } - }, - "node_modules/extsprintf": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz", - "integrity": "sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-glob": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", - "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-json-parse": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", - "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.9.0.tgz", - "integrity": "sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fs-extra": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", - "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ios-sim": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/ios-sim/-/ios-sim-8.0.2.tgz", - "integrity": "sha512-P7nEG771bfd+JoMRjnis1gpZOkjTUUxu+4Ek1Z+eoaEEoT9byllU9pxfQ8Df7hL3gSkIQxNwTSLhos2I8tWUQA==", - "dev": true, - "dependencies": { - "bplist-parser": "^0.0.6", - "nopt": "1.0.9", - "plist": "^3.0.1", - "simctl": "^2" - }, - "bin": { - "ios-sim": "bin/ios-sim" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ios-sim/node_modules/bplist-parser": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.0.6.tgz", - "integrity": "sha1-ONo0cYF9+dRKs4kuJ3B7u9daEbk=", - "dev": true - }, - "node_modules/ios-sim/node_modules/nopt": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.9.tgz", - "integrity": "sha1-O8DXy6e/sNWmdtvtfA6+SKT9RU4=", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonfile/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "dev": true, - "dependencies": { - "abbrev": "1", - "osenv": "^0.1.4" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/objectorarray": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.4.tgz", - "integrity": "sha512-91k8bjcldstRz1bG6zJo8lWD7c6QXcB4nTDUqiEvIL1xAsLoZlOOZZG+nd6YPz+V7zY1580J4Xxh1vZtyv4i/w==", - "dev": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/plist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", - "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", - "dev": true, - "dependencies": { - "base64-js": "^1.2.3", - "xmlbuilder": "^9.0.7", - "xmldom": "0.1.x" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true, - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/read-chunk": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz", - "integrity": "sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ==", - "dev": true, - "dependencies": { - "pify": "^4.0.1", - "with-open-file": "^0.1.6" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/run-parallel": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", - "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/sax": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz", - "integrity": "sha1-dLbTPJrh4AFRDxeakRaFiPGu2qk=", - "dev": true - }, - "node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/shelljs": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.2.6.tgz", - "integrity": "sha1-kEktcv/MgVmXa6umL7D2iE8MM3g=", - "dev": true, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/simctl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simctl/-/simctl-2.0.0.tgz", - "integrity": "sha512-5rB7rN4N3b0z0nFdy9eczVssXqrv2aAgdVRksPVqVoiDtvXmfzNvebp3EMdId2sAUzXIflarQlx4P0hjVQEzKQ==", - "dev": true, - "dependencies": { - "shelljs": "^0.2.6", - "tail": "^0.4.0" - } - }, - "node_modules/simple-plist": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.1.1.tgz", - "integrity": "sha512-pKMCVKvZbZTsqYR6RKgLfBHkh2cV89GXcA/0CVPje3sOiNOnXA8+rp/ciAMZ7JRaUdLzlEM6JFfUn+fS6Nt3hg==", - "dev": true, - "dependencies": { - "bplist-creator": "0.0.8", - "bplist-parser": "0.2.0", - "plist": "^3.0.1" - } - }, - "node_modules/stream-buffers": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", - "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tail": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/tail/-/tail-0.4.0.tgz", - "integrity": "sha1-0p3nJ1DMmdseBTr/E8NZ7PtxMAI=", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/underscore": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.11.0.tgz", - "integrity": "sha512-xY96SsN3NA461qIRKZ/+qox37YXPtSBswMGfiNptr+wrt6ds4HaMw23TP612fEyGekRE6LNRiLYr/aqbHXNedw==", - "dev": true - }, - "node_modules/universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unorm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz", - "integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", - "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/with-open-file": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.7.tgz", - "integrity": "sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA==", - "dev": true, - "dependencies": { - "p-finally": "^1.0.0", - "p-try": "^2.1.0", - "pify": "^4.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/xcode": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", - "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", - "dev": true, - "dependencies": { - "simple-plist": "^1.1.0", - "uuid": "^7.0.3" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/xml-escape": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xml-escape/-/xml-escape-1.1.0.tgz", - "integrity": "sha1-OQTBQ/qOs6ADDsZG0pAqLxtwbEQ=", - "dev": true - }, - "node_modules/xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/xmldom": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", - "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", - "dev": true, - "engines": { - "node": ">=0.1" - } - } - }, "dependencies": { "@netflix/nerror": { "version": "1.1.3", @@ -984,6 +47,23 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, + "android-versions": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/android-versions/-/android-versions-1.6.0.tgz", + "integrity": "sha512-ojC2Ig7b/KJ6iNtR8e4bacmOsJyEkoERk3CKMIsnH7kJz5z6551NMbrVaRb7KXYavu1d74Uhml/bfcmqT3nAcg==", + "dev": true, + "requires": { + "semver": "^5.7.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, "ansi": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", @@ -1063,6 +143,21 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "cordova-android": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-9.0.0.tgz", + "integrity": "sha512-2ZEgApK4LPMYW0zh/mLAH3CabzCaKE0yxQTzA2wTf0Eo2HHTJnRtDCf9spGf3nPOkubyXS6+pvzz5QzNHpVTqQ==", + "dev": true, + "requires": { + "android-versions": "^1.5.0", + "cordova-common": "^4.0.1", + "execa": "^4.0.2", + "fs-extra": "^9.0.1", + "nopt": "^4.0.3", + "properties-parser": "^0.3.1", + "which": "^2.0.2" + } + }, "cordova-common": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-4.0.2.tgz", @@ -1103,6 +198,12 @@ "xml-escape": "^1.1.0" } }, + "cordova-plugin-splashscreen": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cordova-plugin-splashscreen/-/cordova-plugin-splashscreen-6.0.0.tgz", + "integrity": "sha512-pm4ZtJKQY4bCGXVeIInbGrXilryTevYSKgfvoQJpW9UClOWKAxSsYf2/4G2u1vcn492svOSL42OSa2MhujBWEQ==", + "dev": true + }, "cordova-plugin-whitelist": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/cordova-plugin-whitelist/-/cordova-plugin-whitelist-1.3.4.tgz", @@ -1135,6 +236,15 @@ "sax": "1.1.4" } }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, "endent": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/endent/-/endent-1.4.1.tgz", @@ -1146,6 +256,23 @@ "objectorarray": "^1.0.4" } }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, "extsprintf": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz", @@ -1208,6 +335,15 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1237,6 +373,12 @@ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1303,6 +445,12 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -1333,6 +481,12 @@ "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", "dev": true }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -1349,6 +503,12 @@ "picomatch": "^2.0.5" } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -1368,6 +528,15 @@ "osenv": "^0.1.4" } }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, "objectorarray": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.4.tgz", @@ -1383,6 +552,15 @@ "wrappy": "1" } }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -1452,6 +630,25 @@ "xmldom": "0.1.x" } }, + "properties-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/properties-parser/-/properties-parser-0.3.1.tgz", + "integrity": "sha1-ExbpU5/7/ZOEXjabIRAiq9R4dxo=", + "dev": true, + "requires": { + "string.prototype.codepointat": "^0.2.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -1513,6 +710,12 @@ "integrity": "sha1-kEktcv/MgVmXa6umL7D2iE8MM3g=", "dev": true }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, "simctl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/simctl/-/simctl-2.0.0.tgz", @@ -1540,12 +743,24 @@ "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=", "dev": true }, + "string.prototype.codepointat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", + "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==", + "dev": true + }, "strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, "tail": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/tail/-/tail-0.4.0.tgz", diff --git a/src-cordova/package.json b/src-cordova/package.json index 77bad1b..6efa9ce 100644 --- a/src-cordova/package.json +++ b/src-cordova/package.json @@ -13,15 +13,19 @@ "author": "Apache Cordova Team", "license": "Apache-2.0", "devDependencies": { + "cordova-android": "^9.0.0", "cordova-ios": "^6.1.1", + "cordova-plugin-splashscreen": "^6.0.0", "cordova-plugin-whitelist": "^1.3.4" }, "cordova": { "plugins": { - "cordova-plugin-whitelist": {} + "cordova-plugin-whitelist": {}, + "cordova-plugin-splashscreen": {} }, "platforms": [ - "ios" + "ios", + "android" ] } } \ No newline at end of file diff --git a/src-cordova/res/android/hdpi.png b/src-cordova/res/android/hdpi.png new file mode 100644 index 0000000..f8b7556 Binary files /dev/null and b/src-cordova/res/android/hdpi.png differ diff --git a/src-cordova/res/android/ldpi.png b/src-cordova/res/android/ldpi.png new file mode 100644 index 0000000..918576d Binary files /dev/null and b/src-cordova/res/android/ldpi.png differ diff --git a/src-cordova/res/android/mdpi.png b/src-cordova/res/android/mdpi.png new file mode 100644 index 0000000..62a7d1f Binary files /dev/null and b/src-cordova/res/android/mdpi.png differ diff --git a/src-cordova/res/android/xhdpi.png b/src-cordova/res/android/xhdpi.png new file mode 100644 index 0000000..f101926 Binary files /dev/null and b/src-cordova/res/android/xhdpi.png differ diff --git a/src-cordova/res/android/xxhdpi.png b/src-cordova/res/android/xxhdpi.png new file mode 100644 index 0000000..fb6d5cb Binary files /dev/null and b/src-cordova/res/android/xxhdpi.png differ diff --git a/src-cordova/res/android/xxxhdpi.png b/src-cordova/res/android/xxxhdpi.png new file mode 100644 index 0000000..5ff27e5 Binary files /dev/null and b/src-cordova/res/android/xxxhdpi.png differ diff --git a/src-cordova/res/ios/icon-1024.png b/src-cordova/res/ios/icon-1024.png new file mode 100644 index 0000000..926831e Binary files /dev/null and b/src-cordova/res/ios/icon-1024.png differ diff --git a/src-cordova/res/ios/icon-20.png b/src-cordova/res/ios/icon-20.png new file mode 100644 index 0000000..d8b5142 Binary files /dev/null and b/src-cordova/res/ios/icon-20.png differ diff --git a/src-cordova/res/ios/icon-20@2x.png b/src-cordova/res/ios/icon-20@2x.png new file mode 100644 index 0000000..e3f7f49 Binary files /dev/null and b/src-cordova/res/ios/icon-20@2x.png differ diff --git a/src-cordova/res/ios/icon-20@3x.png b/src-cordova/res/ios/icon-20@3x.png new file mode 100644 index 0000000..7df03bf Binary files /dev/null and b/src-cordova/res/ios/icon-20@3x.png differ diff --git a/src-cordova/res/ios/icon-24@2x.png b/src-cordova/res/ios/icon-24@2x.png new file mode 100644 index 0000000..748c7e1 Binary files /dev/null and b/src-cordova/res/ios/icon-24@2x.png differ diff --git a/src-cordova/res/ios/icon-27.5@2x.png b/src-cordova/res/ios/icon-27.5@2x.png new file mode 100644 index 0000000..f7229dc Binary files /dev/null and b/src-cordova/res/ios/icon-27.5@2x.png differ diff --git a/src-cordova/res/ios/icon-29.png b/src-cordova/res/ios/icon-29.png new file mode 100644 index 0000000..af8a670 Binary files /dev/null and b/src-cordova/res/ios/icon-29.png differ diff --git a/src-cordova/res/ios/icon-29@2x.png b/src-cordova/res/ios/icon-29@2x.png new file mode 100644 index 0000000..bda922e Binary files /dev/null and b/src-cordova/res/ios/icon-29@2x.png differ diff --git a/src-cordova/res/ios/icon-29@3x.png b/src-cordova/res/ios/icon-29@3x.png new file mode 100644 index 0000000..0c291e1 Binary files /dev/null and b/src-cordova/res/ios/icon-29@3x.png differ diff --git a/src-cordova/res/ios/icon-40.png b/src-cordova/res/ios/icon-40.png new file mode 100644 index 0000000..e3f7f49 Binary files /dev/null and b/src-cordova/res/ios/icon-40.png differ diff --git a/src-cordova/res/ios/icon-40@2x.png b/src-cordova/res/ios/icon-40@2x.png new file mode 100644 index 0000000..f66b516 Binary files /dev/null and b/src-cordova/res/ios/icon-40@2x.png differ diff --git a/src-cordova/res/ios/icon-44@2x.png b/src-cordova/res/ios/icon-44@2x.png new file mode 100644 index 0000000..71258cf Binary files /dev/null and b/src-cordova/res/ios/icon-44@2x.png differ diff --git a/src-cordova/res/ios/icon-50.png b/src-cordova/res/ios/icon-50.png new file mode 100644 index 0000000..afb780c Binary files /dev/null and b/src-cordova/res/ios/icon-50.png differ diff --git a/src-cordova/res/ios/icon-50@2x.png b/src-cordova/res/ios/icon-50@2x.png new file mode 100644 index 0000000..a7d508b Binary files /dev/null and b/src-cordova/res/ios/icon-50@2x.png differ diff --git a/src-cordova/res/ios/icon-60@2x.png b/src-cordova/res/ios/icon-60@2x.png new file mode 100644 index 0000000..d861f87 Binary files /dev/null and b/src-cordova/res/ios/icon-60@2x.png differ diff --git a/src-cordova/res/ios/icon-60@3x.png b/src-cordova/res/ios/icon-60@3x.png new file mode 100644 index 0000000..4587465 Binary files /dev/null and b/src-cordova/res/ios/icon-60@3x.png differ diff --git a/src-cordova/res/ios/icon-72.png b/src-cordova/res/ios/icon-72.png new file mode 100644 index 0000000..b27ae3c Binary files /dev/null and b/src-cordova/res/ios/icon-72.png differ diff --git a/src-cordova/res/ios/icon-72@2x.png b/src-cordova/res/ios/icon-72@2x.png new file mode 100644 index 0000000..3621c8f Binary files /dev/null and b/src-cordova/res/ios/icon-72@2x.png differ diff --git a/src-cordova/res/ios/icon-76.png b/src-cordova/res/ios/icon-76.png new file mode 100644 index 0000000..496148a Binary files /dev/null and b/src-cordova/res/ios/icon-76.png differ diff --git a/src-cordova/res/ios/icon-76@2x.png b/src-cordova/res/ios/icon-76@2x.png new file mode 100644 index 0000000..bdb2569 Binary files /dev/null and b/src-cordova/res/ios/icon-76@2x.png differ diff --git a/src-cordova/res/ios/icon-83.5@2x.png b/src-cordova/res/ios/icon-83.5@2x.png new file mode 100644 index 0000000..23ebbc3 Binary files /dev/null and b/src-cordova/res/ios/icon-83.5@2x.png differ diff --git a/src-cordova/res/ios/icon-86@2x.png b/src-cordova/res/ios/icon-86@2x.png new file mode 100644 index 0000000..fea8585 Binary files /dev/null and b/src-cordova/res/ios/icon-86@2x.png differ diff --git a/src-cordova/res/ios/icon-98@2x.png b/src-cordova/res/ios/icon-98@2x.png new file mode 100644 index 0000000..2bcbcbb Binary files /dev/null and b/src-cordova/res/ios/icon-98@2x.png differ diff --git a/src-cordova/res/ios/icon.png b/src-cordova/res/ios/icon.png new file mode 100644 index 0000000..bf9fe3a Binary files /dev/null and b/src-cordova/res/ios/icon.png differ diff --git a/src-cordova/res/ios/icon@2x.png b/src-cordova/res/ios/icon@2x.png new file mode 100644 index 0000000..1724047 Binary files /dev/null and b/src-cordova/res/ios/icon@2x.png differ diff --git a/src-cordova/res/screen/android/splash-land-hdpi.png b/src-cordova/res/screen/android/splash-land-hdpi.png new file mode 100644 index 0000000..7237031 Binary files /dev/null and b/src-cordova/res/screen/android/splash-land-hdpi.png differ diff --git a/src-cordova/res/screen/android/splash-land-ldpi.png b/src-cordova/res/screen/android/splash-land-ldpi.png new file mode 100644 index 0000000..3f92dab Binary files /dev/null and b/src-cordova/res/screen/android/splash-land-ldpi.png differ diff --git a/src-cordova/res/screen/android/splash-land-mdpi.png b/src-cordova/res/screen/android/splash-land-mdpi.png new file mode 100644 index 0000000..44241a6 Binary files /dev/null and b/src-cordova/res/screen/android/splash-land-mdpi.png differ diff --git a/src-cordova/res/screen/android/splash-land-xhdpi.png b/src-cordova/res/screen/android/splash-land-xhdpi.png new file mode 100644 index 0000000..405899d Binary files /dev/null and b/src-cordova/res/screen/android/splash-land-xhdpi.png differ diff --git a/src-cordova/res/screen/android/splash-land-xxhdpi.png b/src-cordova/res/screen/android/splash-land-xxhdpi.png new file mode 100644 index 0000000..00c2c8c Binary files /dev/null and b/src-cordova/res/screen/android/splash-land-xxhdpi.png differ diff --git a/src-cordova/res/screen/android/splash-land-xxxhdpi.png b/src-cordova/res/screen/android/splash-land-xxxhdpi.png new file mode 100644 index 0000000..cd0d955 Binary files /dev/null and b/src-cordova/res/screen/android/splash-land-xxxhdpi.png differ diff --git a/src-cordova/res/screen/android/splash-port-hdpi.png b/src-cordova/res/screen/android/splash-port-hdpi.png new file mode 100644 index 0000000..47401fa Binary files /dev/null and b/src-cordova/res/screen/android/splash-port-hdpi.png differ diff --git a/src-cordova/res/screen/android/splash-port-ldpi.png b/src-cordova/res/screen/android/splash-port-ldpi.png new file mode 100644 index 0000000..ccc78d6 Binary files /dev/null and b/src-cordova/res/screen/android/splash-port-ldpi.png differ diff --git a/src-cordova/res/screen/android/splash-port-mdpi.png b/src-cordova/res/screen/android/splash-port-mdpi.png new file mode 100644 index 0000000..3a47c06 Binary files /dev/null and b/src-cordova/res/screen/android/splash-port-mdpi.png differ diff --git a/src-cordova/res/screen/android/splash-port-xhdpi.png b/src-cordova/res/screen/android/splash-port-xhdpi.png new file mode 100644 index 0000000..bb80b92 Binary files /dev/null and b/src-cordova/res/screen/android/splash-port-xhdpi.png differ diff --git a/src-cordova/res/screen/android/splash-port-xxhdpi.png b/src-cordova/res/screen/android/splash-port-xxhdpi.png new file mode 100644 index 0000000..e879b67 Binary files /dev/null and b/src-cordova/res/screen/android/splash-port-xxhdpi.png differ diff --git a/src-cordova/res/screen/android/splash-port-xxxhdpi.png b/src-cordova/res/screen/android/splash-port-xxxhdpi.png new file mode 100644 index 0000000..a463528 Binary files /dev/null and b/src-cordova/res/screen/android/splash-port-xxxhdpi.png differ diff --git a/src-cordova/res/screen/ios/Default@2x~ipad~anyany.png b/src-cordova/res/screen/ios/Default@2x~ipad~anyany.png new file mode 100644 index 0000000..518284c Binary files /dev/null and b/src-cordova/res/screen/ios/Default@2x~ipad~anyany.png differ diff --git a/src-cordova/res/screen/ios/Default@2x~ipad~comany.png b/src-cordova/res/screen/ios/Default@2x~ipad~comany.png new file mode 100644 index 0000000..6094ab0 Binary files /dev/null and b/src-cordova/res/screen/ios/Default@2x~ipad~comany.png differ diff --git a/src-cordova/res/screen/ios/Default@2x~iphone~anyany.png b/src-cordova/res/screen/ios/Default@2x~iphone~anyany.png new file mode 100644 index 0000000..997da93 Binary files /dev/null and b/src-cordova/res/screen/ios/Default@2x~iphone~anyany.png differ diff --git a/src-cordova/res/screen/ios/Default@2x~iphone~comany.png b/src-cordova/res/screen/ios/Default@2x~iphone~comany.png new file mode 100644 index 0000000..3ee4163 Binary files /dev/null and b/src-cordova/res/screen/ios/Default@2x~iphone~comany.png differ diff --git a/src-cordova/res/screen/ios/Default@2x~iphone~comcom.png b/src-cordova/res/screen/ios/Default@2x~iphone~comcom.png new file mode 100644 index 0000000..0641764 Binary files /dev/null and b/src-cordova/res/screen/ios/Default@2x~iphone~comcom.png differ diff --git a/src-cordova/res/screen/ios/Default@3x~iphone~anyany.png b/src-cordova/res/screen/ios/Default@3x~iphone~anyany.png new file mode 100644 index 0000000..7f756cd Binary files /dev/null and b/src-cordova/res/screen/ios/Default@3x~iphone~anyany.png differ diff --git a/src-cordova/res/screen/ios/Default@3x~iphone~anycom.png b/src-cordova/res/screen/ios/Default@3x~iphone~anycom.png new file mode 100644 index 0000000..f528d1a Binary files /dev/null and b/src-cordova/res/screen/ios/Default@3x~iphone~anycom.png differ diff --git a/src-cordova/res/screen/ios/Default@3x~iphone~comany.png b/src-cordova/res/screen/ios/Default@3x~iphone~comany.png new file mode 100644 index 0000000..4274e25 Binary files /dev/null and b/src-cordova/res/screen/ios/Default@3x~iphone~comany.png differ diff --git a/src/boot/axios.ts b/src/boot/axios.ts index bd631e8..940b45a 100644 --- a/src/boot/axios.ts +++ b/src/boot/axios.ts @@ -3,6 +3,8 @@ import { boot } from 'quasar/wrappers'; import config from '../config'; import { Store } from 'vuex'; import { StateInterface } from 'src/store'; +import { LocalStorage } from 'quasar'; +import { Notify } from 'quasar'; declare module 'vue/types/vue' { interface Vue { @@ -10,11 +12,29 @@ declare module 'vue/types/vue' { } } +export const setBaseUrl = (url: string) => { + LocalStorage.set('baseURL', url); + axios.defaults.baseURL = url; + Notify.create({ + message: 'Serveraddresse gespeichert', + position: 'bottom', + caption: `${url}`, + color: 'positive' + }); + setTimeout(() => { + window.location.reload(); + }, 5000); +}; + export default boot>(({ Vue, store, router }) => { // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access Vue.prototype.$axios = axios; - axios.defaults.baseURL = config.baseURL; - + const baseURL = LocalStorage.getItem('baseURL'); + if (baseURL) { + axios.defaults.baseURL = baseURL; + } else { + axios.defaults.baseURL = config.baseURL; + } /*** * Intercept requests and insert Token if available */ diff --git a/src/components/utils/IsoDateInput.vue b/src/components/utils/IsoDateInput.vue index 8e11456..fcf2cd2 100644 --- a/src/components/utils/IsoDateInput.vue +++ b/src/components/utils/IsoDateInput.vue @@ -43,7 +43,7 @@ interface Props { label?: string; readonly: boolean; type: string; - rules: Array; + rules: Array; } export default defineComponent({ @@ -63,7 +63,7 @@ export default defineComponent({ } }, rules: { - default: [] + default: () => { return [] } } }, setup(props: Props, { emit }: { emit: any }) { diff --git a/src/flaschengeist.d.ts b/src/flaschengeist.d.ts index c39e217..4a40367 100644 --- a/src/flaschengeist.d.ts +++ b/src/flaschengeist.d.ts @@ -27,10 +27,11 @@ declare namespace FG { id: number; time: Date; amount: number; - reversal?: this; + reversal_id: number; sender_id?: string; receiver_id?: string; author_id?: string; + original_id?: number; } interface Event { id: number; diff --git a/src/layouts/MainLayout.vue b/src/layouts/MainLayout.vue index e826db5..b74cc1a 100644 --- a/src/layouts/MainLayout.vue +++ b/src/layouts/MainLayout.vue @@ -14,8 +14,8 @@ - - + + Flaschengeist diff --git a/src/layouts/OutLayout.vue b/src/layouts/OutLayout.vue index cda1c88..708733c 100644 --- a/src/layouts/OutLayout.vue +++ b/src/layouts/OutLayout.vue @@ -3,8 +3,8 @@ - - + + Flaschengeist diff --git a/src/pages/Login.vue b/src/pages/Login.vue index 2d0a684..9800cfe 100644 --- a/src/pages/Login.vue +++ b/src/pages/Login.vue @@ -36,6 +36,21 @@ +
+ +
+ +
+ + + +
Servereinstellung
+ + +
+
+
+
@@ -43,6 +58,7 @@ diff --git a/src/pages/about/About.vue b/src/pages/about/About.vue index 47184d8..d92c3df 100644 --- a/src/pages/about/About.vue +++ b/src/pages/about/About.vue @@ -6,7 +6,7 @@ >
diff --git a/src/plugins/balance/components/BalanceAdd.vue b/src/plugins/balance/components/BalanceAdd.vue new file mode 100644 index 0000000..d263b74 --- /dev/null +++ b/src/plugins/balance/components/BalanceAdd.vue @@ -0,0 +1,125 @@ + + + diff --git a/src/plugins/balance/components/BalanceHeader.vue b/src/plugins/balance/components/BalanceHeader.vue index 49617e4..21f6cab 100644 --- a/src/plugins/balance/components/BalanceHeader.vue +++ b/src/plugins/balance/components/BalanceHeader.vue @@ -1,12 +1,15 @@ @@ -43,7 +46,11 @@ export default defineComponent({ emit('update:user', selectedUser); } - return { user, balance, isLocked, userUpdated }; + function openHistory() { + emit('open-history'); + } + + return { user, balance, isLocked, userUpdated, openHistory }; } }); diff --git a/src/plugins/balance/pages/Transfer.vue b/src/plugins/balance/components/BalanceTransfer.vue similarity index 53% rename from src/plugins/balance/pages/Transfer.vue rename to src/plugins/balance/components/BalanceTransfer.vue index eaa021f..b92d286 100644 --- a/src/plugins/balance/pages/Transfer.vue +++ b/src/plugins/balance/components/BalanceTransfer.vue @@ -1,39 +1,25 @@ diff --git a/src/plugins/balance/pages/Admin.vue b/src/plugins/balance/pages/Admin.vue index cde0f97..e8c53bb 100644 --- a/src/plugins/balance/pages/Admin.vue +++ b/src/plugins/balance/pages/Admin.vue @@ -11,25 +11,24 @@ diff --git a/src/plugins/balance/pages/Overview.vue b/src/plugins/balance/pages/Overview.vue new file mode 100644 index 0000000..50aba60 --- /dev/null +++ b/src/plugins/balance/pages/Overview.vue @@ -0,0 +1,154 @@ + + + diff --git a/src/plugins/balance/routes/index.ts b/src/plugins/balance/routes/index.ts index e84aa82..358c7b0 100644 --- a/src/plugins/balance/routes/index.ts +++ b/src/plugins/balance/routes/index.ts @@ -7,32 +7,32 @@ const mainRoutes: FG_Plugin.PluginRouteConfig[] = [ icon: 'mdi-cash-100', path: 'balance', name: 'balance', - redirect: { name: 'balance-add' }, + redirect: { name: 'balance-view' }, meta: { permissions: ['user'] }, children: [ { - title: 'Anschreiben', + title: 'Übersicht', icon: 'mdi-cash-plus', - path: 'add', - name: 'balance-add', - shortcut: true, - meta: { permissions: [permissions.DEBIT_OWN, permissions.SHOW] }, - component: () => import('../pages/Add.vue') + path: 'overview', + name: 'balance-view', + meta: { permissions: [permissions.SHOW] }, + component: () => import('../pages/Overview.vue') }, { - title: 'Übertragen', - icon: 'mdi-cash-refund', - path: 'transfer', - name: 'balance-transfer', - meta: { permissions: [permissions.SEND] }, - component: () => import('../pages/Transfer.vue') + title: 'Buchen', + icon: 'mdi-cash-plus', + path: 'change', + name: 'balance-change', + shortcut: true, + meta: { permissions: [permissions.DEBIT_OWN, permissions.SHOW] }, + component: () => import('../pages/MainPage.vue') }, { title: 'Verwaltung', icon: 'mdi-account-cash', path: 'admin', name: 'balance-admin', - meta: { permissions: [permissions.DEBIT_OWN, permissions.SHOW] }, + meta: { permissions: [permissions.SET_LIMIT, permissions.SHOW_OTHER] }, component: () => import('../pages/Admin.vue') } ] diff --git a/src/plugins/balance/store/balance.ts b/src/plugins/balance/store/balance.ts index e675b72..8199296 100644 --- a/src/plugins/balance/store/balance.ts +++ b/src/plugins/balance/store/balance.ts @@ -1,5 +1,5 @@ import { Module, MutationTree, ActionTree, GetterTree } from 'vuex'; -import { StateInterface } from 'src/store'; +import store, { StateInterface } from 'src/store'; import { axios } from 'src/boot/axios'; import { AxiosResponse } from 'axios'; @@ -9,6 +9,15 @@ interface BalanceResponse { debit: number; } +export interface BalancesResponse extends BalanceResponse { + userid: string; +} + +export interface TransactionsResponse { + transactions: Array; + count?: number; +} + export interface UserBalance extends BalanceResponse { limit: number | null; } @@ -31,6 +40,10 @@ const state: BalanceInterface = { loading: 0 }; +function fixTransaction(t: FG.Transaction) { + t.time = new Date(t.time); +} + const mutations: MutationTree = { setBalance(state, data: { userid: string; balance: BalanceResponse }) { state.balances.set( @@ -59,9 +72,13 @@ const mutations: MutationTree = { addTransaction(state, data: FG.Transaction) { state.transactions.push(data); }, + addTransactions(state, data: [FG.Transaction]) { + state.transactions.push(...data); + state.transactions.sort((a, b) => (a.time <= b.time ? -1 : 1)); + }, reverseTransaction(state, data: { transaction: FG.Transaction; reversal: FG.Transaction }) { const idx = state.transactions.findIndex(value => value.id === data.transaction.id); - data.transaction.reversal = data.reversal; + data.transaction.reversal_id = data.reversal.id; if (idx > -1) state.transactions[idx] = data.transaction; else state.transactions.push(data.transaction); } @@ -70,7 +87,7 @@ const mutations: MutationTree = { const actions: ActionTree = { addShortcut({ commit, state, rootState }, shortcut) { const sc = [...state.shortcuts, shortcut]; - sc.sort().reverse(); + sc.sort(); const user = rootState.user.currentUser; return axios.put(`/users/${user.userid}/balance/shortcuts`, sc).then(() => { @@ -109,6 +126,37 @@ const actions: ActionTree = { }) .finally(() => commit('setLoading', false)); }, + getBalances() { + return axios.get('/balance').then(({ data }: AxiosResponse>) => { + return data; + }); + }, + getTransactions( + { commit, rootState }, + payload: { + userid?: string; + filter?: { + limit?: number; + offset?: number; + from?: Date; + to?: Date; + showReversals?: boolean; + showCancelled?: boolean; + }; + } + ) { + commit('setLoading'); + if (!payload.userid) payload.userid = (rootState.user.currentUser).userid; + if (!payload.filter) payload.filter = { limit: 10 }; + return axios + .get(`/users/${payload.userid}/balance/transactions`, { params: payload.filter || {} }) + .then(({ data }: AxiosResponse) => { + data.transactions.forEach(t => fixTransaction(t)); + commit('addTransactions', data.transactions); + return data; + }) + .finally(() => commit('setLoading', false)); + }, getLimit({ rootState, commit }) { commit('setLoading'); axios @@ -125,19 +173,27 @@ const actions: ActionTree = { revert({ dispatch, commit }, transaction: FG.Transaction) { return axios .delete(`/balance/${transaction.id}`) - .then((response: AxiosResponse) => { - commit('reverseTransaction', { transaction: transaction, reversal: response.data }); + .then(({ data }: AxiosResponse) => { + fixTransaction(data); + commit('reverseTransaction', { transaction: transaction, reversal: data }); dispatch('getBalance').catch(err => console.warn(err)); }); }, - changeBalance({ dispatch, commit }, data: { amount: number; user: string; sender?: string }) { + changeBalance( + { dispatch, commit, rootState }, + data: { amount: number; user: string; sender?: string } + ) { commit('setLoading'); return axios .put(`/users/${data.user}/balance`, data) .then((response: AxiosResponse) => { const transaction = response.data; - transaction.time = new Date(transaction.time); - commit('addTransaction', transaction); + fixTransaction(transaction); + if ( + data.user == rootState.user.currentUser?.userid || + data.sender === rootState.user.currentUser?.userid + ) + commit('addTransaction', transaction); commit(state.balances.has(data.user) ? 'changeBalance' : 'setBalance', { userid: data.user, amount: data.amount @@ -152,6 +208,7 @@ const actions: ActionTree = { .catch(err => { console.debug(err); // Maybe Balance changed + void dispatch('getTransactions', {}); return dispatch('getBalance', data.sender ? data.sender : data.user); }) .finally(() => commit('setLoading', false)); diff --git a/src/plugins/schedule/components/management/CreateEvent.vue b/src/plugins/schedule/components/management/CreateEvent.vue index d3798f5..9080ed7 100644 --- a/src/plugins/schedule/components/management/CreateEvent.vue +++ b/src/plugins/schedule/components/management/CreateEvent.vue @@ -3,7 +3,7 @@ - +
Veranstaltung erstellen
- +
@@ -149,7 +149,7 @@ export default defineComponent({ event.value.id = NaN; event.value.start = new Date(); event.value.description = ''; - delete event.value['type']; + event.value.type = {id: -1, name: ''}; event.value.jobs = [Object.assign({}, newJob.value)]; } function notEmpty(val: string) { diff --git a/src/plugins/schedule/components/management/Job.vue b/src/plugins/schedule/components/management/Job.vue index d0e3251..f10a377 100644 --- a/src/plugins/schedule/components/management/Job.vue +++ b/src/plugins/schedule/components/management/Job.vue @@ -89,33 +89,33 @@ export default defineComponent({ function setStart(value: Date) { // eslint-disable-next-line @typescript-eslint/no-unsafe-call - emit('setStart', { job: props.job, value }); + emit('set-start', { job: props.job, value }); } function setEnd(value: Date) { // eslint-disable-next-line @typescript-eslint/no-unsafe-call - emit('setEnd', { job: props.job, value }); + emit('set-end', { job: props.job, value }); } function setComment(value: string) { // eslint-disable-next-line @typescript-eslint/no-unsafe-call - emit('setComment', { job: props.job, value }); + emit('set-comment', { job: props.job, value }); } function setJobType(value: FG.JobType) { // eslint-disable-next-line @typescript-eslint/no-unsafe-call console.log('setJobType', value); - emit('setJobType', { job: props.job, value }); + emit('set-job-type', { job: props.job, value }); } function setRequired(value: number) { // eslint-disable-next-line @typescript-eslint/no-unsafe-call - emit('setRequired', { job: props.job, value }); + emit('set-required', { job: props.job, value }); } function removeJob() { // eslint-disable-next-line @typescript-eslint/no-unsafe-call - emit('removeJob'); + emit('remove-job'); } function notEmpty(val: string) { diff --git a/src/plugins/schedule/routes/index.ts b/src/plugins/schedule/routes/index.ts index 5a02182..e172fff 100644 --- a/src/plugins/schedule/routes/index.ts +++ b/src/plugins/schedule/routes/index.ts @@ -1,25 +1,5 @@ import { FG_Plugin } from 'src/plugins'; -/*const permissions = { - // Show own and others balance - SHOW: 'balance_show', - SHOW_OTHER: 'balance_show_others', - // Credit balance (give) - CREDIT: 'balance_credit', - // Debit balance (take) - DEBIT: 'balance_debit', - // Debit own balance only - DEBIT_OWN: 'balance_debit_own', - // Send from to other - SEND: 'balance_send', - // Send from other to another - SEND_OTHER: 'balance_send_others', - // Can set limit for users - SET_LIMIT: 'balance_set_limit', - //Allow sending / sub while exceeding the set limit - EXCEED_LIMIT: 'balance_exceed_limit' -};*/ - const mainRoutes: FG_Plugin.PluginRouteConfig[] = [ { title: 'Dienste', diff --git a/src/plugins/user/components/settings/Sessions.vue b/src/plugins/user/components/settings/Sessions.vue index c609bef..77fc6e5 100644 --- a/src/plugins/user/components/settings/Sessions.vue +++ b/src/plugins/user/components/settings/Sessions.vue @@ -31,12 +31,7 @@ label="Zeit" filled /> - +
@@ -59,10 +54,10 @@ export default defineComponent({ name: 'Sessions', props: { session: { - required: true, - }, + required: true + } }, - setup(props: {session: FG.Session}, { root }) { + setup(props: { session: FG.Session }, { root }) { const store = >root.$store; const options = ref(['Minuten', 'Stunden', 'Tage']); const option = ref(options.value[0]); @@ -92,7 +87,7 @@ export default defineComponent({ } function deleteSession(token: string) { - store.dispatch('session/deleteSession', token).catch((error) => { + store.dispatch('session/deleteSession', token).catch(error => { console.warn(error); }); } @@ -113,7 +108,7 @@ export default defineComponent({ return (lifetime.value / (60 * 60 * 24)).toFixed(2); } }, - set: (val) => { + set: val => { if (val) { switch (option.value) { case options.value[0]: @@ -127,7 +122,7 @@ export default defineComponent({ break; } } - }, + } }); function edit(value: boolean) { @@ -139,11 +134,8 @@ export default defineComponent({ console.log(lifetime.value); isEdit.value = false; void store - .dispatch( - 'session/updateSession', - {lifetime: lifetime.value, token: props.session.token} - ) - .catch((error) => { + .dispatch('session/updateSession', { lifetime: lifetime.value, token: props.session.token }) + .catch(error => { console.log(error); }); } @@ -159,8 +151,8 @@ export default defineComponent({ option, lifetime, computedLifetime, - save, + save }; - }, + } }); diff --git a/src/plugins/user/store/session.ts b/src/plugins/user/store/session.ts index 5c4f4ab..5d5b68a 100644 --- a/src/plugins/user/store/session.ts +++ b/src/plugins/user/store/session.ts @@ -25,7 +25,7 @@ function loadCurrentSession() { const state: SessionInterface = { sessions: [], currentSession: loadCurrentSession() || undefined, - loading: false, + loading: false }; const mutations: MutationTree = { @@ -44,11 +44,11 @@ const mutations: MutationTree = { state.loading = value; }, updateSession(state, session: FG.Session) { - const index = state.sessions.findIndex((x) => x.token == session.token); + const index = state.sessions.findIndex(x => x.token == session.token); if (index > -1) { state.sessions[index] = session; } - }, + } }; const actions: ActionTree = { @@ -65,7 +65,7 @@ const actions: ActionTree = { commit('setCurrentSession', response.data.session); commit('user/setCurrentUser', response.data.user, { root: true }); commit('user/setCurrentPermissions', response.data.permissions, { - root: true, + root: true }); }) .catch((error: AxiosError) => { @@ -78,7 +78,7 @@ const actions: ActionTree = { */ logout({ dispatch, rootState }) { if (rootState.session.currentSession) { - dispatch('deleteSession', rootState.session.currentSession.token).catch((error) => { + dispatch('deleteSession', rootState.session.currentSession.token).catch(error => { console.log(error); void dispatch('clearCurrent', false); }); @@ -97,7 +97,7 @@ const actions: ActionTree = { if (token === rootState.session.currentSession?.token) { void dispatch('clearCurrent', false); } else { - dispatch('getSessions').catch((error) => { + dispatch('getSessions').catch(error => { throw error; }); } @@ -116,7 +116,7 @@ const actions: ActionTree = { void Router.push({ name: 'login', query: redirect ? { redirect: Router.currentRoute.fullPath } : {}, - params: { logout: 'true' }, + params: { logout: 'true' } }).then(() => { commit('clearCurrentSession'); commit('user/clearCurrentUser', null, { root: true }); @@ -132,7 +132,7 @@ const actions: ActionTree = { axios .get('/auth') .then((response: AxiosResponse) => { - response.data.forEach((session) => { + response.data.forEach(session => { session.expires = new Date(session.expires); }); commit('setSessions', response.data); @@ -143,7 +143,7 @@ const actions: ActionTree = { commit('setCurrentSession', currentSession); } }) - .catch((error) => { + .catch(error => { throw error; }) .finally(() => { @@ -160,7 +160,7 @@ const actions: ActionTree = { commit('setCurrentSession', response.data); } }) - .catch((err) => console.log(err)) + .catch(err => console.log(err)) .finally(() => { commit('setLoading', false); }); @@ -173,7 +173,7 @@ const actions: ActionTree = { return axios.post('/auth/reset', data).catch((error: AxiosError) => { return Promise.reject(error.response); }); - }, + } }; const getters: GetterTree = { @@ -185,7 +185,7 @@ const getters: GetterTree = { }, loading(state) { return state.loading; - }, + } }; const sessions: Module = { @@ -193,7 +193,7 @@ const sessions: Module = { state, mutations, actions, - getters, + getters }; export default sessions; diff --git a/src/utils/permission.ts b/src/utils/permission.ts index 763ca2a..aa5a2b8 100644 --- a/src/utils/permission.ts +++ b/src/utils/permission.ts @@ -9,3 +9,8 @@ export function hasPermissions(needed: string[], store: Store) { const permissions = store.state.user.currentPermissions; return needed.every(value => permissions.includes(value)); } + +export function hasSomePermissions(needed: string[], store: Store) { + const permissions = store.state.user.currentPermissions; + return needed.some(value => permissions.includes(value)); +}