diff options
author | dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | 2022-11-05 10:40:20 +0300 |
---|---|---|
committer | julia.kirschenheuter <julia.kirschenheuter@nextcloud.com> | 2022-11-08 20:35:11 +0300 |
commit | 85ffd7158bc76c6a1b32273393af0e2cb0a9ca48 (patch) | |
tree | 8a40037bc9e409b1e89f46c66526b6d6998d7fe5 | |
parent | ec0dd03c67dc53e359afafab3372b7a6780e1931 (diff) |
Bump @nextcloud/eslint-config from 6.1.2 to 8.1.2
Fix all file extension related to new rules from eslint-config-8.1.2
Bumps [@nextcloud/eslint-config](https://github.com/nextcloud/eslint-config) from 6.1.2 to 8.1.2.
- [Release notes](https://github.com/nextcloud/eslint-config/releases)
- [Changelog](https://github.com/nextcloud/eslint-config/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/eslint-config/compare/v6.1.2...v8.1.2)
---
updated-dependencies:
- dependency-name: "@nextcloud/eslint-config"
dependency-type: direct:development
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
69 files changed, 1314 insertions, 946 deletions
diff --git a/.eslintrc.js b/.eslintrc.js index 29134f1d..e9481cf8 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -18,4 +18,8 @@ module.exports = { }, }, }, + + rules: { + 'vue/no-reserved-component-names': 'off', // @nextcloud/vue has Button, Content components restricted by rule + }, } diff --git a/package-lock.json b/package-lock.json index e53248c4..bf0f045f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,7 +52,7 @@ "@babel/preset-env": "^7.20.2", "@nextcloud/babel-config": "^1.0.0", "@nextcloud/browserslist-config": "^2.3.0", - "@nextcloud/eslint-config": "^6.1.2", + "@nextcloud/eslint-config": "^8.1.2", "@nextcloud/stylelint-config": "^2.3.0", "@nextcloud/typings": "^1.5.0", "@nextcloud/webpack-vue-config": "~5.1.0", @@ -1764,41 +1764,51 @@ } }, "node_modules/@es-joy/jsdoccomment": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.20.1.tgz", - "integrity": "sha512-oeJK41dcdqkvdZy/HctKklJNkt/jh+av3PZARrZEl+fs/8HaHeeYoAvEwOV0u5I6bArTF17JEsTZMY359e/nfQ==", + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.36.0.tgz", + "integrity": "sha512-u0XZyvUF6Urb2cSivSXA8qXIpT/CxkHcdtZKoWusAzgzmsTWpg0F2FpWXsolHmMUyVY3dLWaoy+0ccJ5uf2QjA==", "dev": true, "peer": true, "dependencies": { - "comment-parser": "1.3.0", + "comment-parser": "1.3.1", "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "~2.2.3" + "jsdoc-type-pratt-parser": "~3.1.0" }, "engines": { - "node": "^12 || ^14 || ^16 || ^17" + "node": "^14 || ^16 || ^17 || ^18 || ^19" } }, "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", "dev": true, "peer": true, "dependencies": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "peer": true + }, "node_modules/@eslint/eslintrc/node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -1833,14 +1843,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "peer": true, - "engines": { - "node": ">= 4" + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/@eslint/eslintrc/node_modules/ms": { @@ -1864,15 +1877,15 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", "dev": true, "peer": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" @@ -1903,6 +1916,20 @@ "dev": true, "peer": true }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -2781,25 +2808,25 @@ } }, "node_modules/@nextcloud/eslint-config": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@nextcloud/eslint-config/-/eslint-config-6.1.2.tgz", - "integrity": "sha512-KEErxReF89vuOVRvOWtky/j1UtOjBGgtDK+LjdehGah66P9se0WACtbIC+3DLZ9IIrtOP45X05LashELnXs7dg==", + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@nextcloud/eslint-config/-/eslint-config-8.1.2.tgz", + "integrity": "sha512-uyYBSGQrbq7VZaqv0A4RBH5c80go07Xaebc00RxPhpG7IHkry92gTYlY8YarnlEFWaeAnXGPh3OhfXGDC40EyQ==", "dev": true, "engines": { - "node": "^14.0.0", - "npm": "^7.0.0" + "node": "^16.0.0", + "npm": "^7.0.0 || ^8.0.0" }, "peerDependencies": { "@babel/core": "^7.13.10", - "@babel/eslint-parser": "^7.13.10", + "@babel/eslint-parser": "^7.16.5", "@nextcloud/eslint-plugin": "^2.0.0", - "eslint": "^7.13.0", - "eslint-config-standard": "^16.0.1", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-jsdoc": "^37.0.3", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^5.1.0", - "eslint-plugin-vue": "^7.15.0", + "eslint": "^8.6.0", + "eslint-config-standard": "^17.0.0-0", + "eslint-plugin-import": "^2.25.4", + "eslint-plugin-jsdoc": "^39.2.1", + "eslint-plugin-n": "^15.2.3", + "eslint-plugin-promise": "^6.0.0", + "eslint-plugin-vue": "^9.1.1", "webpack": "^5.4.0" } }, @@ -3154,11 +3181,12 @@ } }, "node_modules/@nodelib/fs.scandir": { - "version": "2.1.4", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "2.0.4", + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" }, "engines": { @@ -3166,19 +3194,21 @@ } }, "node_modules/@nodelib/fs.stat": { - "version": "2.0.4", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { - "version": "1.2.6", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.4", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" }, "engines": { @@ -4249,16 +4279,6 @@ "ajv": "^6.9.1" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -4824,6 +4844,13 @@ "multicast-dns": "^7.2.5" } }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "peer": true + }, "node_modules/brace-expansion": { "version": "1.1.11", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", @@ -5052,6 +5079,32 @@ "dev": true, "peer": true }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "peer": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/builtins/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -5316,9 +5369,9 @@ "peer": true }, "node_modules/comment-parser": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.0.tgz", - "integrity": "sha512-hRpmWIKgzd81vn0ydoWoyPoALEOnF4wt8yKD35Ib1D6XC2siLiYaiqfGkYrunuKdsXGwpBpHU3+9r+RVw2NZfA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", + "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", "dev": true, "peer": true, "engines": { @@ -6689,19 +6742,6 @@ "node": ">=10.13.0" } }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/entities": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", @@ -6929,67 +6969,66 @@ } }, "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", + "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", "dev": true, "peer": true, "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-standard": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", - "integrity": "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", + "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", "dev": true, "funding": [ { @@ -7007,10 +7046,10 @@ ], "peer": true, "peerDependencies": { - "eslint": "^7.12.1", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^4.2.1 || ^5.0.0" + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0", + "eslint-plugin-promise": "^6.0.0" } }, "node_modules/eslint-import-resolver-node": { @@ -7156,9 +7195,9 @@ "peer": true }, "node_modules/eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", "dev": true, "peer": true, "dependencies": { @@ -7175,6 +7214,32 @@ "eslint": ">=4.19.1" } }, + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "peer": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/eslint-plugin-import": { "version": "2.26.0", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", @@ -7217,23 +7282,22 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "37.9.7", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-37.9.7.tgz", - "integrity": "sha512-8alON8yYcStY94o0HycU2zkLKQdcS+qhhOUNQpfONHHwvI99afbmfpYuPqf6PbLz5pLZldG3Te5I0RbAiTN42g==", + "version": "39.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.6.2.tgz", + "integrity": "sha512-dvgY/W7eUFoAIIiaWHERIMI61ZWqcz9YFjEeyTzdPlrZc3TY/3aZm5aB91NUoTLWYZmO/vFlYSuQi15tF7uE5A==", "dev": true, "peer": true, "dependencies": { - "@es-joy/jsdoccomment": "~0.20.1", - "comment-parser": "1.3.0", - "debug": "^4.3.3", + "@es-joy/jsdoccomment": "~0.36.0", + "comment-parser": "1.3.1", + "debug": "^4.3.4", "escape-string-regexp": "^4.0.0", "esquery": "^1.4.0", - "regextras": "^0.8.0", - "semver": "^7.3.5", + "semver": "^7.3.8", "spdx-expression-parse": "^3.0.1" }, "engines": { - "node": "^12 || ^14 || ^16 || ^17" + "node": "^14 || ^16 || ^17 || ^18 || ^19" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0" @@ -7278,9 +7342,9 @@ "peer": true }, "node_modules/eslint-plugin-jsdoc/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "peer": true, "dependencies": { @@ -7293,59 +7357,109 @@ "node": ">=10" } }, - "node_modules/eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "node_modules/eslint-plugin-n": { + "version": "15.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.4.0.tgz", + "integrity": "sha512-MkoKy9/lfd52TAXK4fkABgCp0aglk82Q3viy2UOWIEpTVE/Cem5P/UAxMBA4vSw7Gy+2egPqImE9euitLGp5aw==", "dev": true, "peer": true, "dependencies": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" + "is-core-module": "^2.10.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.7" }, "engines": { - "node": ">=8.10.0" + "node": ">=12.22.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" }, "peerDependencies": { - "eslint": ">=5.16.0" + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/eslint-plugin-promise": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz", - "integrity": "sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", + "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", "dev": true, "peer": true, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "peerDependencies": { - "eslint": "^7.0.0" + "eslint": "^7.0.0 || ^8.0.0" } }, "node_modules/eslint-plugin-vue": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.20.0.tgz", - "integrity": "sha512-oVNDqzBC9h3GO+NTgWeLMhhGigy6/bQaQbHS+0z7C4YEu/qK/yxHvca/2PTZtGNPsCrHwOTgKMrwu02A9iPBmw==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.7.0.tgz", + "integrity": "sha512-DrOO3WZCZEwcLsnd3ohFwqCoipGRSTKTBTnLwdhqAbYZtzWl0o7D+D8ZhlmiZvABKTEl8AFsqH1GHGdybyoQmw==", "dev": true, "peer": true, "dependencies": { - "eslint-utils": "^2.1.0", + "eslint-utils": "^3.0.0", "natural-compare": "^1.4.0", - "semver": "^6.3.0", - "vue-eslint-parser": "^7.10.0" + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^9.0.1", + "xml-name-validator": "^4.0.0" }, "engines": { - "node": ">=8.10" + "node": "^14.17.0 || >=16.0.0" }, "peerDependencies": { "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/eslint-plugin-vue/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-vue/node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -7361,29 +7475,22 @@ } }, "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "peer": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=6" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" }, "funding": { "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" + }, + "peerDependencies": { + "eslint": ">=5" } }, "node_modules/eslint-visitor-keys": { @@ -7396,16 +7503,6 @@ "node": ">=10" } }, - "node_modules/eslint/node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -7422,6 +7519,13 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "peer": true + }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -7490,6 +7594,70 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "peer": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "peer": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/eslint/node_modules/globals": { "version": "13.17.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", @@ -7516,14 +7684,33 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "peer": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "peer": true, + "dependencies": { + "p-locate": "^5.0.0" + }, "engines": { - "node": ">= 4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/ms": { @@ -7533,20 +7720,36 @@ "dev": true, "peer": true }, - "node_modules/eslint/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "peer": true, "dependencies": { - "lru-cache": "^6.0.0" + "yocto-queue": "^0.1.0" }, - "bin": { - "semver": "bin/semver.js" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "peer": true, + "dependencies": { + "p-limit": "^3.0.2" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/supports-color": { @@ -7562,29 +7765,58 @@ "node": ">=8" } }, + "node_modules/eslint/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", "dev": true, "peer": true, "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true, + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, "peer": true, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/esprima": { @@ -8107,13 +8339,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true, - "peer": true - }, "node_modules/functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", @@ -8335,6 +8560,13 @@ "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", "dev": true }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true, + "peer": true + }, "node_modules/hammerjs": { "version": "2.0.8", "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=", @@ -9188,6 +9420,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-plain-obj": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", @@ -11207,6 +11449,13 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true, + "peer": true + }, "node_modules/js-tokens": { "version": "4.0.0", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", @@ -11225,9 +11474,9 @@ } }, "node_modules/jsdoc-type-pratt-parser": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-2.2.5.tgz", - "integrity": "sha512-2a6eRxSxp1BW040hFvaJxhsCMI9lT8QB8t14t+NY5tC5rckIR0U9cr2tjOeaFirmEOy6MHvmJnY7zTBHq431Lw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz", + "integrity": "sha512-MgtD0ZiCDk9B+eI73BextfRrVQl0oyzRG8B2BjORts6jbunj4ScKPcyXGTbB6eXL4y9TzxCm6hyeLq/2ASzNdw==", "dev": true, "peer": true, "engines": { @@ -12033,6 +12282,19 @@ "node": ">=8" } }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "peer": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, "node_modules/nwsapi": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", @@ -12677,16 +12939,6 @@ "dev": true, "peer": true }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -12809,6 +13061,7 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ @@ -13109,16 +13362,6 @@ "node": ">=4" } }, - "node_modules/regextras": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.8.0.tgz", - "integrity": "sha512-k519uI04Z3SaY0fLX843MRXnDeG2+vHOFsyhiPZvNLe7r8rD2YNRjq4BQLZZ0oAr2NrtvZlICsXysGNFPGa3CQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.1.14" - } - }, "node_modules/regjsgen": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", @@ -13288,6 +13531,7 @@ }, "node_modules/run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ @@ -15382,28 +15626,28 @@ } }, "node_modules/vue-eslint-parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz", - "integrity": "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.1.0.tgz", + "integrity": "sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==", "dev": true, "peer": true, "dependencies": { - "debug": "^4.1.1", - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.2.1", + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", "esquery": "^1.4.0", "lodash": "^4.17.21", - "semver": "^6.3.0" + "semver": "^7.3.6" }, "engines": { - "node": ">=8.10" + "node": "^14.17.0 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/mysticatea" }, "peerDependencies": { - "eslint": ">=5.0.0" + "eslint": ">=6.0.0" } }, "node_modules/vue-eslint-parser/node_modules/debug": { @@ -15424,29 +15668,38 @@ } } }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, "peer": true, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/vue-eslint-parser/node_modules/espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "node_modules/vue-eslint-parser/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "peer": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - }, "engines": { - "node": ">=6.0.0" + "node": ">=4.0" } }, "node_modules/vue-eslint-parser/node_modules/ms": { @@ -15456,6 +15709,22 @@ "dev": true, "peer": true }, + "node_modules/vue-eslint-parser/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/vue-hot-reload-api": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", @@ -17575,35 +17844,42 @@ "peer": true }, "@es-joy/jsdoccomment": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.20.1.tgz", - "integrity": "sha512-oeJK41dcdqkvdZy/HctKklJNkt/jh+av3PZARrZEl+fs/8HaHeeYoAvEwOV0u5I6bArTF17JEsTZMY359e/nfQ==", + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.36.0.tgz", + "integrity": "sha512-u0XZyvUF6Urb2cSivSXA8qXIpT/CxkHcdtZKoWusAzgzmsTWpg0F2FpWXsolHmMUyVY3dLWaoy+0ccJ5uf2QjA==", "dev": true, "peer": true, "requires": { - "comment-parser": "1.3.0", + "comment-parser": "1.3.1", "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "~2.2.3" + "jsdoc-type-pratt-parser": "~3.1.0" } }, "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", "dev": true, "peer": true, "requires": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "peer": true + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -17624,12 +17900,15 @@ "type-fest": "^0.20.2" } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "peer": true + "peer": true, + "requires": { + "argparse": "^2.0.1" + } }, "ms": { "version": "2.1.2", @@ -17654,15 +17933,15 @@ } }, "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", "dev": true, "peer": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" }, "dependencies": { "debug": { @@ -17684,6 +17963,13 @@ } } }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "peer": true + }, "@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -18359,9 +18645,9 @@ } }, "@nextcloud/eslint-config": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@nextcloud/eslint-config/-/eslint-config-6.1.2.tgz", - "integrity": "sha512-KEErxReF89vuOVRvOWtky/j1UtOjBGgtDK+LjdehGah66P9se0WACtbIC+3DLZ9IIrtOP45X05LashELnXs7dg==", + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@nextcloud/eslint-config/-/eslint-config-8.1.2.tgz", + "integrity": "sha512-uyYBSGQrbq7VZaqv0A4RBH5c80go07Xaebc00RxPhpG7IHkry92gTYlY8YarnlEFWaeAnXGPh3OhfXGDC40EyQ==", "dev": true, "requires": {} }, @@ -18637,25 +18923,28 @@ } }, "@nodelib/fs.scandir": { - "version": "2.1.4", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "requires": { - "@nodelib/fs.stat": "2.0.4", + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "2.0.4", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true }, "@nodelib/fs.walk": { - "version": "1.2.6", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "requires": { - "@nodelib/fs.scandir": "2.1.4", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, @@ -19564,13 +19853,6 @@ "peer": true, "requires": {} }, - "ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "peer": true - }, "ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -20004,6 +20286,13 @@ "multicast-dns": "^7.2.5" } }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "peer": true + }, "brace-expansion": { "version": "1.1.11", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", @@ -20184,6 +20473,28 @@ "dev": true, "peer": true }, + "builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "peer": true, + "requires": { + "semver": "^7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -20383,9 +20694,9 @@ "peer": true }, "comment-parser": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.0.tgz", - "integrity": "sha512-hRpmWIKgzd81vn0ydoWoyPoALEOnF4wt8yKD35Ib1D6XC2siLiYaiqfGkYrunuKdsXGwpBpHU3+9r+RVw2NZfA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", + "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", "dev": true, "peer": true }, @@ -21434,16 +21745,6 @@ "tapable": "^2.2.0" } }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "peer": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, "entities": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", @@ -21616,64 +21917,53 @@ } }, "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.26.0.tgz", + "integrity": "sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==", "dev": true, "peer": true, "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "peer": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -21684,6 +21974,13 @@ "color-convert": "^2.0.1" } }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "peer": true + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -21729,6 +22026,52 @@ "dev": true, "peer": true }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "peer": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "peer": true + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "peer": true + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "peer": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "peer": true, + "requires": { + "is-glob": "^4.0.3" + } + }, "globals": { "version": "13.17.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", @@ -21746,12 +22089,25 @@ "dev": true, "peer": true }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "peer": true + "peer": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "peer": true, + "requires": { + "p-locate": "^5.0.0" + } }, "ms": { "version": "2.1.2", @@ -21760,14 +22116,24 @@ "dev": true, "peer": true }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "peer": true, "requires": { - "lru-cache": "^6.0.0" + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "peer": true, + "requires": { + "p-limit": "^3.0.2" } }, "supports-color": { @@ -21779,13 +22145,20 @@ "requires": { "has-flag": "^4.0.0" } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "peer": true } } }, "eslint-config-standard": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", - "integrity": "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", + "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", "dev": true, "peer": true, "requires": {} @@ -21901,14 +22274,33 @@ } }, "eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", "dev": true, "peer": true, "requires": { "eslint-utils": "^2.0.0", "regexpp": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "peer": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "peer": true + } } }, "eslint-plugin-import": { @@ -21946,19 +22338,18 @@ } }, "eslint-plugin-jsdoc": { - "version": "37.9.7", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-37.9.7.tgz", - "integrity": "sha512-8alON8yYcStY94o0HycU2zkLKQdcS+qhhOUNQpfONHHwvI99afbmfpYuPqf6PbLz5pLZldG3Te5I0RbAiTN42g==", + "version": "39.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.6.2.tgz", + "integrity": "sha512-dvgY/W7eUFoAIIiaWHERIMI61ZWqcz9YFjEeyTzdPlrZc3TY/3aZm5aB91NUoTLWYZmO/vFlYSuQi15tF7uE5A==", "dev": true, "peer": true, "requires": { - "@es-joy/jsdoccomment": "~0.20.1", - "comment-parser": "1.3.0", - "debug": "^4.3.3", + "@es-joy/jsdoccomment": "~0.36.0", + "comment-parser": "1.3.1", + "debug": "^4.3.4", "escape-string-regexp": "^4.0.0", "esquery": "^1.4.0", - "regextras": "^0.8.0", - "semver": "^7.3.5", + "semver": "^7.3.8", "spdx-expression-parse": "^3.0.1" }, "dependencies": { @@ -21987,9 +22378,9 @@ "peer": true }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "peer": true, "requires": { @@ -21998,40 +22389,76 @@ } } }, - "eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "eslint-plugin-n": { + "version": "15.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.4.0.tgz", + "integrity": "sha512-MkoKy9/lfd52TAXK4fkABgCp0aglk82Q3viy2UOWIEpTVE/Cem5P/UAxMBA4vSw7Gy+2egPqImE9euitLGp5aw==", "dev": true, "peer": true, "requires": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" + "is-core-module": "^2.10.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.7" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "eslint-plugin-promise": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz", - "integrity": "sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", + "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", "dev": true, "peer": true, "requires": {} }, "eslint-plugin-vue": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.20.0.tgz", - "integrity": "sha512-oVNDqzBC9h3GO+NTgWeLMhhGigy6/bQaQbHS+0z7C4YEu/qK/yxHvca/2PTZtGNPsCrHwOTgKMrwu02A9iPBmw==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.7.0.tgz", + "integrity": "sha512-DrOO3WZCZEwcLsnd3ohFwqCoipGRSTKTBTnLwdhqAbYZtzWl0o7D+D8ZhlmiZvABKTEl8AFsqH1GHGdybyoQmw==", "dev": true, "peer": true, "requires": { - "eslint-utils": "^2.1.0", + "eslint-utils": "^3.0.0", "natural-compare": "^1.4.0", - "semver": "^6.3.0", - "vue-eslint-parser": "^7.10.0" + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^9.0.1", + "xml-name-validator": "^4.0.0" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "peer": true + } } }, "eslint-scope": { @@ -22046,22 +22473,13 @@ } }, "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "peer": true, "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "peer": true - } + "eslint-visitor-keys": "^2.0.0" } }, "eslint-visitor-keys": { @@ -22072,21 +22490,28 @@ "peer": true }, "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", "dev": true, "peer": true, "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" }, "dependencies": { + "acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true, + "peer": true + }, "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, "peer": true } @@ -22496,13 +22921,6 @@ "functions-have-names": "^1.2.2" } }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true, - "peer": true - }, "functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", @@ -22669,6 +23087,13 @@ "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", "dev": true }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true, + "peer": true + }, "hammerjs": { "version": "2.0.8", "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" @@ -23282,6 +23707,13 @@ "has-tostringtag": "^1.0.0" } }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "peer": true + }, "is-plain-obj": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", @@ -24783,6 +25215,13 @@ } } }, + "js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true, + "peer": true + }, "js-tokens": { "version": "4.0.0", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", @@ -24798,9 +25237,9 @@ } }, "jsdoc-type-pratt-parser": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-2.2.5.tgz", - "integrity": "sha512-2a6eRxSxp1BW040hFvaJxhsCMI9lT8QB8t14t+NY5tC5rckIR0U9cr2tjOeaFirmEOy6MHvmJnY7zTBHq431Lw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz", + "integrity": "sha512-MgtD0ZiCDk9B+eI73BextfRrVQl0oyzRG8B2BjORts6jbunj4ScKPcyXGTbB6eXL4y9TzxCm6hyeLq/2ASzNdw==", "dev": true, "peer": true }, @@ -25430,6 +25869,16 @@ "path-key": "^3.0.0" } }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "peer": true, + "requires": { + "boolbase": "^1.0.0" + } + }, "nwsapi": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", @@ -25903,13 +26352,6 @@ "dev": true, "peer": true }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "peer": true - }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -26011,6 +26453,7 @@ }, "queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, @@ -26243,13 +26686,6 @@ "unicode-match-property-value-ecmascript": "^2.0.0" } }, - "regextras": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.8.0.tgz", - "integrity": "sha512-k519uI04Z3SaY0fLX843MRXnDeG2+vHOFsyhiPZvNLe7r8rD2YNRjq4BQLZZ0oAr2NrtvZlICsXysGNFPGa3CQ==", - "dev": true, - "peer": true - }, "regjsgen": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", @@ -26377,6 +26813,7 @@ }, "run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "requires": { @@ -27914,19 +28351,19 @@ } }, "vue-eslint-parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz", - "integrity": "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.1.0.tgz", + "integrity": "sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==", "dev": true, "peer": true, "requires": { - "debug": "^4.1.1", - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.2.1", + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", "esquery": "^1.4.0", "lodash": "^4.17.21", - "semver": "^6.3.0" + "semver": "^7.3.6" }, "dependencies": { "debug": { @@ -27939,24 +28376,30 @@ "ms": "2.1.2" } }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "peer": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, "peer": true }, - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "peer": true, - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - } + "peer": true }, "ms": { "version": "2.1.2", @@ -27964,6 +28407,16 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true, "peer": true + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + } } } }, diff --git a/package.json b/package.json index e541f948..9090ab8a 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "@babel/preset-env": "^7.20.2", "@nextcloud/babel-config": "^1.0.0", "@nextcloud/browserslist-config": "^2.3.0", - "@nextcloud/eslint-config": "^6.1.2", + "@nextcloud/eslint-config": "^8.1.2", "@nextcloud/stylelint-config": "^2.3.0", "@nextcloud/typings": "^1.5.0", "@nextcloud/webpack-vue-config": "~5.1.0", diff --git a/src/admin-settings.js b/src/admin-settings.js index 2a7ebf85..6fd86dec 100644 --- a/src/admin-settings.js +++ b/src/admin-settings.js @@ -21,7 +21,7 @@ */ import Vue from 'vue' -import AdminSettings from './components/AdminSettings' +import AdminSettings from './components/AdminSettings.vue' document.addEventListener('DOMContentLoaded', main) diff --git a/src/components/Actions/ActionCopyNtoFN.vue b/src/components/Actions/ActionCopyNtoFN.vue index 5e1157e8..aeeb3917 100644 --- a/src/components/Actions/ActionCopyNtoFN.vue +++ b/src/components/Actions/ActionCopyNtoFN.vue @@ -29,9 +29,9 @@ </ActionButton> </template> <script> -import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton' -import ActionsMixin from '../../mixins/ActionsMixin' -import IconCopy from 'vue-material-design-icons/ContentCopy' +import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js' +import ActionsMixin from '../../mixins/ActionsMixin.js' +import IconCopy from 'vue-material-design-icons/ContentCopy.vue' export default { name: 'ActionCopyNtoFN', diff --git a/src/components/Actions/ActionToggleYear.vue b/src/components/Actions/ActionToggleYear.vue index eb169880..f74a2cf4 100644 --- a/src/components/Actions/ActionToggleYear.vue +++ b/src/components/Actions/ActionToggleYear.vue @@ -28,8 +28,8 @@ </ActionCheckbox> </template> <script> -import ActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox' -import ActionsMixin from '../../mixins/ActionsMixin' +import ActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox.js' +import ActionsMixin from '../../mixins/ActionsMixin.js' export default { name: 'ActionToggleYear', diff --git a/src/components/AdminSettings.vue b/src/components/AdminSettings.vue index 415048ce..32ad9a64 100644 --- a/src/components/AdminSettings.vue +++ b/src/components/AdminSettings.vue @@ -24,8 +24,7 @@ <div id="contacts" class="section"> <h2>{{ t('contacts', 'Contacts') }}</h2> <p> - <input - id="allow-social-sync" + <input id="allow-social-sync" v-model="allowSocialSync" type="checkbox" class="checkbox" diff --git a/src/components/AppContent/ChartContent.vue b/src/components/AppContent/ChartContent.vue index e9c3b82f..a4fe165e 100644 --- a/src/components/AppContent/ChartContent.vue +++ b/src/components/AppContent/ChartContent.vue @@ -5,10 +5,10 @@ </template> <script> -import AppContent from '@nextcloud/vue/dist/Components/NcAppContent' +import AppContent from '@nextcloud/vue/dist/Components/NcAppContent.js' import OrgChart from '../OrgChart.vue' -import { getChart, transformNode } from '../../utils/chartUtils' +import { getChart, transformNode } from '../../utils/chartUtils.js' export default { name: 'ChartContent', diff --git a/src/components/AppContent/CircleContent.vue b/src/components/AppContent/CircleContent.vue index 90619e90..57c9e6cd 100644 --- a/src/components/AppContent/CircleContent.vue +++ b/src/components/AppContent/CircleContent.vue @@ -24,8 +24,7 @@ <AppContent v-if="!circle"> <EmptyContent :title="t('contacts', 'Please select a circle')"> <template #icon> - <IconCircles - :size="20" /> + <IconCircles :size="20" /> </template> </EmptyContent> </AppContent> @@ -41,8 +40,7 @@ <AppContent v-else :show-details.sync="showDetails"> <!-- member list --> <template #list> - <MemberList - :list="members" + <MemberList :list="members" :loading="loadingList" :show-details.sync="showDetails" /> </template> @@ -60,8 +58,7 @@ <EmptyContent v-else :title="t('contacts', 'You are not a member of {circle}', { circle: circle.displayName})"> <template #icon> - <IconCircles - :size="20" /> + <IconCircles :size="20" /> </template> </EmptyContent> </template> @@ -70,14 +67,14 @@ </template> <script> import { showError } from '@nextcloud/dialogs' -import AppContent from '@nextcloud/vue/dist/Components/NcAppContent' -import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent' -import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon' -import isMobile from '@nextcloud/vue/dist/Mixins/isMobile' -import IconCircles from '../Icons/IconCircles' -import CircleDetails from '../CircleDetails' -import MemberList from '../MemberList' -import RouterMixin from '../../mixins/RouterMixin' +import AppContent from '@nextcloud/vue/dist/Components/NcAppContent.js' +import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js' +import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js' +import isMobile from '@nextcloud/vue/dist/Mixins/isMobile.js' +import IconCircles from '../Icons/IconCircles.vue' +import CircleDetails from '../CircleDetails.vue' +import MemberList from '../MemberList.vue' +import RouterMixin from '../../mixins/RouterMixin.js' export default { name: 'CircleContent', diff --git a/src/components/AppContent/ContactsContent.vue b/src/components/AppContent/ContactsContent.vue index cf029546..60c3a5c1 100644 --- a/src/components/AppContent/ContactsContent.vue +++ b/src/components/AppContent/ContactsContent.vue @@ -32,8 +32,7 @@ <AppContent v-else-if="isEmptyGroup && !isRealGroup"> <EmptyContent :title="t('contacts', 'There are no contacts yet')"> <template #icon> - <IconContact - :size="20" /> + <IconContact :size="20" /> </template> <template #desc> <Button type="primary" @click="newContact"> @@ -46,8 +45,7 @@ <AppContent v-else-if="isEmptyGroup && isRealGroup"> <EmptyContent :title=" t('contacts', 'There are no contacts in this group')"> <template #icon> - <IconContact - :size="20" /> + <IconContact :size="20" /> </template> <template #desc> <Button v-if="contacts.length === 0" type="primary" @click="addContactsToGroup(selectedGroup)"> @@ -63,8 +61,7 @@ <AppContent v-else :show-details="showDetails" @update:showDetails="hideDetails"> <!-- contacts list --> <template #list> - <ContactsList - :list="contactsList" + <ContactsList :list="contactsList" :contacts="contacts" :search-query="searchQuery" /> </template> @@ -75,15 +72,15 @@ </template> <script> import { emit } from '@nextcloud/event-bus' -import AppContent from '@nextcloud/vue/dist/Components/NcAppContent' -import Button from '@nextcloud/vue/dist/Components/NcButton' -import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent' -import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon' - -import ContactDetails from '../ContactDetails' -import ContactsList from '../ContactsList' -import IconContact from 'vue-material-design-icons/AccountMultiple' -import RouterMixin from '../../mixins/RouterMixin' +import AppContent from '@nextcloud/vue/dist/Components/NcAppContent.js' +import Button from '@nextcloud/vue/dist/Components/NcButton.js' +import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js' +import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js' + +import ContactDetails from '../ContactDetails.vue' +import ContactsList from '../ContactsList.vue' +import IconContact from 'vue-material-design-icons/AccountMultiple.vue' +import RouterMixin from '../../mixins/RouterMixin.js' export default { name: 'ContactsContent', diff --git a/src/components/AppNavigation/CircleNavigationItem.vue b/src/components/AppNavigation/CircleNavigationItem.vue index d276bad1..22be2dad 100644 --- a/src/components/AppNavigation/CircleNavigationItem.vue +++ b/src/components/AppNavigation/CircleNavigationItem.vue @@ -20,13 +20,11 @@ - --> <template> - <AppNavigationItem - :key="circle.key" + <AppNavigationItem :key="circle.key" :title="circle.displayName" :to="circle.router"> <template #icon> - <IconCircles - :size="20" /> + <IconCircles :size="20" /> </template> <template v-if="loadingAction" slot="actions"> <ActionText> @@ -38,28 +36,24 @@ </template> <template v-else slot="actions"> - <ActionButton - v-if="circle.canManageMembers" + <ActionButton v-if="circle.canManageMembers" :close-after-click="true" @click="addMemberToCircle"> <template #icon> - <IconAdd - :size="20" /> + <IconAdd :size="20" /> </template> {{ t('contacts', 'Add member') }} </ActionButton> <!-- copy circle link --> - <ActionLink - :href="circleUrl" + <ActionLink :href="circleUrl" :icon="copyLinkIcon" @click.stop.prevent="copyToClipboard(circleUrl)"> {{ copyButtonText }} </ActionLink> <!-- leave circle --> - <ActionButton - v-if="circle.canLeave" + <ActionButton v-if="circle.canLeave" @click="confirmLeaveCircle"> {{ t('contacts', 'Leave circle') }} <ExitToApp slot="icon" @@ -68,8 +62,7 @@ </ActionButton> <!-- join circle --> - <ActionButton - v-else-if="!circle.isMember && circle.canJoin" + <ActionButton v-else-if="!circle.isMember && circle.canJoin" :disabled="loadingJoin" @click="joinCircle"> {{ joinButtonTitle }} @@ -79,12 +72,10 @@ </ActionButton> <!-- delete circle --> - <ActionButton - v-if="circle.canDelete" + <ActionButton v-if="circle.canDelete" @click="confirmDeleteCircle"> <template #icon> - <IconDelete - :size="20" /> + <IconDelete :size="20" /> </template> {{ t('contacts', 'Delete circle') }} </ActionButton> @@ -99,19 +90,19 @@ </template> <script> -import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton' -import ActionLink from '@nextcloud/vue/dist/Components/NcActionLink' -import ActionText from '@nextcloud/vue/dist/Components/NcActionText' -import NcCounterBubble from '@nextcloud/vue/dist/Components/NcCounterBubble' -import AppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem' -import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon' -import ExitToApp from 'vue-material-design-icons/ExitToApp' -import IconAdd from 'vue-material-design-icons/Plus' -import IconDelete from 'vue-material-design-icons/Delete' -import LocationEnter from 'vue-material-design-icons/LocationEnter' -import IconCircles from '../Icons/IconCircles' +import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js' +import ActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js' +import ActionText from '@nextcloud/vue/dist/Components/NcActionText.js' +import NcCounterBubble from '@nextcloud/vue/dist/Components/NcCounterBubble.js' +import AppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js' +import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js' +import ExitToApp from 'vue-material-design-icons/ExitToApp.vue' +import IconAdd from 'vue-material-design-icons/Plus.vue' +import IconDelete from 'vue-material-design-icons/Delete.vue' +import LocationEnter from 'vue-material-design-icons/LocationEnter.vue' +import IconCircles from '../Icons/IconCircles.vue' import Circle from '../../models/circle.ts' -import CircleActionsMixin from '../../mixins/CircleActionsMixin' +import CircleActionsMixin from '../../mixins/CircleActionsMixin.js' export default { name: 'CircleNavigationItem', diff --git a/src/components/AppNavigation/ContactsSettings.vue b/src/components/AppNavigation/ContactsSettings.vue index a355bde3..9cb402f6 100644 --- a/src/components/AppNavigation/ContactsSettings.vue +++ b/src/components/AppNavigation/ContactsSettings.vue @@ -62,11 +62,11 @@ import axios from '@nextcloud/axios' import { generateUrl } from '@nextcloud/router' import { loadState } from '@nextcloud/initial-state' -import SettingsAddressbook from './Settings/SettingsAddressbook' -import SettingsNewAddressbook from './Settings/SettingsNewAddressbook' -import SettingsImportContacts from './Settings/SettingsImportContacts' -import SettingsSortContacts from './Settings/SettingsSortContacts' -import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch' +import SettingsAddressbook from './Settings/SettingsAddressbook.vue' +import SettingsNewAddressbook from './Settings/SettingsNewAddressbook.vue' +import SettingsImportContacts from './Settings/SettingsImportContacts.vue' +import SettingsSortContacts from './Settings/SettingsSortContacts.vue' +import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js' import { CONTACTS_SETTINGS } from '../../models/constants.ts' import { NcAppSettingsDialog as AppSettingsDialog, NcAppSettingsSection as AppSettingsSection } from '@nextcloud/vue' diff --git a/src/components/AppNavigation/GroupNavigationItem.vue b/src/components/AppNavigation/GroupNavigationItem.vue index adfd3cf9..9ffad9ba 100644 --- a/src/components/AppNavigation/GroupNavigationItem.vue +++ b/src/components/AppNavigation/GroupNavigationItem.vue @@ -20,38 +20,30 @@ - --> <template> - <AppNavigationItem - :key="group.key" + <AppNavigationItem :key="group.key" :to="group.router" :title="group.name"> <template #icon> - <IconContact - :size="20" /> + <IconContact :size="20" /> </template> <template slot="actions"> - <ActionButton - :close-after-click="true" + <ActionButton :close-after-click="true" @click="addContactsToGroup(group)"> <template #icon> - <IconAdd - :size="20" /> + <IconAdd :size="20" /> </template> {{ t('contacts', 'Add contacts') }} </ActionButton> - <ActionButton - :close-after-click="true" + <ActionButton :close-after-click="true" @click="downloadGroup(group)"> <template #icon> - <IconDownload - :size="20" /> + <IconDownload :size="20" /> </template> {{ t('contacts', 'Download') }} </ActionButton> - <ActionButton - @click="emailGroup(group)"> + <ActionButton @click="emailGroup(group)"> <template #icon> - <IconEmail - :size="20" /> + <IconEmail :size="20" /> </template> {{ t('contacts', 'Send email') }} </ActionButton> @@ -70,13 +62,13 @@ import { emit } from '@nextcloud/event-bus' import download from 'downloadjs' import moment from 'moment' -import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton' -import NcCounterBubble from '@nextcloud/vue/dist/Components/NcCounterBubble' -import AppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem' -import IconContact from 'vue-material-design-icons/AccountMultiple' -import IconAdd from 'vue-material-design-icons/Plus' -import IconDownload from 'vue-material-design-icons/Download' -import IconEmail from 'vue-material-design-icons/Email' +import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js' +import NcCounterBubble from '@nextcloud/vue/dist/Components/NcCounterBubble.js' +import AppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js' +import IconContact from 'vue-material-design-icons/AccountMultiple.vue' +import IconAdd from 'vue-material-design-icons/Plus.vue' +import IconDownload from 'vue-material-design-icons/Download.vue' +import IconEmail from 'vue-material-design-icons/Email.vue' export default { name: 'GroupNavigationItem', diff --git a/src/components/AppNavigation/RootNavigation.vue b/src/components/AppNavigation/RootNavigation.vue index 7e1bf430..bc26c08d 100644 --- a/src/components/AppNavigation/RootNavigation.vue +++ b/src/components/AppNavigation/RootNavigation.vue @@ -40,8 +40,7 @@ params: { selectedGroup: GROUP_ALL_CONTACTS }, }"> <template #icon> - <IconContact - :size="20" /> + <IconContact :size="20" /> </template> <template #counter> <NcCounterBubble v-if="sortedContacts.length"> @@ -61,8 +60,7 @@ icon="icon-category-monitoring" /> <!-- Not grouped group --> - <AppNavigationItem - v-if="ungroupedContacts.length > 0" + <AppNavigationItem v-if="ungroupedContacts.length > 0" id="notgrouped" :title="GROUP_NO_GROUP_CONTACTS" :to="{ @@ -70,8 +68,7 @@ params: { selectedGroup: GROUP_NO_GROUP_CONTACTS }, }"> <template #icon> - <IconUser - :size="20" /> + <IconUser :size="20" /> </template> <template #counter> <NcCounterBubble v-if="ungroupedContacts.length"> @@ -81,8 +78,7 @@ </AppNavigationItem> <!-- Recently contacted group --> - <AppNavigationItem - v-if="isContactsInteractionEnabled && recentlyContactedContacts && recentlyContactedContacts.contacts.length > 0" + <AppNavigationItem v-if="isContactsInteractionEnabled && recentlyContactedContacts && recentlyContactedContacts.contacts.length > 0" id="recentlycontacted" :title="GROUP_RECENTLY_CONTACTED" :to="{ @@ -90,8 +86,7 @@ params: { selectedGroup: GROUP_RECENTLY_CONTACTED }, }"> <template #icon> - <IconRecentlyContacted - :size="20" /> + <IconRecentlyContacted :size="20" /> </template> <template #counter> <NcCounterBubble v-if="recentlyContactedContacts.contacts.length"> @@ -100,8 +95,7 @@ </template> </AppNavigationItem> - <AppNavigationCaption - id="newgroup" + <AppNavigationCaption id="newgroup" :force-menu="true" :menu-open.sync="isNewGroupMenuOpen" :title="t('contacts', 'Groups')" @@ -117,31 +111,27 @@ </template> {{ createGroupError ? createGroupError : t('contacts', 'Create a new group') }} </ActionText> - <ActionInput - icon="" + <ActionInput icon="" :placeholder="t('contacts','Group name')" @submit.prevent.stop="createNewGroup" /> </template> </AppNavigationCaption> <!-- Custom groups --> - <GroupNavigationItem - v-for="group in ellipsisGroupsMenu" + <GroupNavigationItem v-for="group in ellipsisGroupsMenu" :key="group.key" :group="group" /> <template v-if="isCirclesEnabled"> <!-- Toggle groups ellipsis --> - <AppNavigationItem - v-if="groupsMenu.length > ELLIPSIS_COUNT" + <AppNavigationItem v-if="groupsMenu.length > ELLIPSIS_COUNT" :title="collapseGroupsTitle" class="app-navigation__collapse" icon="" @click="onToggleGroups" /> <!-- New circle button caption and modal --> - <AppNavigationCaption - id="newcircle" + <AppNavigationCaption id="newcircle" :title="t('contacts', 'Circles')"> <template #actions> <NcActionButton @click="toggleNewCircleModal"> @@ -159,14 +149,12 @@ <template v-if="circlesMenu.length > 0"> <!-- Circles --> - <CircleNavigationItem - v-for="circle in ellipsisCirclesMenu" + <CircleNavigationItem v-for="circle in ellipsisCirclesMenu" :key="circle.key" :circle="circle" /> <!-- Toggle circles ellipsis --> - <AppNavigationItem - v-if="circlesMenu.length > ELLIPSIS_COUNT" + <AppNavigationItem v-if="circlesMenu.length > ELLIPSIS_COUNT" :title="collapseCirclesTitle" class="app-navigation__collapse" icon="" @@ -203,33 +191,33 @@ <script> import { GROUP_ALL_CONTACTS, CHART_ALL_CONTACTS, GROUP_NO_GROUP_CONTACTS, GROUP_RECENTLY_CONTACTED, ELLIPSIS_COUNT, CIRCLE_DESC, CONTACTS_SETTINGS } from '../../models/constants.ts' -import ActionInput from '@nextcloud/vue/dist/Components/NcActionInput' -import ActionText from '@nextcloud/vue/dist/Components/NcActionText' -import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton' -import AppNavigation from '@nextcloud/vue/dist/Components/NcAppNavigation' -import Button from '@nextcloud/vue/dist/Components/NcButton' -import NcCounterBubble from '@nextcloud/vue/dist/Components/NcCounterBubble' -import AppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem' -import AppNavigationCaption from '@nextcloud/vue/dist/Components/NcAppNavigationCaption' -import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon' +import ActionInput from '@nextcloud/vue/dist/Components/NcActionInput.js' +import ActionText from '@nextcloud/vue/dist/Components/NcActionText.js' +import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js' +import AppNavigation from '@nextcloud/vue/dist/Components/NcAppNavigation.js' +import Button from '@nextcloud/vue/dist/Components/NcButton.js' +import NcCounterBubble from '@nextcloud/vue/dist/Components/NcCounterBubble.js' +import AppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js' +import AppNavigationCaption from '@nextcloud/vue/dist/Components/NcAppNavigationCaption.js' +import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js' import naturalCompare from 'string-natural-compare' -import CircleNavigationItem from './CircleNavigationItem' +import CircleNavigationItem from './CircleNavigationItem.vue' import Cog from 'vue-material-design-icons/Cog.vue' -import ContactsSettings from './ContactsSettings' -import GroupNavigationItem from './GroupNavigationItem' -import NewCircleIntro from '../EntityPicker/NewCircleIntro' - -import isCirclesEnabled from '../../services/isCirclesEnabled' -import isContactsInteractionEnabled from '../../services/isContactsInteractionEnabled' -import IconContact from 'vue-material-design-icons/AccountMultiple' -import IconUser from 'vue-material-design-icons/Account' -import IconRecentlyContacted from '../Icons/IconRecentlyContacted' -import IconAdd from 'vue-material-design-icons/Plus' -import IconError from 'vue-material-design-icons/AlertCircle' - -import RouterMixin from '../../mixins/RouterMixin' +import ContactsSettings from './ContactsSettings.vue' +import GroupNavigationItem from './GroupNavigationItem.vue' +import NewCircleIntro from '../EntityPicker/NewCircleIntro.vue' + +import isCirclesEnabled from '../../services/isCirclesEnabled.js' +import isContactsInteractionEnabled from '../../services/isContactsInteractionEnabled.js' +import IconContact from 'vue-material-design-icons/AccountMultiple.vue' +import IconUser from 'vue-material-design-icons/Account.vue' +import IconRecentlyContacted from '../Icons/IconRecentlyContacted.vue' +import IconAdd from 'vue-material-design-icons/Plus.vue' +import IconError from 'vue-material-design-icons/AlertCircle.vue' + +import RouterMixin from '../../mixins/RouterMixin.js' import { showError } from '@nextcloud/dialogs' export default { diff --git a/src/components/AppNavigation/Settings/SettingsAddressbook.vue b/src/components/AppNavigation/Settings/SettingsAddressbook.vue index b3d50408..cd976f96 100644 --- a/src/components/AppNavigation/Settings/SettingsAddressbook.vue +++ b/src/components/AppNavigation/Settings/SettingsAddressbook.vue @@ -45,16 +45,14 @@ <!-- popovermenu --> <Actions class="addressbook__menu" menu-align="right"> <!-- copy addressbook link --> - <ActionLink - :href="addressbook.url" + <ActionLink :href="addressbook.url" :icon="copyLinkIcon" @click.stop.prevent="copyToClipboard(addressbookUrl)"> {{ copyButtonText }} </ActionLink> <!-- download addressbook --> - <ActionLink - :href="addressbook.url + '?export'"> + <ActionLink :href="addressbook.url + '?export'"> <template #icon> <IconDownload :size="20" /> </template> @@ -113,22 +111,22 @@ </template> <script> -import Actions from '@nextcloud/vue/dist/Components/NcActions' -import ActionLink from '@nextcloud/vue/dist/Components/NcActionLink' -import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton' -import ActionInput from '@nextcloud/vue/dist/Components/NcActionInput' -import ActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox' -import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon' -import Button from '@nextcloud/vue/dist/Components/NcButton' -import IconDownload from 'vue-material-design-icons/Download' -import IconRename from 'vue-material-design-icons/Pencil' -import IconDelete from 'vue-material-design-icons/Delete' -import IconContact from 'vue-material-design-icons/AccountMultiple' -import IconShare from 'vue-material-design-icons/ShareVariant' -import ShareAddressBook from './SettingsAddressbookShare' +import Actions from '@nextcloud/vue/dist/Components/NcActions.js' +import ActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js' +import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js' +import ActionInput from '@nextcloud/vue/dist/Components/NcActionInput.js' +import ActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox.js' +import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js' +import Button from '@nextcloud/vue/dist/Components/NcButton.js' +import IconDownload from 'vue-material-design-icons/Download.vue' +import IconRename from 'vue-material-design-icons/Pencil.vue' +import IconDelete from 'vue-material-design-icons/Delete.vue' +import IconContact from 'vue-material-design-icons/AccountMultiple.vue' +import IconShare from 'vue-material-design-icons/ShareVariant.vue' +import ShareAddressBook from './SettingsAddressbookShare.vue' import { showError } from '@nextcloud/dialogs' -import CopyToClipboardMixin from '../../../mixins/CopyToClipboardMixin' +import CopyToClipboardMixin from '../../../mixins/CopyToClipboardMixin.js' export default { name: 'SettingsAddressbook', diff --git a/src/components/AppNavigation/Settings/SettingsAddressbookShare.vue b/src/components/AppNavigation/Settings/SettingsAddressbookShare.vue index c1583e35..f54d50fb 100644 --- a/src/components/AppNavigation/Settings/SettingsAddressbookShare.vue +++ b/src/components/AppNavigation/Settings/SettingsAddressbookShare.vue @@ -22,8 +22,7 @@ <template> <div class="addressbook-shares"> - <Multiselect - id="users-groups-search" + <Multiselect id="users-groups-search" :options="usersOrGroups" :searchable="true" :internal-search="false" @@ -48,10 +47,10 @@ </template> <script> -import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect' -import client from '../../../services/cdav' +import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js' +import client from '../../../services/cdav.js' -import addressBookSharee from './SettingsAddressbookSharee' +import addressBookSharee from './SettingsAddressbookSharee.vue' import debounce from 'debounce' import { urldecode } from '../../../utils/url.js' diff --git a/src/components/AppNavigation/Settings/SettingsAddressbookSharee.vue b/src/components/AppNavigation/Settings/SettingsAddressbookSharee.vue index 75a8c043..91cb9a6d 100644 --- a/src/components/AppNavigation/Settings/SettingsAddressbookSharee.vue +++ b/src/components/AppNavigation/Settings/SettingsAddressbookSharee.vue @@ -30,8 +30,7 @@ {{ sharee.displayName }} </span> <span class="addressbook-sharee__utils"> - <input - :id="uid" + <input :id="uid" :checked="writeable" :disabled="loading" class="checkbox" @@ -56,11 +55,11 @@ <script> import { showError } from '@nextcloud/dialogs' -import IconDelete from 'vue-material-design-icons/Delete' -import IconGroup from 'vue-material-design-icons/AccountMultiple' -import IconUser from 'vue-material-design-icons/Account' -import Button from '@nextcloud/vue/dist/Components/NcButton' -import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon' +import IconDelete from 'vue-material-design-icons/Delete.vue' +import IconGroup from 'vue-material-design-icons/AccountMultiple.vue' +import IconUser from 'vue-material-design-icons/Account.vue' +import Button from '@nextcloud/vue/dist/Components/NcButton.js' +import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js' export default { name: 'SettingsAddressbookSharee', diff --git a/src/components/AppNavigation/Settings/SettingsImportContacts.vue b/src/components/AppNavigation/Settings/SettingsImportContacts.vue index 2eac8403..31834f75 100644 --- a/src/components/AppNavigation/Settings/SettingsImportContacts.vue +++ b/src/components/AppNavigation/Settings/SettingsImportContacts.vue @@ -36,8 +36,7 @@ @close="toggleModal"> <section class="import-contact__modal-addressbook"> <h3>{{ t('contacts', 'Import contacts') }}</h3> - <Multiselect - v-if="!isSingleAddressbook" + <Multiselect v-if="!isSingleAddressbook" id="select-addressbook" v-model="selectedAddressbook" :allow-empty="false" @@ -58,8 +57,7 @@ type="file" class="hidden-visually" @change="processFile"> - <Button - :disabled="loading" + <Button :disabled="loading" class="import-contact__button import-contact__button--local" @click="clickImportInput"> <template #icon> @@ -67,8 +65,7 @@ </template> {{ t('contacts', 'Select local file') }} </Button> - <Button - type="primary" + <Button type="primary" :disabled="loading" class="import-contact__button import-contact__button--files" @click="openPicker"> @@ -95,18 +92,18 @@ </template> <script> -import Button from '@nextcloud/vue/dist/Components/NcButton' -import Modal from '@nextcloud/vue/dist/Components/NcModal' -import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect' -import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon' +import Button from '@nextcloud/vue/dist/Components/NcButton.js' +import Modal from '@nextcloud/vue/dist/Components/NcModal.js' +import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js' +import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js' import { encodePath } from '@nextcloud/paths' import { getCurrentUser } from '@nextcloud/auth' import { generateRemoteUrl } from '@nextcloud/router' import { getFilePickerBuilder } from '@nextcloud/dialogs' import axios from '@nextcloud/axios' -import IconUpload from 'vue-material-design-icons/Upload' -import IconError from 'vue-material-design-icons/AlertCircle' -import IconFolder from 'vue-material-design-icons/Folder' +import IconUpload from 'vue-material-design-icons/Upload.vue' +import IconError from 'vue-material-design-icons/AlertCircle.vue' +import IconFolder from 'vue-material-design-icons/Folder.vue' const CancelToken = axios.CancelToken diff --git a/src/components/AppNavigation/Settings/SettingsNewAddressbook.vue b/src/components/AppNavigation/Settings/SettingsNewAddressbook.vue index 52de5e4e..2ecec899 100644 --- a/src/components/AppNavigation/Settings/SettingsNewAddressbook.vue +++ b/src/components/AppNavigation/Settings/SettingsNewAddressbook.vue @@ -49,7 +49,7 @@ <script> import { showError } from '@nextcloud/dialogs' -import IconAdd from 'vue-material-design-icons/Plus' +import IconAdd from 'vue-material-design-icons/Plus.vue' export default { name: 'SettingsNewAddressbook', diff --git a/src/components/AppNavigation/Settings/SettingsSortContacts.vue b/src/components/AppNavigation/Settings/SettingsSortContacts.vue index 839bd770..9f40df50 100644 --- a/src/components/AppNavigation/Settings/SettingsSortContacts.vue +++ b/src/components/AppNavigation/Settings/SettingsSortContacts.vue @@ -23,8 +23,7 @@ <template> <div class="sort-contacts"> <IconList class="settings-line__icon" /> - <Multiselect - id="sort-by" + <Multiselect id="sort-by" :value="orderKeyOption" :searchable="false" :allow-empty="false" @@ -37,8 +36,8 @@ </template> <script> -import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect' -import IconList from 'vue-material-design-icons/FormatListBulletedSquare' +import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js' +import IconList from 'vue-material-design-icons/FormatListBulletedSquare.vue' export default { name: 'SettingsSortContacts', diff --git a/src/components/ChartTemplate.vue b/src/components/ChartTemplate.vue index d6b2ccb4..a48dded8 100644 --- a/src/components/ChartTemplate.vue +++ b/src/components/ChartTemplate.vue @@ -8,8 +8,7 @@ selectedContact: data.key, }, }"> - <Avatar - :disable-tooltip="true" + <Avatar :disable-tooltip="true" :display-name="data.fullName" :is-no-user="true" :size="60" @@ -38,7 +37,7 @@ </template> <script> -import Avatar from '@nextcloud/vue/dist/Components/NcAvatar' +import Avatar from '@nextcloud/vue/dist/Components/NcAvatar.js' export default { name: 'ChartTemplate', diff --git a/src/components/CircleDetails.vue b/src/components/CircleDetails.vue index ac04c93e..4d919d53 100644 --- a/src/components/CircleDetails.vue +++ b/src/components/CircleDetails.vue @@ -26,8 +26,7 @@ <DetailsHeader> <!-- avatar and upload photo --> <template #avatar="{avatarSize}"> - <Avatar - :disable-tooltip="true" + <Avatar :disable-tooltip="true" :display-name="circle.displayName" :is-no-user="true" :size="avatarSize" /> @@ -35,8 +34,7 @@ <!-- display name --> <template #title> - <input - v-model="circle.displayName" + <input v-model="circle.displayName" :readonly="!circle.isOwner" :placeholder="t('contacts', 'Circle name')" type="text" @@ -80,8 +78,7 @@ {{ t('contacts', 'Description') }} </ContentHeading> - <RichContenteditable - :value.sync="circle.description" + <RichContenteditable :value.sync="circle.description" :auto-complete="onAutocomplete" :maxlength="1024" :multiline="true" @@ -129,21 +126,21 @@ import { showError } from '@nextcloud/dialogs' import debounce from 'debounce' -import AppContentDetails from '@nextcloud/vue/dist/Components/NcAppContentDetails' -import Avatar from '@nextcloud/vue/dist/Components/NcAvatar' -import Button from '@nextcloud/vue/dist/Components/NcButton' -import RichContenteditable from '@nextcloud/vue/dist/Components/NcRichContenteditable' +import AppContentDetails from '@nextcloud/vue/dist/Components/NcAppContentDetails.js' +import Avatar from '@nextcloud/vue/dist/Components/NcAvatar.js' +import Button from '@nextcloud/vue/dist/Components/NcButton.js' +import RichContenteditable from '@nextcloud/vue/dist/Components/NcRichContenteditable.js' -import Login from 'vue-material-design-icons/Login' -import Logout from 'vue-material-design-icons/Logout' -import IconDelete from 'vue-material-design-icons/Delete' +import Login from 'vue-material-design-icons/Login.vue' +import Logout from 'vue-material-design-icons/Logout.vue' +import IconDelete from 'vue-material-design-icons/Delete.vue' import { CircleEdit, editCircle } from '../services/circles.ts' -import CircleActionsMixin from '../mixins/CircleActionsMixin' -import DetailsHeader from './DetailsHeader' -import CircleConfigs from './CircleDetails/CircleConfigs' -import ContentHeading from './CircleDetails/ContentHeading' -import CirclePasswordSettings from './CircleDetails/CirclePasswordSettings' +import CircleActionsMixin from '../mixins/CircleActionsMixin.js' +import DetailsHeader from './DetailsHeader.vue' +import CircleConfigs from './CircleDetails/CircleConfigs.vue' +import ContentHeading from './CircleDetails/ContentHeading.vue' +import CirclePasswordSettings from './CircleDetails/CirclePasswordSettings.vue' export default { name: 'CircleDetails', @@ -200,7 +197,7 @@ export default { */ onAutocomplete(search, callback) { // TODO: implement autocompletion. Disabled for now - // eslint-disable-next-line node/no-callback-literal + // eslint-disable-next-line n/no-callback-literal callback([]) }, diff --git a/src/components/CircleDetails/CircleConfigs.vue b/src/components/CircleDetails/CircleConfigs.vue index fdd8dea6..aeeb0f03 100644 --- a/src/components/CircleDetails/CircleConfigs.vue +++ b/src/components/CircleDetails/CircleConfigs.vue @@ -43,8 +43,8 @@ </template> <script> -import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch' -import ContentHeading from './ContentHeading' +import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js' +import ContentHeading from './ContentHeading.vue' import { PUBLIC_CIRCLE_CONFIG } from '../../models/constants.ts' import Circle from '../../models/circle.ts' diff --git a/src/components/CircleDetails/CirclePasswordSettings.vue b/src/components/CircleDetails/CirclePasswordSettings.vue index 1547319b..f24911e2 100644 --- a/src/components/CircleDetails/CirclePasswordSettings.vue +++ b/src/components/CircleDetails/CirclePasswordSettings.vue @@ -47,21 +47,18 @@ <li class="unique-password"> <template v-if="showUniquePasswordInput"> - <input - v-model="uniquePassword" + <input v-model="uniquePassword" :disabled="loading.length > 0" :placeholder="t('contacts', 'Unique password …')" type="text" @keyup.enter="saveUniquePassword"> - <Button - type="tertiary-no-background" + <Button type="tertiary-no-background" :disabled="loading.length > 0 || uniquePassword.length === 0" @click="saveUniquePassword"> {{ t('contacts', 'Save') }} </Button> </template> - <Button - v-else-if="useUniquePassword" + <Button v-else-if="useUniquePassword" class="change-unique-password" @click="onClickChangePassword"> {{ t('contacts', 'Change unique password') }} @@ -77,9 +74,9 @@ </template> <script> -import ContentHeading from './ContentHeading' -import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch' -import Button from '@nextcloud/vue/dist/Components/NcButton' +import ContentHeading from './ContentHeading.vue' +import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js' +import Button from '@nextcloud/vue/dist/Components/NcButton.js' // Circle setting keys const ENFORCE_PASSWORD_PROTECTION = 'enforce_password' diff --git a/src/components/ContactDetails.vue b/src/components/ContactDetails.vue index e333ea43..9fe9f173 100644 --- a/src/components/ContactDetails.vue +++ b/src/components/ContactDetails.vue @@ -27,8 +27,7 @@ :title="t('contacts', 'No contact selected')" :description="t('contacts', 'Select a contact on the list to begin')"> <template #icon> - <IconContact - :size="20" /> + <IconContact :size="20" /> </template> </EmptyContent> @@ -36,8 +35,7 @@ <!-- contact header --> <DetailsHeader> <!-- avatar and upload photo --> - <ContactAvatar - slot="avatar" + <ContactAvatar slot="avatar" :contact="contact" @update-local-contact="updateLocalContact" /> @@ -258,36 +256,36 @@ import { showError } from '@nextcloud/dialogs' import { stringify } from 'ical.js' import debounce from 'debounce' -// eslint-disable-next-line import/no-unresolved, node/no-missing-import +// eslint-disable-next-line import/no-unresolved, n/no-missing-import import PQueue from 'p-queue' import qr from 'qr-image' import Vue from 'vue' import { VueMasonryPlugin } from 'vue-masonry' -import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton' -import ActionLink from '@nextcloud/vue/dist/Components/NcActionLink' -import AppContentDetails from '@nextcloud/vue/dist/Components/NcAppContentDetails' -import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent' -import IconContact from 'vue-material-design-icons/AccountMultiple' -import Modal from '@nextcloud/vue/dist/Components/NcModal' -import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect' -import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon' -import IconDownload from 'vue-material-design-icons/Download' -import IconDelete from 'vue-material-design-icons/Delete' -import IconQr from 'vue-material-design-icons/Qrcode' -import CakeIcon from 'vue-material-design-icons/Cake' -import IconCopy from 'vue-material-design-icons/ContentCopy' - -import rfcProps from '../models/rfcProps' -import validate from '../services/validate' - -import AddNewProp from './ContactDetails/ContactDetailsAddNewProp' -import ContactAvatar from './ContactDetails/ContactDetailsAvatar' -import ContactProperty from './ContactDetails/ContactDetailsProperty' -import DetailsHeader from './DetailsHeader' -import PropertyGroups from './Properties/PropertyGroups' -import PropertyRev from './Properties/PropertyRev' -import PropertySelect from './Properties/PropertySelect' +import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js' +import ActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js' +import AppContentDetails from '@nextcloud/vue/dist/Components/NcAppContentDetails.js' +import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js' +import IconContact from 'vue-material-design-icons/AccountMultiple.vue' +import Modal from '@nextcloud/vue/dist/Components/NcModal.js' +import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js' +import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js' +import IconDownload from 'vue-material-design-icons/Download.vue' +import IconDelete from 'vue-material-design-icons/Delete.vue' +import IconQr from 'vue-material-design-icons/Qrcode.vue' +import CakeIcon from 'vue-material-design-icons/Cake.vue' +import IconCopy from 'vue-material-design-icons/ContentCopy.vue' + +import rfcProps from '../models/rfcProps.js' +import validate from '../services/validate.js' + +import AddNewProp from './ContactDetails/ContactDetailsAddNewProp.vue' +import ContactAvatar from './ContactDetails/ContactDetailsAvatar.vue' +import ContactProperty from './ContactDetails/ContactDetailsProperty.vue' +import DetailsHeader from './DetailsHeader.vue' +import PropertyGroups from './Properties/PropertyGroups.vue' +import PropertyRev from './Properties/PropertyRev.vue' +import PropertySelect from './Properties/PropertySelect.vue' Vue.use(VueMasonryPlugin) const updateQueue = new PQueue({ concurrency: 1 }) diff --git a/src/components/ContactDetails/ContactDetailsAddNewProp.vue b/src/components/ContactDetails/ContactDetailsAddNewProp.vue index 66df1ca2..9bff1dc3 100644 --- a/src/components/ContactDetails/ContactDetailsAddNewProp.vue +++ b/src/components/ContactDetails/ContactDetailsAddNewProp.vue @@ -40,11 +40,11 @@ </template> <script> -import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect' -import rfcProps from '../../models/rfcProps' -import Contact from '../../models/contact' -import OrgChartsMixin from '../../mixins/OrgChartsMixin' -import PropertyTitle from '../Properties/PropertyTitle' +import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js' +import rfcProps from '../../models/rfcProps.js' +import Contact from '../../models/contact.js' +import OrgChartsMixin from '../../mixins/OrgChartsMixin.js' +import PropertyTitle from '../Properties/PropertyTitle.vue' import ICAL from 'ical.js' export default { diff --git a/src/components/ContactDetails/ContactDetailsAvatar.vue b/src/components/ContactDetails/ContactDetailsAvatar.vue index 65a7cca0..3c52182c 100644 --- a/src/components/ContactDetails/ContactDetailsAvatar.vue +++ b/src/components/ContactDetails/ContactDetailsAvatar.vue @@ -32,16 +32,14 @@ @change="processFile"> <!-- Avatar display --> - <Avatar - :disable-tooltip="true" + <Avatar :disable-tooltip="true" :display-name="contact.displayName" :is-no-user="true" :size="75" :url="photoUrl" class="contact-header-avatar__photo" /> - <Actions - v-if="!isReadOnly || contact.photo" + <Actions v-if="!isReadOnly || contact.photo" :force-menu="true" :open.sync="opened" class="contact-header-avatar__menu"> @@ -49,22 +47,19 @@ <IconImage :size="20" fill-color="#fff" /> </template> <template v-if="!isReadOnly"> - <ActionButton - @click.stop.prevent="selectFileInput"> + <ActionButton @click.stop.prevent="selectFileInput"> <template #icon> <IconUpload :size="20" /> </template> {{ t('contacts', 'Upload a new picture') }} </ActionButton> - <ActionButton - @click="selectFilePicker"> + <ActionButton @click="selectFilePicker"> <template #icon> <IconFolder :size="20" /> </template> {{ t('contacts', 'Choose from Files') }} </ActionButton> - <ActionButton - v-for="network in supportedSocial" + <ActionButton v-for="network in supportedSocial" :key="network" @click="getSocialAvatar(network)"> <template #icon> @@ -76,16 +71,14 @@ <template v-if="contact.photo"> <!-- FIXME: the link seems to have a bigger font size than the button caption --> - <ActionLink - :href="`${contact.url}?photo`" + <ActionLink :href="`${contact.url}?photo`" target="_blank"> <template #icon> <IconDownload :size="20" /> </template> {{ t('contacts', 'Download picture') }} </ActionLink> - <ActionButton - v-if="!isReadOnly" + <ActionButton v-if="!isReadOnly" @click="removePhoto"> <template #icon> <IconDelete :size="20" /> @@ -98,16 +91,16 @@ </template> <script> -import Avatar from '@nextcloud/vue/dist/Components/NcAvatar' -import Actions from '@nextcloud/vue/dist/Components/NcActions' -import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton' -import ActionLink from '@nextcloud/vue/dist/Components/NcActionLink' -import IconDownload from 'vue-material-design-icons/Download' -import IconCloudDownload from 'vue-material-design-icons/CloudDownload' -import IconDelete from 'vue-material-design-icons/Delete' -import IconUpload from 'vue-material-design-icons/Upload' -import IconFolder from 'vue-material-design-icons/Folder' -import IconImage from 'vue-material-design-icons/Image' +import Avatar from '@nextcloud/vue/dist/Components/NcAvatar.js' +import Actions from '@nextcloud/vue/dist/Components/NcActions.js' +import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js' +import ActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js' +import IconDownload from 'vue-material-design-icons/Download.vue' +import IconCloudDownload from 'vue-material-design-icons/CloudDownload.vue' +import IconDelete from 'vue-material-design-icons/Delete.vue' +import IconUpload from 'vue-material-design-icons/Upload.vue' +import IconFolder from 'vue-material-design-icons/Folder.vue' +import IconImage from 'vue-material-design-icons/Image.vue' import { showError, showInfo, getFilePickerBuilder, showSuccess } from '@nextcloud/dialogs' import { generateUrl, generateRemoteUrl } from '@nextcloud/router' diff --git a/src/components/ContactDetails/ContactDetailsProperty.vue b/src/components/ContactDetails/ContactDetailsProperty.vue index fe33352a..714b98c1 100644 --- a/src/components/ContactDetails/ContactDetailsProperty.vue +++ b/src/components/ContactDetails/ContactDetailsProperty.vue @@ -46,14 +46,14 @@ <script> import { Property } from 'ical.js' -import rfcProps from '../../models/rfcProps' -import Contact from '../../models/contact' +import rfcProps from '../../models/rfcProps.js' +import Contact from '../../models/contact.js' -import OrgChartsMixin from '../../mixins/OrgChartsMixin' -import PropertyText from '../Properties/PropertyText' -import PropertyMultipleText from '../Properties/PropertyMultipleText' -import PropertyDateTime from '../Properties/PropertyDateTime' -import PropertySelect from '../Properties/PropertySelect' +import OrgChartsMixin from '../../mixins/OrgChartsMixin.js' +import PropertyText from '../Properties/PropertyText.vue' +import PropertyMultipleText from '../Properties/PropertyMultipleText.vue' +import PropertyDateTime from '../Properties/PropertyDateTime.vue' +import PropertySelect from '../Properties/PropertySelect.vue' export default { name: 'ContactDetailsProperty', diff --git a/src/components/ContactsList.vue b/src/components/ContactsList.vue index 76d31d91..80c95620 100644 --- a/src/components/ContactsList.vue +++ b/src/components/ContactsList.vue @@ -37,8 +37,8 @@ </template> <script> -import AppContentList from '@nextcloud/vue/dist/Components/NcAppContentList' -import ContactsListItem from './ContactsList/ContactsListItem' +import AppContentList from '@nextcloud/vue/dist/Components/NcAppContentList.js' +import ContactsListItem from './ContactsList/ContactsListItem.vue' import VirtualList from 'vue-virtual-scroll-list' export default { diff --git a/src/components/ContactsList/ContactsListItem.vue b/src/components/ContactsList/ContactsListItem.vue index 9252e4bc..37204df4 100644 --- a/src/components/ContactsList/ContactsListItem.vue +++ b/src/components/ContactsList/ContactsListItem.vue @@ -1,6 +1,5 @@ <template> - <ListItem - :id="id" + <ListItem :id="id" :key="source.key" class="list-item-style envelope" :title="source.displayName" @@ -24,7 +23,7 @@ <script> import { NcListItem as ListItem } from '@nextcloud/vue' -import BaseAvatar from '@nextcloud/vue/dist/Components/NcAvatar' +import BaseAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js' export default { name: 'ContactsListItem', diff --git a/src/components/DetailsHeader.vue b/src/components/DetailsHeader.vue index 1eef7309..a536e8ff 100644 --- a/src/components/DetailsHeader.vue +++ b/src/components/DetailsHeader.vue @@ -53,7 +53,7 @@ </template> <script> -import Actions from '@nextcloud/vue/dist/Components/NcActions' +import Actions from '@nextcloud/vue/dist/Components/NcActions.js' export default { name: 'DetailsHeader', diff --git a/src/components/EntityPicker/ContactsPicker.vue b/src/components/EntityPicker/ContactsPicker.vue index 05fd9e98..0ef7334b 100644 --- a/src/components/EntityPicker/ContactsPicker.vue +++ b/src/components/EntityPicker/ContactsPicker.vue @@ -20,11 +20,11 @@ import { subscribe } from '@nextcloud/event-bus' import pLimit from 'p-limit' -import Modal from '@nextcloud/vue/dist/Components/NcModal' +import Modal from '@nextcloud/vue/dist/Components/NcModal.js' -import AddToGroupView from '../../views/Processing/AddToGroupView' -import appendContactToGroup from '../../services/appendContactToGroup' -import EntityPicker from './EntityPicker' +import AddToGroupView from '../../views/Processing/AddToGroupView.vue' +import appendContactToGroup from '../../services/appendContactToGroup.js' +import EntityPicker from './EntityPicker.vue' export default { name: 'ContactsPicker', diff --git a/src/components/EntityPicker/EntityBubble.vue b/src/components/EntityPicker/EntityBubble.vue index 47280e8f..d06f4d99 100644 --- a/src/components/EntityPicker/EntityBubble.vue +++ b/src/components/EntityPicker/EntityBubble.vue @@ -21,8 +21,7 @@ - --> <template> - <UserBubble - class="entity-picker__bubble" + <UserBubble class="entity-picker__bubble" :margin="0" :size="22" :display-name="label"> @@ -36,7 +35,7 @@ </template> <script> -import UserBubble from '@nextcloud/vue/dist/Components/NcUserBubble' +import UserBubble from '@nextcloud/vue/dist/Components/NcUserBubble.js' export default { name: 'EntityBubble', diff --git a/src/components/EntityPicker/EntityPicker.vue b/src/components/EntityPicker/EntityPicker.vue index 8730eafd..4de077de 100644 --- a/src/components/EntityPicker/EntityPicker.vue +++ b/src/components/EntityPicker/EntityPicker.vue @@ -20,16 +20,14 @@ --> <template> - <Modal - size="normal" + <Modal size="normal" @close="onCancel"> <!-- Wrapper for content & navigation --> <div class="entity-picker"> <!-- Search --> <div class="entity-picker__search"> <div class="entity-picker__search-icon icon-search" /> - <input - ref="input" + <input ref="input" v-model="searchQuery" :placeholder="t('contacts', 'Search {types}', {types: searchPlaceholderTypes})" class="entity-picker__search-input" @@ -46,13 +44,11 @@ <template v-else> <!-- Picked entities --> - <transition-group - v-if="Object.keys(selectionSet).length > 0" + <transition-group v-if="Object.keys(selectionSet).length > 0" name="zoom" tag="ul" class="entity-picker__selection"> - <EntityBubble - v-for="entity in selectionSet" + <EntityBubble v-for="entity in selectionSet" :key="entity.key || `entity-${entity.type}-${entity.id}`" v-bind="entity" @delete="onDelete(entity)" /> @@ -81,14 +77,12 @@ </EmptyContent> <div class="entity-picker__navigation"> - <button - :disabled="loading" + <button :disabled="loading" class="navigation__button-left" @click="onCancel"> {{ t('contacts', 'Cancel') }} </button> - <button - :disabled="isEmptySelection || loading" + <button :disabled="isEmptySelection || loading" class="navigation__button-right primary" @click="onSubmit"> {{ confirmLabel }} @@ -102,13 +96,13 @@ <script> import debounce from 'debounce' import VirtualList from 'vue-virtual-scroll-list' -import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent' -import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon' -import IconSearch from 'vue-material-design-icons/Magnify' -import Modal from '@nextcloud/vue/dist/Components/NcModal' +import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js' +import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js' +import IconSearch from 'vue-material-design-icons/Magnify.vue' +import Modal from '@nextcloud/vue/dist/Components/NcModal.js' -import EntityBubble from './EntityBubble' -import EntitySearchResult from './EntitySearchResult' +import EntityBubble from './EntityBubble.vue' +import EntitySearchResult from './EntitySearchResult.vue' export default { name: 'EntityPicker', diff --git a/src/components/EntityPicker/EntitySearchResult.vue b/src/components/EntityPicker/EntitySearchResult.vue index 609617cb..6cd3fe32 100644 --- a/src/components/EntityPicker/EntitySearchResult.vue +++ b/src/components/EntityPicker/EntitySearchResult.vue @@ -24,8 +24,7 @@ {{ t('contacts', 'Add {type}', {type: source.label.toLowerCase()}) }} </h4> - <UserBubble - v-else + <UserBubble v-else class="entity-picker__bubble" :class="{'entity-picker__bubble--selected': isSelected}" :display-name="source.label" @@ -41,7 +40,7 @@ </template> <script> -import UserBubble from '@nextcloud/vue/dist/Components/NcUserBubble' +import UserBubble from '@nextcloud/vue/dist/Components/NcUserBubble.js' export default { name: 'EntitySearchResult', diff --git a/src/components/EntityPicker/NewCircleIntro.vue b/src/components/EntityPicker/NewCircleIntro.vue index 96db20d1..d6242b52 100644 --- a/src/components/EntityPicker/NewCircleIntro.vue +++ b/src/components/EntityPicker/NewCircleIntro.vue @@ -20,15 +20,13 @@ --> <template> - <Modal - size="normal" + <Modal size="normal" @close="onCancel"> <!-- Wrapper for content & navigation --> <div class="entity-picker"> <!-- Search --> <div class="entity-picker__new"> - <input - ref="input" + <input ref="input" v-model="circleName" :placeholder="t('contacts', 'New circle name')" class="entity-picker__new-input" @@ -42,8 +40,7 @@ <!-- Personal circle, TODO: IMPLEMENT --> <template v-if="false"> - <CheckboxRadioSwitch - :checked.sync="isPersonal" + <CheckboxRadioSwitch :checked.sync="isPersonal" :disabled="loading !== false"> {{ t('contacts', 'Personal circle') }} </CheckboxRadioSwitch> @@ -54,8 +51,7 @@ <!-- Local circle --> <template v-if="isGlobalScale"> - <CheckboxRadioSwitch - :checked.sync="isLocal" + <CheckboxRadioSwitch :checked.sync="isLocal" :disabled="loading !== false"> {{ t('contacts', 'Local circle') }} </CheckboxRadioSwitch> @@ -66,14 +62,12 @@ </div> <div class="entity-picker__navigation"> - <button - :disabled="loading" + <button :disabled="loading" class="navigation__button-left" @click="onCancel"> {{ t('contacts', 'Cancel') }} </button> - <button - :disabled="isEmptyName || loading" + <button :disabled="isEmptyName || loading" class="navigation__button-right primary" @click="onSubmit"> {{ t('contacts', 'Create circle') }} @@ -85,8 +79,8 @@ <script> import { getCapabilities } from '@nextcloud/capabilities' -import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch' -import Modal from '@nextcloud/vue/dist/Components/NcModal' +import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js' +import Modal from '@nextcloud/vue/dist/Components/NcModal.js' import { CIRCLE_DESC } from '../../models/constants.ts' diff --git a/src/components/MemberList.vue b/src/components/MemberList.vue index b73ed3f7..0bef24e0 100644 --- a/src/components/MemberList.vue +++ b/src/components/MemberList.vue @@ -32,16 +32,14 @@ <template v-else-if="!circle.isMember"> <EmptyContent :title="t('contacts', 'The list of members is only visible to members of this circle')"> <template #icon> - <IconContact - :size="20" /> + <IconContact :size="20" /> </template> </EmptyContent> </template> <template v-else> <EmptyContent :title="t('contacts', 'There is no member in this circle')"> <template #icon> - <IconContact - :size="20" /> + <IconContact :size="20" /> </template> </EmptyContent> </template> @@ -53,16 +51,14 @@ @click="onShowPicker(circle.id)"> <template #icon> <IconLoading v-if="loading" /> - <IconAdd - :size="20" /> + <IconAdd :size="20" /> </template> {{ t('contacts', 'Add members') }} </Button> <Button v-if="isMobile" @click="showCircleDetails"> <template #icon> - <IconInfo - :size="20" /> + <IconInfo :size="20" /> </template> {{ t('contacts', 'Show circle details') }} </Button> @@ -89,21 +85,21 @@ </template> <script> -import AppContentList from '@nextcloud/vue/dist/Components/NcAppContentList' -import Button from '@nextcloud/vue/dist/Components/NcButton' -import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent' -import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon' -import isMobile from '@nextcloud/vue/dist/Mixins/isMobile' +import AppContentList from '@nextcloud/vue/dist/Components/NcAppContentList.js' +import Button from '@nextcloud/vue/dist/Components/NcButton.js' +import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js' +import IconLoading from '@nextcloud/vue/dist/Components/NcLoadingIcon.js' +import isMobile from '@nextcloud/vue/dist/Mixins/isMobile.js' import VirtualList from 'vue-virtual-scroll-list' -import MembersListItem from './MembersList/MembersListItem' -import EntityPicker from './EntityPicker/EntityPicker' -import IconContact from 'vue-material-design-icons/AccountMultiple' -import IconAdd from 'vue-material-design-icons/Plus' -import IconInfo from 'vue-material-design-icons/InformationOutline' -import RouterMixin from '../mixins/RouterMixin' +import MembersListItem from './MembersList/MembersListItem.vue' +import EntityPicker from './EntityPicker/EntityPicker.vue' +import IconContact from 'vue-material-design-icons/AccountMultiple.vue' +import IconAdd from 'vue-material-design-icons/Plus.vue' +import IconInfo from 'vue-material-design-icons/InformationOutline.vue' +import RouterMixin from '../mixins/RouterMixin.js' -import { getRecommendations, getSuggestions } from '../services/collaborationAutocompletion' +import { getRecommendations, getSuggestions } from '../services/collaborationAutocompletion.js' import { showError, showWarning } from '@nextcloud/dialogs' import { subscribe } from '@nextcloud/event-bus' import { SHARES_TYPES_MEMBER_MAP, CIRCLES_MEMBER_GROUPING } from '../models/constants.ts' diff --git a/src/components/MembersList/MembersListItem.vue b/src/components/MembersList/MembersListItem.vue index 227dd1f9..52b7f833 100644 --- a/src/components/MembersList/MembersListItem.vue +++ b/src/components/MembersList/MembersListItem.vue @@ -37,8 +37,7 @@ <!-- Accept invite --> <template v-if="!loading && isPendingApproval && circle.canManageMembers"> <Actions> - <ActionButton - @click="acceptMember"> + <ActionButton @click="acceptMember"> <template #icon> <IconCheck :size="20" /> </template> @@ -46,8 +45,7 @@ </ActionButton> </Actions> <Actions> - <ActionButton - @click="deleteMember"> + <ActionButton @click="deleteMember"> <template #icon> <IconClose :size="20" /> </template> @@ -71,8 +69,7 @@ :size="16" decorative /> </ActionText> - <ActionButton - v-for="level in availableLevelsChange" + <ActionButton v-for="level in availableLevelsChange" :key="level" icon="" @click="changeLevel(level)"> @@ -103,21 +100,21 @@ <script> import { CIRCLES_MEMBER_LEVELS, MemberLevels, MemberStatus } from '../../models/constants.ts' -import Actions from '@nextcloud/vue/dist/Components/NcActions' -import ListItemIcon from '@nextcloud/vue/dist/Components/NcListItemIcon' -import ActionSeparator from '@nextcloud/vue/dist/Components/NcActionSeparator' -import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton' -import ActionText from '@nextcloud/vue/dist/Components/NcActionText' -import IconDelete from 'vue-material-design-icons/Delete' -import IconCheck from 'vue-material-design-icons/Check' -import IconClose from 'vue-material-design-icons/Close' +import Actions from '@nextcloud/vue/dist/Components/NcActions.js' +import ListItemIcon from '@nextcloud/vue/dist/Components/NcListItemIcon.js' +import ActionSeparator from '@nextcloud/vue/dist/Components/NcActionSeparator.js' +import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js' +import ActionText from '@nextcloud/vue/dist/Components/NcActionText.js' +import IconDelete from 'vue-material-design-icons/Delete.vue' +import IconCheck from 'vue-material-design-icons/Check.vue' +import IconClose from 'vue-material-design-icons/Close.vue' -import ExitToApp from 'vue-material-design-icons/ExitToApp' -import ShieldCheck from 'vue-material-design-icons/ShieldCheck' +import ExitToApp from 'vue-material-design-icons/ExitToApp.vue' +import ShieldCheck from 'vue-material-design-icons/ShieldCheck.vue' import { changeMemberLevel } from '../../services/circles.ts' import { showError } from '@nextcloud/dialogs' -import RouterMixin from '../../mixins/RouterMixin' +import RouterMixin from '../../mixins/RouterMixin.js' export default { name: 'MembersListItem', diff --git a/src/components/OrgChart.vue b/src/components/OrgChart.vue index 2ad9a99c..3b2dd21f 100644 --- a/src/components/OrgChart.vue +++ b/src/components/OrgChart.vue @@ -4,8 +4,7 @@ <h3> {{ t('contacts', 'Chart') }}: </h3> - <Multiselect - v-model="chart" + <Multiselect v-model="chart" class="chart-selection" :disabled="data.length === 1" :options="charts" @@ -24,9 +23,9 @@ import * as d3 from 'd3' import ChartTemplate from './ChartTemplate.vue' import { getLocale } from '@nextcloud/l10n' -import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect' +import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js' import { OrgChart } from 'd3-org-chart' -import router from './../router' +import router from './../router/index.js' import Vue from 'vue' export default { diff --git a/src/components/ProcessingScreen.vue b/src/components/ProcessingScreen.vue index 1581d5ee..084b7208 100644 --- a/src/components/ProcessingScreen.vue +++ b/src/components/ProcessingScreen.vue @@ -14,8 +14,8 @@ </template> <script> -import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent' -import IconContact from 'vue-material-design-icons/AccountMultiple' +import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js' +import IconContact from 'vue-material-design-icons/AccountMultiple.vue' export default { name: 'ProcessingScreen', diff --git a/src/components/Properties/PropertyActions.vue b/src/components/Properties/PropertyActions.vue index b0d8adcd..47da7441 100644 --- a/src/components/Properties/PropertyActions.vue +++ b/src/components/Properties/PropertyActions.vue @@ -36,9 +36,9 @@ </template> <script> -import Actions from '@nextcloud/vue/dist/Components/NcActions' -import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton' -import IconDelete from 'vue-material-design-icons/Delete' +import Actions from '@nextcloud/vue/dist/Components/NcActions.js' +import ActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js' +import IconDelete from 'vue-material-design-icons/Delete.vue' export default { name: 'PropertyActions', diff --git a/src/components/Properties/PropertyDateTime.vue b/src/components/Properties/PropertyDateTime.vue index cd064ddb..3f2dec1a 100644 --- a/src/components/Properties/PropertyDateTime.vue +++ b/src/components/Properties/PropertyDateTime.vue @@ -51,8 +51,7 @@ </div> <!-- Real input where the picker shows --> - <DatetimePicker - v-if="!isReadOnly" + <DatetimePicker v-if="!isReadOnly" :value="vcardTimeLocalValue.toJSDate()" :minute-step="10" :lang="lang" @@ -70,8 +69,7 @@ class="property__value"> <!-- props actions --> - <PropertyActions - v-if="!isReadOnly" + <PropertyActions v-if="!isReadOnly" :actions="actions" :property-component="this" @delete="deleteProperty" /> @@ -82,14 +80,14 @@ <script> import debounce from 'debounce' import moment from 'moment' -import DatetimePicker from '@nextcloud/vue/dist/Components/NcDatetimePicker' -import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect' +import DatetimePicker from '@nextcloud/vue/dist/Components/NcDatetimePicker.js' +import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js' import { getLocale } from '@nextcloud/l10n' import { VCardTime } from 'ical.js' -import PropertyMixin from '../../mixins/PropertyMixin' -import PropertyTitle from './PropertyTitle' -import PropertyActions from './PropertyActions' +import PropertyMixin from '../../mixins/PropertyMixin.js' +import PropertyTitle from './PropertyTitle.vue' +import PropertyActions from './PropertyActions.vue' export default { name: 'PropertyDateTime', diff --git a/src/components/Properties/PropertyGroups.vue b/src/components/Properties/PropertyGroups.vue index 85581d38..fcae659d 100644 --- a/src/components/Properties/PropertyGroups.vue +++ b/src/components/Properties/PropertyGroups.vue @@ -22,8 +22,7 @@ <template> <div v-if="propModel" class="property property--without-actions"> - <PropertyTitle - icon="icon-contacts-dark" + <PropertyTitle icon="icon-contacts-dark" :readable-name="t('contacts', 'Groups')" /> <div class="property__row"> @@ -60,9 +59,9 @@ <script> import debounce from 'debounce' -import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect' -import Contact from '../../models/contact' -import PropertyTitle from './PropertyTitle' +import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js' +import Contact from '../../models/contact.js' +import PropertyTitle from './PropertyTitle.vue' import naturalCompare from 'string-natural-compare' export default { diff --git a/src/components/Properties/PropertyMultipleText.vue b/src/components/Properties/PropertyMultipleText.vue index 3a411bd1..1bd9886f 100644 --- a/src/components/Properties/PropertyMultipleText.vue +++ b/src/components/Properties/PropertyMultipleText.vue @@ -101,10 +101,10 @@ </template> <script> -import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect' -import PropertyMixin from '../../mixins/PropertyMixin' -import PropertyTitle from './PropertyTitle' -import PropertyActions from './PropertyActions' +import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js' +import PropertyMixin from '../../mixins/PropertyMixin.js' +import PropertyTitle from './PropertyTitle.vue' +import PropertyActions from './PropertyActions.vue' export default { name: 'PropertyMultipleText', diff --git a/src/components/Properties/PropertySelect.vue b/src/components/Properties/PropertySelect.vue index 0ada5bf0..e899e3b1 100644 --- a/src/components/Properties/PropertySelect.vue +++ b/src/components/Properties/PropertySelect.vue @@ -48,8 +48,7 @@ @input="updateValue" /> <!-- props actions --> - <PropertyActions - v-if="!isReadOnly" + <PropertyActions v-if="!isReadOnly" :actions="actions" :property-component="this" @delete="deleteProperty" /> @@ -58,10 +57,10 @@ </template> <script> -import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect' -import PropertyMixin from '../../mixins/PropertyMixin' -import PropertyTitle from './PropertyTitle' -import PropertyActions from './PropertyActions' +import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js' +import PropertyMixin from '../../mixins/PropertyMixin.js' +import PropertyTitle from './PropertyTitle.vue' +import PropertyActions from './PropertyActions.vue' export default { name: 'PropertySelect', diff --git a/src/components/Properties/PropertyText.vue b/src/components/Properties/PropertyText.vue index 93159790..6aa938df 100644 --- a/src/components/Properties/PropertyText.vue +++ b/src/components/Properties/PropertyText.vue @@ -82,8 +82,7 @@ target="_blank" /> <!-- props actions --> - <PropertyActions - v-if="!isReadOnly" + <PropertyActions v-if="!isReadOnly" :actions="actions" :property-component="this" @delete="deleteProperty" /> @@ -92,11 +91,11 @@ </template> <script> -import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect' +import Multiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js' import debounce from 'debounce' -import PropertyMixin from '../../mixins/PropertyMixin' -import PropertyTitle from './PropertyTitle' -import PropertyActions from './PropertyActions' +import PropertyMixin from '../../mixins/PropertyMixin.js' +import PropertyTitle from './PropertyTitle.vue' +import PropertyActions from './PropertyActions.vue' export default { name: 'PropertyText', diff --git a/src/components/Properties/PropertyTitle.vue b/src/components/Properties/PropertyTitle.vue index d4979320..f45d2445 100644 --- a/src/components/Properties/PropertyTitle.vue +++ b/src/components/Properties/PropertyTitle.vue @@ -31,7 +31,7 @@ </template> <script> -import PropertyTitleIcon from './PropertyTitleIcon' +import PropertyTitleIcon from './PropertyTitleIcon.vue' export default { name: 'PropertyTitle', components: { diff --git a/src/components/Properties/PropertyTitleIcon.vue b/src/components/Properties/PropertyTitleIcon.vue index efa31792..b4c5e1a0 100644 --- a/src/components/Properties/PropertyTitleIcon.vue +++ b/src/components/Properties/PropertyTitleIcon.vue @@ -40,22 +40,22 @@ </template> <script> -import IconAdd from 'vue-material-design-icons/Plus' -import IconAddressBook from '../Icons/IconAddressBook' -import IconEmail from 'vue-material-design-icons/Email' -import IconPhone from 'vue-material-design-icons/Cellphone' -import IconDelete from 'vue-material-design-icons/Delete' -import IconUser from 'vue-material-design-icons/Account' -import IconNotes from 'vue-material-design-icons/Pencil' -import IconGeo from 'vue-material-design-icons/MapMarker' -import IconGroup from 'vue-material-design-icons/AccountMultiple' -import IconUrl from 'vue-material-design-icons/Link' -import IconBday from 'vue-material-design-icons/CalendarBlankOutline' -import IconImpp from 'vue-material-design-icons/MessageReplyText' -import IconSocialMedia from 'vue-material-design-icons/Heart' -import IconRelationship from 'vue-material-design-icons/AccountSupervisor' -import IconTz from 'vue-material-design-icons/Web' -import IconLang from 'vue-material-design-icons/AccountVoice' +import IconAdd from 'vue-material-design-icons/Plus.vue' +import IconAddressBook from '../Icons/IconAddressBook.vue' +import IconEmail from 'vue-material-design-icons/Email.vue' +import IconPhone from 'vue-material-design-icons/Cellphone.vue' +import IconDelete from 'vue-material-design-icons/Delete.vue' +import IconUser from 'vue-material-design-icons/Account.vue' +import IconNotes from 'vue-material-design-icons/Pencil.vue' +import IconGeo from 'vue-material-design-icons/MapMarker.vue' +import IconGroup from 'vue-material-design-icons/AccountMultiple.vue' +import IconUrl from 'vue-material-design-icons/Link.vue' +import IconBday from 'vue-material-design-icons/CalendarBlankOutline.vue' +import IconImpp from 'vue-material-design-icons/MessageReplyText.vue' +import IconSocialMedia from 'vue-material-design-icons/Heart.vue' +import IconRelationship from 'vue-material-design-icons/AccountSupervisor.vue' +import IconTz from 'vue-material-design-icons/Web.vue' +import IconLang from 'vue-material-design-icons/AccountVoice.vue' export default { name: 'PropertyTitleIcon', components: { diff --git a/src/main.js b/src/main.js index e3122e08..85a3e7d0 100644 --- a/src/main.js +++ b/src/main.js @@ -25,14 +25,14 @@ import { getRequestToken } from '@nextcloud/auth' import { sync } from 'vuex-router-sync' import Vue from 'vue' -import App from './ContactsRoot' -import router from './router' -import store from './store' -import logger from './services/logger' +import App from './ContactsRoot.vue' +import router from './router/index.js' +import store from './store/index.js' +import logger from './services/logger.js' /** GLOBAL COMPONENTS AND DIRECTIVE */ import ClickOutside from 'vue-click-outside' -import VTooltip from '@nextcloud/vue/dist/Directives/Tooltip' +import VTooltip from '@nextcloud/vue/dist/Directives/Tooltip.js' // Global scss sheets import '../css/contacts.scss' diff --git a/src/mixins/CircleActionsMixin.js b/src/mixins/CircleActionsMixin.js index d79b6511..ce1d8eb3 100644 --- a/src/mixins/CircleActionsMixin.js +++ b/src/mixins/CircleActionsMixin.js @@ -24,7 +24,7 @@ import { showError } from '@nextcloud/dialogs' import { joinCircle } from '../services/circles.ts' import Circle from '../models/circle.ts' -import CopyToClipboardMixin from './CopyToClipboardMixin' +import CopyToClipboardMixin from './CopyToClipboardMixin.js' import Member from '../models/member.ts' export default { diff --git a/src/mixins/OrgChartsMixin.js b/src/mixins/OrgChartsMixin.js index d3877b77..416958d9 100644 --- a/src/mixins/OrgChartsMixin.js +++ b/src/mixins/OrgChartsMixin.js @@ -19,7 +19,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import { otherContacts } from '../utils/chartUtils' +import { otherContacts } from '../utils/chartUtils.js' export default { methods: { diff --git a/src/mixins/PropertyMixin.js b/src/mixins/PropertyMixin.js index ebc63695..abd06bed 100644 --- a/src/mixins/PropertyMixin.js +++ b/src/mixins/PropertyMixin.js @@ -20,8 +20,8 @@ * */ import debounce from 'debounce' -import Contact from '../models/contact' -import { setPropertyAlias } from '../services/updateDesignSet' +import Contact from '../models/contact.js' +import { setPropertyAlias } from '../services/updateDesignSet.js' export default { props: { diff --git a/src/models/contact.js b/src/models/contact.js index 8c8bbdab..85c7be8c 100644 --- a/src/models/contact.js +++ b/src/models/contact.js @@ -24,8 +24,8 @@ import { v4 as uuid } from 'uuid' import ICAL from 'ical.js' import b64toBlob from 'b64-to-blob' -import store from '../store' -import updateDesignSet from '../services/updateDesignSet' +import store from '../store/index.js' +import updateDesignSet from '../services/updateDesignSet.js' import sanitizeSVG from '@mattkrick/sanitize-svg' /** diff --git a/src/models/member.ts b/src/models/member.ts index 0e2adc5c..c217cffd 100644 --- a/src/models/member.ts +++ b/src/models/member.ts @@ -22,7 +22,7 @@ import { MemberLevel, MemberLevels, MemberType, MemberTypes } from './constants' import Circle from './circle' -import logger from '../services/logger' +import logger from '../services/logger.js' export default class Member { _data: any = {} @@ -110,7 +110,7 @@ export default class Member { /** * Member level - * + * */ get level(): MemberLevel { return this._data.level @@ -118,7 +118,7 @@ export default class Member { /** * Member request status - * + * */ get status(): string { return this._data.status diff --git a/src/models/rfcProps.js b/src/models/rfcProps.js index 861d74b0..145c5a9c 100644 --- a/src/models/rfcProps.js +++ b/src/models/rfcProps.js @@ -21,11 +21,11 @@ */ import { VCardTime } from 'ical.js' import { loadState } from '@nextcloud/initial-state' -import { otherContacts } from '../utils/chartUtils' +import { otherContacts } from '../utils/chartUtils.js' -import ActionCopyNtoFN from '../components/Actions/ActionCopyNtoFN' -import ActionToggleYear from '../components/Actions/ActionToggleYear' -import zones from './zones' +import ActionCopyNtoFN from '../components/Actions/ActionCopyNtoFN.vue' +import ActionToggleYear from '../components/Actions/ActionToggleYear.vue' +import zones from './zones.js' // Load the default profile (for example, home or work) configured by the user const defaultProfileState = loadState('contacts', 'defaultProfile', 'HOME') diff --git a/src/router/index.js b/src/router/index.js index e0fe4df7..6bc4a5a5 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -25,7 +25,7 @@ import Router from 'vue-router' import { generateUrl } from '@nextcloud/router' import { ROUTE_CIRCLE, ROUTE_CHART } from '../models/constants.ts' -import Contacts from '../views/Contacts' +import Contacts from '../views/Contacts.vue' Vue.use(Router) diff --git a/src/services/checks/badGenderType.js b/src/services/checks/badGenderType.js index dc61f8ab..f8eb77eb 100644 --- a/src/services/checks/badGenderType.js +++ b/src/services/checks/badGenderType.js @@ -20,7 +20,7 @@ * */ -import rfcProps from '../../models/rfcProps' +import rfcProps from '../../models/rfcProps.js' // https://tools.ietf.org/html/rfc6350#section-6.2.7 diff --git a/src/services/checks/index.js b/src/services/checks/index.js index 544c8571..e7c17dc7 100644 --- a/src/services/checks/index.js +++ b/src/services/checks/index.js @@ -20,10 +20,10 @@ * */ -import badGenderType from './badGenderType' -import duplicateTypes from './duplicateTypes' -import invalidREV from './invalidREV' -import missingFN from './missingFN' +import badGenderType from './badGenderType.js' +import duplicateTypes from './duplicateTypes.js' +import invalidREV from './invalidREV.js' +import missingFN from './missingFN.js' export default [ badGenderType, diff --git a/src/services/parseVcf.js b/src/services/parseVcf.js index 2ab0d045..620624e7 100644 --- a/src/services/parseVcf.js +++ b/src/services/parseVcf.js @@ -20,8 +20,8 @@ * */ -import Contact from '../models/contact' -import Store from '../store/index' +import Contact from '../models/contact.js' +import Store from '../store/index.js' /** * Parse a vcf data string, add them to the store diff --git a/src/services/validate.js b/src/services/validate.js index 1bac5613..e169dfc6 100644 --- a/src/services/validate.js +++ b/src/services/validate.js @@ -20,8 +20,8 @@ * */ -import Contact from '../models/contact' -import checks from './checks/' +import Contact from '../models/contact.js' +import checks from './checks/index.js' /** * @param contact diff --git a/src/store/addressbooks.js b/src/store/addressbooks.js index de1ea138..f338227e 100644 --- a/src/store/addressbooks.js +++ b/src/store/addressbooks.js @@ -26,10 +26,10 @@ import { showError } from '@nextcloud/dialogs' import pLimit from 'p-limit' import Vue from 'vue' -import Contact, { MinimalContactProperties } from '../models/contact' +import Contact, { MinimalContactProperties } from '../models/contact.js' -import client from '../services/cdav' -import parseVcf from '../services/parseVcf' +import client from '../services/cdav.js' +import parseVcf from '../services/parseVcf.js' const addressbookModel = { id: '', diff --git a/src/store/circles.js b/src/store/circles.js index d570eede..048e6a7f 100644 --- a/src/store/circles.js +++ b/src/store/circles.js @@ -37,10 +37,10 @@ import { } from '../services/circles.ts' import Member from '../models/member.ts' import Circle from '../models/circle.ts' -import logger from '../services/logger' +import logger from '../services/logger.js' const state = { - /** @type {object.<string>} Circle */ + /** @type {Object<string>} Circle */ circles: {}, } diff --git a/src/store/contacts.js b/src/store/contacts.js index 01521391..58b1c7c5 100644 --- a/src/store/contacts.js +++ b/src/store/contacts.js @@ -24,8 +24,8 @@ import { showError } from '@nextcloud/dialogs' import ICAL from 'ical.js' import Vue from 'vue' -import Contact from '../models/contact' -import validate from '../services/validate' +import Contact from '../models/contact.js' +import validate from '../services/validate.js' /* * Currently ical.js does not serialize parameters with multiple values correctly. This is diff --git a/src/store/index.js b/src/store/index.js index 9f7cb923..aa0240ce 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -23,13 +23,13 @@ import Vue from 'vue' import Vuex, { Store } from 'vuex' -import addressbooks from './addressbooks' -import circles from './circles' -import contacts from './contacts' -import groups from './groups' -import importState from './importState' +import addressbooks from './addressbooks.js' +import circles from './circles.js' +import contacts from './contacts.js' +import groups from './groups.js' +import importState from './importState.js' -import isCirclesEnabled from '../services/isCirclesEnabled' +import isCirclesEnabled from '../services/isCirclesEnabled.js' Vue.use(Vuex) diff --git a/src/utils/fileUtils.js b/src/utils/fileUtils.js index 61cadc32..56c47970 100644 --- a/src/utils/fileUtils.js +++ b/src/utils/fileUtils.js @@ -20,7 +20,7 @@ * */ import camelcase from 'camelcase' -import { isNumber } from './numberUtils' +import { isNumber } from './numberUtils.js' export const formatObject = function(obj) { const data = {} diff --git a/src/utils/url.js b/src/utils/url.js index 1040d03b..c7dd5aeb 100644 --- a/src/utils/url.js +++ b/src/utils/url.js @@ -25,7 +25,7 @@ * * @see https://www.php.net/manual/en/function.urldecode.php * @param {string} url The url to be decoded - * @returns {string} The decoded url + * @return {string} The decoded url */ export function urldecode(url) { return decodeURIComponent(url.replace(/\+/g, ' ')) diff --git a/src/views/Contacts.vue b/src/views/Contacts.vue index fa6236de..4c425210 100644 --- a/src/views/Contacts.vue +++ b/src/views/Contacts.vue @@ -24,8 +24,7 @@ <template> <Content :app-name="appName"> <!-- new-contact-button + navigation + settings --> - <RootNavigation - :contacts-list="contactsList" + <RootNavigation :contacts-list="contactsList" :loading="loadingContacts || loadingCircles" :selected-group="selectedGroup" :selected-contact="selectedContact"> @@ -70,27 +69,27 @@ <script> import { GROUP_ALL_CONTACTS, GROUP_NO_GROUP_CONTACTS, ROUTE_CIRCLE } from '../models/constants.ts' -import Button from '@nextcloud/vue/dist/Components/NcButton' -import Content from '@nextcloud/vue/dist/Components/NcContent' -import isMobile from '@nextcloud/vue/dist/Mixins/isMobile' -import Modal from '@nextcloud/vue/dist/Components/NcModal' +import Button from '@nextcloud/vue/dist/Components/NcButton.js' +import Content from '@nextcloud/vue/dist/Components/NcContent.js' +import isMobile from '@nextcloud/vue/dist/Mixins/isMobile.js' +import Modal from '@nextcloud/vue/dist/Components/NcModal.js' import { showError } from '@nextcloud/dialogs' import { VCardTime } from 'ical.js' -import CircleContent from '../components/AppContent/CircleContent' -import ChartContent from '../components/AppContent/ChartContent' -import ContactsContent from '../components/AppContent/ContactsContent' -import ContactsPicker from '../components/EntityPicker/ContactsPicker' -import ImportView from './Processing/ImportView' -import RootNavigation from '../components/AppNavigation/RootNavigation' -import IconAdd from 'vue-material-design-icons/Plus' +import CircleContent from '../components/AppContent/CircleContent.vue' +import ChartContent from '../components/AppContent/ChartContent.vue' +import ContactsContent from '../components/AppContent/ContactsContent.vue' +import ContactsPicker from '../components/EntityPicker/ContactsPicker.vue' +import ImportView from './Processing/ImportView.vue' +import RootNavigation from '../components/AppNavigation/RootNavigation.vue' +import IconAdd from 'vue-material-design-icons/Plus.vue' -import Contact from '../models/contact' -import rfcProps from '../models/rfcProps' +import Contact from '../models/contact.js' +import rfcProps from '../models/rfcProps.js' -import client from '../services/cdav' -import isCirclesEnabled from '../services/isCirclesEnabled' +import client from '../services/cdav.js' +import isCirclesEnabled from '../services/isCirclesEnabled.js' export default { name: 'Contacts', diff --git a/src/views/Processing/AddToGroupView.vue b/src/views/Processing/AddToGroupView.vue index 409bb706..3eb8495c 100644 --- a/src/views/Processing/AddToGroupView.vue +++ b/src/views/Processing/AddToGroupView.vue @@ -37,8 +37,8 @@ </template> <script> -import ProcessingScreen from '../../components/ProcessingScreen' -import Button from '@nextcloud/vue/dist/Components/NcButton' +import ProcessingScreen from '../../components/ProcessingScreen.vue' +import Button from '@nextcloud/vue/dist/Components/NcButton.js' export default { name: 'AddToGroupView', diff --git a/src/views/Processing/ImportView.vue b/src/views/Processing/ImportView.vue index 4b62bafc..ca5891fc 100644 --- a/src/views/Processing/ImportView.vue +++ b/src/views/Processing/ImportView.vue @@ -37,8 +37,8 @@ </template> <script> -import ProcessingScreen from '../../components/ProcessingScreen' -import Button from '@nextcloud/vue/dist/Components/NcButton' +import ProcessingScreen from '../../components/ProcessingScreen.vue' +import Button from '@nextcloud/vue/dist/Components/NcButton.js' export default { name: 'ImportView', |