aboutsummaryrefslogtreecommitdiff
path: root/front-end
diff options
context:
space:
mode:
authorLibravatar vnugent <public@vaughnnugent.com>2023-08-23 22:11:23 -0400
committerLibravatar vnugent <public@vaughnnugent.com>2023-08-23 22:11:23 -0400
commit51a65e9196f35393817ba94721503afdfa76fb60 (patch)
tree89f37a8c0a01521c3c567441200ca2061f233600 /front-end
parent277dd634e169e7341272e304f715a542047396d7 (diff)
package and ui updates
Diffstat (limited to 'front-end')
-rw-r--r--front-end/package-lock.json596
-rw-r--r--front-end/package.json14
-rw-r--r--front-end/src/bootstrap/style/inputs.scss2
-rw-r--r--front-end/src/components/FooterNav1.vue3
-rw-r--r--front-end/src/views/Account/[comp].vue11
-rw-r--r--front-end/src/views/Account/components/oauth/CreateApp.vue183
-rw-r--r--front-end/src/views/Account/components/oauth/Oauth.vue93
-rw-r--r--front-end/src/views/Account/components/oauth/SingleApplication.vue190
-rw-r--r--front-end/src/views/Account/components/oauth/o2Api.ts176
-rw-r--r--front-end/src/views/Account/components/settings/Pki.vue7
-rw-r--r--front-end/src/views/Account/components/settings/Security.vue3
-rw-r--r--front-end/src/views/Account/components/settings/TotpSettings.vue5
-rw-r--r--front-end/src/views/Login/components/Social.vue12
-rw-r--r--front-end/src/views/Login/index.vue6
-rw-r--r--front-end/src/views/Login/social/[type].vue3
15 files changed, 319 insertions, 985 deletions
diff --git a/front-end/package-lock.json b/front-end/package-lock.json
index 868d074..c0ac145 100644
--- a/front-end/package-lock.json
+++ b/front-end/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@vnuge/cmnext-front-end",
- "version": "0.1.1",
+ "version": "0.1.2",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@vnuge/cmnext-front-end",
- "version": "0.1.1",
+ "version": "0.1.2",
"license": "agpl3",
"dependencies": {
"@chenfengyuan/vue-qrcode": "^2.0.0",
@@ -16,13 +16,13 @@
"@fortawesome/free-solid-svg-icons": "^6.4.0",
"@fortawesome/vue-fontawesome": "^3.0.3",
"@headlessui/vue": "^1.7.12",
- "@kyvg/vue3-notification": "^2.9.0",
+ "@kyvg/vue3-notification": "^3.0.x",
"@vnuge/cmnext-admin": "../lib/admin",
- "@vnuge/vnlib.browser": "https://www.vaughnnugent.com/public/resources/software/releases/vnlib-browser/v0.1.7.tgz",
+ "@vnuge/vnlib.browser": "https://www.vaughnnugent.com/public/resources/software/builds/vnlib.browser/56582248d0f1e4ca3e6d63bc81670df5b49a823d/@vnuge-vnlib.browser/release.tgz",
"@vuelidate/core": "^2.0.2",
"@vuelidate/validators": "^2.0.2",
- "@vueuse/core": "^10.3.0",
- "@vueuse/router": "^10.3.0",
+ "@vueuse/core": "^10.3.x",
+ "@vueuse/router": "^10.3.x",
"axios": "^1.4.0",
"base32-encode": "^2.0.0",
"jose": "^4.14.4",
@@ -30,8 +30,8 @@
"lodash-es": "^4.17.21",
"otpauth": "^9.1.2",
"showdown": "^2.1.0",
- "universal-cookie": "^4.0.4",
- "vanilla-jsoneditor": "^0.17.8",
+ "universal-cookie": "^6.1.x",
+ "vanilla-jsoneditor": "^0.17.x",
"vue": "^3.2.47",
"vue3-otp-input": "^0.4.1"
},
@@ -55,19 +55,18 @@
},
"../lib/admin": {
"name": "@vnuge/cmnext-admin",
- "version": "0.1.1",
+ "version": "0.1.2",
"license": "agpl3",
"devDependencies": {
"@babel/types": "^7.x",
"@types/lodash-es": "^4.14.194",
- "@typescript-eslint/eslint-plugin": "^5.59.1",
+ "@typescript-eslint/eslint-plugin": "^6.4.x",
"axios": "^1.x",
- "eslint": "^8.39.0",
"jose": "^4.13.x",
- "universal-cookie": "^4.0.4"
+ "universal-cookie": "^6.x"
},
"peerDependencies": {
- "@vnuge/vnlib.browser": "https://www.vaughnnugent.com/public/resources/software/releases/vnlib-browser/v0.1.7.tgz",
+ "@vnuge/vnlib.browser": "https://www.vaughnnugent.com/public/resources/software/builds/vnlib.browser/56582248d0f1e4ca3e6d63bc81670df5b49a823d/@vnuge-vnlib.browser/release.tgz",
"@vueuse/core": "^10.x",
"@vueuse/router": "^10.x",
"lodash-es": "^4.x",
@@ -661,18 +660,18 @@
}
},
"node_modules/@eslint-community/regexpp": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz",
- "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==",
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.7.0.tgz",
+ "integrity": "sha512-+HencqxU7CFJnQb7IKtuNBqS6Yx3Tz4kOL8BJXo+JyeiBm5MEX6pO8onXDkjrkCRlfYXS1Axro15ZjVFe9YgsA==",
"dev": true,
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
"node_modules/@eslint/eslintrc": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz",
- "integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
+ "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
@@ -693,9 +692,9 @@
}
},
"node_modules/@eslint/js": {
- "version": "8.46.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz",
- "integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==",
+ "version": "8.47.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.47.0.tgz",
+ "integrity": "sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -761,9 +760,9 @@
}
},
"node_modules/@headlessui/vue": {
- "version": "1.7.15",
- "resolved": "https://registry.npmjs.org/@headlessui/vue/-/vue-1.7.15.tgz",
- "integrity": "sha512-3ozVEgQ8mw09nWvUPN+8S6C8l3SM0lVT1aEN/+oP5Y4LF0WNMM9UrVisVTN9LLQ06v/X3EFA0blyL/vg8XNZlg==",
+ "version": "1.7.16",
+ "resolved": "https://registry.npmjs.org/@headlessui/vue/-/vue-1.7.16.tgz",
+ "integrity": "sha512-nKT+nf/q6x198SsyK54mSszaQl/z+QxtASmgMEJtpxSX2Q0OPJX0upS/9daDyiECpeAsvjkoOrm2O/6PyBQ+Qg==",
"engines": {
"node": ">=10"
},
@@ -852,9 +851,9 @@
}
},
"node_modules/@kyvg/vue3-notification": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/@kyvg/vue3-notification/-/vue3-notification-2.9.1.tgz",
- "integrity": "sha512-FsY8g25tQetr3etnarxHtCeNFKssH8sheFu13LyL2JJmOOel437QqKV5n4RBDDDTIo55iKgIVYXeojliXYdEhw==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@kyvg/vue3-notification/-/vue3-notification-3.0.1.tgz",
+ "integrity": "sha512-6g4Sm03PM1Cc0atHHqQk5+ZtekXaxEXf9YVhfTv9FnUiNYKdquwVMuysj0cJabobsNSQSOASjqMg3+ndV2SqWw==",
"peerDependencies": {
"vue": "^3.0.0"
}
@@ -895,9 +894,9 @@
}
},
"node_modules/@types/cookie": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz",
- "integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow=="
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz",
+ "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g=="
},
"node_modules/@types/debug": {
"version": "4.1.8",
@@ -909,9 +908,9 @@
}
},
"node_modules/@types/lodash": {
- "version": "4.14.196",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.196.tgz",
- "integrity": "sha512-22y3o88f4a94mKljsZcanlNWPzO0uBsBdzLAngf2tp533LzZcQzb6+eZPJ+vCTt+bqF2XnvT9gejTLsAcJAJyQ==",
+ "version": "4.14.197",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.197.tgz",
+ "integrity": "sha512-BMVOiWs0uNxHVlHBgzTIqJYmj+PgCo4euloGF+5m4okL3rEYzM2EEv78mw8zWSMM57dM7kVIgJ2QDvwHSoCI5g==",
"dev": true
},
"node_modules/@types/lodash-es": {
@@ -941,9 +940,9 @@
"integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA=="
},
"node_modules/@vitejs/plugin-vue": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz",
- "integrity": "sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.3.3.tgz",
+ "integrity": "sha512-ssxyhIAZqB0TrpUg6R0cBpCuMk9jTIlO1GNSKKQD6S8VjnXi6JXKfUXjSsxey9IwQiaRGsO1WnW9Rkl1L6AJVw==",
"dev": true,
"engines": {
"node": "^14.18.0 || >=16.0.0"
@@ -958,9 +957,9 @@
"link": true
},
"node_modules/@vnuge/vnlib.browser": {
- "version": "0.1.7",
- "resolved": "https://www.vaughnnugent.com/public/resources/software/releases/vnlib-browser/v0.1.7.tgz",
- "integrity": "sha512-oj44CaIO415L4IM9xIMxJ9KAy+4YaWXisjiBphtXntzAD7ytfMMLU1WY2BgFHolKDvVqwb8jkO3SN+Lvj9W2Ew==",
+ "version": "0.1.8",
+ "resolved": "https://www.vaughnnugent.com/public/resources/software/builds/vnlib.browser/56582248d0f1e4ca3e6d63bc81670df5b49a823d/@vnuge-vnlib.browser/release.tgz",
+ "integrity": "sha512-TjI4Lkrv8YmdLmamV5SnJh1263lU840Qd/7EI9s9ROlyvQsyuDVnMPlL9CrRevRpeSTP1aUpOEzd0yGza6UKRA==",
"license": "ISC",
"peerDependencies": {
"@vueuse/core": "^10.x",
@@ -989,30 +988,30 @@
}
},
"node_modules/@volar/language-core": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.10.0.tgz",
- "integrity": "sha512-ddyWwSYqcbEZNFHm+Z3NZd6M7Ihjcwl/9B5cZd8kECdimVXUFdFi60XHWD27nrWtUQIsUYIG7Ca1WBwV2u2LSQ==",
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.10.1.tgz",
+ "integrity": "sha512-JnsM1mIPdfGPxmoOcK1c7HYAsL6YOv0TCJ4aW3AXPZN/Jb4R77epDyMZIVudSGjWMbvv/JfUa+rQ+dGKTmgwBA==",
"dev": true,
"dependencies": {
- "@volar/source-map": "1.10.0"
+ "@volar/source-map": "1.10.1"
}
},
"node_modules/@volar/source-map": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.10.0.tgz",
- "integrity": "sha512-/ibWdcOzDGiq/GM1JU2eX8fH1bvAhl66hfe8yEgLEzg9txgr6qb5sQ/DEz5PcDL75tF5H5sCRRwn8Eu8ezi9mw==",
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.10.1.tgz",
+ "integrity": "sha512-3/S6KQbqa7pGC8CxPrg69qHLpOvkiPHGJtWPkI/1AXCsktkJ6gIk/5z4hyuMp8Anvs6eS/Kvp/GZa3ut3votKA==",
"dev": true,
"dependencies": {
"muggle-string": "^0.3.1"
}
},
"node_modules/@volar/typescript": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.10.0.tgz",
- "integrity": "sha512-OtqGtFbUKYC0pLNIk3mHQp5xWnvL1CJIUc9VE39VdZ/oqpoBh5jKfb9uJ45Y4/oP/WYTrif/Uxl1k8VTPz66Gg==",
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.10.1.tgz",
+ "integrity": "sha512-+iiO9yUSRHIYjlteT+QcdRq8b44qH19/eiUZtjNtuh6D9ailYM7DVR0zO2sEgJlvCaunw/CF9Ov2KooQBpR4VQ==",
"dev": true,
"dependencies": {
- "@volar/language-core": "1.10.0"
+ "@volar/language-core": "1.10.1"
}
},
"node_modules/@vscode/l10n": {
@@ -1502,9 +1501,9 @@
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"node_modules/autoprefixer": {
- "version": "10.4.14",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
- "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
+ "version": "10.4.15",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.15.tgz",
+ "integrity": "sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==",
"dev": true,
"funding": [
{
@@ -1514,11 +1513,15 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
- "browserslist": "^4.21.5",
- "caniuse-lite": "^1.0.30001464",
+ "browserslist": "^4.21.10",
+ "caniuse-lite": "^1.0.30001520",
"fraction.js": "^4.2.0",
"normalize-range": "^0.1.2",
"picocolors": "^1.0.0",
@@ -1683,9 +1686,9 @@
}
},
"node_modules/camel-case/node_modules/tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/camelcase": {
"version": "5.3.1",
@@ -1706,9 +1709,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001519",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz",
- "integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==",
+ "version": "1.0.30001522",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001522.tgz",
+ "integrity": "sha512-TKiyTVZxJGhsTszLuzb+6vUZSjVOAhClszBr2Ta2k9IwtNBT/4dzmL6aywt0HCgEZlmwJzXJd8yNiob6HgwTRg==",
"dev": true,
"funding": [
{
@@ -1736,9 +1739,9 @@
}
},
"node_modules/capital-case/node_modules/tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/chalk": {
"version": "4.1.2",
@@ -1776,9 +1779,9 @@
}
},
"node_modules/change-case/node_modules/tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/character-parser": {
"version": "2.2.0",
@@ -1891,14 +1894,14 @@
}
},
"node_modules/constant-case/node_modules/tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/cookie": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
- "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
"engines": {
"node": ">= 0.6"
}
@@ -2074,9 +2077,9 @@
}
},
"node_modules/dot-case/node_modules/tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/dotenv": {
"version": "16.3.1",
@@ -2091,9 +2094,9 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.4.488",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.488.tgz",
- "integrity": "sha512-Dv4sTjiW7t/UWGL+H8ZkgIjtUAVZDgb/PwGWvMsCT7jipzUV/u5skbLXPFKb6iV0tiddVi/bcS2/kUrczeWgIQ==",
+ "version": "1.4.500",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.500.tgz",
+ "integrity": "sha512-P38NO8eOuWOKY1sQk5yE0crNtrjgjJj6r3NrbIKtG18KzCHmHE2Bt+aQA7/y0w3uYsHWxDa6icOohzjLJ4vJ4A==",
"dev": true
},
"node_modules/emoji-regex": {
@@ -2187,15 +2190,15 @@
}
},
"node_modules/eslint": {
- "version": "8.46.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.46.0.tgz",
- "integrity": "sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==",
+ "version": "8.47.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.47.0.tgz",
+ "integrity": "sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.1",
- "@eslint/js": "^8.46.0",
+ "@eslint/eslintrc": "^2.1.2",
+ "@eslint/js": "^8.47.0",
"@humanwhocodes/config-array": "^0.11.10",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
@@ -2206,7 +2209,7 @@
"doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
"eslint-scope": "^7.2.2",
- "eslint-visitor-keys": "^3.4.2",
+ "eslint-visitor-keys": "^3.4.3",
"espree": "^9.6.1",
"esquery": "^1.4.2",
"esutils": "^2.0.2",
@@ -2278,9 +2281,9 @@
}
},
"node_modules/eslint-visitor-keys": {
- "version": "3.4.2",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz",
- "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==",
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -2547,9 +2550,9 @@
}
},
"node_modules/fraction.js": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
- "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.1.tgz",
+ "integrity": "sha512-/KxoyCnPM0GwYI4NN0Iag38Tqt+od3/mLuguepLgCAKPn0ZhC544nssAW0tG2/00zXEYl9W+7hwAIpLHo6Oc7Q==",
"dev": true,
"engines": {
"node": "*"
@@ -2566,9 +2569,9 @@
"dev": true
},
"node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"hasInstallScript": true,
"optional": true,
@@ -2651,9 +2654,9 @@
}
},
"node_modules/globals": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+ "version": "13.21.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz",
+ "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==",
"dev": true,
"dependencies": {
"type-fest": "^0.20.2"
@@ -2783,9 +2786,9 @@
}
},
"node_modules/header-case/node_modules/tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/ignore": {
"version": "5.2.4",
@@ -2797,9 +2800,9 @@
}
},
"node_modules/immutable": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.2.tgz",
- "integrity": "sha512-oGXzbEDem9OOpDWZu88jGiYCvIsLHMvGw+8OXlpsvTFvIQplQbjg1B1cvKg8f7Hoch6+NGjpPsH1Fr+Mc2D1aA==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.3.tgz",
+ "integrity": "sha512-808ZFYMsIRAjLAu5xkKo0TsbY9LBy9H5MazTKIEHerNkg0ymgilGfBPMR/3G7d/ihGmuK2Hw8S1izY2d3kd3wA==",
"dev": true
},
"node_modules/import-fresh": {
@@ -3177,9 +3180,9 @@
"dev": true
},
"node_modules/jiti": {
- "version": "1.19.1",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.1.tgz",
- "integrity": "sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==",
+ "version": "1.19.3",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.3.tgz",
+ "integrity": "sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==",
"dev": true,
"bin": {
"jiti": "bin/jiti.js"
@@ -3413,9 +3416,9 @@
}
},
"node_modules/lower-case/node_modules/tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/lru-cache": {
"version": "6.0.0",
@@ -3430,9 +3433,9 @@
}
},
"node_modules/magic-string": {
- "version": "0.30.2",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.2.tgz",
- "integrity": "sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==",
+ "version": "0.30.3",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz",
+ "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.15"
},
@@ -3570,9 +3573,9 @@
}
},
"node_modules/no-case/node_modules/tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/node-releases": {
"version": "2.0.13",
@@ -3766,9 +3769,9 @@
}
},
"node_modules/param-case/node_modules/tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/parent-module": {
"version": "1.0.1",
@@ -3801,9 +3804,9 @@
}
},
"node_modules/pascal-case/node_modules/tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/path-case": {
"version": "3.0.4",
@@ -3815,9 +3818,9 @@
}
},
"node_modules/path-case/node_modules/tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/path-exists": {
"version": "4.0.0",
@@ -3896,9 +3899,9 @@
}
},
"node_modules/postcss": {
- "version": "8.4.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz",
- "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==",
+ "version": "8.4.28",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz",
+ "integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==",
"funding": [
{
"type": "opencollective",
@@ -4223,9 +4226,9 @@
}
},
"node_modules/rollup": {
- "version": "3.28.0",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.28.0.tgz",
- "integrity": "sha512-d7zhvo1OUY2SXSM6pfNjgD5+d0Nz87CUp4mt8l/GgVP3oBsPwzNvSzyu1me6BSG9JIgWNTVcafIXBIyM8yQ3yw==",
+ "version": "3.28.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.28.1.tgz",
+ "integrity": "sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==",
"dev": true,
"bin": {
"rollup": "dist/bin/rollup"
@@ -4262,9 +4265,9 @@
}
},
"node_modules/sass": {
- "version": "1.64.2",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.2.tgz",
- "integrity": "sha512-TnDlfc+CRnUAgLO9D8cQLFu/GIjJIzJCGkE7o4ekIGQOH7T3GetiRR/PsTWJUHhkzcSPrARkPI+gNWn5alCzDg==",
+ "version": "1.66.1",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.66.1.tgz",
+ "integrity": "sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==",
"dev": true,
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
@@ -4304,9 +4307,9 @@
}
},
"node_modules/sentence-case/node_modules/tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/set-blocking": {
"version": "2.0.0",
@@ -4374,9 +4377,9 @@
}
},
"node_modules/snake-case/node_modules/tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/source-map-js": {
"version": "1.0.2",
@@ -4801,12 +4804,12 @@
}
},
"node_modules/universal-cookie": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-4.0.4.tgz",
- "integrity": "sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-6.1.0.tgz",
+ "integrity": "sha512-QBpQWkFJyH9D6nP1ZjPuLDdrgYr3y9ti8OTWf6uWcZwtY06de5f10GPYv3v68LIYWU0a9J2ZF5xFR5gOdD5ZaQ==",
"dependencies": {
- "@types/cookie": "^0.3.3",
- "cookie": "^0.4.0"
+ "@types/cookie": "^0.5.1",
+ "cookie": "^0.5.0"
}
},
"node_modules/update-browserslist-db": {
@@ -4856,14 +4859,14 @@
}
},
"node_modules/upper-case-first/node_modules/tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/upper-case/node_modules/tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"node_modules/uri-js": {
"version": "4.4.1",
@@ -4881,9 +4884,9 @@
"dev": true
},
"node_modules/vanilla-jsoneditor": {
- "version": "0.17.8",
- "resolved": "https://registry.npmjs.org/vanilla-jsoneditor/-/vanilla-jsoneditor-0.17.8.tgz",
- "integrity": "sha512-DP9GP/IBQjYOnC820CYoFuXs3vgrL+zdGGp1X83qFirSkRWPeP+6zB/14a0LYhvomQNNezes5Gwel89MKc4Qbg=="
+ "version": "0.17.10",
+ "resolved": "https://registry.npmjs.org/vanilla-jsoneditor/-/vanilla-jsoneditor-0.17.10.tgz",
+ "integrity": "sha512-2ScoLNqq3kRSJ1+sG8rzbh4YtetrgEXbRX0OYxOk1Lqlg6tSkELGPsTA4KADFwk1s84oPj2ozMmFY6SwbZRJhg=="
},
"node_modules/vite": {
"version": "4.4.9",
@@ -5670,15 +5673,15 @@
}
},
"@eslint-community/regexpp": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz",
- "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==",
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.7.0.tgz",
+ "integrity": "sha512-+HencqxU7CFJnQb7IKtuNBqS6Yx3Tz4kOL8BJXo+JyeiBm5MEX6pO8onXDkjrkCRlfYXS1Axro15ZjVFe9YgsA==",
"dev": true
},
"@eslint/eslintrc": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz",
- "integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
+ "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
"dev": true,
"requires": {
"ajv": "^6.12.4",
@@ -5693,9 +5696,9 @@
}
},
"@eslint/js": {
- "version": "8.46.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz",
- "integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==",
+ "version": "8.47.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.47.0.tgz",
+ "integrity": "sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==",
"dev": true
},
"@fontsource/nunito": {
@@ -5739,9 +5742,9 @@
"requires": {}
},
"@headlessui/vue": {
- "version": "1.7.15",
- "resolved": "https://registry.npmjs.org/@headlessui/vue/-/vue-1.7.15.tgz",
- "integrity": "sha512-3ozVEgQ8mw09nWvUPN+8S6C8l3SM0lVT1aEN/+oP5Y4LF0WNMM9UrVisVTN9LLQ06v/X3EFA0blyL/vg8XNZlg==",
+ "version": "1.7.16",
+ "resolved": "https://registry.npmjs.org/@headlessui/vue/-/vue-1.7.16.tgz",
+ "integrity": "sha512-nKT+nf/q6x198SsyK54mSszaQl/z+QxtASmgMEJtpxSX2Q0OPJX0upS/9daDyiECpeAsvjkoOrm2O/6PyBQ+Qg==",
"requires": {}
},
"@humanwhocodes/config-array": {
@@ -5806,9 +5809,9 @@
}
},
"@kyvg/vue3-notification": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/@kyvg/vue3-notification/-/vue3-notification-2.9.1.tgz",
- "integrity": "sha512-FsY8g25tQetr3etnarxHtCeNFKssH8sheFu13LyL2JJmOOel437QqKV5n4RBDDDTIo55iKgIVYXeojliXYdEhw==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@kyvg/vue3-notification/-/vue3-notification-3.0.1.tgz",
+ "integrity": "sha512-6g4Sm03PM1Cc0atHHqQk5+ZtekXaxEXf9YVhfTv9FnUiNYKdquwVMuysj0cJabobsNSQSOASjqMg3+ndV2SqWw==",
"requires": {}
},
"@nodelib/fs.scandir": {
@@ -5838,9 +5841,9 @@
}
},
"@types/cookie": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz",
- "integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow=="
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz",
+ "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g=="
},
"@types/debug": {
"version": "4.1.8",
@@ -5852,9 +5855,9 @@
}
},
"@types/lodash": {
- "version": "4.14.196",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.196.tgz",
- "integrity": "sha512-22y3o88f4a94mKljsZcanlNWPzO0uBsBdzLAngf2tp533LzZcQzb6+eZPJ+vCTt+bqF2XnvT9gejTLsAcJAJyQ==",
+ "version": "4.14.197",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.197.tgz",
+ "integrity": "sha512-BMVOiWs0uNxHVlHBgzTIqJYmj+PgCo4euloGF+5m4okL3rEYzM2EEv78mw8zWSMM57dM7kVIgJ2QDvwHSoCI5g==",
"dev": true
},
"@types/lodash-es": {
@@ -5884,9 +5887,9 @@
"integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA=="
},
"@vitejs/plugin-vue": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz",
- "integrity": "sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.3.3.tgz",
+ "integrity": "sha512-ssxyhIAZqB0TrpUg6R0cBpCuMk9jTIlO1GNSKKQD6S8VjnXi6JXKfUXjSsxey9IwQiaRGsO1WnW9Rkl1L6AJVw==",
"dev": true,
"requires": {}
},
@@ -5895,16 +5898,15 @@
"requires": {
"@babel/types": "^7.x",
"@types/lodash-es": "^4.14.194",
- "@typescript-eslint/eslint-plugin": "^5.59.1",
+ "@typescript-eslint/eslint-plugin": "^6.4.x",
"axios": "^1.x",
- "eslint": "^8.39.0",
"jose": "^4.13.x",
- "universal-cookie": "^4.0.4"
+ "universal-cookie": "^6.x"
}
},
"@vnuge/vnlib.browser": {
- "version": "https://www.vaughnnugent.com/public/resources/software/releases/vnlib-browser/v0.1.7.tgz",
- "integrity": "sha512-oj44CaIO415L4IM9xIMxJ9KAy+4YaWXisjiBphtXntzAD7ytfMMLU1WY2BgFHolKDvVqwb8jkO3SN+Lvj9W2Ew==",
+ "version": "https://www.vaughnnugent.com/public/resources/software/builds/vnlib.browser/56582248d0f1e4ca3e6d63bc81670df5b49a823d/@vnuge-vnlib.browser/release.tgz",
+ "integrity": "sha512-TjI4Lkrv8YmdLmamV5SnJh1263lU840Qd/7EI9s9ROlyvQsyuDVnMPlL9CrRevRpeSTP1aUpOEzd0yGza6UKRA==",
"requires": {}
},
"@volar-plugins/vetur": {
@@ -5918,30 +5920,30 @@
}
},
"@volar/language-core": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.10.0.tgz",
- "integrity": "sha512-ddyWwSYqcbEZNFHm+Z3NZd6M7Ihjcwl/9B5cZd8kECdimVXUFdFi60XHWD27nrWtUQIsUYIG7Ca1WBwV2u2LSQ==",
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.10.1.tgz",
+ "integrity": "sha512-JnsM1mIPdfGPxmoOcK1c7HYAsL6YOv0TCJ4aW3AXPZN/Jb4R77epDyMZIVudSGjWMbvv/JfUa+rQ+dGKTmgwBA==",
"dev": true,
"requires": {
- "@volar/source-map": "1.10.0"
+ "@volar/source-map": "1.10.1"
}
},
"@volar/source-map": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.10.0.tgz",
- "integrity": "sha512-/ibWdcOzDGiq/GM1JU2eX8fH1bvAhl66hfe8yEgLEzg9txgr6qb5sQ/DEz5PcDL75tF5H5sCRRwn8Eu8ezi9mw==",
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.10.1.tgz",
+ "integrity": "sha512-3/S6KQbqa7pGC8CxPrg69qHLpOvkiPHGJtWPkI/1AXCsktkJ6gIk/5z4hyuMp8Anvs6eS/Kvp/GZa3ut3votKA==",
"dev": true,
"requires": {
"muggle-string": "^0.3.1"
}
},
"@volar/typescript": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.10.0.tgz",
- "integrity": "sha512-OtqGtFbUKYC0pLNIk3mHQp5xWnvL1CJIUc9VE39VdZ/oqpoBh5jKfb9uJ45Y4/oP/WYTrif/Uxl1k8VTPz66Gg==",
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.10.1.tgz",
+ "integrity": "sha512-+iiO9yUSRHIYjlteT+QcdRq8b44qH19/eiUZtjNtuh6D9ailYM7DVR0zO2sEgJlvCaunw/CF9Ov2KooQBpR4VQ==",
"dev": true,
"requires": {
- "@volar/language-core": "1.10.0"
+ "@volar/language-core": "1.10.1"
}
},
"@vscode/l10n": {
@@ -6271,13 +6273,13 @@
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"autoprefixer": {
- "version": "10.4.14",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
- "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
+ "version": "10.4.15",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.15.tgz",
+ "integrity": "sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==",
"dev": true,
"requires": {
- "browserslist": "^4.21.5",
- "caniuse-lite": "^1.0.30001464",
+ "browserslist": "^4.21.10",
+ "caniuse-lite": "^1.0.30001520",
"fraction.js": "^4.2.0",
"normalize-range": "^0.1.2",
"picocolors": "^1.0.0",
@@ -6389,9 +6391,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
@@ -6408,9 +6410,9 @@
"dev": true
},
"caniuse-lite": {
- "version": "1.0.30001519",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz",
- "integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==",
+ "version": "1.0.30001522",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001522.tgz",
+ "integrity": "sha512-TKiyTVZxJGhsTszLuzb+6vUZSjVOAhClszBr2Ta2k9IwtNBT/4dzmL6aywt0HCgEZlmwJzXJd8yNiob6HgwTRg==",
"dev": true
},
"capital-case": {
@@ -6424,9 +6426,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
@@ -6460,9 +6462,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
@@ -6556,16 +6558,16 @@
},
"dependencies": {
"tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
"cookie": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
- "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA=="
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
},
"cross-spawn": {
"version": "7.0.3",
@@ -6700,9 +6702,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
@@ -6713,9 +6715,9 @@
"dev": true
},
"electron-to-chromium": {
- "version": "1.4.488",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.488.tgz",
- "integrity": "sha512-Dv4sTjiW7t/UWGL+H8ZkgIjtUAVZDgb/PwGWvMsCT7jipzUV/u5skbLXPFKb6iV0tiddVi/bcS2/kUrczeWgIQ==",
+ "version": "1.4.500",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.500.tgz",
+ "integrity": "sha512-P38NO8eOuWOKY1sQk5yE0crNtrjgjJj6r3NrbIKtG18KzCHmHE2Bt+aQA7/y0w3uYsHWxDa6icOohzjLJ4vJ4A==",
"dev": true
},
"emoji-regex": {
@@ -6790,15 +6792,15 @@
"dev": true
},
"eslint": {
- "version": "8.46.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.46.0.tgz",
- "integrity": "sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==",
+ "version": "8.47.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.47.0.tgz",
+ "integrity": "sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==",
"dev": true,
"requires": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.1",
- "@eslint/js": "^8.46.0",
+ "@eslint/eslintrc": "^2.1.2",
+ "@eslint/js": "^8.47.0",
"@humanwhocodes/config-array": "^0.11.10",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
@@ -6809,7 +6811,7 @@
"doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
"eslint-scope": "^7.2.2",
- "eslint-visitor-keys": "^3.4.2",
+ "eslint-visitor-keys": "^3.4.3",
"espree": "^9.6.1",
"esquery": "^1.4.2",
"esutils": "^2.0.2",
@@ -6860,9 +6862,9 @@
}
},
"eslint-visitor-keys": {
- "version": "3.4.2",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz",
- "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==",
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true
},
"espree": {
@@ -7056,9 +7058,9 @@
}
},
"fraction.js": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
- "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.1.tgz",
+ "integrity": "sha512-/KxoyCnPM0GwYI4NN0Iag38Tqt+od3/mLuguepLgCAKPn0ZhC544nssAW0tG2/00zXEYl9W+7hwAIpLHo6Oc7Q==",
"dev": true
},
"fs.realpath": {
@@ -7068,9 +7070,9 @@
"dev": true
},
"fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"optional": true
},
@@ -7128,9 +7130,9 @@
}
},
"globals": {
- "version": "13.20.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
- "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+ "version": "13.21.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz",
+ "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==",
"dev": true,
"requires": {
"type-fest": "^0.20.2"
@@ -7218,9 +7220,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
@@ -7231,9 +7233,9 @@
"dev": true
},
"immutable": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.2.tgz",
- "integrity": "sha512-oGXzbEDem9OOpDWZu88jGiYCvIsLHMvGw+8OXlpsvTFvIQplQbjg1B1cvKg8f7Hoch6+NGjpPsH1Fr+Mc2D1aA==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.3.tgz",
+ "integrity": "sha512-808ZFYMsIRAjLAu5xkKo0TsbY9LBy9H5MazTKIEHerNkg0ymgilGfBPMR/3G7d/ihGmuK2Hw8S1izY2d3kd3wA==",
"dev": true
},
"import-fresh": {
@@ -7499,9 +7501,9 @@
"dev": true
},
"jiti": {
- "version": "1.19.1",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.1.tgz",
- "integrity": "sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==",
+ "version": "1.19.3",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.3.tgz",
+ "integrity": "sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==",
"dev": true
},
"jose": {
@@ -7646,9 +7648,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
@@ -7662,9 +7664,9 @@
}
},
"magic-string": {
- "version": "0.30.2",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.2.tgz",
- "integrity": "sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==",
+ "version": "0.30.3",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz",
+ "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==",
"requires": {
"@jridgewell/sourcemap-codec": "^1.4.15"
}
@@ -7766,9 +7768,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
@@ -7910,9 +7912,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
@@ -7941,9 +7943,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
@@ -7957,9 +7959,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
@@ -8016,9 +8018,9 @@
"peer": true
},
"postcss": {
- "version": "8.4.27",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz",
- "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==",
+ "version": "8.4.28",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz",
+ "integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==",
"requires": {
"nanoid": "^3.3.6",
"picocolors": "^1.0.0",
@@ -8212,9 +8214,9 @@
}
},
"rollup": {
- "version": "3.28.0",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.28.0.tgz",
- "integrity": "sha512-d7zhvo1OUY2SXSM6pfNjgD5+d0Nz87CUp4mt8l/GgVP3oBsPwzNvSzyu1me6BSG9JIgWNTVcafIXBIyM8yQ3yw==",
+ "version": "3.28.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.28.1.tgz",
+ "integrity": "sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==",
"dev": true,
"requires": {
"fsevents": "~2.3.2"
@@ -8230,9 +8232,9 @@
}
},
"sass": {
- "version": "1.64.2",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.2.tgz",
- "integrity": "sha512-TnDlfc+CRnUAgLO9D8cQLFu/GIjJIzJCGkE7o4ekIGQOH7T3GetiRR/PsTWJUHhkzcSPrARkPI+gNWn5alCzDg==",
+ "version": "1.66.1",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.66.1.tgz",
+ "integrity": "sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==",
"dev": true,
"requires": {
"chokidar": ">=3.0.0 <4.0.0",
@@ -8260,9 +8262,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
@@ -8316,9 +8318,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
@@ -8640,12 +8642,12 @@
"dev": true
},
"universal-cookie": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-4.0.4.tgz",
- "integrity": "sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-6.1.0.tgz",
+ "integrity": "sha512-QBpQWkFJyH9D6nP1ZjPuLDdrgYr3y9ti8OTWf6uWcZwtY06de5f10GPYv3v68LIYWU0a9J2ZF5xFR5gOdD5ZaQ==",
"requires": {
- "@types/cookie": "^0.3.3",
- "cookie": "^0.4.0"
+ "@types/cookie": "^0.5.1",
+ "cookie": "^0.5.0"
}
},
"update-browserslist-db": {
@@ -8667,9 +8669,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
@@ -8682,9 +8684,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}
}
},
@@ -8704,9 +8706,9 @@
"dev": true
},
"vanilla-jsoneditor": {
- "version": "0.17.8",
- "resolved": "https://registry.npmjs.org/vanilla-jsoneditor/-/vanilla-jsoneditor-0.17.8.tgz",
- "integrity": "sha512-DP9GP/IBQjYOnC820CYoFuXs3vgrL+zdGGp1X83qFirSkRWPeP+6zB/14a0LYhvomQNNezes5Gwel89MKc4Qbg=="
+ "version": "0.17.10",
+ "resolved": "https://registry.npmjs.org/vanilla-jsoneditor/-/vanilla-jsoneditor-0.17.10.tgz",
+ "integrity": "sha512-2ScoLNqq3kRSJ1+sG8rzbh4YtetrgEXbRX0OYxOk1Lqlg6tSkELGPsTA4KADFwk1s84oPj2ozMmFY6SwbZRJhg=="
},
"vite": {
"version": "4.4.9",
diff --git a/front-end/package.json b/front-end/package.json
index 091599c..115a7a3 100644
--- a/front-end/package.json
+++ b/front-end/package.json
@@ -1,7 +1,7 @@
{
"name": "@vnuge/cmnext-front-end",
"private": true,
- "version": "0.1.1",
+ "version": "0.1.2",
"type": "module",
"copyright": "Copyright \u00A9 2023 Vaughn Nugent",
"description": "The CMNext admin web UI, built with Tailwindcss and Vuejs",
@@ -26,13 +26,13 @@
"@fortawesome/free-solid-svg-icons": "^6.4.0",
"@fortawesome/vue-fontawesome": "^3.0.3",
"@headlessui/vue": "^1.7.12",
- "@kyvg/vue3-notification": "^2.9.0",
+ "@kyvg/vue3-notification": "^3.0.x",
"@vnuge/cmnext-admin": "../lib/admin",
- "@vnuge/vnlib.browser": "https://www.vaughnnugent.com/public/resources/software/releases/vnlib-browser/v0.1.7.tgz",
+ "@vnuge/vnlib.browser": "https://www.vaughnnugent.com/public/resources/software/builds/vnlib.browser/56582248d0f1e4ca3e6d63bc81670df5b49a823d/@vnuge-vnlib.browser/release.tgz",
"@vuelidate/core": "^2.0.2",
"@vuelidate/validators": "^2.0.2",
- "@vueuse/core": "^10.3.0",
- "@vueuse/router": "^10.3.0",
+ "@vueuse/core": "^10.3.x",
+ "@vueuse/router": "^10.3.x",
"axios": "^1.4.0",
"base32-encode": "^2.0.0",
"jose": "^4.14.4",
@@ -40,8 +40,8 @@
"lodash-es": "^4.17.21",
"otpauth": "^9.1.2",
"showdown": "^2.1.0",
- "universal-cookie": "^4.0.4",
- "vanilla-jsoneditor": "^0.17.8",
+ "universal-cookie": "^6.1.x",
+ "vanilla-jsoneditor": "^0.17.x",
"vue": "^3.2.47",
"vue3-otp-input": "^0.4.1"
},
diff --git a/front-end/src/bootstrap/style/inputs.scss b/front-end/src/bootstrap/style/inputs.scss
index 64f8901..adbf456 100644
--- a/front-end/src/bootstrap/style/inputs.scss
+++ b/front-end/src/bootstrap/style/inputs.scss
@@ -1,7 +1,7 @@
input.input,
select.input,
textarea.input {
- @apply duration-100 ease-in-out outline-none border p-2;
+ @apply duration-100 ease-in-out outline-none border px-2 py-1.5;
@apply border-gray-200 bg-inherit dark:border-dark-400 dark:text-white hover:border-gray-300 hover:dark:border-dark-200;
}
diff --git a/front-end/src/components/FooterNav1.vue b/front-end/src/components/FooterNav1.vue
index 937bf99..c02585f 100644
--- a/front-end/src/components/FooterNav1.vue
+++ b/front-end/src/components/FooterNav1.vue
@@ -5,9 +5,6 @@
<router-link class="footer-link" to="/login" >
Login
</router-link>
- <router-link class="footer-link" to="/register">
- Regsiter
- </router-link>
<router-link class="footer-link" to="/account">
Profile
</router-link>
diff --git a/front-end/src/views/Account/[comp].vue b/front-end/src/views/Account/[comp].vue
index 75fd086..9e6343d 100644
--- a/front-end/src/views/Account/[comp].vue
+++ b/front-end/src/views/Account/[comp].vue
@@ -14,12 +14,6 @@
<Tab v-slot="{ selected }" >
<span class="page-link" :class="{ 'active': selected }">
- OAuth
- </span>
- </tab>
-
- <Tab v-slot="{ selected }" >
- <span class="page-link" :class="{ 'active': selected }">
Settings
</span>
</tab>
@@ -34,10 +28,6 @@
</TabPanel>
<TabPanel :unmount="false">
- <OauthApps />
- </TabPanel>
-
- <TabPanel :unmount="false">
<Settings />
</TabPanel>
@@ -54,7 +44,6 @@ import { useRouteParams } from '@vueuse/router'
import { TabGroup, TabList, Tab, TabPanels, TabPanel } from '@headlessui/vue'
import Settings from './components/settings/Settings.vue'
import Profile from './components/profile/Profile.vue'
-import OauthApps from './components/oauth/Oauth.vue'
usePageGuard()
useTitle('Account')
diff --git a/front-end/src/views/Account/components/oauth/CreateApp.vue b/front-end/src/views/Account/components/oauth/CreateApp.vue
deleted file mode 100644
index b10dd2c..0000000
--- a/front-end/src/views/Account/components/oauth/CreateApp.vue
+++ /dev/null
@@ -1,183 +0,0 @@
-<template>
- <Dialog :open="isOpen" @close="close" class="relative z-10">
- <div class="fixed inset-0 bg-black/30" aria-hidden="true" />
- <div class="fixed inset-0 flex justify-center top-20">
- <DialogPanel class="new-o2-app-dialog">
- <DialogTitle>Create app</DialogTitle>
- <div class="flex">
- <div class="m-auto mb-3 text-sm">
- <p class="my-1">
- Step 1: Enter a name for your app.
- </p>
- <p class="my-1">
- Step 2: Submit the form.
- </p>
- <p class="my-1 text-red-500">
- Step 3: Save your Client ID and Secret somewhere safe.
- </p>
- </div>
- </div>
- <!-- If secret is set, show the scret window -->
- <div v-if="newAppBuffer.secret" class="mt-2">
- <div class="block mx-1 sm:inline">
- Secret:
- </div>
- <div class="px-1 py-4 my-2 break-all border-2 border-gray-300 rounded-lg">
- <div class="text-center secret">
- <span class="block mx-1 sm:inline">
- {{ newAppBuffer.secret }}
- </span>
- </div>
- </div>
- <div class="text-sm">
- <p class="p-2">
- This secret will only be displayed <strong>once</strong>, and you cannot request it again.
- If you lose it, you will need to update the secret from the app edit pane.
- </p>
- <p class="p-2">
- Please remember to keep this secret somewhere safe. If an attacker gains
- access to it, they will be able to access any APIs on your behalf!
- </p>
- </div>
- <div class="flex justify-end">
- <button v-if="!copied" class="btn primary" @click="copy(newAppBuffer.secret)">
- Copy
- </button>
- <button v-else class="btn primary" @click="close">
- Done
- </button>
- </div>
- </div>
- <div v-else>
- <form id="o2-app-creation" class="" @submit.prevent="onFormSubmit">
- <fieldset class="flex flex-col gap-4">
- <div class="input-container">
- <label>App Name</label>
- <input
- class="w-full mt-1 input primary"
- :class="{'invalid':v$.name.$invalid, 'dirty': v$.name.$dirty}"
- name="name"
- type="text"
- v-model="v$.name.$model"
- />
- </div>
- <div class="input-container">
- <label>Description</label>
- <textarea
- class="w-full mt-1 input primary"
- :class="{ 'invalid': v$.description.$invalid, 'dirty': v$.name.$dirty }"
- name="description"
- v-model="v$.description.$model"
- rows="3"
- />
- </div>
- <div class="input-container">
- <label>Permissions</label>
- <div class="flex flex-col flex-wrap sm:flex-row">
- <div v-for="permission in appPermissions" :key="permission.type" class="my-2 sm:m-3">
- <label class="flex cursor-pointer">
- <input class="w-5 cursor-pointer" type="checkbox" :name="permission.type" @change="permissionChanged">
- <span class="pl-1">{{ permission.label }}</span>
- </label>
- </div>
- </div>
- </div>
- </fieldset>
- <div class="flex justify-end mt-4">
- <div class="button-group">
- <button type="submit" form="o2-app-creation" class="btn primary">Submit</button>
- <button class="btn" @click.prevent="close">Cancel</button>
- </div>
- </div>
- </form>
- </div>
- </DialogPanel>
- </div>
- </Dialog>
-</template>
-
-<script setup lang="ts">
-import { indexOf, pull } from 'lodash-es'
-import { ref, toRefs } from 'vue';
-import { Dialog, DialogPanel, DialogTitle } from '@headlessui/vue'
-import { apiCall } from '@vnuge/vnlib.browser'
-import { useOAuth2Apps, getAppValidator, getAppPermissions } from './o2Api'
-import { useClipboard } from '@vueuse/core'
-
-const emit = defineEmits(['close'])
-
-const props = defineProps<{
- isOpen: boolean
-}>()
-
-const { isOpen } = toRefs(props);
-
-const { copied, copy } = useClipboard();
-//Init the oauth2 app api
-const { createApp } = useOAuth2Apps('/oauth/apps');
-const appPermissions = getAppPermissions();
-
-const newAppBuffer = ref({});
-const newAppPermissions = ref([]);
-
-const { v$, validate, reset } = getAppValidator(newAppBuffer);
-
-const close = () => {
- newAppBuffer.value = {}
- reset()
- emit('close')
-}
-
-const onFormSubmit = async () =>{
-
- // Validate the new app form
- if (!await validate()) {
- return
- }
-
- // Create the new app
- await apiCall(async () => {
-
- const { secret } = await createApp(newAppBuffer.value)
-
- // Reset the new app buffer and pass the secret value
- newAppBuffer.value = { secret }
- })
-
- // reset the validator
- v$.value.$reset()
-}
-
-const permissionChanged = (e : any) => {
- if (e.target.checked) {
- // Make sure the permission is not already in the list
- if (indexOf(newAppPermissions.value, e.target.name) > -1) {
- return
- }
- // Add the permission to the list
- newAppPermissions.value.push(e.target.name)
- } else {
- // Remove the permission from the list
- pull(newAppPermissions.value, e.target.name)
- }
- // Update the permissions model
- v$.value.permissions.$model = newAppPermissions.value.join(',')
-}
-
-</script>
-
-<style lang="scss">
-
-.new-o2-app-dialog{
- @apply w-full max-w-lg p-8 pt-4 m-auto mt-0 shadow-md sm:rounded-md;
- @apply bg-white dark:bg-dark-600 dark:text-gray-200;
-
- #o2-app-creation{
- input.dirty.invalid,
- textarea.dirty.invalid{
- @apply border-red-500 focus:border-red-500;
- }
- }
-}
-
-</style> \ No newline at end of file
diff --git a/front-end/src/views/Account/components/oauth/Oauth.vue b/front-end/src/views/Account/components/oauth/Oauth.vue
deleted file mode 100644
index 119aa50..0000000
--- a/front-end/src/views/Account/components/oauth/Oauth.vue
+++ /dev/null
@@ -1,93 +0,0 @@
-<template>
- <div id="oauth-apps" class="acnt-content-container">
- <div class="app-container panel-container">
- <div class="mb-6 panel-header">
- <div class="flex ml-0 mr-auto">
- <div class="my-auto panel-title">
- <h4>Your applications</h4>
- </div>
- </div>
- <div class="ml-auto mr-0">
- <div class="button-container">
- <button class="btn primary sm" :disabled="!isLocalAccount" @click="editNew = true">
- Create App
- </button>
- </div>
- </div>
- </div>
- <div v-if="apps?.length == 0" class="no-apps-container">
- <div class="m-auto">
- You dont have any OAuth2 client applications yet.
- </div>
- </div>
- <div v-else>
- <div v-for="app in apps" :key="app.data.Id" class="panel-content">
- <SingleApplication :application="app" :allow-edit="isLocalAccount" @appDeleted="loadApps" />
- </div>
- </div>
- </div>
- <div class="px-2 my-10">
- <div class="m-auto text-sm">
- OAuth2 applications allow you grant api access to OAuth2 clients using the Client Credentials grant type.
- <a class="link" href="https://oauth.net" target="_blank">
- Learn more
- </a>
- </div>
- <div v-show="!isLocalAccount" class="mt-3 text-center text-red-500">
- You may not create or edit applications if you are using external authentication.
- </div>
- </div>
- <CreateApp :is-open="editNew" @close="newAppClose" />
- </div>
-</template>
-
-<script setup lang="ts">
-import { ref } from 'vue'
-import CreateApp from './CreateApp.vue'
-import { useSession, apiCall } from '@vnuge/vnlib.browser'
-
-import SingleApplication from './SingleApplication.vue'
-import { AppBuffer, OAuth2Application, useOAuth2Apps } from './o2Api'
-
-const { isLocalAccount } = useSession()
-const { getApps } = useOAuth2Apps('/oauth/apps');
-
-const apps = ref<AppBuffer<OAuth2Application>[]>();
-const editNew = ref(false);
-
-const loadApps = async () => {
- await apiCall(async () => {
- const appList = await getApps();
- // sort apps from newest to oldest
- appList.sort((a, b) => {
- if (a.data.Created > b.data.Created) return -1
- if (a.data.Created < b.data.Created) return 1
- return 0
- })
- // set the apps
- apps.value = appList
- })
-}
-
-const newAppClose = () => {
- editNew.value = false;
- //Reload apps on close
- loadApps();
-}
-
-//Load apps, but do not await
-loadApps()
-
-</script>
-
-<style>
-
-#oauth-apps {
- @apply m-auto max-w-3xl;
-}
-
-#oauth-apps .app-container .no-apps-container {
- @apply w-full flex h-36 sm:border sm:rounded-md mt-4 mb-20 dark:border-dark-500 border-gray-300;
-}
-
-</style>
diff --git a/front-end/src/views/Account/components/oauth/SingleApplication.vue b/front-end/src/views/Account/components/oauth/SingleApplication.vue
deleted file mode 100644
index 247f2f3..0000000
--- a/front-end/src/views/Account/components/oauth/SingleApplication.vue
+++ /dev/null
@@ -1,190 +0,0 @@
-<template>
- <div :id="data.Id">
- <div class="flex flex-row">
- <div class="flex ml-0 mr-auto">
- <div class="flex w-8 h-8 rounded-full bg-primary-500">
- <div class="m-auto text-white dark:text-dark-500">
- <fa-icon icon="key"></fa-icon>
- </div>
- </div>
- <div class="inline my-auto ml-2">
- <h5 class="m-0">{{ name }}</h5>
- </div>
- </div>
- <div v-if="allowEdit && editMode" class="button-group">
- <button class="btn primary xs" :disabled="modified" @click="onSubmit">Update</button>
- <button class="btn xs" @click="onCancel">Cancel</button>
- </div>
- <div v-else class="">
- <button class="btn no-border xs" @click="editMode = true">Edit</button>
- </div>
- </div>
- <div class="px-3 py-1 text-gray-500">
- <div class="my-1">
- <span> Client ID: </span>
- <span class="font-mono text-black dark:text-white">{{ clientId }}</span>
- </div>
- <div class="text-sm">
- <span> Created: </span>
- <span>{{ createdTime }}</span>
- </div>
- <div v-if="!editMode" class="text-sm">
- <span>{{ data.description }}</span>
- </div>
- </div>
- <div v-if="newSecret" class="flex">
- <div class="max-w-md py-4 mx-auto">
- <div class="pl-1 mb-2">
- New secret
- </div>
- <div class="p-4 text-sm break-all border-2 rounded-lg dark:border-dark-400">
- {{ newSecret }}
- </div>
- <div class="flex justify-end my-3">
- <button v-if="!copied" class="rounded btn" @click="copy(newSecret)">
- Copy
- </button>
- <button v-else class="rounded btn" @click="closeNewSecret">
- Done
- </button>
- </div>
- </div>
- </div>
- <div v-else-if="editMode" class="app-form-container">
- <div class="py-4">
- <form :id="formId" class="max-w-md mx-auto">
- <fieldset :disabled="waiting" class="">
- <div class="input-container">
- <div class="pl-1 mb-1">
- App name
- </div>
- <input class="w-full input primary" :class="{ 'invalid': v$.name.$invalid }" v-model="v$.name.$model" type="text" name="name" />
- </div>
- <div class="mt-3 input-container">
- <div class="pl-1 mb-1">
- App description
- <span class="text-sm">(optional)</span>
- </div>
- <textarea class="w-full input primary" :class="{ 'invalid': v$.description.$invalid }" v-model="v$.description.$model" name="description" rows="3" />
- </div>
- </fieldset>
- </form>
- </div>
- <div class="mt-3">
- <div class="flex flex-row justify-center gap-3 mx-auto">
- <div class="">
- <button class="w-full btn yellow" @click="updateSecret">
- Update Secret
- </button>
- </div>
- <div class="">
- <button class="w-full btn red" @click="onDelete">
- Delete
- </button>
- </div>
- </div>
- </div>
- </div>
- </div>
-</template>
-
-<script setup lang="ts">
-import { toUpper } from 'lodash-es'
-import { apiCall, useWait, useConfirm, usePassConfirm } from '@vnuge/vnlib.browser'
-import { ref, computed, toRefs } from 'vue'
-import { useClipboard, useTimeAgo } from '@vueuse/core'
-import { useOAuth2Apps, getAppValidator, AppBuffer, OAuth2Application } from './o2Api'
-
-const props = defineProps<{
- application: AppBuffer<OAuth2Application>
- allowEdit: boolean
-}>()
-
-const emit = defineEmits(['secretUpdated', 'AppDeleted'])
-
-const { application, allowEdit } = toRefs(props)
-const { data, buffer, revert, modified } = application.value;
-
-const { waiting } = useWait()
-const { reveal } = useConfirm()
-const { elevatedApiCall } = usePassConfirm()
-const { copied, copy } = useClipboard()
-const { deleteApp, updateAppMeta, updateAppSecret } = useOAuth2Apps('/oauth/apps');
-
-const { v$, validate, reset } = getAppValidator(buffer)
-
-const editMode = ref(false)
-const newSecret = ref<string | null>(null);
-
-const name = computed(() => data.name)
-const clientId = computed(() => toUpper(data.client_id))
-const createdTime = useTimeAgo(data.Created);
-const formId = computed(() => `app-form-${data.client_id}`)
-
-const onCancel = function () {
- revert()
- reset()
- editMode.value = false
-}
-
-const onSubmit = async function () {
- // Validate the new app form
- if (!await validate()) {
- return
- }
- // Create the new app
- await apiCall(async ({ toaster }) => {
- // Update does not return anything, if successful
- await updateAppMeta(application.value)
- toaster.general.success({
- text: 'Application successfully updated',
- title: 'Success'
- })
- reset()
- editMode.value = false
- })
-}
-
-const updateSecret = async function () {
- // Show a confrimation prompt
- const { isCanceled } = await reveal({
- title: 'Update Secret',
- text: `Are you sure you want to update the secret? Any active sessions will be invalidated, and the old secret will be invalidated.`
- })
- if (isCanceled) {
- return
- }
- await elevatedApiCall(async ({ password }) => {
- // Submit the secret update with the new challenge
- newSecret.value = await updateAppSecret(application.value, password)
- })
-}
-
-const onDelete = async function () {
- // Show a confirmation prompt
- const { isCanceled } = await reveal({
- title: 'Delete Application',
- text: 'Are you sure you want to delete this application?',
- subtext: 'This action cannot be undone'
- })
- if (isCanceled) {
- return
- }
- await elevatedApiCall(async ({ password, toaster }) => {
- await deleteApp(application.value, password)
- toaster.general.success({
- text: 'Application deleted successfully',
- title: 'Success'
- })
- emit('AppDeleted')
- })
-}
-
-const closeNewSecret = () => newSecret.value = null;
-
-</script>
-
-<style lang="scss">
-
-
-</style>
diff --git a/front-end/src/views/Account/components/oauth/o2Api.ts b/front-end/src/views/Account/components/oauth/o2Api.ts
deleted file mode 100644
index 40db64e..0000000
--- a/front-end/src/views/Account/components/oauth/o2Api.ts
+++ /dev/null
@@ -1,176 +0,0 @@
-import { forEach } from 'lodash-es'
-import { Ref } from 'vue'
-import useVuelidate from '@vuelidate/core'
-import { maxLength, helpers, required } from '@vuelidate/validators'
-import { useAxios, useDataBuffer, useVuelidateWrapper } from '@vnuge/vnlib.browser'
-import { AxiosResponse } from 'axios'
-
-export interface OAuth2Application{
- readonly Id: string,
- readonly name: string,
- readonly description: string,
- readonly permissions: string[],
- readonly client_id: string,
- readonly Created: Date,
- readonly LastModified: Date,
-}
-
-export interface NewAppResponse {
- readonly secret: string
- readonly app: AppBuffer<OAuth2Application>
-}
-
-export interface AppBuffer<T>{
- readonly data: T,
- buffer: T
- readonly modified: Readonly<Ref<boolean>>
- apply: (data: T) => void
- revert(): void
-}
-
-/**
- * Initializes the oauth2 applications api
- * @param o2EndpointUrl The url of the oauth2 applications endpoint
- * @returns The oauth2 applications api
- */
-export const useOAuth2Apps = (o2EndpointUrl : string) => {
- const { post, get, put } = useAxios(null);
-
- /**
- * Gets all of the user's oauth2 applications from the server
- * @returns The user's oauth2 applications
- */
- const getApps = async (): Promise<AppBuffer<OAuth2Application>[]>=> {
- // Get all apps
- const { data } = await get(o2EndpointUrl);
-
- const apps: AppBuffer<OAuth2Application>[] = []
-
- //Loop through the apps and create a new state manager for each
- forEach(data, (appData) => {
-
- //Store the created time as a date object
- appData.created = new Date(appData?.Created ?? 0)
-
- //create a new state manager for the user's profile
- const app: AppBuffer<OAuth2Application> = useDataBuffer(appData)
-
- apps.push(app)
- })
-
- return apps
- }
-
- /**
- * Creates a new application from the given data
- * @param param0 The application server buffer
- * @returns The newly created application
- */
- const createApp = async ({ name, description, permissions } : OAuth2Application): Promise<NewAppResponse> => {
-
- // make the post request, response is the new app data with a secret
- const { data } = await post(`${o2EndpointUrl}?action=create`, { name, description, permissions })
-
- // Store secret
- const secret = data.raw_secret
-
- // remove secre tfrom the response
- delete data.raw_secret
-
- return { secret, app: useDataBuffer(data) }
- }
-
- /**
- * Updates an Oauth2 application's metadata
- */
- const updateAppMeta = async (app: AppBuffer<OAuth2Application>): Promise<void> => {
-
- //Update the app metadata
- await put(o2EndpointUrl, app.buffer)
-
- //Get the app data from the server to update the local copy
- const response = await get(`${o2EndpointUrl}?Id=${app.data.Id}`)
-
- //Update the app
- app.apply(response.data)
- }
-
- /**
- * Requets a new secret for an application from the server
- * @param app The app to request a new secret for
- * @param password The user's password
- * @returns The new secret
- */
- const updateAppSecret = async (app: AppBuffer<OAuth2Application>, password: string): Promise<string> => {
- const response = await post(`${o2EndpointUrl}?action=secret`, { Id: app.data.Id, password })
- return response.data.raw_secret
- }
-
- /**
- * Deletes an application from the server
- * @param app The application to delete
- * @param password The user's password
- * @returns The response from the server
- */
- const deleteApp = (app: AppBuffer<OAuth2Application>, password: string): Promise<AxiosResponse> => {
- return post(`${o2EndpointUrl}?action=delete`, { password, Id: app.data.Id });
- }
-
- return { getApps, createApp, updateAppMeta, updateAppSecret, deleteApp }
-}
-
-
-//Custom alpha numeric regex
-const alphaNumRegex = helpers.regex(/^[a-zA-Z0-9_,\s]*$/)
-
-const rules = {
- name: {
- alphaNumSpace: helpers.withMessage("Name contains invalid characters", alphaNumRegex),
- maxLength: helpers.withMessage('App name must be less than 50 characters', maxLength(50)),
- required: helpers.withMessage('Oauth Application name is required', required)
- },
- description: {
- alphaNumSpace: helpers.withMessage("Description contains invalid characters", alphaNumRegex),
- maxLength: helpers.withMessage('Description must be less than 50 characters', maxLength(50))
- },
- permissions: {
- alphaNumSpace: helpers.regex(/^[a-zA-Z0-9_,:\s]*$/),
- maxLength: helpers.withMessage('Permissions must be less than 64 characters', maxLength(64))
- }
-}
-
-export interface AppValidator {
- readonly v$: ReturnType<typeof useVuelidate>
- readonly validate: () => Promise<boolean>
- readonly reset: () => void
-}
-
-/**
- * Gets the validator for the given application (or new appication) buffer
- * @param buffer The app buffer to validate
- * @returns The validator instance, validate function, and reset function
- */
-export const getAppValidator = <T>(buffer: T) : AppValidator => {
- //App validator
- const v$ = useVuelidate(rules, buffer, { $lazy: true, $autoDirty: true })
- //validate wrapper function
- const { validate } = useVuelidateWrapper(v$);
- return { v$, validate, reset: v$.value.$reset };
-}
-
-export const getAppPermissions = () =>{
- return [
- {
- type: 'account:read',
- label: 'Account Read'
- },
- {
- type: 'account:write',
- label: 'Account Write'
- },
- {
- type: 'email:send',
- label: 'Send Emails'
- }
- ]
-} \ No newline at end of file
diff --git a/front-end/src/views/Account/components/settings/Pki.vue b/front-end/src/views/Account/components/settings/Pki.vue
index 9700e28..a937cc7 100644
--- a/front-end/src/views/Account/components/settings/Pki.vue
+++ b/front-end/src/views/Account/components/settings/Pki.vue
@@ -55,10 +55,9 @@
<script setup lang="ts">
import { isEmpty, isNil } from 'lodash-es'
-import { apiCall, useConfirm, useSession, debugLog, useFormToaster } from '@vnuge/vnlib.browser'
+import { apiCall, useConfirm, useSession, debugLog, useFormToaster, PkiApi } from '@vnuge/vnlib.browser'
import { computed, ref, watch } from 'vue'
import { Dialog, DialogPanel } from '@headlessui/vue'
-import { PkiApi } from '@vnuge/vnlib.browser/dist/mfa';
const props = defineProps<{
pkaiApi: PkiApi
@@ -69,7 +68,7 @@ const { isLocalAccount } = useSession()
const { error } = useFormToaster()
const pkiEnabled = computed(() => isLocalAccount.value && !isNil(import.meta.env.VITE_PKI_ENDPOINT) && window.crypto.subtle)
-const { enabled } = props.pkaiApi
+const { enabled, refresh } = props.pkaiApi
const isOpen = ref(false)
const keyData = ref('')
@@ -81,7 +80,7 @@ watch(isOpen, () =>{
pemFormat.value = false
explicitCurve.value = ""
//Reload status
- props.pkaiApi.refresh()
+ refresh()
})
const setIsOpen = (value : boolean) => isOpen.value = value
diff --git a/front-end/src/views/Account/components/settings/Security.vue b/front-end/src/views/Account/components/settings/Security.vue
index 3f8d8d6..39df512 100644
--- a/front-end/src/views/Account/components/settings/Security.vue
+++ b/front-end/src/views/Account/components/settings/Security.vue
@@ -52,8 +52,7 @@
</template>
<script setup lang="ts">
-import { useAutoHeartbeat } from '@vnuge/vnlib.browser'
-import { useMfaConfig, MfaMethod, usePkiConfig } from '@vnuge/vnlib.browser/dist/mfa'
+import { useAutoHeartbeat, useMfaConfig, MfaMethod, usePkiConfig } from '@vnuge/vnlib.browser'
import { computed } from 'vue'
import { Switch } from '@headlessui/vue'
import { includes } from 'lodash-es'
diff --git a/front-end/src/views/Account/components/settings/TotpSettings.vue b/front-end/src/views/Account/components/settings/TotpSettings.vue
index 755ae61..4dc686a 100644
--- a/front-end/src/views/Account/components/settings/TotpSettings.vue
+++ b/front-end/src/views/Account/components/settings/TotpSettings.vue
@@ -102,9 +102,10 @@ import {
useMessage,
useConfirm,
usePassConfirm,
- useFormToaster
+ useFormToaster,
+ MfaApi,
+ MfaMethod
} from '@vnuge/vnlib.browser'
-import { MfaApi, MfaMethod } from '@vnuge/vnlib.browser/dist/mfa';
interface TotpConfig{
secret: string;
diff --git a/front-end/src/views/Login/components/Social.vue b/front-end/src/views/Login/components/Social.vue
index 34c5a1e..6eb65e7 100644
--- a/front-end/src/views/Login/components/Social.vue
+++ b/front-end/src/views/Login/components/Social.vue
@@ -14,20 +14,10 @@
</button>
</form>
- <form v-if="auth0Enabled" class="mt-4" @submit.prevent="SocalLogin('/login/social/auth0')">
- <button type="submit" class="btn social-button" :disabled="waiting">
- <fa-icon :icon="['fa','key']" size="xl" />
- Login with Auth0
- </button>
- </form>
-
</template>
<script setup lang="ts">
-import { apiCall, useWait, useSession, useSessionUtils, WebMessage } from '@vnuge/vnlib.browser'
-
-//auth0 enabled flag from env
-const auth0Enabled = import.meta.env.VITE_ENABLE_AUTH0 == 'true';
+import { apiCall, useWait, useSession, useSessionUtils, WebMessage } from '@vnuge/vnlib.browser'
const { waiting } = useWait()
const { browserId, publicKey } = useSession()
diff --git a/front-end/src/views/Login/index.vue b/front-end/src/views/Login/index.vue
index d0fa9b2..7c30047 100644
--- a/front-end/src/views/Login/index.vue
+++ b/front-end/src/views/Login/index.vue
@@ -48,8 +48,10 @@ import { computed, ref } from 'vue'
import Totp from './components/Totp.vue'
import UserPass from './components/UserPass.vue'
import Social from './components/Social.vue'
-import { apiCall, useMessage, useWait, useUser, useSession, useLastPage, useTitle, debugLog } from '@vnuge/vnlib.browser'
-import { useMfaLogin, totpMfaProcessor, IMfaFlowContinuiation, MfaMethod } from '@vnuge/vnlib.browser/dist/mfa'
+import {
+ useMfaLogin, totpMfaProcessor, IMfaFlowContinuiation, MfaMethod, apiCall,
+ useMessage, useWait, useUser, useSession, useLastPage, useTitle, debugLog
+} from '@vnuge/vnlib.browser'
import { useTimeoutFn } from '@vueuse/shared'
import { isNil } from 'lodash-es'
diff --git a/front-end/src/views/Login/social/[type].vue b/front-end/src/views/Login/social/[type].vue
index bdb0240..da1aa25 100644
--- a/front-end/src/views/Login/social/[type].vue
+++ b/front-end/src/views/Login/social/[type].vue
@@ -73,9 +73,6 @@ const run = async () => {
case 'discord':
loginUrl = '/login/social/discord';
break;
- case 'auth0':
- loginUrl = '/login/social/auth0';
- break;
default:
router.push({ name: 'Login' })
break;