From c76e8b018495675ec56214e6b0329ccf80626622 Mon Sep 17 00:00:00 2001 From: Buster Neece Date: Sat, 10 Dec 2022 13:32:15 -0600 Subject: [PATCH] More work on Vue 3. --- frontend/npm-shrinkwrap.json | 562 +++++++++++++++++- frontend/package.json | 2 +- frontend/vue/base.js | 123 ++-- frontend/vue/pages/Account.js | 3 - frontend/vue/pages/Admin/ApiKeys.js | 11 +- frontend/vue/pages/Admin/AuditLog.js | 8 +- frontend/vue/pages/Admin/Backups.js | 3 - frontend/vue/pages/Admin/Branding.js | 7 +- frontend/vue/pages/Admin/CustomFields.js | 3 - frontend/vue/pages/Admin/GeoLite.js | 2 - frontend/vue/pages/Admin/Index.js | 3 - frontend/vue/pages/Admin/Logs.js | 2 - frontend/vue/pages/Admin/Permissions.js | 3 - frontend/vue/pages/Admin/Settings.js | 2 - frontend/vue/pages/Admin/Shoutcast.js | 2 - frontend/vue/pages/Admin/Stations.js | 3 - frontend/vue/pages/Admin/StereoTool.js | 2 - frontend/vue/pages/Admin/StorageLocations.js | 3 - frontend/vue/pages/Admin/Users.js | 3 - frontend/vue/pages/Dashboard.js | 2 - frontend/vue/pages/InlinePlayer.js | 23 +- frontend/vue/pages/Public/FullPlayer.js | 1 - frontend/vue/pages/Public/OnDemand.js | 8 +- frontend/vue/pages/Public/Requests.js | 8 +- frontend/vue/pages/Public/Schedule.js | 7 +- frontend/vue/pages/Public/WebDJ.js | 8 +- frontend/vue/pages/Recover.js | 2 - frontend/vue/pages/Setup/Register.js | 2 - frontend/vue/pages/Setup/Settings.js | 2 - frontend/vue/pages/Setup/Station.js | 2 - frontend/vue/pages/Stations/BulkMedia.js | 2 - frontend/vue/pages/Stations/Fallback.js | 2 - frontend/vue/pages/Stations/Help.js | 2 - frontend/vue/pages/Stations/HlsStreams.js | 3 - .../vue/pages/Stations/LiquidsoapConfig.js | 2 - frontend/vue/pages/Stations/Media.js | 2 - frontend/vue/pages/Stations/Mounts.js | 3 - frontend/vue/pages/Stations/Playlists.js | 2 - frontend/vue/pages/Stations/Podcasts.js | 2 - frontend/vue/pages/Stations/Profile.js | 1 - frontend/vue/pages/Stations/ProfileEdit.js | 2 - frontend/vue/pages/Stations/Queue.js | 2 - frontend/vue/pages/Stations/Remotes.js | 3 - .../vue/pages/Stations/Reports/Listeners.js | 7 +- .../vue/pages/Stations/Reports/Overview.js | 7 +- .../vue/pages/Stations/Reports/Requests.js | 2 - .../pages/Stations/Reports/SoundExchange.js | 1 - .../vue/pages/Stations/Reports/Timeline.js | 7 +- frontend/vue/pages/Stations/SftpUsers.js | 3 - .../vue/pages/Stations/StereoToolConfig.js | 2 - frontend/vue/pages/Stations/Streamers.js | 2 - frontend/vue/pages/Stations/Webhooks.js | 3 - frontend/vue/vendor/gettext.js | 8 + frontend/vue/vendor/pinia.js | 8 +- 54 files changed, 660 insertions(+), 230 deletions(-) create mode 100644 frontend/vue/vendor/gettext.js diff --git a/frontend/npm-shrinkwrap.json b/frontend/npm-shrinkwrap.json index 9e2a56289..6b765c610 100644 --- a/frontend/npm-shrinkwrap.json +++ b/frontend/npm-shrinkwrap.json @@ -15,7 +15,7 @@ "@fullcalendar/daygrid": "^5.9.0", "@fullcalendar/luxon2": "^5.10.2", "@fullcalendar/timegrid": "^5.9.0", - "@fullcalendar/vue3": "*", + "@fullcalendar/vue3": "^5.11", "@vue-leaflet/vue-leaflet": "*", "@vue/compat": "^3.2.45", "@vuelidate/core": "^2.0.0", @@ -62,12 +62,12 @@ "sass-loader": "^13", "store": "^2", "sweetalert2": "11.4.8", - "vue": "^3", - "vue-axios": "*", + "vue": "^3.2", + "vue-axios": "^3.5", "vue-clipboard2": "^0.3.3", - "vue-gettext": "^2.1.12", - "vue-loader": "*", - "vue3-daterange-picker": "*", + "vue-loader": "^17", + "vue3-daterange-picker": "^1", + "vue3-gettext": "^2.3.4", "vuedraggable": "^2.24.1", "wavesurfer.js": "^6", "webpack": "^5.52.1", @@ -1935,16 +1935,40 @@ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, "node_modules/@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" + }, "node_modules/@types/node": { "version": "18.11.12", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.12.tgz", "integrity": "sha512-FgD3NtTAKvyMmD44T07zz2fEf+OKwutgBCEVM8GcvMGVGaDktiLNTDvPwC/LUe3PinMW+X6CuLOF2Ui1mAlSXg==" }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/@types/parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", + "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" + }, "node_modules/@vue-leaflet/vue-leaflet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@vue-leaflet/vue-leaflet/-/vue-leaflet-0.7.0.tgz", @@ -2701,6 +2725,14 @@ "node": ">=0.10.0" } }, + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "engines": { + "node": ">=6" + } + }, "node_modules/array-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", @@ -3223,6 +3255,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, "node_modules/camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", @@ -3606,6 +3646,20 @@ "node": ">= 0.8" } }, + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -3704,6 +3758,38 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cross-spawn": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.0.tgz", @@ -3793,6 +3879,11 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/css-selector-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", + "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==" + }, "node_modules/css-what": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", @@ -4528,6 +4619,17 @@ "node": ">=0.10.0" } }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -4881,6 +4983,33 @@ "node": ">=0.10.0" } }, + "node_modules/gettext-extractor": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/gettext-extractor/-/gettext-extractor-3.6.0.tgz", + "integrity": "sha512-fHbvp5toU3NcMOAI7M2b99OkguzBu7v9LADF0Ad1q/ltZvNttcIB65uVIBt+fehPCgy37T+NeEcvtaI+t/+gtw==", + "dependencies": { + "@types/glob": "5 - 7", + "@types/parse5": "^5", + "css-selector-parser": "^1.3", + "glob": "5 - 7", + "parse5": "5 - 6", + "pofile": "1.0.x", + "typescript": "2 - 4" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/gettext-extractor/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/gettext-extractor/node_modules/pofile": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pofile/-/pofile-1.0.11.tgz", + "integrity": "sha512-Vy9eH1dRD9wHjYt/QqXcTz+RnX/zg53xK+KljFSX30PvdDMb2z+c6uDUeblUGqqJgz3QFsdlA0IJvHziPmWtQg==" + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -5552,6 +5681,29 @@ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==" }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, "node_modules/import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -6137,6 +6289,11 @@ "node": ">=0.10.0" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, "node_modules/load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -6197,6 +6354,11 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -7067,6 +7229,17 @@ "node": ">=6" } }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", @@ -9382,6 +9555,26 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, + "node_modules/typescript": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "engines": { + "node": ">=8" + } + }, "node_modules/uglify-js": { "version": "3.17.4", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", @@ -9771,14 +9964,6 @@ "resolved": "https://registry.npmjs.org/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz", "integrity": "sha512-leT4kdJVQyeZNY1kmnS1xiUlQ9z1B/kdBFCILIjYYQDqZgLqCLa0UhjSSeRX6c3mUe6U5qYeM8LrEqkHJ1B4LA==" }, - "node_modules/vue-gettext": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/vue-gettext/-/vue-gettext-2.1.12.tgz", - "integrity": "sha512-7Kw36xtKvARp8ZafQGPK9WR6EM+dhFUikR5f0+etSkiHuvUM3yf1HsRDLYoLLdJ0AMaXxKwgekumzvCk6KX8rA==", - "engines": { - "npm": ">= 3.0.0" - } - }, "node_modules/vue-loader": { "version": "17.0.1", "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-17.0.1.tgz", @@ -9869,6 +10054,110 @@ "resolved": "https://registry.npmjs.org/vue3-daterange-picker/-/vue3-daterange-picker-1.0.1.tgz", "integrity": "sha512-CnLfhgubeehqF3QqrnTJVCt7mx8XxTSKbY7yVMQT0kyZ2D90qrIqJ7MNf6uGAC7utE3DbBCKq6PHTk6371cDHQ==" }, + "node_modules/vue3-gettext": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue3-gettext/-/vue3-gettext-2.3.4.tgz", + "integrity": "sha512-X+dibsUhiSRz2LW5de6NkDl+GNZoo9JMGmlJ+wuzez/UJYvJ6GKofOeoUxbtwOk2vPY+/wesmyyzhkMoR3Z/AA==", + "dependencies": { + "chalk": "^4.1.2", + "command-line-args": "^5.2.1", + "cosmiconfig": "^7.0.1", + "gettext-extractor": "^3.5.4", + "glob": "^7.2.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "pofile": "^1.1.3", + "tslib": "^2.4.0" + }, + "bin": { + "vue-gettext-compile": "dist/bin/gettext_compile.js", + "vue-gettext-extract": "dist/bin/gettext_extract.js" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "@vue/compiler-sfc": ">=3.0.0", + "vue": ">=3.0.0" + } + }, + "node_modules/vue3-gettext/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/vue3-gettext/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/vue3-gettext/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/vue3-gettext/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/vue3-gettext/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/vue3-gettext/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/vue3-gettext/node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/vue3-gettext/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/vuedraggable": { "version": "2.24.3", "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.24.3.tgz", @@ -10267,6 +10556,14 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, "node_modules/yargs": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", @@ -11602,16 +11899,40 @@ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, "@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" }, + "@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" + }, "@types/node": { "version": "18.11.12", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.12.tgz", "integrity": "sha512-FgD3NtTAKvyMmD44T07zz2fEf+OKwutgBCEVM8GcvMGVGaDktiLNTDvPwC/LUe3PinMW+X6CuLOF2Ui1mAlSXg==" }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "@types/parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", + "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" + }, "@vue-leaflet/vue-leaflet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@vue-leaflet/vue-leaflet/-/vue-leaflet-0.7.0.tgz", @@ -12183,6 +12504,11 @@ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==" }, + "array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==" + }, "array-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", @@ -12588,6 +12914,11 @@ "get-intrinsic": "^1.0.2" } }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", @@ -12887,6 +13218,17 @@ "delayed-stream": "~1.0.0" } }, + "command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "requires": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + } + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -12973,6 +13315,31 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, + "cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "dependencies": { + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + } + } + }, "cross-spawn": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.0.tgz", @@ -13042,6 +13409,11 @@ "nth-check": "^2.0.1" } }, + "css-selector-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", + "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==" + }, "css-what": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", @@ -13612,6 +13984,14 @@ "to-regex-range": "^2.1.0" } }, + "find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "requires": { + "array-back": "^3.0.1" + } + }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -13868,6 +14248,32 @@ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==" }, + "gettext-extractor": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/gettext-extractor/-/gettext-extractor-3.6.0.tgz", + "integrity": "sha512-fHbvp5toU3NcMOAI7M2b99OkguzBu7v9LADF0Ad1q/ltZvNttcIB65uVIBt+fehPCgy37T+NeEcvtaI+t/+gtw==", + "requires": { + "@types/glob": "5 - 7", + "@types/parse5": "^5", + "css-selector-parser": "^1.3", + "glob": "5 - 7", + "parse5": "5 - 6", + "pofile": "1.0.x", + "typescript": "2 - 4" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "pofile": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pofile/-/pofile-1.0.11.tgz", + "integrity": "sha512-Vy9eH1dRD9wHjYt/QqXcTz+RnX/zg53xK+KljFSX30PvdDMb2z+c6uDUeblUGqqJgz3QFsdlA0IJvHziPmWtQg==" + } + } + }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -14406,6 +14812,22 @@ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==" }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + } + } + }, "import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -14838,6 +15260,11 @@ } } }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -14886,6 +15313,11 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -15552,6 +15984,14 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, "parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", @@ -17257,6 +17697,16 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, + "typescript": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==" + }, + "typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==" + }, "uglify-js": { "version": "3.17.4", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", @@ -17558,11 +18008,6 @@ "resolved": "https://registry.npmjs.org/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz", "integrity": "sha512-leT4kdJVQyeZNY1kmnS1xiUlQ9z1B/kdBFCILIjYYQDqZgLqCLa0UhjSSeRX6c3mUe6U5qYeM8LrEqkHJ1B4LA==" }, - "vue-gettext": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/vue-gettext/-/vue-gettext-2.1.12.tgz", - "integrity": "sha512-7Kw36xtKvARp8ZafQGPK9WR6EM+dhFUikR5f0+etSkiHuvUM3yf1HsRDLYoLLdJ0AMaXxKwgekumzvCk6KX8rA==" - }, "vue-loader": { "version": "17.0.1", "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-17.0.1.tgz", @@ -17623,6 +18068,80 @@ "resolved": "https://registry.npmjs.org/vue3-daterange-picker/-/vue3-daterange-picker-1.0.1.tgz", "integrity": "sha512-CnLfhgubeehqF3QqrnTJVCt7mx8XxTSKbY7yVMQT0kyZ2D90qrIqJ7MNf6uGAC7utE3DbBCKq6PHTk6371cDHQ==" }, + "vue3-gettext": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue3-gettext/-/vue3-gettext-2.3.4.tgz", + "integrity": "sha512-X+dibsUhiSRz2LW5de6NkDl+GNZoo9JMGmlJ+wuzez/UJYvJ6GKofOeoUxbtwOk2vPY+/wesmyyzhkMoR3Z/AA==", + "requires": { + "chalk": "^4.1.2", + "command-line-args": "^5.2.1", + "cosmiconfig": "^7.0.1", + "gettext-extractor": "^3.5.4", + "glob": "^7.2.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "pofile": "^1.1.3", + "tslib": "^2.4.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "requires": { + "parse5": "^6.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "vuedraggable": { "version": "2.24.3", "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.24.3.tgz", @@ -17907,6 +18426,11 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + }, "yargs": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", diff --git a/frontend/package.json b/frontend/package.json index 771c5e3e1..ca6015eb2 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -66,9 +66,9 @@ "vue": "^3.2", "vue-axios": "^3.5", "vue-clipboard2": "^0.3.3", - "vue-gettext": "^2.1.12", "vue-loader": "^17", "vue3-daterange-picker": "^1", + "vue3-gettext": "^2.3.4", "vuedraggable": "^2.24.1", "wavesurfer.js": "^6", "webpack": "^5.52.1", diff --git a/frontend/vue/base.js b/frontend/vue/base.js index ffc4e7403..0cb277700 100644 --- a/frontend/vue/base.js +++ b/frontend/vue/base.js @@ -1,66 +1,85 @@ import axios from 'axios'; import VueAxios from 'vue-axios'; -import GetTextPlugin from 'vue-gettext'; -import translations from '../../translations/translations.json'; -import pinia from './vendor/pinia'; +import usePinia from './vendor/pinia'; +import gettext from './vendor/gettext'; +import {createApp} from "vue"; +import useBootstrapVue from "./vendor/bootstrapVue"; +import useSweetAlert from "./vendor/sweetalert"; -export default function (vueApp) { +export default function (component, options) { return function (el, props) { - document.addEventListener('DOMContentLoaded', function () { - // Configure localization - vueApp.use(GetTextPlugin, { - defaultLanguage: 'en_US', - translations: translations, - silent: true - }); - - if (typeof App.locale !== 'undefined') { - vueApp.config.language = App.locale; + const vueApp = createApp( + component, + { + ...options, + ...props } + ); - // Configure auto-CSRF on requests - if (typeof App.api_csrf !== 'undefined') { - axios.defaults.headers.common['X-API-CSRF'] = App.api_csrf; + /* Gettext */ + if (typeof App.locale !== 'undefined') { + vueApp.config.language = App.locale; + } + + vueApp.use(gettext); + + /* Axios */ + + // Configure auto-CSRF on requests + if (typeof App.api_csrf !== 'undefined') { + axios.defaults.headers.common['X-API-CSRF'] = App.api_csrf; + } + + vueApp.use(VueAxios, axios); + + vueApp.mixin({ + mounted() { + const handleAxiosError = (error) => { + const {$gettext} = gettext; + + let notifyMessage = $gettext('An error occurred and your request could not be completed.'); + if (error.response) { + // Request made and server responded + notifyMessage = error.response.data.message; + console.error(notifyMessage); + } else if (error.request) { + // The request was made but no response was received + console.error(error.request); + } else { + // Something happened in setting up the request that triggered an Error + console.error('Error', error.message); + } + + if (typeof this.$notifyError === 'function') { + this.$notifyError(notifyMessage); + } + }; + + axios.interceptors.request.use((config) => { + return config; + }, (error) => { + handleAxiosError(error); + return Promise.reject(error); + }); + + axios.interceptors.response.use((response) => { + return response; + }, (error) => { + handleAxiosError(error); + return Promise.reject(error); + }); } - - vueApp.use(VueAxios, axios); }); - vueApp.created(() => { - let handleAxiosError = (error) => { - let notifyMessage = this.$gettext('An error occurred and your request could not be completed.'); - if (error.response) { - // Request made and server responded - notifyMessage = error.response.data.message; - console.error(notifyMessage); - } else if (error.request) { - // The request was made but no response was received - console.error(error.request); - } else { - // Something happened in setting up the request that triggered an Error - console.error('Error', error.message); - } + /* Pinia */ + usePinia(vueApp); - if (typeof this.$notifyError === 'function') { - this.$notifyError(notifyMessage); - } - }; + /* Bootstrap Vue */ + useBootstrapVue(vueApp); - axios.interceptors.request.use((config) => { - return config; - }, (error) => { - handleAxiosError(error); - return Promise.reject(error); - }); + /* SweetAlert */ + useSweetAlert(vueApp); - axios.interceptors.response.use((response) => { - return response; - }, (error) => { - handleAxiosError(error); - return Promise.reject(error); - }); - }); - - vueApp.mount(el, {props: props}); + vueApp.mount(el); }; } diff --git a/frontend/vue/pages/Account.js b/frontend/vue/pages/Account.js index 3c5489255..40de66a51 100644 --- a/frontend/vue/pages/Account.js +++ b/frontend/vue/pages/Account.js @@ -1,8 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; -import '~/vendor/sweetalert.js'; - import Account from '~/components/Account'; export default initBase(Account); diff --git a/frontend/vue/pages/Admin/ApiKeys.js b/frontend/vue/pages/Admin/ApiKeys.js index 2ebba1024..094820706 100644 --- a/frontend/vue/pages/Admin/ApiKeys.js +++ b/frontend/vue/pages/Admin/ApiKeys.js @@ -1,13 +1,4 @@ import initBase from '~/base.js'; -import {createApp} from "vue"; -import useSweetAlert from '~/vendor/sweetalert.js'; -import useBootstrapVue from '~/vendor/bootstrapVue.js'; - import AdminApiKeys from '~/components/Admin/ApiKeys.vue'; -const vueApp = createApp(AdminApiKeys); - -useSweetAlert(vueApp); -useBootstrapVue(vueApp); - -export default initBase(vueApp); +export default initBase(AdminApiKeys); diff --git a/frontend/vue/pages/Admin/AuditLog.js b/frontend/vue/pages/Admin/AuditLog.js index de6ef6b09..1aba5d2ce 100644 --- a/frontend/vue/pages/Admin/AuditLog.js +++ b/frontend/vue/pages/Admin/AuditLog.js @@ -1,12 +1,6 @@ import initBase from '~/base.js'; -import {createApp} from "vue"; -import useBootstrapVue from '~/vendor/bootstrapVue.js'; import '~/vendor/luxon.js'; import AuditLog from '~/components/Admin/AuditLog.vue'; -const vueApp = createApp(AuditLog); - -useBootstrapVue(vueApp); - -export default initBase(vueApp); +export default initBase(AuditLog); diff --git a/frontend/vue/pages/Admin/Backups.js b/frontend/vue/pages/Admin/Backups.js index 6df43fd94..48a0cb63b 100644 --- a/frontend/vue/pages/Admin/Backups.js +++ b/frontend/vue/pages/Admin/Backups.js @@ -1,8 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; -import '~/vendor/sweetalert.js'; - import AdminBackups from '~/components/Admin/Backups.vue'; export default initBase(AdminBackups); diff --git a/frontend/vue/pages/Admin/Branding.js b/frontend/vue/pages/Admin/Branding.js index 07360cf75..a6d16f700 100644 --- a/frontend/vue/pages/Admin/Branding.js +++ b/frontend/vue/pages/Admin/Branding.js @@ -1,10 +1,7 @@ -import initBase - from '~/base.js'; +import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; import '~/vendor/fancybox.js'; -import AdminBranding - from '~/components/Admin/Branding.vue'; +import AdminBranding from '~/components/Admin/Branding.vue'; export default initBase(AdminBranding); diff --git a/frontend/vue/pages/Admin/CustomFields.js b/frontend/vue/pages/Admin/CustomFields.js index 5c650be67..70f33490f 100644 --- a/frontend/vue/pages/Admin/CustomFields.js +++ b/frontend/vue/pages/Admin/CustomFields.js @@ -1,8 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; -import '~/vendor/sweetalert.js'; - import AdminCustomFields from '~/components/Admin/CustomFields.vue'; export default initBase(AdminCustomFields); diff --git a/frontend/vue/pages/Admin/GeoLite.js b/frontend/vue/pages/Admin/GeoLite.js index 9b9d60278..8f3a6bff9 100644 --- a/frontend/vue/pages/Admin/GeoLite.js +++ b/frontend/vue/pages/Admin/GeoLite.js @@ -1,7 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; - import AdminGeoLite from '~/components/Admin/GeoLite.vue'; export default initBase(AdminGeoLite); diff --git a/frontend/vue/pages/Admin/Index.js b/frontend/vue/pages/Admin/Index.js index 157751a3a..75450b70e 100644 --- a/frontend/vue/pages/Admin/Index.js +++ b/frontend/vue/pages/Admin/Index.js @@ -1,8 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; -import '~/vendor/sweetalert.js'; - import AdminIndex from '~/components/Admin/Index.vue'; export default initBase(AdminIndex); diff --git a/frontend/vue/pages/Admin/Logs.js b/frontend/vue/pages/Admin/Logs.js index 517409d2f..42bff9af6 100644 --- a/frontend/vue/pages/Admin/Logs.js +++ b/frontend/vue/pages/Admin/Logs.js @@ -1,7 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; - import AdminLogs from '~/components/Admin/Logs.vue'; export default initBase(AdminLogs); diff --git a/frontend/vue/pages/Admin/Permissions.js b/frontend/vue/pages/Admin/Permissions.js index 7db41e392..7bcaacf3b 100644 --- a/frontend/vue/pages/Admin/Permissions.js +++ b/frontend/vue/pages/Admin/Permissions.js @@ -1,8 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; -import '~/vendor/sweetalert.js'; - import AdminPermissions from '~/components/Admin/Permissions.vue'; export default initBase(AdminPermissions); diff --git a/frontend/vue/pages/Admin/Settings.js b/frontend/vue/pages/Admin/Settings.js index 6f11113bd..bd3c44aec 100644 --- a/frontend/vue/pages/Admin/Settings.js +++ b/frontend/vue/pages/Admin/Settings.js @@ -1,7 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; - import AdminSettings from '~/components/Admin/Settings.vue'; export default initBase(AdminSettings); diff --git a/frontend/vue/pages/Admin/Shoutcast.js b/frontend/vue/pages/Admin/Shoutcast.js index 649947c68..beaf0e9d3 100644 --- a/frontend/vue/pages/Admin/Shoutcast.js +++ b/frontend/vue/pages/Admin/Shoutcast.js @@ -1,7 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; - import AdminShoutcast from '~/components/Admin/Shoutcast.vue'; export default initBase(AdminShoutcast); diff --git a/frontend/vue/pages/Admin/Stations.js b/frontend/vue/pages/Admin/Stations.js index 4ffb978e9..aa80a9185 100644 --- a/frontend/vue/pages/Admin/Stations.js +++ b/frontend/vue/pages/Admin/Stations.js @@ -1,8 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; -import '~/vendor/sweetalert.js'; - import AdminStations from '~/components/Admin/Stations.vue'; export default initBase(AdminStations); diff --git a/frontend/vue/pages/Admin/StereoTool.js b/frontend/vue/pages/Admin/StereoTool.js index 47c8fbef8..675afc406 100644 --- a/frontend/vue/pages/Admin/StereoTool.js +++ b/frontend/vue/pages/Admin/StereoTool.js @@ -1,7 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; - import AdminStereoTool from '~/components/Admin/StereoTool.vue'; export default initBase(AdminStereoTool); diff --git a/frontend/vue/pages/Admin/StorageLocations.js b/frontend/vue/pages/Admin/StorageLocations.js index 953ebce19..5330dc770 100644 --- a/frontend/vue/pages/Admin/StorageLocations.js +++ b/frontend/vue/pages/Admin/StorageLocations.js @@ -1,8 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; -import '~/vendor/sweetalert.js'; - import StorageLocations from '~/components/Admin/StorageLocations.vue'; export default initBase(StorageLocations); diff --git a/frontend/vue/pages/Admin/Users.js b/frontend/vue/pages/Admin/Users.js index d59675e86..1ee0fbf84 100644 --- a/frontend/vue/pages/Admin/Users.js +++ b/frontend/vue/pages/Admin/Users.js @@ -1,8 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; -import '~/vendor/sweetalert.js'; - import AdminUsers from '~/components/Admin/Users.vue'; export default initBase(AdminUsers); diff --git a/frontend/vue/pages/Dashboard.js b/frontend/vue/pages/Dashboard.js index a2ef25c42..f7a6a7174 100644 --- a/frontend/vue/pages/Dashboard.js +++ b/frontend/vue/pages/Dashboard.js @@ -1,6 +1,4 @@ import initBase from '~/base.js'; - -import '~/vendor/bootstrapVue.js'; import '~/vendor/fancybox.js'; import '~/vendor/chartjs.js'; diff --git a/frontend/vue/pages/InlinePlayer.js b/frontend/vue/pages/InlinePlayer.js index 29609711c..1edd0d81a 100644 --- a/frontend/vue/pages/InlinePlayer.js +++ b/frontend/vue/pages/InlinePlayer.js @@ -1,13 +1,20 @@ -import Vue from 'vue'; +import {createApp} from 'vue'; import InlinePlayer from '~/components/InlinePlayer.vue'; -import pinia from '../vendor/pinia'; +import usePinia from '../vendor/pinia'; +import gettext from "../vendor/gettext"; document.addEventListener('DOMContentLoaded', function () { - + const inlineApp = createApp(InlinePlayer); - let inlinePlayer = new Vue({ - el: '#radio-player-controls', - render: createElement => createElement(InlinePlayer), - pinia - }); + /* Gettext */ + if (typeof App.locale !== 'undefined') { + inlineApp.config.language = App.locale; + } + + inlineApp.use(gettext); + + /* Pinia */ + usePinia(inlineApp); + + inlineApp.mount('#radio-player-controls'); }); diff --git a/frontend/vue/pages/Public/FullPlayer.js b/frontend/vue/pages/Public/FullPlayer.js index 5929c4cd0..5fedfe9e0 100644 --- a/frontend/vue/pages/Public/FullPlayer.js +++ b/frontend/vue/pages/Public/FullPlayer.js @@ -1,6 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; import '~/vendor/fancybox.js'; import '~/vendor/luxon.js'; diff --git a/frontend/vue/pages/Public/OnDemand.js b/frontend/vue/pages/Public/OnDemand.js index 24dd8437b..285fb25dd 100644 --- a/frontend/vue/pages/Public/OnDemand.js +++ b/frontend/vue/pages/Public/OnDemand.js @@ -1,9 +1,5 @@ -import initBase - from '~/base.js'; +import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; - -import OnDemand - from '~/components/Public/OnDemand.vue'; +import OnDemand from '~/components/Public/OnDemand.vue'; export default initBase(OnDemand); diff --git a/frontend/vue/pages/Public/Requests.js b/frontend/vue/pages/Public/Requests.js index a5710a110..e262f3035 100644 --- a/frontend/vue/pages/Public/Requests.js +++ b/frontend/vue/pages/Public/Requests.js @@ -1,9 +1,5 @@ -import initBase - from '~/base.js'; +import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; - -import Requests - from '~/components/Public/Requests.vue'; +import Requests from '~/components/Public/Requests.vue'; export default initBase(Requests); diff --git a/frontend/vue/pages/Public/Schedule.js b/frontend/vue/pages/Public/Schedule.js index aaa86a01f..c9d7f63d0 100644 --- a/frontend/vue/pages/Public/Schedule.js +++ b/frontend/vue/pages/Public/Schedule.js @@ -1,10 +1,7 @@ -import initBase - from '~/base.js'; +import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; import '~/vendor/luxon.js'; -import Schedule - from '~/components/Public/Schedule.vue'; +import Schedule from '~/components/Public/Schedule.vue'; export default initBase(Schedule); diff --git a/frontend/vue/pages/Public/WebDJ.js b/frontend/vue/pages/Public/WebDJ.js index 97270750d..c268414d1 100644 --- a/frontend/vue/pages/Public/WebDJ.js +++ b/frontend/vue/pages/Public/WebDJ.js @@ -1,9 +1,5 @@ -import initBase - from '~/base.js'; +import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; - -import WebDJ - from '~/components/Public/WebDJ.vue'; +import WebDJ from '~/components/Public/WebDJ.vue'; export default initBase(WebDJ); diff --git a/frontend/vue/pages/Recover.js b/frontend/vue/pages/Recover.js index 57eaf0258..32e874217 100644 --- a/frontend/vue/pages/Recover.js +++ b/frontend/vue/pages/Recover.js @@ -1,7 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; - import Recover from '~/components/Recover.vue'; export default initBase(Recover); diff --git a/frontend/vue/pages/Setup/Register.js b/frontend/vue/pages/Setup/Register.js index c9ca6ee09..2db953324 100644 --- a/frontend/vue/pages/Setup/Register.js +++ b/frontend/vue/pages/Setup/Register.js @@ -1,7 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; - import SetupRegister from '~/components/Setup/Register.vue'; export default initBase(SetupRegister); diff --git a/frontend/vue/pages/Setup/Settings.js b/frontend/vue/pages/Setup/Settings.js index 75f19a879..f4148216b 100644 --- a/frontend/vue/pages/Setup/Settings.js +++ b/frontend/vue/pages/Setup/Settings.js @@ -1,7 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; - import SetupSettings from '~/components/Setup/Settings.vue'; export default initBase(SetupSettings); diff --git a/frontend/vue/pages/Setup/Station.js b/frontend/vue/pages/Setup/Station.js index 8fc170ccc..c16621e26 100644 --- a/frontend/vue/pages/Setup/Station.js +++ b/frontend/vue/pages/Setup/Station.js @@ -1,7 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; - import SetupStation from '~/components/Setup/Station.vue'; export default initBase(SetupStation); diff --git a/frontend/vue/pages/Stations/BulkMedia.js b/frontend/vue/pages/Stations/BulkMedia.js index d8e8663af..e832b65e7 100644 --- a/frontend/vue/pages/Stations/BulkMedia.js +++ b/frontend/vue/pages/Stations/BulkMedia.js @@ -1,7 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; - import BulkMedia from '~/components/Stations/BulkMedia.vue'; export default initBase(BulkMedia); diff --git a/frontend/vue/pages/Stations/Fallback.js b/frontend/vue/pages/Stations/Fallback.js index 7d384b79b..7ba16ff8f 100644 --- a/frontend/vue/pages/Stations/Fallback.js +++ b/frontend/vue/pages/Stations/Fallback.js @@ -1,7 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; - import Fallback from '~/components/Stations/Fallback.vue'; export default initBase(Fallback); diff --git a/frontend/vue/pages/Stations/Help.js b/frontend/vue/pages/Stations/Help.js index a12db18de..9fbcd39b9 100644 --- a/frontend/vue/pages/Stations/Help.js +++ b/frontend/vue/pages/Stations/Help.js @@ -1,7 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; - import Help from '~/components/Stations/Help.vue'; export default initBase(Help); diff --git a/frontend/vue/pages/Stations/HlsStreams.js b/frontend/vue/pages/Stations/HlsStreams.js index 00ae09951..ad31d1cf0 100644 --- a/frontend/vue/pages/Stations/HlsStreams.js +++ b/frontend/vue/pages/Stations/HlsStreams.js @@ -1,8 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; -import '~/vendor/sweetalert.js'; - import HlsStreams from '~/components/Stations/HlsStreams.vue'; export default initBase(HlsStreams); diff --git a/frontend/vue/pages/Stations/LiquidsoapConfig.js b/frontend/vue/pages/Stations/LiquidsoapConfig.js index 3c7c7bac1..5a8f96d66 100644 --- a/frontend/vue/pages/Stations/LiquidsoapConfig.js +++ b/frontend/vue/pages/Stations/LiquidsoapConfig.js @@ -1,7 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; - import LiquidsoapConfig from '~/components/Stations/LiquidsoapConfig.vue'; export default initBase(LiquidsoapConfig); diff --git a/frontend/vue/pages/Stations/Media.js b/frontend/vue/pages/Stations/Media.js index 6d25e0b4a..22f6404b9 100644 --- a/frontend/vue/pages/Stations/Media.js +++ b/frontend/vue/pages/Stations/Media.js @@ -1,9 +1,7 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; import '~/vendor/fancybox.js'; import '~/vendor/luxon.js'; -import '~/vendor/sweetalert.js'; import '~/pages/InlinePlayer.js'; diff --git a/frontend/vue/pages/Stations/Mounts.js b/frontend/vue/pages/Stations/Mounts.js index f745d7115..fcdb4fac9 100644 --- a/frontend/vue/pages/Stations/Mounts.js +++ b/frontend/vue/pages/Stations/Mounts.js @@ -1,8 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; -import '~/vendor/sweetalert.js'; - import Mounts from '~/components/Stations/Mounts.vue'; export default initBase(Mounts); diff --git a/frontend/vue/pages/Stations/Playlists.js b/frontend/vue/pages/Stations/Playlists.js index b9397bcf0..7ad8e038a 100644 --- a/frontend/vue/pages/Stations/Playlists.js +++ b/frontend/vue/pages/Stations/Playlists.js @@ -1,8 +1,6 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; import '~/vendor/luxon.js'; -import '~/vendor/sweetalert.js'; import '~/store'; import Playlists from '~/components/Stations/Playlists.vue'; diff --git a/frontend/vue/pages/Stations/Podcasts.js b/frontend/vue/pages/Stations/Podcasts.js index d1df2813d..32bdd1dbe 100644 --- a/frontend/vue/pages/Stations/Podcasts.js +++ b/frontend/vue/pages/Stations/Podcasts.js @@ -1,7 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; -import '~/vendor/sweetalert.js'; import '~/vendor/fancybox.js'; import '~/vendor/luxon.js'; diff --git a/frontend/vue/pages/Stations/Profile.js b/frontend/vue/pages/Stations/Profile.js index 04e8af466..2a38b812b 100644 --- a/frontend/vue/pages/Stations/Profile.js +++ b/frontend/vue/pages/Stations/Profile.js @@ -1,6 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; import '~/vendor/fancybox.js'; import '~/vendor/luxon.js'; diff --git a/frontend/vue/pages/Stations/ProfileEdit.js b/frontend/vue/pages/Stations/ProfileEdit.js index 852603c83..a7bc93ccc 100644 --- a/frontend/vue/pages/Stations/ProfileEdit.js +++ b/frontend/vue/pages/Stations/ProfileEdit.js @@ -1,7 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; - import ProfileEdit from '~/components/Stations/ProfileEdit.vue'; export default initBase(ProfileEdit); diff --git a/frontend/vue/pages/Stations/Queue.js b/frontend/vue/pages/Stations/Queue.js index 754c94c49..e37608097 100644 --- a/frontend/vue/pages/Stations/Queue.js +++ b/frontend/vue/pages/Stations/Queue.js @@ -1,8 +1,6 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; import '~/vendor/luxon.js'; -import '~/vendor/sweetalert.js'; import Queue from '~/components/Stations/Queue.vue'; diff --git a/frontend/vue/pages/Stations/Remotes.js b/frontend/vue/pages/Stations/Remotes.js index 691b3c238..8408e2e54 100644 --- a/frontend/vue/pages/Stations/Remotes.js +++ b/frontend/vue/pages/Stations/Remotes.js @@ -1,8 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; -import '~/vendor/sweetalert.js'; - import Remotes from '~/components/Stations/Remotes.vue'; export default initBase(Remotes); diff --git a/frontend/vue/pages/Stations/Reports/Listeners.js b/frontend/vue/pages/Stations/Reports/Listeners.js index 687daedb7..cc528af7a 100644 --- a/frontend/vue/pages/Stations/Reports/Listeners.js +++ b/frontend/vue/pages/Stations/Reports/Listeners.js @@ -1,10 +1,7 @@ -import initBase - from '~/base.js'; +import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; import '~/vendor/luxon.js'; -import Listeners - from '~/components/Stations/Reports/Listeners.vue'; +import Listeners from '~/components/Stations/Reports/Listeners.vue'; export default initBase(Listeners); diff --git a/frontend/vue/pages/Stations/Reports/Overview.js b/frontend/vue/pages/Stations/Reports/Overview.js index 68c28aa4a..768952bd8 100644 --- a/frontend/vue/pages/Stations/Reports/Overview.js +++ b/frontend/vue/pages/Stations/Reports/Overview.js @@ -1,10 +1,7 @@ -import initBase - from '~/base.js'; +import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; import '~/vendor/chartjs.js'; -import Overview - from '~/components/Stations/Reports/Overview.vue'; +import Overview from '~/components/Stations/Reports/Overview.vue'; export default initBase(Overview); diff --git a/frontend/vue/pages/Stations/Reports/Requests.js b/frontend/vue/pages/Stations/Reports/Requests.js index 65b3acd57..2d8e0ab43 100644 --- a/frontend/vue/pages/Stations/Reports/Requests.js +++ b/frontend/vue/pages/Stations/Reports/Requests.js @@ -1,8 +1,6 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; import '~/vendor/luxon.js'; -import '~/vendor/sweetalert.js'; import Requests from '~/components/Stations/Reports/Requests.vue'; diff --git a/frontend/vue/pages/Stations/Reports/SoundExchange.js b/frontend/vue/pages/Stations/Reports/SoundExchange.js index 9634810af..81826cc40 100644 --- a/frontend/vue/pages/Stations/Reports/SoundExchange.js +++ b/frontend/vue/pages/Stations/Reports/SoundExchange.js @@ -1,6 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; import '~/vendor/luxon.js'; import SoundExchange from '~/components/Stations/Reports/SoundExchange.vue'; diff --git a/frontend/vue/pages/Stations/Reports/Timeline.js b/frontend/vue/pages/Stations/Reports/Timeline.js index f232ce280..50cf08bbe 100644 --- a/frontend/vue/pages/Stations/Reports/Timeline.js +++ b/frontend/vue/pages/Stations/Reports/Timeline.js @@ -1,10 +1,7 @@ -import initBase - from '~/base.js'; +import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; import '~/vendor/luxon.js'; -import Timeline - from '~/components/Stations/Reports/Timeline.vue'; +import Timeline from '~/components/Stations/Reports/Timeline.vue'; export default initBase(Timeline); diff --git a/frontend/vue/pages/Stations/SftpUsers.js b/frontend/vue/pages/Stations/SftpUsers.js index 2d6f3bc1d..541300090 100644 --- a/frontend/vue/pages/Stations/SftpUsers.js +++ b/frontend/vue/pages/Stations/SftpUsers.js @@ -1,8 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; -import '~/vendor/sweetalert.js'; - import SftpUsers from "~/components/Stations/SftpUsers"; export default initBase(SftpUsers); diff --git a/frontend/vue/pages/Stations/StereoToolConfig.js b/frontend/vue/pages/Stations/StereoToolConfig.js index 139c86260..1214cbfea 100644 --- a/frontend/vue/pages/Stations/StereoToolConfig.js +++ b/frontend/vue/pages/Stations/StereoToolConfig.js @@ -1,7 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; - import StereoToolConfig from '~/components/Stations/StereoToolConfig.vue'; export default initBase(StereoToolConfig); diff --git a/frontend/vue/pages/Stations/Streamers.js b/frontend/vue/pages/Stations/Streamers.js index 64f378982..579e0848e 100644 --- a/frontend/vue/pages/Stations/Streamers.js +++ b/frontend/vue/pages/Stations/Streamers.js @@ -1,7 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; -import '~/vendor/sweetalert.js'; import '~/vendor/fancybox.js'; import '~/vendor/luxon.js'; diff --git a/frontend/vue/pages/Stations/Webhooks.js b/frontend/vue/pages/Stations/Webhooks.js index 7f475519c..37128e9b1 100644 --- a/frontend/vue/pages/Stations/Webhooks.js +++ b/frontend/vue/pages/Stations/Webhooks.js @@ -1,8 +1,5 @@ import initBase from '~/base.js'; -import '~/vendor/bootstrapVue.js'; -import '~/vendor/sweetalert.js'; - import Webhooks from '~/components/Stations/Webhooks'; export default initBase(Webhooks); diff --git a/frontend/vue/vendor/gettext.js b/frontend/vue/vendor/gettext.js new file mode 100644 index 000000000..f02b647e5 --- /dev/null +++ b/frontend/vue/vendor/gettext.js @@ -0,0 +1,8 @@ +import translations from "../../../translations/translations.json"; +import {createGettext} from "vue3-gettext"; + +export default createGettext({ + defaultLanguage: 'en_US', + translations: translations, + silent: true +}); diff --git a/frontend/vue/vendor/pinia.js b/frontend/vue/vendor/pinia.js index 087e9707c..307e515b8 100644 --- a/frontend/vue/vendor/pinia.js +++ b/frontend/vue/vendor/pinia.js @@ -1,7 +1,7 @@ -import Vue from 'vue'; -import {createPinia, PiniaVuePlugin} from 'pinia'; +import {createPinia} from 'pinia'; -Vue.use(PiniaVuePlugin); const pinia = createPinia(); -export default pinia; +export default function usePinia(vueApp) { + vueApp.use(pinia); +}