diff --git a/.eslintrc.js b/.eslintrc.js index 62e04175..3a012201 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,41 +1,5 @@ module.exports = { - root: true, - env: { - browser: true, - es6: true, - node: true - }, - globals: { - dav: true - }, - extends: ['eslint:recommended', 'plugin:node/recommended', 'standard'], - plugins: ['node'], - rules: { - // space before function () - 'space-before-function-paren': ['error', 'never'], - // curly braces always space - 'object-curly-spacing': ['error', 'always'], - 'array-bracket-spacing': ['error', 'never'], - // stay consistent with array brackets - 'array-bracket-newline': ['error', 'consistent'], - // 1tbs brace style - 'brace-style': 'error', - // tabs only - indent: ['error', 'tab'], - 'no-tabs': 0, - // only debug console - 'no-console': ['error', { allow: ['error', 'warn', 'debug'] }], - // classes blocks - 'padded-blocks': ['error', { classes: 'always' }], - // always have the operator in front - 'operator-linebreak': ['error', 'before'], - // ternary on multiline - 'multiline-ternary': ['error', 'always-multiline'], - // es6 import/export and require - 'node/no-unsupported-features/es-syntax': ['off'], - // disable the recommended no-extra-semi - semi: ['error', 'always'], - // dot notation exclusion for uppercase first letters variables - 'dot-notation': ['error', { allowPattern: '^[A-Z][a-zA-Z]+$' }] - } -}; + extends: [ + '@nextcloud', + ], +} diff --git a/babel.config.js b/babel.config.js index 9e4568f3..8be4fc38 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,11 +1,3 @@ -module.exports = { - presets: [ - [ - '@babel/preset-env', - { - useBuiltIns: 'usage', - corejs: 3 - } - ] - ] -} \ No newline at end of file +const babelConfig = require('@nextcloud/babel-config') + +module.exports = babelConfig diff --git a/package-lock.json b/package-lock.json index 6cb7f3ce..dd815f67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,20 +8,12 @@ "name": "@nextcloud/cdav-library", "version": "1.3.0", "license": "AGPL-3.0", - "dependencies": { - "core-js": "^3.19.3", - "regenerator-runtime": "^0.14.0" - }, "devDependencies": { "@babel/core": "^7.16.0", - "@babel/preset-env": "^7.16.4", + "@nextcloud/babel-config": "^1.2.0", "@nextcloud/browserslist-config": "^3.0.0", - "babel-eslint": "^10.1.0", + "@nextcloud/eslint-config": "^8.4.1", "babel-loader": "^9.1.0", - "eslint": "^7.32.0", - "eslint-config-standard": "^16.0.3", - "eslint-loader": "^4.0.2", - "eslint-plugin-node": "^11.1.0", "istanbul": "^0.4.5", "jasmine": "^5.0.0", "karma": "^6.3.9", @@ -117,6 +109,35 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/eslint-parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.7.tgz", + "integrity": "sha512-SO5E3bVxDuxyNxM5agFv480YA2HO6ohZbGxbazZdIk3KQOPOGVNw6q78I9/lbviIf95eq6tPozeYnJLbjnC8IA==", + "dev": true, + "peer": true, + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, "node_modules/@babel/generator": { "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", @@ -137,6 +158,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", "dev": true, + "peer": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -149,6 +171,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", "dev": true, + "peer": true, "dependencies": { "@babel/types": "^7.22.15" }, @@ -192,6 +215,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz", "integrity": "sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", @@ -215,6 +239,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "regexpu-core": "^5.3.1", @@ -232,6 +257,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -282,6 +308,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz", "integrity": "sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==", "dev": true, + "peer": true, "dependencies": { "@babel/types": "^7.24.5" }, @@ -325,6 +352,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", "dev": true, + "peer": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -337,6 +365,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", "dev": true, + "peer": true, "engines": { "node": ">=6.9.0" } @@ -346,6 +375,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", @@ -363,6 +393,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-member-expression-to-functions": "^7.23.0", @@ -392,6 +423,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "dev": true, + "peer": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -443,6 +475,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-function-name": "^7.22.5", "@babel/template": "^7.22.15", @@ -498,6 +531,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz", "integrity": "sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.24.5" @@ -514,6 +548,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0" }, @@ -529,6 +564,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -546,6 +582,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.24.0" @@ -562,6 +599,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, + "peer": true, "engines": { "node": ">=6.9.0" }, @@ -574,6 +612,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -586,6 +625,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -598,6 +638,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -613,6 +654,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -625,6 +667,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -637,6 +680,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0" }, @@ -652,6 +696,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0" }, @@ -667,6 +712,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -679,6 +725,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -691,6 +738,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -703,6 +751,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -715,6 +764,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -727,6 +777,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -739,6 +790,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -751,6 +803,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -763,6 +816,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -778,6 +832,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -793,6 +848,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -809,6 +865,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0" }, @@ -824,6 +881,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz", "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.24.0", @@ -842,6 +900,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-module-imports": "^7.24.1", "@babel/helper-plugin-utils": "^7.24.0", @@ -859,6 +918,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0" }, @@ -874,6 +934,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz", "integrity": "sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.5" }, @@ -889,6 +950,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.24.1", "@babel/helper-plugin-utils": "^7.24.0" @@ -905,6 +967,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz", "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.24.4", "@babel/helper-plugin-utils": "^7.24.0", @@ -922,6 +985,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz", "integrity": "sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-compilation-targets": "^7.23.6", @@ -944,6 +1008,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/template": "^7.24.0" @@ -960,6 +1025,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz", "integrity": "sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.5" }, @@ -975,6 +1041,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.24.0" @@ -991,6 +1058,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0" }, @@ -1006,6 +1074,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -1022,6 +1091,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", "@babel/helper-plugin-utils": "^7.24.0" @@ -1038,6 +1108,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -1054,6 +1125,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" @@ -1070,6 +1142,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-function-name": "^7.23.0", @@ -1087,6 +1160,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -1103,6 +1177,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0" }, @@ -1118,6 +1193,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -1134,6 +1210,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0" }, @@ -1149,6 +1226,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.24.0" @@ -1165,6 +1243,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.24.0", @@ -1182,6 +1261,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.23.3", @@ -1200,6 +1280,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.24.0" @@ -1216,6 +1297,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1232,6 +1314,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0" }, @@ -1247,6 +1330,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -1263,6 +1347,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -1279,6 +1364,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz", "integrity": "sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-plugin-utils": "^7.24.5", @@ -1297,6 +1383,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-replace-supers": "^7.24.1" @@ -1313,6 +1400,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -1329,6 +1417,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz", "integrity": "sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -1346,6 +1435,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz", "integrity": "sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.5" }, @@ -1361,6 +1451,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.24.1", "@babel/helper-plugin-utils": "^7.24.0" @@ -1377,6 +1468,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz", "integrity": "sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.24.5", @@ -1395,6 +1487,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0" }, @@ -1410,6 +1503,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0", "regenerator-transform": "^0.15.2" @@ -1426,6 +1520,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0" }, @@ -1441,6 +1536,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0" }, @@ -1456,6 +1552,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" @@ -1472,6 +1569,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0" }, @@ -1487,6 +1585,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0" }, @@ -1502,6 +1601,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz", "integrity": "sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.5" }, @@ -1517,6 +1617,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.24.0" }, @@ -1532,6 +1633,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.24.0" @@ -1548,6 +1650,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.24.0" @@ -1564,6 +1667,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.24.0" @@ -1580,6 +1684,7 @@ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.5.tgz", "integrity": "sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==", "dev": true, + "peer": true, "dependencies": { "@babel/compat-data": "^7.24.4", "@babel/helper-compilation-targets": "^7.23.6", @@ -1675,6 +1780,7 @@ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -1688,13 +1794,15 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@babel/runtime": { "version": "7.24.1", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.1.tgz", "integrity": "sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==", "dev": true, + "peer": true, "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1769,31 +1877,97 @@ "node": ">=10.0.0" } }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.41.0.tgz", + "integrity": "sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==", + "dev": true, + "peer": true, + "dependencies": { + "comment-parser": "1.4.1", + "esquery": "^1.5.0", + "jsdoc-type-pratt-parser": "~4.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "peer": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", + "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "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": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "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.6.0", + "globals": "^13.19.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/globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "peer": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -1804,25 +1978,64 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "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.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, + "peer": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, + "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", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true, + "peer": true }, "node_modules/@isaacs/cliui": { "version": "8.0.2", @@ -1987,6 +2200,21 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@nextcloud/babel-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@nextcloud/babel-config/-/babel-config-1.2.0.tgz", + "integrity": "sha512-QOESlmX99UOfXdPANpoeFtfoRWWfKhBm1wXgF2lLnwpOBq4ZzdtqI+wphhWA/lkdfw/sftZzd1UJF/gcPDpiAw==", + "dev": true, + "engines": { + "node": "^20.0.0", + "npm": "^10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.24.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/preset-env": "^7.24.5" + } + }, "node_modules/@nextcloud/browserslist-config": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@nextcloud/browserslist-config/-/browserslist-config-3.0.1.tgz", @@ -1997,6 +2225,112 @@ "npm": "^10.0.0" } }, + "node_modules/@nextcloud/eslint-config": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@nextcloud/eslint-config/-/eslint-config-8.4.1.tgz", + "integrity": "sha512-ilrPxOnfVkB4dAddtkhbJmbYK9FwEVZ5oIJ2ipiE97rQz82TUZxmfEHE1tr87FbIvz0drIcREgGil3zuNWHjrg==", + "dev": true, + "engines": { + "node": "^20.0.0", + "npm": "^10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.24.5", + "@babel/eslint-parser": "^7.16.5", + "@nextcloud/eslint-plugin": "^2.2.1", + "@vue/eslint-config-typescript": "^13.0.0", + "eslint": "^8.27.0", + "eslint-config-standard": "^17.1.0", + "eslint-import-resolver-exports": "^1.0.0-beta.5", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsdoc": "^46.2.6", + "eslint-plugin-n": "^16.0.0", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-vue": "^9.7.0", + "typescript": "^5.0.2" + } + }, + "node_modules/@nextcloud/eslint-plugin": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@nextcloud/eslint-plugin/-/eslint-plugin-2.2.1.tgz", + "integrity": "sha512-RX+0FxpL1h2EzjNLeW0VSGTkbyWIq7WgV7QAjtyUmDbSGwf1ds9Zy5OcRkgXRHRIu/W0gB0DhS2iz9qXHphCzA==", + "dev": true, + "peer": true, + "dependencies": { + "fast-xml-parser": "^4.2.5", + "requireindex": "^1.2.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^20.0.0", + "npm": "^10.0.0" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/@nextcloud/eslint-plugin/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "peer": true, + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nodelib/fs.scandir": { + "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, + "peer": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "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, + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "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, + "peer": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -2073,6 +2407,283 @@ "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==", "dev": true }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.12.0.tgz", + "integrity": "sha512-7F91fcbuDf/d3S8o21+r3ZncGIke/+eWk0EpO21LXhDfLahriZF9CGj4fbAetEjlaBdjdSm9a6VeXbpbT6Z40Q==", + "dev": true, + "peer": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/type-utils": "7.12.0", + "@typescript-eslint/utils": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.12.0.tgz", + "integrity": "sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/typescript-estree": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.12.0.tgz", + "integrity": "sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.12.0.tgz", + "integrity": "sha512-lib96tyRtMhLxwauDWUp/uW3FMhLA6D0rJ8T7HmH7x23Gk1Gwwu8UZ94NMXBvOELn6flSPiBrCKlehkiXyaqwA==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.12.0", + "@typescript-eslint/utils": "7.12.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.12.0.tgz", + "integrity": "sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==", + "dev": true, + "peer": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.12.0.tgz", + "integrity": "sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.12.0.tgz", + "integrity": "sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==", + "dev": true, + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/typescript-estree": "7.12.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.12.0.tgz", + "integrity": "sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/types": "7.12.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true, + "peer": true + }, + "node_modules/@vue/eslint-config-typescript": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz", + "integrity": "sha512-MHh9SncG/sfqjVqjcuFLOLD6Ed4dRAis4HNt0dXASeAuLqIAx4YMB1/m2o4pUKK1vCt8fUvYG8KKX2Ot3BVZTg==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "^7.1.1", + "@typescript-eslint/parser": "^7.1.1", + "vue-eslint-parser": "^9.3.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "peerDependencies": { + "eslint": "^8.56.0", + "eslint-plugin-vue": "^9.0.0", + "typescript": ">=4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", @@ -2295,9 +2906,9 @@ } }, "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2311,6 +2922,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "peer": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -2389,15 +3001,6 @@ "node": ">=0.4.2" } }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -2432,6 +3035,16 @@ "node": ">= 8" } }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "peer": true, + "engines": { + "node": ">=14" + } + }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -2475,6 +3088,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, "node_modules/array.prototype.findlastindex": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", @@ -2555,15 +3178,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", @@ -2583,27 +3197,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "eslint": ">= 4.12.1" - } - }, "node_modules/babel-loader": { "version": "9.1.3", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", @@ -2695,6 +3288,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", "dev": true, + "peer": true, "dependencies": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.6.1", @@ -2709,6 +3303,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.1", "core-js-compat": "^3.36.1" @@ -2722,6 +3317,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz", "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==", "dev": true, + "peer": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.1" }, @@ -2744,15 +3340,6 @@ "node": "^4.5.0 || >= 5.9" } }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -2813,6 +3400,13 @@ "node": ">= 0.8" } }, + "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", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2824,12 +3418,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -2873,6 +3467,42 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/builtins": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", + "dev": true, + "peer": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/builtins/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -2901,6 +3531,7 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "peer": true, "engines": { "node": ">=6" } @@ -3024,18 +3655,22 @@ "node": ">=14" } }, + "node_modules/comment-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 12.0.0" + } + }, "node_modules/common-path-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", "dev": true }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -3096,21 +3731,12 @@ "node": ">= 0.6" } }, - "node_modules/core-js": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.1.tgz", - "integrity": "sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/core-js-compat": { "version": "3.36.1", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", "dev": true, + "peer": true, "dependencies": { "browserslist": "^4.23.0" }, @@ -3146,6 +3772,19 @@ "node": ">= 8" } }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "peer": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", @@ -3241,11 +3880,25 @@ "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", "dev": true }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "peer": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "peer": true, "dependencies": { "esutils": "^2.0.2" }, @@ -3289,15 +3942,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -3350,18 +3994,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, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", @@ -3603,66 +4235,94 @@ } }, "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.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, + "peer": true, "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "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", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "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", - "import-fresh": "^3.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "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", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "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-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", + "dev": true, + "peer": true, + "dependencies": { + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-compat-utils/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "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.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", + "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", "dev": true, "funding": [ { @@ -3678,11 +4338,29 @@ "url": "https://feross.org/support" } ], + "peer": true, + "engines": { + "node": ">=12.0.0" + }, "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 || ^16.0.0 ", + "eslint-plugin-promise": "^6.0.0" + } + }, + "node_modules/eslint-import-resolver-exports": { + "version": "1.0.0-beta.5", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-exports/-/eslint-import-resolver-exports-1.0.0-beta.5.tgz", + "integrity": "sha512-o6t0w7muUpXr7MkUVzD5igQoDfAQvTmcPp8HEAJdNF8eOuAO+yn6I/TTyMxz9ecCwzX7e02vzlkHURoScUuidg==", + "dev": true, + "peer": true, + "dependencies": { + "resolve.exports": "^2.0.0" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" } }, "node_modules/eslint-import-resolver-node": { @@ -3707,39 +4385,30 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-loader": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-4.0.2.tgz", - "integrity": "sha512-EDpXor6lsjtTzZpLUn7KmXs02+nIjGcgees9BYjNkWra3jVq5vVa8IoCKgzT2M7dNNeoMBtaSG83Bd40N3poLw==", - "deprecated": "This loader has been deprecated. Please use eslint-webpack-plugin", + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", "dev": true, + "peer": true, "dependencies": { - "find-cache-dir": "^3.3.1", - "fs-extra": "^8.1.0", - "loader-utils": "^2.0.0", - "object-hash": "^2.0.3", - "schema-utils": "^2.6.5" + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 10.13.0" + "node": "^14.18.0 || >=16.0.0" }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0", - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/eslint-loader/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" }, - "engines": { - "node": ">=6 <7 || >=8" + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" } }, "node_modules/eslint-module-utils": { @@ -3770,23 +4439,26 @@ "ms": "^2.1.1" } }, - "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==", + "node_modules/eslint-plugin-es-x": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.7.0.tgz", + "integrity": "sha512-aP3qj8BwiEDPttxQkZdI221DLKq9sI/qHolE2YSQL1/9+xk7dTV+tB1Fz8/IaCA+lnLA1bDEnvaS2LKs0k2Uig==", "dev": true, + "funding": [ + "https://github.com/sponsors/ota-meshi", + "https://opencollective.com/eslint" + ], + "peer": true, "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.6.0", + "eslint-compat-utils": "^0.5.1" }, "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "node": "^14.18.0 || >=16.0.0" }, "peerDependencies": { - "eslint": ">=4.19.1" + "eslint": ">=8" } }, "node_modules/eslint-plugin-import": { @@ -3844,92 +4516,193 @@ "node": ">=0.10.0" } }, - "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-jsdoc": { + "version": "46.10.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.10.1.tgz", + "integrity": "sha512-x8wxIpv00Y50NyweDUpa+58ffgSAI5sqe+zcZh33xphD0AVh+1kqr1ombaTRb7Fhpove1zfUuujlX9DWWBP5ag==", "dev": true, + "peer": true, "dependencies": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" + "@es-joy/jsdoccomment": "~0.41.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.5.0", + "is-builtin-module": "^3.2.1", + "semver": "^7.5.4", + "spdx-expression-parse": "^4.0.0" }, "engines": { - "node": ">=8.10.0" + "node": ">=16" }, "peerDependencies": { - "eslint": ">=5.16.0" + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/eslint-plugin-node/node_modules/ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", + "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "peer": true, "engines": { - "node": ">= 4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-jsdoc/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-n": { + "version": "16.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz", + "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==", + "dev": true, + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "builtins": "^5.0.1", + "eslint-plugin-es-x": "^7.5.0", + "get-tsconfig": "^4.7.0", + "globals": "^13.24.0", + "ignore": "^5.2.4", + "is-builtin-module": "^3.2.1", + "is-core-module": "^2.12.1", + "minimatch": "^3.1.2", + "resolve": "^1.22.2", + "semver": "^7.5.3" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "peer": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-n/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "peer": true, + "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.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.2.0.tgz", + "integrity": "sha512-QmAqwizauvnKOlifxyDj2ObfULpHQawlg/zQdgEixur9vl0CvZGv/LCJV2rtj3210QCoeGBzVMfMXqGAOr/4fA==", "dev": true, "peer": true, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" }, "peerDependencies": { - "eslint": "^7.0.0" + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/eslint-plugin-vue": { + "version": "9.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.26.0.tgz", + "integrity": "sha512-eTvlxXgd4ijE1cdur850G6KalZqk65k1JKoOI2d1kT3hr8sPD07j1q98FRFdNnpxBELGPWxZmInxeHGF/GxtqQ==", "dev": true, + "peer": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.0", + "vue-eslint-parser": "^9.4.2", + "xml-name-validator": "^4.0.0" }, "engines": { - "node": ">=8.0.0" + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "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==", + "node_modules/eslint-plugin-vue/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "peer": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "type-fest": "^0.20.2" }, "engines": { - "node": ">=6" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/eslint-plugin-vue/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=4" + "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==", + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "dependencies": { - "@babel/highlight": "^7.10.4" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" } }, "node_modules/eslint/node_modules/ansi-styles": { @@ -3937,6 +4710,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -3947,11 +4721,19 @@ "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", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3968,6 +4750,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -3979,13 +4762,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "peer": true, "engines": { "node": ">=10" }, @@ -3993,20 +4778,82 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "peer": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -4022,21 +4869,80 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/eslint/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "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, - "license": "ISC", + "peer": true, + "dependencies": { + "argparse": "^2.0.1" + }, "bin": { - "semver": "bin/semver.js" + "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": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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": { + "yocto-queue": "^0.1.0" + }, + "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/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" } }, "node_modules/eslint/node_modules/supports-color": { @@ -4044,6 +4950,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -4051,18 +4958,48 @@ "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.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "peer": true, "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.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/espree/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { @@ -4079,10 +5016,11 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, + "peer": true, "dependencies": { "estraverse": "^5.1.0" }, @@ -4095,6 +5033,7 @@ "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" } @@ -4165,6 +5104,23 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "peer": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -4177,17 +5133,51 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "node_modules/fast-xml-parser": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", + "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "peer": true, + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/fastest-levenshtein": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", "dev": true }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "peer": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "peer": true, "dependencies": { "flat-cache": "^3.0.4" }, @@ -4196,9 +5186,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -4240,105 +5230,6 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/find-up": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", @@ -4369,6 +5260,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, + "peer": true, "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -4477,12 +5369,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": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": 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", @@ -4543,6 +5429,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", + "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", + "dev": true, + "peer": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/glob": { "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", @@ -4602,6 +5501,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "peer": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -4620,6 +5540,13 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "peer": true + }, "node_modules/handlebars": { "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", @@ -4782,10 +5709,11 @@ } }, "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==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, + "peer": true, "engines": { "node": ">= 4" } @@ -4795,6 +5723,7 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "peer": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -4909,6 +5838,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true, + "peer": true, "engines": { "node": ">=0.8.19" } @@ -5010,6 +5940,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "peer": true, + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -5134,6 +6080,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-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -5594,6 +6550,16 @@ "node": ">=4" } }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", + "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -5622,7 +6588,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true + "dev": true, + "peer": true }, "node_modules/json5": { "version": "2.2.3", @@ -5636,15 +6603,6 @@ "node": ">=6" } }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/karma": { "version": "6.4.3", "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.3.tgz", @@ -5891,6 +6849,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "peer": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -5908,20 +6867,6 @@ "node": ">=6.11.5" } }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, "node_modules/locate-path": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", @@ -5947,19 +6892,15 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "dev": true, + "peer": true }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true + "dev": true, + "peer": true }, "node_modules/log-symbols": { "version": "2.2.0", @@ -6019,6 +6960,30 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, + "peer": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -6104,7 +7069,8 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true + "dev": true, + "peer": true }, "node_modules/negotiator": { "version": "0.6.3", @@ -6148,6 +7114,19 @@ "node": ">=0.10.0" } }, + "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/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -6157,15 +7136,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-hash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", @@ -6275,17 +7245,18 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "peer": true, "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -6326,6 +7297,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "peer": true, "dependencies": { "callsites": "^3.0.0" }, @@ -6400,6 +7372,16 @@ "node": "14 || >=16.14" } }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -6407,9 +7389,9 @@ "dev": true }, "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "engines": { "node": ">=8.6" @@ -6433,24 +7415,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/postcss-selector-parser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "dev": true, + "peer": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "peer": true, "engines": { "node": ">= 0.8.0" } }, - "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, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -6484,6 +7472,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peer": true + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -6545,13 +7554,15 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "dev": true, + "peer": true }, "node_modules/regenerate-unicode-properties": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, + "peer": true, "dependencies": { "regenerate": "^1.4.2" }, @@ -6562,13 +7573,16 @@ "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true, + "peer": true }, "node_modules/regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, + "peer": true, "dependencies": { "@babel/runtime": "^7.8.4" } @@ -6591,23 +7605,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/regexpu-core": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, + "peer": true, "dependencies": { "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", @@ -6625,6 +7628,7 @@ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, + "peer": true, "dependencies": { "jsesc": "~0.5.0" }, @@ -6637,6 +7641,7 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true, + "peer": true, "bin": { "jsesc": "bin/jsesc" } @@ -6659,6 +7664,16 @@ "node": ">=0.10.0" } }, + "node_modules/requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.5" + } + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -6708,10 +7723,42 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "peer": true, "engines": { "node": ">=4" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "peer": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "peer": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/rfdc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", @@ -6753,6 +7800,30 @@ "url": "https://github.com/sponsors/isaacs" } }, + "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": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peer": true, + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/safe-array-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", @@ -6813,24 +7884,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -6944,56 +7997,16 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "peer": true, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" } }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/socket.io": { "version": "4.7.4", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.4.tgz", @@ -7054,6 +8067,31 @@ "source-map": "^0.6.0" } }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "peer": true + }, + "node_modules/spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "dev": true, + "peer": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", + "dev": true, + "peer": true + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -7235,6 +8273,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "peer": true, "engines": { "node": ">=8" }, @@ -7242,6 +8281,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "dev": true, + "peer": true + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -7266,44 +8312,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/table": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.3.tgz", - "integrity": "sha512-5DkIxeA7XERBqMwJq0aHZOdMadBx4e6eDoFRuyT5VR82J0Ycg2DwM6GfA/EQAhJ+toRTaS1lIdSQCqgrmhPnlw==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.0.tgz", - "integrity": "sha512-L+cJ/+pkdICMueKR6wIx3VP2fjIx3yAhuvadUv/osv9yFD7OVZy442xFF+Oeu3ZvmhBGQzoF6mTSt+LUWBmGQg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -7383,18 +8391,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/terser/node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -7405,7 +8401,8 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true + "dev": true, + "peer": true }, "node_modules/tmp": { "version": "0.2.1", @@ -7449,6 +8446,19 @@ "node": ">=0.6" } }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -7480,6 +8490,7 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "peer": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -7492,6 +8503,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "peer": true, "engines": { "node": ">=10" }, @@ -7581,6 +8593,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "dev": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/ua-parser-js": { "version": "0.7.33", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", @@ -7634,6 +8660,7 @@ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -7643,6 +8670,7 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, + "peer": true, "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -7656,6 +8684,7 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -7665,19 +8694,11 @@ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, + "peer": true, "engines": { "node": ">=4" } }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -7726,37 +8747,116 @@ "punycode": "^2.1.0" } }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "peer": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", + "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", + "dev": true, + "peer": true, + "dependencies": { + "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": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "peer": true, "engines": { - "node": ">= 0.4.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "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, "engines": { - "node": ">= 0.8" + "node": ">=4.0" } }, - "node_modules/void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "node_modules/vue-eslint-parser/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, "node_modules/watchpack": { @@ -7887,18 +8987,6 @@ "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/webpack/node_modules/acorn-import-assertions": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", @@ -7985,9 +9073,9 @@ "dev": true }, "node_modules/word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -8127,6 +9215,16 @@ } } }, + "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/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -8238,6 +9336,27 @@ "semver": "^6.3.1" } }, + "@babel/eslint-parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.7.tgz", + "integrity": "sha512-SO5E3bVxDuxyNxM5agFv480YA2HO6ohZbGxbazZdIk3KQOPOGVNw6q78I9/lbviIf95eq6tPozeYnJLbjnC8IA==", + "dev": true, + "peer": true, + "requires": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "peer": true + } + } + }, "@babel/generator": { "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", @@ -8255,6 +9374,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", "dev": true, + "peer": true, "requires": { "@babel/types": "^7.22.5" } @@ -8264,6 +9384,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", "dev": true, + "peer": true, "requires": { "@babel/types": "^7.22.15" } @@ -8303,6 +9424,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz", "integrity": "sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==", "dev": true, + "peer": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", @@ -8320,6 +9442,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", "dev": true, + "peer": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "regexpu-core": "^5.3.1", @@ -8331,6 +9454,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", "dev": true, + "peer": true, "requires": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -8369,6 +9493,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz", "integrity": "sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==", "dev": true, + "peer": true, "requires": { "@babel/types": "^7.24.5" } @@ -8400,6 +9525,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", "dev": true, + "peer": true, "requires": { "@babel/types": "^7.22.5" } @@ -8408,13 +9534,15 @@ "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", - "dev": true + "dev": true, + "peer": true }, "@babel/helper-remap-async-to-generator": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dev": true, + "peer": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", @@ -8426,6 +9554,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", "dev": true, + "peer": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-member-expression-to-functions": "^7.23.0", @@ -8446,6 +9575,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "dev": true, + "peer": true, "requires": { "@babel/types": "^7.22.5" } @@ -8482,6 +9612,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, + "peer": true, "requires": { "@babel/helper-function-name": "^7.22.5", "@babel/template": "^7.22.15", @@ -8522,6 +9653,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz", "integrity": "sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==", "dev": true, + "peer": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.24.5" @@ -8532,6 +9664,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0" } @@ -8541,6 +9674,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -8552,6 +9686,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", "dev": true, + "peer": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.24.0" @@ -8562,6 +9697,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, + "peer": true, "requires": {} }, "@babel/plugin-syntax-async-generators": { @@ -8569,6 +9705,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -8578,6 +9715,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.12.13" } @@ -8587,6 +9725,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -8596,6 +9735,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -8605,6 +9745,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" } @@ -8614,6 +9755,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0" } @@ -8623,6 +9765,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0" } @@ -8632,6 +9775,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -8641,6 +9785,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -8650,6 +9795,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -8659,6 +9805,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -8668,6 +9815,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -8677,6 +9825,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -8686,6 +9835,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -8695,6 +9845,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -8704,6 +9855,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -8713,6 +9865,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -8722,6 +9875,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, + "peer": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -8732,6 +9886,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0" } @@ -8741,6 +9896,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz", "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==", "dev": true, + "peer": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.24.0", @@ -8753,6 +9909,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", "dev": true, + "peer": true, "requires": { "@babel/helper-module-imports": "^7.24.1", "@babel/helper-plugin-utils": "^7.24.0", @@ -8764,6 +9921,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0" } @@ -8773,6 +9931,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz", "integrity": "sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.5" } @@ -8782,6 +9941,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", "dev": true, + "peer": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.24.1", "@babel/helper-plugin-utils": "^7.24.0" @@ -8792,6 +9952,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz", "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==", "dev": true, + "peer": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.24.4", "@babel/helper-plugin-utils": "^7.24.0", @@ -8803,6 +9964,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz", "integrity": "sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==", "dev": true, + "peer": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-compilation-targets": "^7.23.6", @@ -8819,6 +9981,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/template": "^7.24.0" @@ -8829,6 +9992,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz", "integrity": "sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.5" } @@ -8838,6 +10002,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", "dev": true, + "peer": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.24.0" @@ -8848,6 +10013,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0" } @@ -8857,6 +10023,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -8867,6 +10034,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", "dev": true, + "peer": true, "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", "@babel/helper-plugin-utils": "^7.24.0" @@ -8877,6 +10045,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -8887,6 +10056,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" @@ -8897,6 +10067,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", "dev": true, + "peer": true, "requires": { "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-function-name": "^7.23.0", @@ -8908,6 +10079,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -8918,6 +10090,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0" } @@ -8927,6 +10100,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -8937,6 +10111,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0" } @@ -8946,6 +10121,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", "dev": true, + "peer": true, "requires": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.24.0" @@ -8956,6 +10132,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", "dev": true, + "peer": true, "requires": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.24.0", @@ -8967,6 +10144,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", "dev": true, + "peer": true, "requires": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.23.3", @@ -8979,6 +10157,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", "dev": true, + "peer": true, "requires": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.24.0" @@ -8989,6 +10168,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", "dev": true, + "peer": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -8999,6 +10179,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0" } @@ -9008,6 +10189,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -9018,6 +10200,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -9028,6 +10211,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz", "integrity": "sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==", "dev": true, + "peer": true, "requires": { "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-plugin-utils": "^7.24.5", @@ -9040,6 +10224,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-replace-supers": "^7.24.1" @@ -9050,6 +10235,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -9060,6 +10246,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz", "integrity": "sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -9071,6 +10258,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz", "integrity": "sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.5" } @@ -9080,6 +10268,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", "dev": true, + "peer": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.24.1", "@babel/helper-plugin-utils": "^7.24.0" @@ -9090,6 +10279,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz", "integrity": "sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==", "dev": true, + "peer": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.24.5", @@ -9102,6 +10292,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0" } @@ -9111,6 +10302,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0", "regenerator-transform": "^0.15.2" @@ -9121,6 +10313,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0" } @@ -9130,6 +10323,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0" } @@ -9139,6 +10333,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" @@ -9149,6 +10344,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0" } @@ -9158,6 +10354,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0" } @@ -9167,6 +10364,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz", "integrity": "sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.5" } @@ -9176,6 +10374,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.24.0" } @@ -9185,6 +10384,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", "dev": true, + "peer": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.24.0" @@ -9195,6 +10395,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", "dev": true, + "peer": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.24.0" @@ -9205,6 +10406,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", "dev": true, + "peer": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.24.0" @@ -9215,6 +10417,7 @@ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.5.tgz", "integrity": "sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==", "dev": true, + "peer": true, "requires": { "@babel/compat-data": "^7.24.4", "@babel/helper-compilation-targets": "^7.23.6", @@ -9304,6 +10507,7 @@ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -9314,13 +10518,15 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true + "dev": true, + "peer": true }, "@babel/runtime": { "version": "7.24.1", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.1.tgz", "integrity": "sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==", "dev": true, + "peer": true, "requires": { "regenerator-runtime": "^0.14.0" } @@ -9377,50 +10583,123 @@ "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==", "dev": true }, + "@es-joy/jsdoccomment": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.41.0.tgz", + "integrity": "sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==", + "dev": true, + "peer": true, + "requires": { + "comment-parser": "1.4.1", + "esquery": "^1.5.0", + "jsdoc-type-pratt-parser": "~4.0.0" + } + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "peer": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "peer": true + } + } + }, + "@eslint-community/regexpp": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", + "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", + "dev": true, + "peer": true + }, "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "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.6.0", + "globals": "^13.19.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 + }, "globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "peer": true, "requires": { "type-fest": "^0.20.2" } + }, + "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, + "requires": { + "argparse": "^2.0.1" + } } } }, + "@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "peer": true + }, "@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.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, + "peer": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" } }, + "@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", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true, + "peer": true }, "@isaacs/cliui": { "version": "8.0.2", @@ -9532,22 +10811,96 @@ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, - "@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@nextcloud/babel-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@nextcloud/babel-config/-/babel-config-1.2.0.tgz", + "integrity": "sha512-QOESlmX99UOfXdPANpoeFtfoRWWfKhBm1wXgF2lLnwpOBq4ZzdtqI+wphhWA/lkdfw/sftZzd1UJF/gcPDpiAw==", + "dev": true, + "requires": {} + }, + "@nextcloud/browserslist-config": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@nextcloud/browserslist-config/-/browserslist-config-3.0.1.tgz", + "integrity": "sha512-GZTxL5fsDgmFoot/qnRurjHCuHjSfOg+A6t4+P2TySXua2Q1Ex0lecZYlSnRuOR/W5BGOZ06ITTA/hbkSh1Ypg==", + "dev": true + }, + "@nextcloud/eslint-config": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@nextcloud/eslint-config/-/eslint-config-8.4.1.tgz", + "integrity": "sha512-ilrPxOnfVkB4dAddtkhbJmbYK9FwEVZ5oIJ2ipiE97rQz82TUZxmfEHE1tr87FbIvz0drIcREgGil3zuNWHjrg==", + "dev": true, + "requires": {} + }, + "@nextcloud/eslint-plugin": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@nextcloud/eslint-plugin/-/eslint-plugin-2.2.1.tgz", + "integrity": "sha512-RX+0FxpL1h2EzjNLeW0VSGTkbyWIq7WgV7QAjtyUmDbSGwf1ds9Zy5OcRkgXRHRIu/W0gB0DhS2iz9qXHphCzA==", + "dev": true, + "peer": true, + "requires": { + "fast-xml-parser": "^4.2.5", + "requireindex": "^1.2.0", + "semver": "^7.5.3" + }, + "dependencies": { + "semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "peer": true + } + } + }, + "@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "peer": true, + "requires": { + "eslint-scope": "5.1.1" + } + }, + "@nodelib/fs.scandir": { + "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, + "peer": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "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, + "peer": true + }, + "@nodelib/fs.walk": { + "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, + "peer": true, "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" } }, - "@nextcloud/browserslist-config": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@nextcloud/browserslist-config/-/browserslist-config-3.0.1.tgz", - "integrity": "sha512-GZTxL5fsDgmFoot/qnRurjHCuHjSfOg+A6t4+P2TySXua2Q1Ex0lecZYlSnRuOR/W5BGOZ06ITTA/hbkSh1Ypg==", - "dev": true - }, "@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -9621,6 +10974,167 @@ "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==", "dev": true }, + "@typescript-eslint/eslint-plugin": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.12.0.tgz", + "integrity": "sha512-7F91fcbuDf/d3S8o21+r3ZncGIke/+eWk0EpO21LXhDfLahriZF9CGj4fbAetEjlaBdjdSm9a6VeXbpbT6Z40Q==", + "dev": true, + "peer": true, + "requires": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/type-utils": "7.12.0", + "@typescript-eslint/utils": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + } + }, + "@typescript-eslint/parser": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.12.0.tgz", + "integrity": "sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/typescript-estree": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.12.0.tgz", + "integrity": "sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.12.0.tgz", + "integrity": "sha512-lib96tyRtMhLxwauDWUp/uW3FMhLA6D0rJ8T7HmH7x23Gk1Gwwu8UZ94NMXBvOELn6flSPiBrCKlehkiXyaqwA==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/typescript-estree": "7.12.0", + "@typescript-eslint/utils": "7.12.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + } + }, + "@typescript-eslint/types": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.12.0.tgz", + "integrity": "sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==", + "dev": true, + "peer": true + }, + "@typescript-eslint/typescript-estree": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.12.0.tgz", + "integrity": "sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "peer": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "peer": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "peer": true + } + } + }, + "@typescript-eslint/utils": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.12.0.tgz", + "integrity": "sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==", + "dev": true, + "peer": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/typescript-estree": "7.12.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.12.0.tgz", + "integrity": "sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/types": "7.12.0", + "eslint-visitor-keys": "^3.4.3" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "peer": true + } + } + }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true, + "peer": true + }, + "@vue/eslint-config-typescript": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz", + "integrity": "sha512-MHh9SncG/sfqjVqjcuFLOLD6Ed4dRAis4HNt0dXASeAuLqIAx4YMB1/m2o4pUKK1vCt8fUvYG8KKX2Ot3BVZTg==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/eslint-plugin": "^7.1.1", + "@typescript-eslint/parser": "^7.1.1", + "vue-eslint-parser": "^9.3.1" + } + }, "@webassemblyjs/ast": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", @@ -9817,9 +11331,9 @@ } }, "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true }, "acorn-jsx": { @@ -9827,6 +11341,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "peer": true, "requires": {} }, "ajv": { @@ -9884,12 +11399,6 @@ "dev": true, "optional": true }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -9915,6 +11424,13 @@ "picomatch": "^2.0.4" } }, + "are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "peer": true + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -9949,6 +11465,13 @@ "is-string": "^1.0.7" } }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "peer": true + }, "array.prototype.findlastindex": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", @@ -10005,12 +11528,6 @@ "is-shared-array-buffer": "^1.0.2" } }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", @@ -10024,20 +11541,6 @@ "dev": true, "peer": true }, - "babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - } - }, "babel-loader": { "version": "9.1.3", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", @@ -10104,6 +11607,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", "dev": true, + "peer": true, "requires": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.6.1", @@ -10115,6 +11619,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", "dev": true, + "peer": true, "requires": { "@babel/helper-define-polyfill-provider": "^0.6.1", "core-js-compat": "^3.36.1" @@ -10125,6 +11630,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz", "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==", "dev": true, + "peer": true, "requires": { "@babel/helper-define-polyfill-provider": "^0.6.1" } @@ -10141,12 +11647,6 @@ "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -10199,6 +11699,13 @@ } } }, + "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", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -10210,12 +11717,12 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" } }, "browserslist": { @@ -10236,6 +11743,32 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "peer": true + }, + "builtins": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", + "dev": true, + "peer": true, + "requires": { + "semver": "^7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "peer": true + } + } + }, "bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -10257,7 +11790,8 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true + "dev": true, + "peer": true }, "caniuse-lite": { "version": "1.0.30001599", @@ -10347,18 +11881,19 @@ "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true }, + "comment-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", + "dev": true, + "peer": true + }, "common-path-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", "dev": true }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -10412,16 +11947,12 @@ "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "dev": true }, - "core-js": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.1.tgz", - "integrity": "sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==" - }, "core-js-compat": { "version": "3.36.1", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", "dev": true, + "peer": true, "requires": { "browserslist": "^4.23.0" } @@ -10447,6 +11978,13 @@ "which": "^2.0.1" } }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "peer": true + }, "custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", @@ -10515,11 +12053,22 @@ "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", "dev": true }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "peer": true, + "requires": { + "path-type": "^4.0.0" + } + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "peer": true, "requires": { "esutils": "^2.0.2" } @@ -10560,12 +12109,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -10606,15 +12149,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, - "requires": { - "ansi-colors": "^4.1.1" - } - }, "ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", @@ -10804,76 +12338,75 @@ } }, "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.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, + "peer": true, "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "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", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "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", - "import-fresh": "^3.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "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", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "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, - "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", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { "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", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10884,6 +12417,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -10892,59 +12426,182 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "peer": true }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true + "dev": true, + "peer": true + }, + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "peer": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } }, "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "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.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "peer": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true + }, + "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, + "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" + } + }, + "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": { + "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": { - "type-fest": "^0.20.2" + "p-limit": "^3.0.2" } }, - "has-flag": { + "path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "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-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", + "dev": true, + "peer": true, + "requires": { + "semver": "^7.5.4" + }, + "dependencies": { + "semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "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.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", + "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", "dev": true, + "peer": true, "requires": {} }, + "eslint-import-resolver-exports": { + "version": "1.0.0-beta.5", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-exports/-/eslint-import-resolver-exports-1.0.0-beta.5.tgz", + "integrity": "sha512-o6t0w7muUpXr7MkUVzD5igQoDfAQvTmcPp8HEAJdNF8eOuAO+yn6I/TTyMxz9ecCwzX7e02vzlkHURoScUuidg==", + "dev": true, + "peer": true, + "requires": { + "resolve.exports": "^2.0.0" + } + }, "eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", @@ -10969,30 +12626,20 @@ } } }, - "eslint-loader": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-4.0.2.tgz", - "integrity": "sha512-EDpXor6lsjtTzZpLUn7KmXs02+nIjGcgees9BYjNkWra3jVq5vVa8IoCKgzT2M7dNNeoMBtaSG83Bd40N3poLw==", + "eslint-import-resolver-typescript": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", "dev": true, + "peer": true, "requires": { - "find-cache-dir": "^3.3.1", - "fs-extra": "^8.1.0", - "loader-utils": "^2.0.0", - "object-hash": "^2.0.3", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" } }, "eslint-module-utils": { @@ -11017,14 +12664,16 @@ } } }, - "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==", + "eslint-plugin-es-x": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.7.0.tgz", + "integrity": "sha512-aP3qj8BwiEDPttxQkZdI221DLKq9sI/qHolE2YSQL1/9+xk7dTV+tB1Fz8/IaCA+lnLA1bDEnvaS2LKs0k2Uig==", "dev": true, + "peer": true, "requires": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.6.0", + "eslint-compat-utils": "^0.5.1" } }, "eslint-plugin-import": { @@ -11075,36 +12724,123 @@ } } }, - "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-jsdoc": { + "version": "46.10.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.10.1.tgz", + "integrity": "sha512-x8wxIpv00Y50NyweDUpa+58ffgSAI5sqe+zcZh33xphD0AVh+1kqr1ombaTRb7Fhpove1zfUuujlX9DWWBP5ag==", "dev": true, + "peer": true, "requires": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" + "@es-joy/jsdoccomment": "~0.41.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.5.0", + "is-builtin-module": "^3.2.1", + "semver": "^7.5.4", + "spdx-expression-parse": "^4.0.0" }, "dependencies": { - "ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", - "dev": true + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "peer": true + }, + "semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "peer": true + } + } + }, + "eslint-plugin-n": { + "version": "16.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz", + "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==", + "dev": true, + "peer": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "builtins": "^5.0.1", + "eslint-plugin-es-x": "^7.5.0", + "get-tsconfig": "^4.7.0", + "globals": "^13.24.0", + "ignore": "^5.2.4", + "is-builtin-module": "^3.2.1", + "is-core-module": "^2.12.1", + "minimatch": "^3.1.2", + "resolve": "^1.22.2", + "semver": "^7.5.3" + }, + "dependencies": { + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "peer": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "peer": true } } }, "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.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.2.0.tgz", + "integrity": "sha512-QmAqwizauvnKOlifxyDj2ObfULpHQawlg/zQdgEixur9vl0CvZGv/LCJV2rtj3210QCoeGBzVMfMXqGAOr/4fA==", "dev": true, "peer": true, "requires": {} }, + "eslint-plugin-vue": { + "version": "9.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.26.0.tgz", + "integrity": "sha512-eTvlxXgd4ijE1cdur850G6KalZqk65k1JKoOI2d1kT3hr8sPD07j1q98FRFdNnpxBELGPWxZmInxeHGF/GxtqQ==", + "dev": true, + "peer": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.0", + "vue-eslint-parser": "^9.4.2", + "xml-name-validator": "^4.0.0" + }, + "dependencies": { + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "peer": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "peer": true + } + } + }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -11115,30 +12851,25 @@ "estraverse": "^4.1.1" } }, - "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, - "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 - }, "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.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "peer": true, "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "peer": true + } } }, "esprima": { @@ -11148,10 +12879,11 @@ "dev": true }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, + "peer": true, "requires": { "estraverse": "^5.1.0" }, @@ -11160,7 +12892,8 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true + "dev": true, + "peer": true } } }, @@ -11217,6 +12950,20 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "peer": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -11229,25 +12976,46 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fast-xml-parser": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", + "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==", + "dev": true, + "peer": true, + "requires": { + "strnum": "^1.0.5" + } + }, "fastest-levenshtein": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", "dev": true }, + "fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "peer": true, + "requires": { + "reusify": "^1.0.4" + } + }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "peer": true, "requires": { "flat-cache": "^3.0.4" } }, "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "requires": { "to-regex-range": "^5.0.1" @@ -11285,77 +13053,6 @@ } } }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - } - } - }, "find-up": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", @@ -11377,6 +13074,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, + "peer": true, "requires": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -11446,12 +13144,6 @@ "functions-have-names": "^1.2.3" } }, - "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": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, "functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", @@ -11494,6 +13186,16 @@ "get-intrinsic": "^1.1.1" } }, + "get-tsconfig": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", + "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", + "dev": true, + "peer": true, + "requires": { + "resolve-pkg-maps": "^1.0.0" + } + }, "glob": { "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", @@ -11538,6 +13240,21 @@ "define-properties": "^1.1.3" } }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "peer": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, "gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -11553,6 +13270,13 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "peer": true + }, "handlebars": { "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", @@ -11667,16 +13391,18 @@ } }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "peer": true }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "peer": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -11756,7 +13482,8 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "dev": true, + "peer": true }, "inflight": { "version": "1.0.6", @@ -11834,6 +13561,16 @@ "has-tostringtag": "^1.0.0" } }, + "is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "peer": true, + "requires": { + "builtin-modules": "^3.3.0" + } + }, "is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -11910,6 +13647,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-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -12253,6 +13997,13 @@ } } }, + "jsdoc-type-pratt-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", + "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", + "dev": true, + "peer": true + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -12275,7 +14026,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true + "dev": true, + "peer": true }, "json5": { "version": "2.2.3", @@ -12283,15 +14035,6 @@ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, "karma": { "version": "6.4.3", "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.3.tgz", @@ -12490,6 +14233,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "peer": true, "requires": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -12501,17 +14245,6 @@ "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", "dev": true }, - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, "locate-path": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", @@ -12531,19 +14264,15 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "dev": true, + "peer": true }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true + "dev": true, + "peer": true }, "log-symbols": { "version": "2.2.0", @@ -12588,6 +14317,24 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "peer": true + }, + "micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, + "peer": true, + "requires": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + } + }, "mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -12649,7 +14396,8 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true + "dev": true, + "peer": true }, "negotiator": { "version": "0.6.3", @@ -12684,18 +14432,22 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, + "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" + } + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true }, - "object-hash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", - "dev": true - }, "object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", @@ -12778,17 +14530,18 @@ } }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "peer": true, "requires": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "word-wrap": "^1.2.5" } }, "p-limit": { @@ -12814,6 +14567,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "peer": true, "requires": { "callsites": "^3.0.0" } @@ -12866,6 +14620,13 @@ } } }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "peer": true + }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -12873,9 +14634,9 @@ "dev": true }, "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "pkg-dir": { @@ -12887,17 +14648,23 @@ "find-up": "^6.3.0" } }, + "postcss-selector-parser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "dev": true, + "peer": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true + "dev": true, + "peer": true }, "punycode": { "version": "2.1.1", @@ -12920,6 +14687,13 @@ "side-channel": "^1.0.4" } }, + "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, + "peer": true + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -12969,13 +14743,15 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "dev": true, + "peer": true }, "regenerate-unicode-properties": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, + "peer": true, "requires": { "regenerate": "^1.4.2" } @@ -12983,13 +14759,16 @@ "regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true, + "peer": true }, "regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, + "peer": true, "requires": { "@babel/runtime": "^7.8.4" } @@ -13006,17 +14785,12 @@ "set-function-name": "^2.0.0" } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, "regexpu-core": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, + "peer": true, "requires": { "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", @@ -13031,6 +14805,7 @@ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, + "peer": true, "requires": { "jsesc": "~0.5.0" }, @@ -13039,7 +14814,8 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true + "dev": true, + "peer": true } } }, @@ -13055,6 +14831,13 @@ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, + "requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true, + "peer": true + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -13093,7 +14876,29 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true + "dev": true, + "peer": true + }, + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "peer": true + }, + "resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "peer": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "peer": true }, "rfdc": { "version": "1.3.0", @@ -13126,6 +14931,16 @@ } } }, + "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, + "peer": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, "safe-array-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", @@ -13163,17 +14978,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - }, "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -13260,42 +15064,12 @@ "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", "dev": true }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } + "peer": true }, "socket.io": { "version": "4.7.4", @@ -13348,6 +15122,31 @@ "source-map": "^0.6.0" } }, + "spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "peer": true + }, + "spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "dev": true, + "peer": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", + "dev": true, + "peer": true + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -13487,7 +15286,15 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true + "dev": true, + "peer": true + }, + "strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "dev": true, + "peer": true }, "supports-color": { "version": "5.5.0", @@ -13504,39 +15311,6 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, - "table": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.3.tgz", - "integrity": "sha512-5DkIxeA7XERBqMwJq0aHZOdMadBx4e6eDoFRuyT5VR82J0Ycg2DwM6GfA/EQAhJ+toRTaS1lIdSQCqgrmhPnlw==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ajv": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.0.tgz", - "integrity": "sha512-L+cJ/+pkdICMueKR6wIx3VP2fjIx3yAhuvadUv/osv9yFD7OVZy442xFF+Oeu3ZvmhBGQzoF6mTSt+LUWBmGQg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -13555,12 +15329,6 @@ "source-map-support": "~0.5.20" }, "dependencies": { - "acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true - }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -13599,7 +15367,8 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true + "dev": true, + "peer": true }, "tmp": { "version": "0.2.1", @@ -13631,6 +15400,14 @@ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, + "ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "peer": true, + "requires": {} + }, "tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -13661,6 +15438,7 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "peer": true, "requires": { "prelude-ls": "^1.2.1" } @@ -13669,7 +15447,8 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true + "dev": true, + "peer": true }, "type-is": { "version": "1.6.18", @@ -13732,6 +15511,13 @@ "is-typed-array": "^1.1.9" } }, + "typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "dev": true, + "peer": true + }, "ua-parser-js": { "version": "0.7.33", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", @@ -13762,13 +15548,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true + "dev": true, + "peer": true }, "unicode-match-property-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, + "peer": true, "requires": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -13778,19 +15566,15 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "dev": true + "dev": true, + "peer": true }, "unicode-property-aliases-ecmascript": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "dev": true, + "peer": true }, "unpipe": { "version": "1.0.0", @@ -13817,18 +15601,19 @@ "punycode": "^2.1.0" } }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "peer": true + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "dev": true }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -13841,6 +15626,56 @@ "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", "dev": true }, + "vue-eslint-parser": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", + "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", + "dev": true, + "peer": true, + "requires": { + "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": "^7.3.6" + }, + "dependencies": { + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "peer": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "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 + }, + "semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "peer": true + } + } + }, "watchpack": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", @@ -13883,12 +15718,6 @@ "webpack-sources": "^3.2.3" }, "dependencies": { - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true - }, "acorn-import-assertions": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", @@ -13991,9 +15820,9 @@ "dev": true }, "word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true }, "wordwrap": { @@ -14089,6 +15918,13 @@ "dev": true, "requires": {} }, + "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 + }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index b0f421fb..c14cc46c 100644 --- a/package.json +++ b/package.json @@ -43,14 +43,10 @@ }, "devDependencies": { "@babel/core": "^7.16.0", - "@babel/preset-env": "^7.16.4", + "@nextcloud/babel-config": "^1.2.0", "@nextcloud/browserslist-config": "^3.0.0", - "babel-eslint": "^10.1.0", + "@nextcloud/eslint-config": "^8.4.1", "babel-loader": "^9.1.0", - "eslint": "^7.32.0", - "eslint-config-standard": "^16.0.3", - "eslint-loader": "^4.0.2", - "eslint-plugin-node": "^11.1.0", "istanbul": "^0.4.5", "jasmine": "^5.0.0", "karma": "^6.3.9", @@ -62,9 +58,5 @@ "webpack": "^5.65.0", "webpack-cli": "^5.0.0", "webpack-merge": "^5.8.0" - }, - "dependencies": { - "core-js": "^3.19.3", - "regenerator-runtime": "^0.14.0" } } diff --git a/src/debug.js b/src/debug.js index 0be15a27..d048dbce 100644 --- a/src/debug.js +++ b/src/debug.js @@ -23,16 +23,16 @@ /** * creates a debug function bound to a context - * @param {String} context - * @returns {Function} + * @param {string} context + * @return {Function} */ export function debugFactory(context) { return (...args) => { if (debugFactory.enabled) { // eslint-disable-next-line no-console - console.debug(context, ...args); + console.debug(context, ...args) } - }; + } } -debugFactory.enabled = false; +debugFactory.enabled = false diff --git a/src/errors/attachError.js b/src/errors/attachError.js index d3286e29..fca9ffa7 100644 --- a/src/errors/attachError.js +++ b/src/errors/attachError.js @@ -30,12 +30,12 @@ export default class AttachError extends Error { /** * - * @param {Object} attach + * @param {object} attach */ constructor(attach) { - super(); + super() - Object.assign(this, attach); + Object.assign(this, attach) } } diff --git a/src/errors/networkRequestAbortedError.js b/src/errors/networkRequestAbortedError.js index 492e0089..17517119 100644 --- a/src/errors/networkRequestAbortedError.js +++ b/src/errors/networkRequestAbortedError.js @@ -21,6 +21,6 @@ * */ -import AttachError from './attachError.js'; +import AttachError from './attachError.js' export default class NetworkRequestAbortedError extends AttachError {} diff --git a/src/errors/networkRequestClientError.js b/src/errors/networkRequestClientError.js index 413ca47a..f695e1b1 100644 --- a/src/errors/networkRequestClientError.js +++ b/src/errors/networkRequestClientError.js @@ -21,6 +21,6 @@ * */ -import NetworkRequestHttpError from './networkRequestHttpError.js'; +import NetworkRequestHttpError from './networkRequestHttpError.js' export default class NetworkRequestClientError extends NetworkRequestHttpError {} diff --git a/src/errors/networkRequestError.js b/src/errors/networkRequestError.js index 3477c8ed..710ce66d 100644 --- a/src/errors/networkRequestError.js +++ b/src/errors/networkRequestError.js @@ -21,6 +21,6 @@ * */ -import AttachError from './attachError.js'; +import AttachError from './attachError.js' export default class NetworkRequestError extends AttachError {} diff --git a/src/errors/networkRequestHttpError.js b/src/errors/networkRequestHttpError.js index a1a6890f..93fe68b0 100644 --- a/src/errors/networkRequestHttpError.js +++ b/src/errors/networkRequestHttpError.js @@ -21,6 +21,6 @@ * */ -import AttachError from './attachError.js'; +import AttachError from './attachError.js' export default class NetworkRequestHttpError extends AttachError {} diff --git a/src/errors/networkRequestServerError.js b/src/errors/networkRequestServerError.js index 7f97d05d..36152bb6 100644 --- a/src/errors/networkRequestServerError.js +++ b/src/errors/networkRequestServerError.js @@ -21,6 +21,6 @@ * */ -import NetworkRequestHttpError from './networkRequestHttpError.js'; +import NetworkRequestHttpError from './networkRequestHttpError.js' export default class NetworkRequestServerError extends NetworkRequestHttpError {} diff --git a/src/index.js b/src/index.js index 0de3988a..d2642a16 100644 --- a/src/index.js +++ b/src/index.js @@ -20,18 +20,18 @@ * License along with this library. If not, see . * */ -import Parser from './parser.js'; -import Request from './request.js'; -import * as NS from './utility/namespaceUtility.js'; -import * as XMLUtility from './utility/xmlUtility'; -import { CalendarHome } from './models/calendarHome.js'; -import { AddressBookHome } from './models/addressBookHome.js'; -import { Principal } from './models/principal.js'; +import Parser from './parser.js' +import Request from './request.js' +import * as NS from './utility/namespaceUtility.js' +import * as XMLUtility from './utility/xmlUtility.js' +import { CalendarHome } from './models/calendarHome.js' +import { AddressBookHome } from './models/addressBookHome.js' +import { Principal } from './models/principal.js' -import { debugFactory } from './debug.js'; -const debug = debugFactory('index.js'); +import { debugFactory } from './debug.js' +const debug = debugFactory('index.js') -export { debugFactory as debug, NS as namespaces }; +export { debugFactory as debug, NS as namespaces } /** * @@ -39,46 +39,46 @@ export { debugFactory as debug, NS as namespaces }; export default class DavClient { /** - * @param {Object} options - * @param {String} options.rootUrl + * @param {object} options + * @param {string} options.rootUrl * @param {Function} xhrProvider - * @param {Object} factories + * @param {object} factories */ constructor(options, xhrProvider = null, factories = {}) { /** * root URL of DAV Server * - * @type {String} + * @type {string} */ - this.rootUrl = null; + this.rootUrl = null if (options.rootUrl.slice(-1) !== '/') { - options.rootUrl += '/'; + options.rootUrl += '/' } // overwrite rootUrl if passed as argument - Object.assign(this, options); + Object.assign(this, options) /** * List of advertised DAV features * - * @type {String[]} + * @type {string[]} */ - this.advertisedFeatures = []; + this.advertisedFeatures = [] /** * Principal object of current user * * @type {Principal} */ - this.currentUserPrincipal = null; + this.currentUserPrincipal = null /** * Array of links to principal collections * - * @type {String[]} + * @type {string[]} */ - this.principalCollections = []; + this.principalCollections = [] /** * Array of calendar homes @@ -86,7 +86,7 @@ export default class DavClient { * * @type {CalendarHome[]} */ - this.calendarHomes = []; + this.calendarHomes = [] /** * The calendar-home that houses all public calendars @@ -95,7 +95,7 @@ export default class DavClient { * * @type {CalendarHome|null} */ - this.publicCalendarHome = null; + this.publicCalendarHome = null /** * Array of address book homes @@ -103,67 +103,67 @@ export default class DavClient { * * @type {AddressBookHome[]} */ - this.addressBookHomes = []; + this.addressBookHomes = [] /** * * @type {Parser} */ - this.parser = new Parser(); + this.parser = new Parser() /** * * @type {boolean} * @private */ - this._isConnected = false; + this._isConnected = false /** * * @type {Request} * @private */ - this._request = new Request(this.rootUrl, this.parser, xhrProvider); + this._request = new Request(this.rootUrl, this.parser, xhrProvider) } /** * initializes the DAVClient - * @param {Object} options - * @returns {Promise} + * @param {object} options + * @return {Promise} */ async connect(options = { enableCalDAV: false, enableCardDAV: false }) { if (this._isConnected) { - return this; + return this } // we don't support rfc 6764 for now - Pull-requests welcome :) if (!this.rootUrl) { - throw new Error('No rootUrl configured'); + throw new Error('No rootUrl configured') } - const principalUrl = await this._discoverPrincipalUri(); - debug(`PrincipalURL: ${principalUrl}`); + const principalUrl = await this._discoverPrincipalUri() + debug(`PrincipalURL: ${principalUrl}`) - const propFindList = Principal.getPropFindList(options); + const propFindList = Principal.getPropFindList(options) if (options.enableCalDAV || options.enableCardDAV) { propFindList.push( [NS.DAV, 'principal-collection-set'], - [NS.DAV, 'supported-report-set'] - ); + [NS.DAV, 'supported-report-set'], + ) } - const response = await this._request.propFind(principalUrl, propFindList); + const response = await this._request.propFind(principalUrl, propFindList) - this.currentUserPrincipal = new Principal(null, this._request, principalUrl, response.body); - this._extractAdvertisedDavFeatures(response.xhr); - this._extractAddressBookHomes(response.body); - this._extractCalendarHomes(response.body); - this._extractPrincipalCollectionSets(response.body); - this._createPublicCalendarHome(); + this.currentUserPrincipal = new Principal(null, this._request, principalUrl, response.body) + this._extractAdvertisedDavFeatures(response.xhr) + this._extractAddressBookHomes(response.body) + this._extractCalendarHomes(response.body) + this._extractPrincipalCollectionSets(response.body) + this._createPublicCalendarHome() - this._isConnected = true; + this._isConnected = true - return this; + return this } // /** @@ -190,131 +190,131 @@ export default class DavClient { /** * performs a principal property search based on a principal's displayname * - * @param {String} name - * @returns {Promise} + * @param {string} name + * @return {Promise} */ async principalPropertySearchByDisplayname(name) { return this.principalPropertySearch([ - { name: [NS.DAV, 'displayname'] } - ], name); + { name: [NS.DAV, 'displayname'] }, + ], name) } /** * performs a principal property search based on a principal's displayname OR email address * - * @param {String} value - * @returns {Promise} + * @param {string} value + * @return {Promise} */ async principalPropertySearchByDisplaynameOrEmail(value) { return this.principalPropertySearch([ { name: [NS.DAV, 'displayname'] }, - { name: [NS.SABREDAV, 'email-address'] } - ], value, 'anyof'); + { name: [NS.SABREDAV, 'email-address'] }, + ], value, 'anyof') } /** * Performs a principal property based on the address of a room * - * @param {String} address Address of the building the room is in - * @returns {Promise} + * @param {string} address Address of the building the room is in + * @return {Promise} */ async principalPropertySearchByAddress(address) { return this.principalPropertySearch([ - { name: [NS.NEXTCLOUD, 'room-building-address'] } - ], address); + { name: [NS.NEXTCLOUD, 'room-building-address'] }, + ], address) } /** * Performs a principal property search based on the address and story of a room * - * @param {String} address Address of the building the room is in - * @param {String} story Story inside the building the room is in - * @returns {Promise<[]>} + * @param {string} address Address of the building the room is in + * @param {string} story Story inside the building the room is in + * @return {Promise<[]>} */ async principalPropertySearchByAddressAndStory(address, story) { const [skeleton] = XMLUtility.getRootSkeleton( - [NS.DAV, 'principal-property-search']); + [NS.DAV, 'principal-property-search']) skeleton.children.push({ name: [NS.DAV, 'property-search'], children: [{ name: [NS.DAV, 'prop'], children: [{ - name: [NS.NEXTCLOUD, 'room-building-address'] - }] + name: [NS.NEXTCLOUD, 'room-building-address'], + }], }, { name: [NS.DAV, 'match'], - value: address - }] - }); + value: address, + }], + }) skeleton.children.push({ name: [NS.DAV, 'property-search'], children: [{ name: [NS.DAV, 'prop'], children: [{ - name: [NS.NEXTCLOUD, 'room-building-story'] - }] + name: [NS.NEXTCLOUD, 'room-building-story'], + }], }, { name: [NS.DAV, 'match'], - value: story - }] - }); + value: story, + }], + }) skeleton.children.push({ name: [NS.DAV, 'prop'], children: Principal .getPropFindList({ enableCalDAV: true }) - .map((propFindListItem) => ({ name: propFindListItem })) - }); + .map((propFindListItem) => ({ name: propFindListItem })), + }) // We are searching all principal collections, not just one - skeleton.children.push({ name: [NS.DAV, 'apply-to-principal-collection-set'] }); + skeleton.children.push({ name: [NS.DAV, 'apply-to-principal-collection-set'] }) - const xml = XMLUtility.serialize(skeleton); + const xml = XMLUtility.serialize(skeleton) return this._request.report(this.rootUrl, { Depth: 0 }, xml).then((response) => { - const result = []; + const result = [] Object.entries(response.body).forEach(([path, props]) => { - const url = this._request.pathname(path); - result.push(new Principal(null, this._request, url, props)); - }); + const url = this._request.pathname(path) + result.push(new Principal(null, this._request, url, props)) + }) - return result; - }); + return result + }) } /** * Performs a principal property search based on multiple advanced filters * - * @param {Object} query The destructuring query object - * @param {String=} query.displayName The display name to filter by - * @param {Number=} query.capacity The minimum required seating capacity - * @param {String[]=} query.features The features to filter by - * @param {String=} query.roomType The room type to filter by + * @param {object} query The destructuring query object + * @param {string=} query.displayName The display name to filter by + * @param {number=} query.capacity The minimum required seating capacity + * @param {string[]=} query.features The features to filter by + * @param {string=} query.roomType The room type to filter by * @return {Promise} */ async advancedPrincipalPropertySearch(query) { - const [skeleton] = XMLUtility.getRootSkeleton([NS.DAV, 'principal-property-search']); + const [skeleton] = XMLUtility.getRootSkeleton([NS.DAV, 'principal-property-search']) // Every prop has to match skeleton.attributes = [ - ['test', 'allof'] - ]; + ['test', 'allof'], + ] - const { displayName, capacity, features, roomType } = query; + const { displayName, capacity, features, roomType } = query if (displayName) { skeleton.children.push({ name: [NS.DAV, 'property-search'], children: [{ name: [NS.DAV, 'prop'], children: [ - { name: [NS.DAV, 'displayname'] } - ] + { name: [NS.DAV, 'displayname'] }, + ], }, { name: [NS.DAV, 'match'], - value: displayName - }] - }); + value: displayName, + }], + }) } if (capacity) { skeleton.children.push({ @@ -322,13 +322,13 @@ export default class DavClient { children: [{ name: [NS.DAV, 'prop'], children: [{ - name: [NS.NEXTCLOUD, 'room-seating-capacity'] - }] + name: [NS.NEXTCLOUD, 'room-seating-capacity'], + }], }, { name: [NS.DAV, 'match'], - value: capacity - }] - }); + value: capacity, + }], + }) } if (features && features.length > 0) { skeleton.children.push({ @@ -336,13 +336,13 @@ export default class DavClient { children: [{ name: [NS.DAV, 'prop'], children: [{ - name: [NS.NEXTCLOUD, 'room-features'] - }] + name: [NS.NEXTCLOUD, 'room-features'], + }], }, { name: [NS.DAV, 'match'], - value: features.join(',') - }] - }); + value: features.join(','), + }], + }) } if (roomType) { skeleton.children.push({ @@ -350,38 +350,38 @@ export default class DavClient { children: [{ name: [NS.DAV, 'prop'], children: [{ - name: [NS.NEXTCLOUD, 'room-type'] - }] + name: [NS.NEXTCLOUD, 'room-type'], + }], }, { name: [NS.DAV, 'match'], - value: roomType - }] - }); + value: roomType, + }], + }) } // Do not perform search if no parameter is given if (skeleton.children.length === 0) { - return []; + return [] } skeleton.children.push({ name: [NS.DAV, 'prop'], children: Principal .getPropFindList({ enableCalDAV: true }) - .map((propFindListItem) => ({ name: propFindListItem })) - }); + .map((propFindListItem) => ({ name: propFindListItem })), + }) // We are searching all principal collections, not just one - skeleton.children.push({ name: [NS.DAV, 'apply-to-principal-collection-set'] }); + skeleton.children.push({ name: [NS.DAV, 'apply-to-principal-collection-set'] }) - const xml = XMLUtility.serialize(skeleton); - const response = await this._request.report(this.rootUrl, { Depth: 0 }, xml); + const xml = XMLUtility.serialize(skeleton) + const response = await this._request.report(this.rootUrl, { Depth: 0 }, xml) return Object .entries(response.body) .map(([path, props]) => { - const url = this._request.pathname(path); - return new Principal(null, this._request, url, props); - }); + const url = this._request.pathname(path) + return new Principal(null, this._request, url, props) + }) } /** @@ -389,84 +389,84 @@ export default class DavClient { * @see https://tools.ietf.org/html/rfc3744#section-9.4 * * @param {Array} props - * @param {String} match - * @param {String} test 'anyof', 'allof' or none - * @returns {Promise} + * @param {string} match + * @param {string} test 'anyof', 'allof' or none + * @return {Promise} */ async principalPropertySearch(props, match, test) { const [skeleton, propSearch] = XMLUtility.getRootSkeleton( [NS.DAV, 'principal-property-search'], - [NS.DAV, 'property-search'] - ); + [NS.DAV, 'property-search'], + ) if (test) { skeleton.attributes = [ - ['test', test] - ]; + ['test', test], + ] } propSearch.push({ name: [NS.DAV, 'prop'], - children: props + children: props, }, { name: [NS.DAV, 'match'], - value: match - }); + value: match, + }) skeleton.children.push({ name: [NS.DAV, 'prop'], children: Principal .getPropFindList({ enableCalDAV: true }) - .map((propFindListItem) => ({ name: propFindListItem })) - }); + .map((propFindListItem) => ({ name: propFindListItem })), + }) // We are searching all principal collections, not just one - skeleton.children.push({ name: [NS.DAV, 'apply-to-principal-collection-set'] }); + skeleton.children.push({ name: [NS.DAV, 'apply-to-principal-collection-set'] }) - const xml = XMLUtility.serialize(skeleton); + const xml = XMLUtility.serialize(skeleton) return this._request.report(this.rootUrl, { Depth: 0 }, xml).then((response) => { - const result = []; + const result = [] Object.entries(response.body).forEach(([path, props]) => { - const url = this._request.pathname(path); - result.push(new Principal(null, this._request, url, props)); - }); + const url = this._request.pathname(path) + result.push(new Principal(null, this._request, url, props)) + }) - return result; - }); + return result + }) } /** * finds one principal at a given principalUrl * - * @param {String} principalUrl - * @returns {Promise} + * @param {string} principalUrl + * @return {Promise} */ async findPrincipal(principalUrl) { return this._request.propFind(principalUrl, Principal.getPropFindList()).then(({ body }) => { - return new Principal(null, this._request, principalUrl, body); + return new Principal(null, this._request, principalUrl, body) }).catch((err) => { - console.debug(err); - }); + console.debug(err) + }) } /** * discovers the accounts principal uri solely based on rootURL * - * @returns {Promise} + * @return {Promise} * @private */ async _discoverPrincipalUri() { const response = await this._request.propFind(this.rootUrl, [ - [NS.DAV, 'current-user-principal'] - ], 0); + [NS.DAV, 'current-user-principal'], + ], 0) if (!response.body['{DAV:}current-user-principal']) { - throw new Error('Error retrieving current user principal'); + throw new Error('Error retrieving current user principal') } if (response.body['{DAV:}current-user-principal'].type === 'unauthenticated') { - throw new Error('Current user is not authenticated'); + throw new Error('Current user is not authenticated') } - return this._request.pathname(response.body['{DAV:}current-user-principal'].href); + return this._request.pathname(response.body['{DAV:}current-user-principal'].href) } /** @@ -476,20 +476,20 @@ export default class DavClient { * a user will most commonly only have one calendar-home, * the CalDAV standard allows multiple calendar-homes though * - * @param {Object} props - * @returns void + * @param {object} props + * @return void * @private */ async _extractCalendarHomes(props) { - const calendarHomes = props[`{${NS.IETF_CALDAV}}calendar-home-set`]; + const calendarHomes = props[`{${NS.IETF_CALDAV}}calendar-home-set`] if (!calendarHomes) { - return; + return } this.calendarHomes = calendarHomes.map((calendarHome) => { - const url = this._request.pathname(calendarHome); - return new CalendarHome(this, this._request, url, props); - }); + const url = this._request.pathname(calendarHome) + return new CalendarHome(this, this._request, url, props) + }) } /** @@ -499,58 +499,58 @@ export default class DavClient { * a user will most commonly only have one address-book-home, * the CardDAV standard allows multiple address-book-homes though * - * @param {Object} props - * @returns void + * @param {object} props + * @return void * @private */ async _extractAddressBookHomes(props) { - const addressBookHomes = props[`{${NS.IETF_CARDDAV}}addressbook-home-set`]; + const addressBookHomes = props[`{${NS.IETF_CARDDAV}}addressbook-home-set`] if (!addressBookHomes) { - return; + return } this.addressBookHomes = addressBookHomes.map((addressbookHome) => { - const url = this._request.pathname(addressbookHome); - return new AddressBookHome(this, this._request, url, props); - }); + const url = this._request.pathname(addressbookHome) + return new AddressBookHome(this, this._request, url, props) + }) } /** * extracts principalCollection Information from an existing props object * returned from the server * - * @param {Object} props - * @returns void + * @param {object} props + * @return void * @private */ _extractPrincipalCollectionSets(props) { - const principalCollectionSets = props[`{${NS.DAV}}principal-collection-set`]; + const principalCollectionSets = props[`{${NS.DAV}}principal-collection-set`] this.principalCollections = principalCollectionSets.map((principalCollection) => { - return this._request.pathname(principalCollection); - }); + return this._request.pathname(principalCollection) + }) } /** * extracts the advertised features supported by the DAV server * * @param {XMLHttpRequest} xhr - * @returns void + * @return void * @private */ _extractAdvertisedDavFeatures(xhr) { - const dav = xhr.getResponseHeader('DAV'); - this.advertisedFeatures.push(...dav.split(',').map((s) => s.trim())); + const dav = xhr.getResponseHeader('DAV') + this.advertisedFeatures.push(...dav.split(',').map((s) => s.trim())) } /** * Creates a public calendar home * - * @returns void + * @return void * @private */ _createPublicCalendarHome() { - const url = this._request.pathname(this.rootUrl) + 'public-calendars/'; - this.publicCalendarHome = new CalendarHome(this, this._request, url, {}); + const url = this._request.pathname(this.rootUrl) + 'public-calendars/' + this.publicCalendarHome = new CalendarHome(this, this._request, url, {}) } } diff --git a/src/models/addressBook.js b/src/models/addressBook.js index 856118c7..a183ab19 100644 --- a/src/models/addressBook.js +++ b/src/models/addressBook.js @@ -21,16 +21,16 @@ * */ -import { davCollectionShareable } from './davCollectionShareable.js'; -import { DavCollection } from './davCollection.js'; -import * as NS from '../utility/namespaceUtility.js'; -import * as StringUtility from '../utility/stringUtility.js'; -import * as XMLUtility from '../utility/xmlUtility.js'; -import addressBookPropSet from '../propset/addressBookPropSet.js'; -import { VCard } from './vcard.js'; +import { davCollectionShareable } from './davCollectionShareable.js' +import { DavCollection } from './davCollection.js' +import * as NS from '../utility/namespaceUtility.js' +import * as StringUtility from '../utility/stringUtility.js' +import * as XMLUtility from '../utility/xmlUtility.js' +import addressBookPropSet from '../propset/addressBookPropSet.js' +import { VCard } from './vcard.js' -import { debugFactory } from '../debug.js'; -const debug = debugFactory('AddressBook'); +import { debugFactory } from '../debug.js' +const debug = debugFactory('AddressBook') /** * This class represents an address book collection as specified in @@ -52,23 +52,23 @@ export class AddressBook extends davCollectionShareable(DavCollection) { * @inheritDoc */ constructor(...args) { - super(...args); + super(...args) - super._registerObjectFactory('text/vcard', VCard); - super._registerPropSetFactory(addressBookPropSet); + super._registerObjectFactory('text/vcard', VCard) + super._registerPropSetFactory(addressBookPropSet) - super._exposeProperty('description', NS.IETF_CARDDAV, 'addressbook-description', true); - super._exposeProperty('enabled', NS.OWNCLOUD, 'enabled', true); - super._exposeProperty('readOnly', NS.OWNCLOUD, 'read-only'); + super._exposeProperty('description', NS.IETF_CARDDAV, 'addressbook-description', true) + super._exposeProperty('enabled', NS.OWNCLOUD, 'enabled', true) + super._exposeProperty('readOnly', NS.OWNCLOUD, 'read-only') } /** * finds all VCards in this address book * - * @returns {Promise} + * @return {Promise} */ findAllVCards() { - return super.findAllByFilter((elm) => elm instanceof VCard); + return super.findAllByFilter((elm) => elm instanceof VCard) } /** @@ -77,76 +77,76 @@ export class AddressBook extends davCollectionShareable(DavCollection) { * Example use: * findAllAndFilterBySimpleProperties(['EMAIL', 'UID', 'CATEGORIES', 'FN', 'TEL', 'NICKNAME', 'N']) * - * @param {String[]} props - * @returns {Promise} + * @param {string[]} props + * @return {Promise} */ async findAllAndFilterBySimpleProperties(props) { - const children = []; + const children = [] props.forEach((prop) => { children.push({ name: [NS.IETF_CARDDAV, 'prop'], - attributes: [['name', prop]] - }); - }); + attributes: [['name', prop]], + }) + }) return this.addressbookQuery(null, [{ - name: [NS.DAV, 'getetag'] + name: [NS.DAV, 'getetag'], }, { - name: [NS.DAV, 'getcontenttype'] + name: [NS.DAV, 'getcontenttype'], }, { - name: [NS.DAV, 'resourcetype'] + name: [NS.DAV, 'resourcetype'], }, { name: [NS.IETF_CARDDAV, 'address-data'], - children: children + children, }, { - name: [NS.NEXTCLOUD, 'has-photo'] - }]); + name: [NS.NEXTCLOUD, 'has-photo'], + }]) } /** * creates a new VCard object in this address book * - * @param {String} data - * @returns {Promise} + * @param {string} data + * @return {Promise} */ async createVCard(data) { - debug('creating VCard object'); + debug('creating VCard object') - const name = StringUtility.uid('', 'vcf'); + const name = StringUtility.uid('', 'vcf') const headers = { - 'Content-Type': 'text/vcard; charset=utf-8' - }; + 'Content-Type': 'text/vcard; charset=utf-8', + } - return super.createObject(name, headers, data); + return super.createObject(name, headers, data) } /** * sends an addressbook query as defined in * https://tools.ietf.org/html/rfc6352#section-8.6 * - * @param {Object[]} filter - * @param {Object[]} prop - * @param {Number} limit - * @param {String} test Either anyof or allof - * @returns {Promise} + * @param {object[]} filter + * @param {object[]} prop + * @param {number} limit + * @param {string} test Either anyof or allof + * @return {Promise} */ async addressbookQuery(filter, prop = null, limit = null, test = 'anyof') { - debug('sending an addressbook-query request'); + debug('sending an addressbook-query request') const [skeleton] = XMLUtility.getRootSkeleton( - [NS.IETF_CARDDAV, 'addressbook-query'] - ); + [NS.IETF_CARDDAV, 'addressbook-query'], + ) if (!prop) { skeleton.children.push({ name: [NS.DAV, 'prop'], - children: this._propFindList.map((p) => ({ name: p })) - }); + children: this._propFindList.map((p) => ({ name: p })), + }) } else { skeleton.children.push({ name: [NS.DAV, 'prop'], - children: prop - }); + children: prop, + }) } // According to the spec, every address-book query needs a filter, @@ -155,10 +155,10 @@ export class AddressBook extends davCollectionShareable(DavCollection) { skeleton.children.push({ name: [NS.IETF_CARDDAV, 'filter'], attributes: [ - ['test', test] + ['test', test], ], - children: filter - }); + children: filter, + }) } if (limit) { @@ -166,40 +166,40 @@ export class AddressBook extends davCollectionShareable(DavCollection) { name: [NS.IETF_CARDDAV, 'limit'], children: [{ name: [NS.IETF_CARDDAV, 'nresults'], - value: limit - }] - }); + value: limit, + }], + }) } const headers = { - Depth: '1' - }; - const body = XMLUtility.serialize(skeleton); - const response = await this._request.report(this.url, headers, body); - return super._handleMultiStatusResponse(response, AddressBook._isRetrievalPartial(prop)); + Depth: '1', + } + const body = XMLUtility.serialize(skeleton) + const response = await this._request.report(this.url, headers, body) + return super._handleMultiStatusResponse(response, AddressBook._isRetrievalPartial(prop)) } /** * sends an addressbook multiget query as defined in * https://tools.ietf.org/html/rfc6352#section-8.7 * - * @param {String[]} hrefs - * @param {Object[]} prop - * @returns {Promise} + * @param {string[]} hrefs + * @param {object[]} prop + * @return {Promise} */ async addressbookMultiget(hrefs = [], prop) { - debug('sending an addressbook-multiget request'); + debug('sending an addressbook-multiget request') if (hrefs.length === 0) { - return []; + return [] } const headers = { - Depth: '1' - }; - const body = this._buildMultiGetBody(hrefs, prop); - const response = await this._request.report(this.url, headers, body); - return super._handleMultiStatusResponse(response, AddressBook._isRetrievalPartial(prop)); + Depth: '1', + } + const body = this._buildMultiGetBody(hrefs, prop) + const response = await this._request.report(this.url, headers, body) + return super._handleMultiStatusResponse(response, AddressBook._isRetrievalPartial(prop)) } /** @@ -207,59 +207,59 @@ export class AddressBook extends davCollectionShareable(DavCollection) { * https://tools.ietf.org/html/rfc6352#section-8.7 * and requests a download of the result * - * @param {String[]} hrefs - * @param {Object[]} prop - * @returns {Promise<{Object}>} - * @property {String|Object} body - * @property {Number} status + * @param {string[]} hrefs + * @param {object[]} prop + * @return {Promise<{Object}>} + * @property {string | object} body + * @property {number} status * @property {XMLHttpRequest} xhr */ async addressbookMultigetExport(hrefs = [], prop) { - debug('sending an addressbook-multiget request and request download'); + debug('sending an addressbook-multiget request and request download') if (hrefs.length === 0) { - return ''; + return '' } const headers = { - Depth: '1' - }; - const body = this._buildMultiGetBody(hrefs, prop); - return this._request.report(this.url + '?export', headers, body); + Depth: '1', + } + const body = this._buildMultiGetBody(hrefs, prop) + return this._request.report(this.url + '?export', headers, body) } /** * - * @param {String[]} hrefs - * @param {Object[]} prop - * @returns String + * @param {string[]} hrefs + * @param {object[]} prop + * @return String * @private */ _buildMultiGetBody(hrefs, prop) { const [skeleton] = XMLUtility.getRootSkeleton( - [NS.IETF_CARDDAV, 'addressbook-multiget'] - ); + [NS.IETF_CARDDAV, 'addressbook-multiget'], + ) if (!prop) { skeleton.children.push({ name: [NS.DAV, 'prop'], - children: this._propFindList.map((p) => ({ name: p })) - }); + children: this._propFindList.map((p) => ({ name: p })), + }) } else { skeleton.children.push({ name: [NS.DAV, 'prop'], - children: prop - }); + children: prop, + }) } hrefs.forEach((href) => { skeleton.children.push({ name: [NS.DAV, 'href'], - value: href - }); - }); + value: href, + }) + }) - return XMLUtility.serialize(skeleton); + return XMLUtility.serialize(skeleton) } /** @@ -272,31 +272,31 @@ export class AddressBook extends davCollectionShareable(DavCollection) { [NS.IETF_CARDDAV, 'max-resource-size'], [NS.CALENDARSERVER, 'getctag'], [NS.OWNCLOUD, 'enabled'], - [NS.OWNCLOUD, 'read-only'] - ]); + [NS.OWNCLOUD, 'read-only'], + ]) } /** * checks if the prop part of a report requested partial data * - * @param {Object[]} prop - * @returns {boolean} + * @param {object[]} prop + * @return {boolean} * @private */ static _isRetrievalPartial(prop) { if (!prop) { - return false; + return false } const addressBookDataProperty = prop.find((p) => { - return p.name[0] === NS.IETF_CARDDAV && p.name[1] === 'address-data'; - }); + return p.name[0] === NS.IETF_CARDDAV && p.name[1] === 'address-data' + }) if (!addressBookDataProperty) { - return false; + return false } - return !!addressBookDataProperty.children; + return !!addressBookDataProperty.children } } diff --git a/src/models/addressBookHome.js b/src/models/addressBookHome.js index ee2fd11c..581f11b5 100644 --- a/src/models/addressBookHome.js +++ b/src/models/addressBookHome.js @@ -20,12 +20,12 @@ * License along with this library. If not, see . * */ -import { DavCollection } from './davCollection.js'; -import * as NS from '../utility/namespaceUtility.js'; -import { AddressBook } from './addressBook.js'; +import { DavCollection } from './davCollection.js' +import * as NS from '../utility/namespaceUtility.js' +import { AddressBook } from './addressBook.js' -import { debugFactory } from '../debug.js'; -const debug = debugFactory('AddressBookHome'); +import { debugFactory } from '../debug.js' +const debug = debugFactory('AddressBookHome') /** * This class represents an address book home as specified in @@ -41,43 +41,43 @@ export class AddressBookHome extends DavCollection { * @inheritDoc */ constructor(...args) { - super(...args); + super(...args) - super._registerCollectionFactory('{' + NS.IETF_CARDDAV + '}addressbook', AddressBook); + super._registerCollectionFactory('{' + NS.IETF_CARDDAV + '}addressbook', AddressBook) } /** * finds all address books in this address book home * - * @returns {Promise} + * @return {Promise} */ async findAllAddressBooks() { - return super.findAllByFilter((elm) => elm instanceof AddressBook); + return super.findAllByFilter((elm) => elm instanceof AddressBook) } /** - * creates a new address book collection + * creates a new address book collection * - * @param {String} displayname - * @returns {Promise} - */ + * @param {string} displayname + * @return {Promise} + */ async createAddressBookCollection(displayname) { - debug('creating an addressbook collection'); + debug('creating an addressbook collection') const props = [{ name: [NS.DAV, 'resourcetype'], children: [{ - name: [NS.DAV, 'collection'] + name: [NS.DAV, 'collection'], }, { - name: [NS.IETF_CARDDAV, 'addressbook'] - }] + name: [NS.IETF_CARDDAV, 'addressbook'], + }], }, { name: [NS.DAV, 'displayname'], - value: displayname - }]; + value: displayname, + }] - const name = super._getAvailableNameFromToken(displayname); - return super.createCollection(name, props); + const name = super._getAvailableNameFromToken(displayname) + return super.createCollection(name, props) } } diff --git a/src/models/calendar.js b/src/models/calendar.js index 93d2ee6a..c37c561e 100644 --- a/src/models/calendar.js +++ b/src/models/calendar.js @@ -21,17 +21,17 @@ * */ -import { DavCollection } from './davCollection.js'; -import { davCollectionPublishable } from './davCollectionPublishable.js'; -import { davCollectionShareable } from './davCollectionShareable.js'; -import { VObject } from './vobject.js'; -import calendarPropSet from '../propset/calendarPropSet.js'; -import * as NS from '../utility/namespaceUtility.js'; -import * as StringUtility from '../utility/stringUtility.js'; -import * as XMLUtility from '../utility/xmlUtility.js'; - -import { debugFactory } from '../debug.js'; -const debug = debugFactory('Calendar'); +import { DavCollection } from './davCollection.js' +import { davCollectionPublishable } from './davCollectionPublishable.js' +import { davCollectionShareable } from './davCollectionShareable.js' +import { VObject } from './vobject.js' +import calendarPropSet from '../propset/calendarPropSet.js' +import * as NS from '../utility/namespaceUtility.js' +import * as StringUtility from '../utility/stringUtility.js' +import * as XMLUtility from '../utility/xmlUtility.js' + +import { debugFactory } from '../debug.js' +const debug = debugFactory('Calendar') /** * This class represents an calendar collection as specified in @@ -56,118 +56,119 @@ export class Calendar extends davCollectionPublishable(davCollectionShareable(Da * @inheritDoc */ constructor(...args) { - super(...args); + super(...args) - super._registerObjectFactory('text/calendar', VObject); - super._registerPropSetFactory(calendarPropSet); + super._registerObjectFactory('text/calendar', VObject) + super._registerPropSetFactory(calendarPropSet) - super._exposeProperty('color', NS.APPLE, 'calendar-color', true); - super._exposeProperty('enabled', NS.OWNCLOUD, 'calendar-enabled', true); - super._exposeProperty('order', NS.APPLE, 'calendar-order', true); - super._exposeProperty('timezone', NS.IETF_CALDAV, 'calendar-timezone', true); - super._exposeProperty('components', NS.IETF_CALDAV, 'supported-calendar-component-set'); + super._exposeProperty('color', NS.APPLE, 'calendar-color', true) + super._exposeProperty('enabled', NS.OWNCLOUD, 'calendar-enabled', true) + super._exposeProperty('order', NS.APPLE, 'calendar-order', true) + super._exposeProperty('timezone', NS.IETF_CALDAV, 'calendar-timezone', true) + super._exposeProperty('components', NS.IETF_CALDAV, 'supported-calendar-component-set') } /** * finds all VObjects in this calendar * - * @returns {Promise} + * @return {Promise} */ async findAllVObjects() { - return super.findAllByFilter((elm) => elm instanceof VObject); + return super.findAllByFilter((elm) => elm instanceof VObject) } /** - * find all VObjects filtered by type + * find all VObjects filtered by type * - * @param {String} type - * @returns {Promise} - */ + * @param {string} type + * @return {Promise} + */ async findByType(type) { return this.calendarQuery([{ name: [NS.IETF_CALDAV, 'comp-filter'], attributes: [ - ['name', 'VCALENDAR'] + ['name', 'VCALENDAR'], ], children: [{ name: [NS.IETF_CALDAV, 'comp-filter'], attributes: [ - ['name', type] - ] - }] - }]); + ['name', type], + ], + }], + }]) } /** - * find all VObjects in a time-range filtered by type + * find all VObjects in a time-range filtered by type * - * @param {number} type - * @param {Date} from - * @param {Date} to - * @returns {Promise} - */ + * @param {number} type + * @param {Date} from + * @param {Date} to + * @return {Promise} + */ async findByTypeInTimeRange(type, from, to) { return this.calendarQuery([{ name: [NS.IETF_CALDAV, 'comp-filter'], attributes: [ - ['name', 'VCALENDAR'] + ['name', 'VCALENDAR'], ], children: [{ name: [NS.IETF_CALDAV, 'comp-filter'], attributes: [ - ['name', type] + ['name', type], ], children: [{ name: [NS.IETF_CALDAV, 'time-range'], attributes: [ ['start', Calendar._getICalendarDateTimeFromDateObject(from)], - ['end', Calendar._getICalendarDateTimeFromDateObject(to)] - ] - }] - }] - }]); + ['end', Calendar._getICalendarDateTimeFromDateObject(to)], + ], + }], + }], + }]) } /** - * create a VObject inside this calendar + * create a VObject inside this calendar * - * @returns {Promise} - */ + * @param data + * @return {Promise} + */ async createVObject(data) { - const name = StringUtility.uid('', 'ics'); + const name = StringUtility.uid('', 'ics') const headers = { - 'Content-Type': 'text/calendar; charset=utf-8' - }; + 'Content-Type': 'text/calendar; charset=utf-8', + } - return super.createObject(name, headers, data); + return super.createObject(name, headers, data) } /** * sends a calendar query as defined in * https://tools.ietf.org/html/rfc4791#section-7.8 * - * @param {Object[]} filter - * @param {Object[]} prop - * @param {String} timezone - * @returns {Promise} + * @param {object[]} filter + * @param {object[]} prop + * @param {string} timezone + * @return {Promise} */ async calendarQuery(filter, prop = null, timezone = null) { - debug('sending an calendar-query request'); + debug('sending an calendar-query request') const [skeleton] = XMLUtility.getRootSkeleton( - [NS.IETF_CALDAV, 'calendar-query'] - ); + [NS.IETF_CALDAV, 'calendar-query'], + ) if (!prop) { skeleton.children.push({ name: [NS.DAV, 'prop'], - children: this._propFindList.map((p) => ({ name: p })) - }); + children: this._propFindList.map((p) => ({ name: p })), + }) } else { skeleton.children.push({ name: [NS.DAV, 'prop'], - children: prop - }); + children: prop, + }) } // According to the spec, every calendar-query needs a filter, @@ -175,70 +176,70 @@ export class Calendar extends davCollectionPublishable(davCollectionShareable(Da if (filter) { skeleton.children.push({ name: [NS.IETF_CALDAV, 'filter'], - children: filter - }); + children: filter, + }) } if (timezone) { skeleton.children.push({ name: [NS.IETF_CALDAV, 'timezone'], - value: timezone - }); + value: timezone, + }) } const headers = { - Depth: '1' - }; + Depth: '1', + } - const body = XMLUtility.serialize(skeleton); - const response = await this._request.report(this.url, headers, body); - return super._handleMultiStatusResponse(response, Calendar._isRetrievalPartial(prop)); + const body = XMLUtility.serialize(skeleton) + const response = await this._request.report(this.url, headers, body) + return super._handleMultiStatusResponse(response, Calendar._isRetrievalPartial(prop)) } /** * sends a calendar multiget query as defined in * https://tools.ietf.org/html/rfc4791#section-7.9 * - * @param {String[]} hrefs - * @param {Object[]} prop - * @returns {Promise} + * @param {string[]} hrefs + * @param {object[]} prop + * @return {Promise} */ async calendarMultiget(hrefs = [], prop) { - debug('sending an calendar-multiget request'); + debug('sending an calendar-multiget request') if (hrefs.length === 0) { - return []; + return [] } const [skeleton] = XMLUtility.getRootSkeleton( - [NS.IETF_CALDAV, 'calendar-multiget'] - ); + [NS.IETF_CALDAV, 'calendar-multiget'], + ) if (!prop) { skeleton.children.push({ name: [NS.DAV, 'prop'], - children: this._propFindList.map((p) => ({ name: p })) - }); + children: this._propFindList.map((p) => ({ name: p })), + }) } else { skeleton.children.push({ name: [NS.DAV, 'prop'], - children: prop - }); + children: prop, + }) } hrefs.forEach((href) => { skeleton.children.push({ name: [NS.DAV, 'href'], - value: href - }); - }); + value: href, + }) + }) const headers = { - Depth: '1' - }; - const body = XMLUtility.serialize(skeleton); - const response = await this._request.report(this.url, headers, body); - return super._handleMultiStatusResponse(response, Calendar._isRetrievalPartial(prop)); + Depth: '1', + } + const body = XMLUtility.serialize(skeleton) + const response = await this._request.report(this.url, headers, body) + return super._handleMultiStatusResponse(response, Calendar._isRetrievalPartial(prop)) } /** @@ -247,9 +248,10 @@ export class Calendar extends davCollectionPublishable(davCollectionShareable(Da * * @param {Date} from * @param {Date} to - * @returns {Promise} + * @return {Promise} */ async freeBusyQuery(from, to) { + /* eslint-disable no-tabs */ // debug('sending a free-busy-query request'); // // const [skeleton] = XMLUtility.getRootSkeleton( @@ -265,13 +267,14 @@ export class Calendar extends davCollectionPublishable(davCollectionShareable(Da // }; // const body = XMLUtility.serialize(skeleton); // const response = await this._request.report(this.url, headers, body); + /* eslint-enable no-tabs */ // TODO - finish implementation } /** - * @inheritDoc - */ + * @inheritDoc + */ static getPropFindList() { return super.getPropFindList().concat([ [NS.APPLE, 'calendar-order'], @@ -293,38 +296,38 @@ export class Calendar extends davCollectionPublishable(davCollectionShareable(Da [NS.OWNCLOUD, 'calendar-enabled'], [NS.NEXTCLOUD, 'owner-displayname'], [NS.NEXTCLOUD, 'trash-bin-retention-duration'], - [NS.NEXTCLOUD, 'deleted-at'] - ]); + [NS.NEXTCLOUD, 'deleted-at'], + ]) } /** * checks if the prop part of a report requested partial data * - * @param {Object[]} prop - * @returns {boolean} + * @param {object[]} prop + * @return {boolean} * @private */ static _isRetrievalPartial(prop) { if (!prop) { - return false; + return false } const addressBookDataProperty = prop.find((p) => { - return p.name[0] === NS.IETF_CALDAV && p.name[1] === 'calendar-data'; - }); + return p.name[0] === NS.IETF_CALDAV && p.name[1] === 'calendar-data' + }) if (!addressBookDataProperty) { - return false; + return false } - return !!addressBookDataProperty.children; + return !!addressBookDataProperty.children } /** * creates an iCalendar formatted DATE-TIME string from a date object * * @param {Date} date - * @return {String} + * @return {string} * @private */ static _getICalendarDateTimeFromDateObject(date) { @@ -336,8 +339,8 @@ export class Calendar extends davCollectionPublishable(davCollectionShareable(Da ('0' + date.getUTCHours()).slice(-2), ('0' + date.getUTCMinutes()).slice(-2), ('0' + date.getUTCSeconds()).slice(-2), - 'Z' - ].join(''); + 'Z', + ].join('') } } diff --git a/src/models/calendarHome.js b/src/models/calendarHome.js index 1add67c9..2f55ef89 100644 --- a/src/models/calendarHome.js +++ b/src/models/calendarHome.js @@ -20,18 +20,18 @@ * License along with this library. If not, see . * */ -import { DavCollection } from './davCollection.js'; -import { Calendar } from './calendar.js'; -import { Subscription } from './subscription.js'; -import ScheduleInbox from './scheduleInbox.js'; -import ScheduleOutbox from './scheduleOutbox.js'; -import * as NS from '../utility/namespaceUtility.js'; -import * as XMLUtility from '../utility/xmlUtility.js'; +import { DavCollection } from './davCollection.js' +import { Calendar } from './calendar.js' +import { Subscription } from './subscription.js' +import ScheduleInbox from './scheduleInbox.js' +import ScheduleOutbox from './scheduleOutbox.js' +import * as NS from '../utility/namespaceUtility.js' +import * as XMLUtility from '../utility/xmlUtility.js' -import { debugFactory } from '../debug.js'; -import { CalendarTrashBin } from './calendarTrashBin.js'; -import { DeletedCalendar } from './deletedCalendar'; -const debug = debugFactory('CalendarHome'); +import { debugFactory } from '../debug.js' +import { CalendarTrashBin } from './calendarTrashBin.js' +import { DeletedCalendar } from './deletedCalendar.js' +const debug = debugFactory('CalendarHome') /** * This class represents a calendar home as specified in @@ -47,31 +47,31 @@ export class CalendarHome extends DavCollection { * @inheritDoc */ constructor(...args) { - super(...args); + super(...args) - super._registerCollectionFactory('{' + NS.IETF_CALDAV + '}calendar', Calendar); - super._registerCollectionFactory('{' + NS.NEXTCLOUD + '}deleted-calendar', DeletedCalendar); - super._registerCollectionFactory('{' + NS.CALENDARSERVER + '}subscribed', Subscription); - super._registerCollectionFactory('{' + NS.IETF_CALDAV + '}schedule-inbox', ScheduleInbox); - super._registerCollectionFactory('{' + NS.IETF_CALDAV + '}schedule-outbox', ScheduleOutbox); - super._registerCollectionFactory('{' + NS.NEXTCLOUD + '}trash-bin', CalendarTrashBin); + super._registerCollectionFactory('{' + NS.IETF_CALDAV + '}calendar', Calendar) + super._registerCollectionFactory('{' + NS.NEXTCLOUD + '}deleted-calendar', DeletedCalendar) + super._registerCollectionFactory('{' + NS.CALENDARSERVER + '}subscribed', Subscription) + super._registerCollectionFactory('{' + NS.IETF_CALDAV + '}schedule-inbox', ScheduleInbox) + super._registerCollectionFactory('{' + NS.IETF_CALDAV + '}schedule-outbox', ScheduleOutbox) + super._registerCollectionFactory('{' + NS.NEXTCLOUD + '}trash-bin', CalendarTrashBin) } /** * Finds all CalDAV-specific collections in this calendar home * - * @returns {Promise<(Calendar|Subscription|ScheduleInbox|ScheduleOutbox|CalendarTrashBin|DeletedCalendar)[]>} + * @return {Promise<(Calendar|Subscription|ScheduleInbox|ScheduleOutbox|CalendarTrashBin|DeletedCalendar)[]>} */ async findAllCalDAVCollections() { return super.findAllByFilter((elm) => elm instanceof Calendar || elm instanceof CalendarTrashBin || elm instanceof Subscription || elm instanceof ScheduleInbox || elm instanceof ScheduleOutbox - || elm instanceof DeletedCalendar); + || elm instanceof DeletedCalendar) } /** * Finds all CalDAV-specific collections in this calendar home, grouped by type * - * @returns {Promise<{ + * @return {Promise<{ calendars: Calendar[], deletedCalendars: DeletedCalendar[], trashBins: CalendarTrashBin[], @@ -81,7 +81,7 @@ export class CalendarHome extends DavCollection { }>} */ async findAllCalDAVCollectionsGrouped() { - const collections = await super.findAll(); + const collections = await super.findAll() return { calendars: collections.filter(c => c instanceof Calendar && !(c instanceof ScheduleInbox) && !(c instanceof Subscription) && !(c instanceof DeletedCalendar)), @@ -89,91 +89,91 @@ export class CalendarHome extends DavCollection { trashBins: collections.filter(c => c instanceof CalendarTrashBin), subscriptions: collections.filter(c => c instanceof Subscription), scheduleInboxes: collections.filter(c => c instanceof ScheduleInbox), - scheduleOutboxes: collections.filter(c => c instanceof ScheduleOutbox) - }; + scheduleOutboxes: collections.filter(c => c instanceof ScheduleOutbox), + } } /** * finds all calendars in this calendar home * - * @returns {Promise} + * @return {Promise} */ async findAllCalendars() { - return super.findAllByFilter((elm) => elm instanceof Calendar && !(elm instanceof ScheduleInbox) && !(elm instanceof Subscription) && !(elm instanceof DeletedCalendar)); + return super.findAllByFilter((elm) => elm instanceof Calendar && !(elm instanceof ScheduleInbox) && !(elm instanceof Subscription) && !(elm instanceof DeletedCalendar)) } /** * Finds all deleted calendars in this calendar home * - * @returns {Promise} + * @return {Promise} */ async findAllDeletedCalendars() { - return super.findAllByFilter((elm) => elm instanceof DeletedCalendar); + return super.findAllByFilter((elm) => elm instanceof DeletedCalendar) } /** * finds all subscriptions in this calendar home * - * @returns {Promise} + * @return {Promise} */ async findAllSubscriptions() { - return super.findAllByFilter((elm) => elm instanceof Subscription); + return super.findAllByFilter((elm) => elm instanceof Subscription) } /** * finds all schedule inboxes in this calendar home * - * @returns {Promise} + * @return {Promise} */ async findAllScheduleInboxes() { - return super.findAllByFilter((elm) => elm instanceof ScheduleInbox); + return super.findAllByFilter((elm) => elm instanceof ScheduleInbox) } /** * finds all schedule outboxes in this calendar home * - * @returns {Promise} + * @return {Promise} */ async findAllScheduleOutboxes() { - return super.findAllByFilter((elm) => elm instanceof ScheduleOutbox); + return super.findAllByFilter((elm) => elm instanceof ScheduleOutbox) } /** - * creates a new calendar collection + * creates a new calendar collection * - * @param {String} displayname - * @param {String} color - * @param {String[]} supportedComponentSet - * @param {Number} order - * @param {String=} timezone - * @returns {Promise} - */ + * @param {string} displayname + * @param {string} color + * @param {string[]} supportedComponentSet + * @param {number} order + * @param {string=} timezone + * @return {Promise} + */ async createCalendarCollection(displayname, color, supportedComponentSet = null, order = null, timezone = null) { - debug('creating a calendar collection'); + debug('creating a calendar collection') const props = [{ name: [NS.DAV, 'resourcetype'], children: [{ - name: [NS.DAV, 'collection'] + name: [NS.DAV, 'collection'], }, { - name: [NS.IETF_CALDAV, 'calendar'] - }] + name: [NS.IETF_CALDAV, 'calendar'], + }], }, { name: [NS.DAV, 'displayname'], - value: displayname + value: displayname, }, { name: [NS.APPLE, 'calendar-color'], - value: color + value: color, }, { name: [NS.OWNCLOUD, 'calendar-enabled'], - value: '1' - }]; + value: '1', + }] if (timezone) { props.push({ name: [NS.IETF_CALDAV, 'calendar-timezone'], - value: timezone - }); + value: timezone, + }) } if (supportedComponentSet) { @@ -183,80 +183,80 @@ export class CalendarHome extends DavCollection { return { name: [NS.IETF_CALDAV, 'comp'], attributes: [ - ['name', supportedComponent] - ] - }; - }) - }); + ['name', supportedComponent], + ], + } + }), + }) } if (order) { props.push({ name: [NS.APPLE, 'calendar-order'], - value: order - }); + value: order, + }) } - const name = super._getAvailableNameFromToken(displayname); - return super.createCollection(name, props); + const name = super._getAvailableNameFromToken(displayname) + return super.createCollection(name, props) } /** * creates a new subscription * - * @param {String} displayname - * @param {String} color - * @param {String} source - * @param {Number} order - * @returns {Promise} - */ + * @param {string} displayname + * @param {string} color + * @param {string} source + * @param {number} order + * @return {Promise} + */ async createSubscribedCollection(displayname, color, source, order = null) { - debug('creating a subscribed collection'); + debug('creating a subscribed collection') const props = [{ name: [NS.DAV, 'resourcetype'], children: [{ - name: [NS.DAV, 'collection'] + name: [NS.DAV, 'collection'], }, { - name: [NS.CALENDARSERVER, 'subscribed'] - }] + name: [NS.CALENDARSERVER, 'subscribed'], + }], }, { name: [NS.DAV, 'displayname'], - value: displayname + value: displayname, }, { name: [NS.APPLE, 'calendar-color'], - value: color + value: color, }, { name: [NS.OWNCLOUD, 'calendar-enabled'], - value: '1' + value: '1', }, { name: [NS.CALENDARSERVER, 'source'], children: [{ name: [NS.DAV, 'href'], - value: source - }] - }]; + value: source, + }], + }] if (order) { props.push({ name: [NS.APPLE, 'calendar-order'], - value: order - }); + value: order, + }) } - const name = super._getAvailableNameFromToken(displayname); - return super.createCollection(name, props); + const name = super._getAvailableNameFromToken(displayname) + return super.createCollection(name, props) } /** - * Search all calendars the user has access to - * This method makes use of Nextcloud's custom - * calendar Search API - * - * Documentation about that API can be found at: ... - * - * @returns {Promise} - */ + * Search all calendars the user has access to + * This method makes use of Nextcloud's custom + * calendar Search API + * + * Documentation about that API can be found at: ... + * + * @return {Promise} + */ async search() { // TODO - implement me } @@ -264,15 +264,15 @@ export class CalendarHome extends DavCollection { /** * enables the birthday calendar for the Calendar Home that belongs to this user * - * @returns {Promise} + * @return {Promise} */ async enableBirthdayCalendar() { const [skeleton] = XMLUtility.getRootSkeleton( - [NS.NEXTCLOUD, 'enable-birthday-calendar'] - ); - const xmlBody = XMLUtility.serialize(skeleton); + [NS.NEXTCLOUD, 'enable-birthday-calendar'], + ) + const xmlBody = XMLUtility.serialize(skeleton) - await this._request.post(this.url, {}, xmlBody); + await this._request.post(this.url, {}, xmlBody) } } diff --git a/src/models/calendarTrashBin.js b/src/models/calendarTrashBin.js index f705a021..68ffe7ba 100644 --- a/src/models/calendarTrashBin.js +++ b/src/models/calendarTrashBin.js @@ -21,10 +21,10 @@ * */ -import { DavCollection } from './davCollection'; -import * as NS from '../utility/namespaceUtility.js'; -import { VObject } from './vobject.js'; -import * as XMLUtility from '../utility/xmlUtility'; +import { DavCollection } from './davCollection.js' +import * as NS from '../utility/namespaceUtility.js' +import { VObject } from './vobject.js' +import * as XMLUtility from '../utility/xmlUtility.js' export class CalendarTrashBin extends DavCollection { @@ -32,52 +32,52 @@ export class CalendarTrashBin extends DavCollection { * @inheritDoc */ constructor(...args) { - super(...args); + super(...args) - super._registerObjectFactory('text/calendar', VObject); + super._registerObjectFactory('text/calendar', VObject) - super._exposeProperty('retentionDuration', NS.NEXTCLOUD, 'trash-bin-retention-duration'); + super._exposeProperty('retentionDuration', NS.NEXTCLOUD, 'trash-bin-retention-duration') } async findDeletedObjects() { const [skeleton] = XMLUtility.getRootSkeleton( - [NS.IETF_CALDAV, 'calendar-query'] - ); + [NS.IETF_CALDAV, 'calendar-query'], + ) skeleton.children.push({ name: [NS.DAV, 'prop'], children: VObject.getPropFindList() .map((p) => ({ name: p })) .concat([ { name: [NS.NEXTCLOUD, 'calendar-uri'] }, - { name: [NS.NEXTCLOUD, 'deleted-at'] } - ]) - }); + { name: [NS.NEXTCLOUD, 'deleted-at'] }, + ]), + }) skeleton.children.push({ name: [NS.IETF_CALDAV, 'filter'], children: [{ name: [NS.IETF_CALDAV, 'comp-filter'], attributes: [ - ['name', 'VCALENDAR'] + ['name', 'VCALENDAR'], ], children: [{ name: [NS.IETF_CALDAV, 'comp-filter'], attributes: [ - ['name', 'VEVENT'] + ['name', 'VEVENT'], ], - children: [] - }] - }] - }); + children: [], + }], + }], + }) const headers = { - Depth: '1' - }; - const body = XMLUtility.serialize(skeleton); - const response = await this._request.report(this._url + 'objects', headers, body); - return super._handleMultiStatusResponse(response); + Depth: '1', + } + const body = XMLUtility.serialize(skeleton) + const response = await this._request.report(this._url + 'objects', headers, body) + return super._handleMultiStatusResponse(response) } async restore(uri) { - await this._request.move(uri, this._url + 'restore/file'); + await this._request.move(uri, this._url + 'restore/file') } } diff --git a/src/models/davCollection.js b/src/models/davCollection.js index 277c72bb..4dd115c4 100644 --- a/src/models/davCollection.js +++ b/src/models/davCollection.js @@ -20,30 +20,30 @@ * License along with this library. If not, see . * */ -import * as NS from '../utility/namespaceUtility.js'; -import * as StringUtility from '../utility/stringUtility.js'; -import * as XMLUtility from '../utility/xmlUtility.js'; -import DAVEventListener from './davEventListener.js'; +import * as NS from '../utility/namespaceUtility.js' +import * as StringUtility from '../utility/stringUtility.js' +import * as XMLUtility from '../utility/xmlUtility.js' +import DAVEventListener from './davEventListener.js' -import { debugFactory } from '../debug.js'; -import davCollectionPropSet from '../propset/davCollectionPropSet.js'; -import { DavObject } from './davObject.js'; -const debug = debugFactory('DavCollection'); +import { debugFactory } from '../debug.js' +import davCollectionPropSet from '../propset/davCollectionPropSet.js' +import { DavObject } from './davObject.js' +const debug = debugFactory('DavCollection') export class DavCollection extends DAVEventListener { /** - * @param {Object} parent + * @param {object} parent * @param {Request} request - * @param {String} url - * @param {Object} props + * @param {string} url + * @param {object} props */ constructor(parent, request, url, props) { - super(); + super() // This is a collection, so always make sure to end with a / if (url.slice(-1) !== '/') { - url += '/'; + url += '/' } Object.assign(this, { @@ -61,57 +61,57 @@ export class DavCollection extends DAVEventListener { // parsers / factories _propFindList: [], - _propSetFactory: [] + _propSetFactory: [], - }); + }) - this._registerPropSetFactory(davCollectionPropSet); + this._registerPropSetFactory(davCollectionPropSet) - this._exposeProperty('displayname', NS.DAV, 'displayname', true); - this._exposeProperty('owner', NS.DAV, 'owner'); - this._exposeProperty('resourcetype', NS.DAV, 'resourcetype'); - this._exposeProperty('syncToken', NS.DAV, 'sync-token'); - this._exposeProperty('currentUserPrivilegeSet', NS.DAV, 'current-user-privilege-set'); + this._exposeProperty('displayname', NS.DAV, 'displayname', true) + this._exposeProperty('owner', NS.DAV, 'owner') + this._exposeProperty('resourcetype', NS.DAV, 'resourcetype') + this._exposeProperty('syncToken', NS.DAV, 'sync-token') + this._exposeProperty('currentUserPrivilegeSet', NS.DAV, 'current-user-privilege-set') Object.defineProperty(this, 'url', { - get: () => this._url - }); + get: () => this._url, + }) - this._propFindList.push(...DavObject.getPropFindList()); - this._propFindList.push(...DavCollection.getPropFindList()); + this._propFindList.push(...DavObject.getPropFindList()) + this._propFindList.push(...DavCollection.getPropFindList()) } /** * finds all children of a collection * - * @returns {Promise} + * @return {Promise} */ async findAll() { - const response = await this._request.propFind(this._url, this._propFindList, 1); - return this._handleMultiStatusResponse(response, false); + const response = await this._request.propFind(this._url, this._propFindList, 1) + return this._handleMultiStatusResponse(response, false) } /** * finds all children of a collection filtered by filter * * @param {Function} filter - * @returns {Promise} + * @return {Promise} */ async findAllByFilter(filter) { - const all = await this.findAll(); - return all.filter(filter); + const all = await this.findAll() + return all.filter(filter) } /** * find one object by its uri * - * @param {String} uri - * @returns {Promise} + * @param {string} uri + * @return {Promise} */ async find(uri) { - const response = await this._request.propFind(this._url + uri, this._propFindList, 0); - response.body = { [this._url + uri]: response.body }; - return this._handleMultiStatusResponse(response, false)[0]; + const response = await this._request.propFind(this._url + uri, this._propFindList, 0) + response.body = { [this._url + uri]: response.body } + return this._handleMultiStatusResponse(response, false)[0] } /** @@ -126,32 +126,32 @@ export class DavCollection extends DAVEventListener { * * @param {string} name * @param {?Array} props - * @returns {Promise} + * @return {Promise} */ async createCollection(name, props = null) { - debug('creating a collection'); + debug('creating a collection') if (!props) { props = [{ name: [NS.DAV, 'resourcetype'], children: [{ - name: [NS.DAV, 'collection'] - }] - }]; + name: [NS.DAV, 'collection'], + }], + }] } const [skeleton, dPropChildren] = XMLUtility.getRootSkeleton( [NS.DAV, 'mkcol'], [NS.DAV, 'set'], - [NS.DAV, 'prop'] - ); + [NS.DAV, 'prop'], + ) - dPropChildren.push(...props); + dPropChildren.push(...props) - const uri = this._getAvailableNameFromToken(name); - const data = XMLUtility.serialize(skeleton); - await this._request.mkCol(this.url + uri, {}, data); - return this.find(uri + '/'); + const uri = this._getAvailableNameFromToken(name) + const data = XMLUtility.serialize(skeleton) + await this._request.mkCol(this.url + uri, {}, data) + return this.find(uri + '/') } /** @@ -162,70 +162,70 @@ export class DavCollection extends DAVEventListener { * - AddressBook->createVCard * - Calendar->createVObject * - * @param {String} name - * @param {Object} headers - * @param {String} data - * @returns {Promise} + * @param {string} name + * @param {object} headers + * @param {string} data + * @return {Promise} */ async createObject(name, headers, data) { - debug('creating an object'); + debug('creating an object') - await this._request.put(this.url + name, headers, data); - return this.find(name); + await this._request.put(this.url + name, headers, data) + return this.find(name) } /** * sends a PropPatch request to update the collections' properties * The request is only made if properties actually changed * - * @returns {Promise} + * @return {Promise} */ async update() { if (this._updatedProperties.length === 0) { - return; + return } - const properties = {}; + const properties = {} this._updatedProperties.forEach((updatedProperty) => { - properties[updatedProperty] = this._props[updatedProperty]; - }); - const propSet = this._propSetFactory.reduce((arr, p) => [...arr, ...p(properties)], []); + properties[updatedProperty] = this._props[updatedProperty] + }) + const propSet = this._propSetFactory.reduce((arr, p) => [...arr, ...p(properties)], []) const [skeleton, dPropSet] = XMLUtility.getRootSkeleton( [NS.DAV, 'propertyupdate'], [NS.DAV, 'set'], - [NS.DAV, 'prop']); + [NS.DAV, 'prop']) - dPropSet.push(...propSet); + dPropSet.push(...propSet) - const body = XMLUtility.serialize(skeleton); - await this._request.propPatch(this._url, {}, body); + const body = XMLUtility.serialize(skeleton) + await this._request.propPatch(this._url, {}, body) } /** * deletes the DavCollection on the server * - * @param {Object} headers - additional HTTP headers to send - * @returns {Promise} + * @param {object} headers - additional HTTP headers to send + * @return {Promise} */ async delete(headers = {}) { - await this._request.delete(this._url, headers); + await this._request.delete(this._url, headers) } /** * - * @returns {boolean} + * @return {boolean} */ isReadable() { - return this.currentUserPrivilegeSet.includes('{DAV:}read'); + return this.currentUserPrivilegeSet.includes('{DAV:}read') } /** * - * @returns {boolean} + * @return {boolean} */ isWriteable() { - return this.currentUserPrivilegeSet.includes('{DAV:}write'); + return this.currentUserPrivilegeSet.includes('{DAV:}write') } /** @@ -233,163 +233,163 @@ export class DavCollection extends DAVEventListener { * @param {DavCollection} collection */ isSameCollectionTypeAs(collection) { - const ownResourceType = this.resourcetype; - const foreignResourceType = collection.resourcetype; + const ownResourceType = this.resourcetype + const foreignResourceType = collection.resourcetype - const ownDiff = ownResourceType.find((r) => foreignResourceType.indexOf(r) === -1); - const foreignDiff = foreignResourceType.find((r) => ownResourceType.indexOf(r) === -1); + const ownDiff = ownResourceType.find((r) => foreignResourceType.indexOf(r) === -1) + const foreignDiff = foreignResourceType.find((r) => ownResourceType.indexOf(r) === -1) - return ownDiff === undefined && foreignDiff === undefined; + return ownDiff === undefined && foreignDiff === undefined } /** * @protected - * @param {String} identifier + * @param {string} identifier * @param {Function} factory - * @returns void + * @return void */ _registerCollectionFactory(identifier, factory) { - this._collectionFactoryMapper[identifier] = factory; + this._collectionFactoryMapper[identifier] = factory if (typeof factory.getPropFindList === 'function') { - this._propFindList.push(...factory.getPropFindList()); + this._propFindList.push(...factory.getPropFindList()) } } /** * @protected - * @param {String} identifier + * @param {string} identifier * @param {Function} factory - * @returns void + * @return void */ _registerObjectFactory(identifier, factory) { - this._objectFactoryMapper[identifier] = factory; + this._objectFactoryMapper[identifier] = factory if (typeof factory.getPropFindList === 'function') { - this._propFindList.push(...factory.getPropFindList()); + this._propFindList.push(...factory.getPropFindList()) } } /** * @protected * @param factory - * @returns void + * @return void */ _registerPropSetFactory(factory) { - this._propSetFactory.push(factory); + this._propSetFactory.push(factory) } /** * @protected - * @param {String} localName - * @param {String} xmlNamespace - * @param {String} xmlName + * @param {string} localName + * @param {string} xmlNamespace + * @param {string} xmlName * @param {boolean} mutable - * @returns void + * @return void */ _exposeProperty(localName, xmlNamespace, xmlName, mutable = false) { if (mutable) { Object.defineProperty(this, localName, { get: () => this._props[`{${xmlNamespace}}${xmlName}`], set: (val) => { - this._props[`{${xmlNamespace}}${xmlName}`] = val; + this._props[`{${xmlNamespace}}${xmlName}`] = val if (this._updatedProperties.indexOf(`{${xmlNamespace}}${xmlName}`) === -1) { - this._updatedProperties.push(`{${xmlNamespace}}${xmlName}`); + this._updatedProperties.push(`{${xmlNamespace}}${xmlName}`) } - } - }); + }, + }) } else { Object.defineProperty(this, localName, { - get: () => this._props[`{${xmlNamespace}}${xmlName}`] - }); + get: () => this._props[`{${xmlNamespace}}${xmlName}`], + }) } } /** * @protected - * @param {String} token - * @returns {String} + * @param {string} token + * @return {string} */ _getAvailableNameFromToken(token) { return StringUtility.uri(token, name => { return this._childrenNames.indexOf(this._url + name) === -1 - && this._childrenNames.indexOf(this._url + name + '/') === -1; - }); + && this._childrenNames.indexOf(this._url + name + '/') === -1 + }) } /** * get updated properties for this collection from server * @protected - * @returns {Object} + * @return {object} */ async _updatePropsFromServer() { - const response = await this._request.propFind(this.url, this.constructor.getPropFindList()); - this._props = response.body; + const response = await this._request.propFind(this.url, this.constructor.getPropFindList()) + this._props = response.body } /** - * @param {Object} response - * @param {Boolean} isPartial - * @returns {DavObject[]|DavCollection[]} + * @param {object} response + * @param {boolean} isPartial + * @return {DavObject[]|DavCollection[]} * @protected */ _handleMultiStatusResponse(response, isPartial = false) { - const index = []; - const children = []; + const index = [] + const children = [] Object.entries(response.body).forEach(([path, props]) => { // The DAV Server will always return a propStat // block containing properties of the current url // we are not interested, so let's filter it out if (path === this._url || path + '/' === this.url) { - return; + return } - index.push(path); - const url = this._request.pathname(path); + index.push(path) + const url = this._request.pathname(path) // empty resourcetype property => this is no collection if (((!props['{DAV:}resourcetype']) || (props['{DAV:}resourcetype'].length === 0)) && props['{DAV:}getcontenttype']) { - debug(`${path} was identified as a file`); + debug(`${path} was identified as a file`) - const contentType = props['{DAV:}getcontenttype'].split(';')[0]; + const contentType = props['{DAV:}getcontenttype'].split(';')[0] if (!this._objectFactoryMapper[contentType]) { - debug(`No constructor for content-type ${contentType} (${path}) registered, treating as generic object`); - children.push(new DavObject(this, this._request, url, props)); - return; + debug(`No constructor for content-type ${contentType} (${path}) registered, treating as generic object`) + children.push(new DavObject(this, this._request, url, props)) + return } - children.push(new this._objectFactoryMapper[contentType](this, this._request, url, props, isPartial)); + children.push(new this._objectFactoryMapper[contentType](this, this._request, url, props, isPartial)) } else { - debug(`${path} was identified as a collection`); + debug(`${path} was identified as a collection`) // get first collection type other than DAV collection const collectionType = props['{DAV:}resourcetype'].find((r) => { - return r !== `{${NS.DAV}}collection`; - }); + return r !== `{${NS.DAV}}collection` + }) if (!collectionType) { - debug(`Collection-type of ${path} was not specified, treating as generic collection`); - children.push(new DavCollection(this, this._request, url, props)); - return; + debug(`Collection-type of ${path} was not specified, treating as generic collection`) + children.push(new DavCollection(this, this._request, url, props)) + return } if (!this._collectionFactoryMapper[collectionType]) { - debug(`No constructor for collection-type ${collectionType} (${path}) registered, treating as generic collection`); - children.push(new DavCollection(this, this._request, url, props)); - return; + debug(`No constructor for collection-type ${collectionType} (${path}) registered, treating as generic collection`) + children.push(new DavCollection(this, this._request, url, props)) + return } - children.push(new this._collectionFactoryMapper[collectionType](this, this._request, url, props)); + children.push(new this._collectionFactoryMapper[collectionType](this, this._request, url, props)) } - }); + }) - this._childrenNames.push(...index); - return children; + this._childrenNames.push(...index) + return children } /** * A list of all property names that should be included * in propfind requests that may include this collection * - * @returns {string[][]} + * @return {string[][]} */ static getPropFindList() { return [ @@ -397,8 +397,8 @@ export class DavCollection extends DAVEventListener { [NS.DAV, 'owner'], [NS.DAV, 'resourcetype'], [NS.DAV, 'sync-token'], - [NS.DAV, 'current-user-privilege-set'] - ]; + [NS.DAV, 'current-user-privilege-set'], + ] } } diff --git a/src/models/davCollectionPublishable.js b/src/models/davCollectionPublishable.js index 0155264a..8b4890b5 100644 --- a/src/models/davCollectionPublishable.js +++ b/src/models/davCollectionPublishable.js @@ -20,11 +20,11 @@ * License along with this library. If not, see . * */ -import * as NS from '../utility/namespaceUtility.js'; -import * as XMLUtility from '../utility/xmlUtility.js'; +import * as NS from '../utility/namespaceUtility.js' +import * as XMLUtility from '../utility/xmlUtility.js' -import { debugFactory } from '../debug.js'; -const debug = debugFactory('DavCollectionPublishable'); +import { debugFactory } from '../debug.js' +const debug = debugFactory('DavCollectionPublishable') export function davCollectionPublishable(Base) { return class extends Base { @@ -33,43 +33,43 @@ export function davCollectionPublishable(Base) { * @inheritDoc */ constructor(...args) { - super(...args); + super(...args) - super._exposeProperty('publishURL', NS.CALENDARSERVER, 'publish-url'); + super._exposeProperty('publishURL', NS.CALENDARSERVER, 'publish-url') } /** * publishes the DavCollection * - * @returns {Promise} + * @return {Promise} */ async publish() { - debug(`Publishing ${this.url}`); + debug(`Publishing ${this.url}`) const [skeleton] = XMLUtility.getRootSkeleton( - [NS.CALENDARSERVER, 'publish-calendar']); - const xml = XMLUtility.serialize(skeleton); + [NS.CALENDARSERVER, 'publish-calendar']) + const xml = XMLUtility.serialize(skeleton) // TODO - ideally the server should return a 'pre-publish-url' as described in the standard - await this._request.post(this._url, { 'Content-Type': 'application/xml; charset=utf-8' }, xml); - await this._updatePropsFromServer(); + await this._request.post(this._url, { 'Content-Type': 'application/xml; charset=utf-8' }, xml) + await this._updatePropsFromServer() } /** * unpublishes the DavCollection * - * @returns {Promise} + * @return {Promise} */ async unpublish() { - debug(`Unpublishing ${this.url}`); + debug(`Unpublishing ${this.url}`) const [skeleton] = XMLUtility.getRootSkeleton( - [NS.CALENDARSERVER, 'unpublish-calendar']); - const xml = XMLUtility.serialize(skeleton); + [NS.CALENDARSERVER, 'unpublish-calendar']) + const xml = XMLUtility.serialize(skeleton) - await this._request.post(this._url, { 'Content-Type': 'application/xml; charset=utf-8' }, xml); - delete this._props['{http://calendarserver.org/ns/}publish-url']; + await this._request.post(this._url, { 'Content-Type': 'application/xml; charset=utf-8' }, xml) + delete this._props['{http://calendarserver.org/ns/}publish-url'] } /** @@ -77,9 +77,9 @@ export function davCollectionPublishable(Base) { */ static getPropFindList() { return super.getPropFindList().concat([ - [NS.CALENDARSERVER, 'publish-url'] - ]); + [NS.CALENDARSERVER, 'publish-url'], + ]) } - }; + } } diff --git a/src/models/davCollectionShareable.js b/src/models/davCollectionShareable.js index 2f145083..400a20d6 100644 --- a/src/models/davCollectionShareable.js +++ b/src/models/davCollectionShareable.js @@ -20,11 +20,11 @@ * License along with this library. If not, see . * */ -import * as NS from '../utility/namespaceUtility.js'; -import * as XMLUtility from '../utility/xmlUtility.js'; +import * as NS from '../utility/namespaceUtility.js' +import * as XMLUtility from '../utility/xmlUtility.js' -import { debugFactory } from '../debug.js'; -const debug = debugFactory('DavCollectionShareable'); +import { debugFactory } from '../debug.js' +const debug = debugFactory('DavCollectionShareable') export function davCollectionShareable(Base) { return class extends Base { @@ -33,112 +33,112 @@ export function davCollectionShareable(Base) { * @inheritDoc */ constructor(...args) { - super(...args); + super(...args) - super._exposeProperty('shares', NS.OWNCLOUD, 'invite'); - super._exposeProperty('allowedSharingModes', NS.CALENDARSERVER, 'allowed-sharing-modes'); + super._exposeProperty('shares', NS.OWNCLOUD, 'invite') + super._exposeProperty('allowedSharingModes', NS.CALENDARSERVER, 'allowed-sharing-modes') } /** * shares a DavCollection * - * @param {String} principalScheme + * @param {string} principalScheme * @param {boolean} writeable * @param {string} summary - * @returns {Promise} + * @return {Promise} */ async share(principalScheme, writeable = false, summary = '') { - debug(`Sharing ${this.url} with ${principalScheme}`); + debug(`Sharing ${this.url} with ${principalScheme}`) const [skeleton, setProp] = XMLUtility.getRootSkeleton( - [NS.OWNCLOUD, 'share'], [NS.OWNCLOUD, 'set']); + [NS.OWNCLOUD, 'share'], [NS.OWNCLOUD, 'set']) setProp.push({ name: [NS.DAV, 'href'], - value: principalScheme - }); + value: principalScheme, + }) if (writeable) { setProp.push({ - name: [NS.OWNCLOUD, 'read-write'] - }); + name: [NS.OWNCLOUD, 'read-write'], + }) } if (summary !== '') { setProp.push({ name: [NS.OWNCLOUD, 'summary'], - value: summary - }); + value: summary, + }) } - const xml = XMLUtility.serialize(skeleton); + const xml = XMLUtility.serialize(skeleton) return this._request.post(this._url, { 'Content-Type': 'application/xml; charset=utf-8' }, xml).then(() => { - const index = this.shares.findIndex((e) => e.href === principalScheme); + const index = this.shares.findIndex((e) => e.href === principalScheme) if (index === -1) { this.shares.push({ href: principalScheme, access: [writeable ? '{http://owncloud.org/ns}read-write' : '{http://owncloud.org/ns}read'], 'common-name': null, - 'invite-accepted': true - }); + 'invite-accepted': true, + }) } else { this.shares[index].access - = [writeable ? '{http://owncloud.org/ns}read-write' : '{http://owncloud.org/ns}read']; + = [writeable ? '{http://owncloud.org/ns}read-write' : '{http://owncloud.org/ns}read'] } - }); + }) } /** * unshares a DAVCollection * * @param {string} principalScheme - * @returns {Promise} + * @return {Promise} */ async unshare(principalScheme) { - debug(`Unsharing ${this.url} with ${principalScheme}`); + debug(`Unsharing ${this.url} with ${principalScheme}`) const [skeleton, oSetChildren] = XMLUtility.getRootSkeleton( - [NS.OWNCLOUD, 'share'], [NS.OWNCLOUD, 'remove']); + [NS.OWNCLOUD, 'share'], [NS.OWNCLOUD, 'remove']) oSetChildren.push({ name: [NS.DAV, 'href'], - value: principalScheme - }); + value: principalScheme, + }) - const xml = XMLUtility.serialize(skeleton); + const xml = XMLUtility.serialize(skeleton) return this._request.post(this._url, { 'Content-Type': 'application/xml; charset=utf-8' }, xml).then(() => { - const index = this.shares.findIndex((e) => e.href === principalScheme); + const index = this.shares.findIndex((e) => e.href === principalScheme) if (index === -1) { - return; + return } - this.shares.splice(index, 1); - }); + this.shares.splice(index, 1) + }) } /** * checks whether a collection is shareable * - * @returns {Boolean} + * @return {boolean} */ isShareable() { if (!Array.isArray(this.allowedSharingModes)) { - return false; + return false } - return this.allowedSharingModes.includes(`{${NS.CALENDARSERVER}}can-be-shared`); + return this.allowedSharingModes.includes(`{${NS.CALENDARSERVER}}can-be-shared`) } /** * checks whether a collection is publishable * - * @returns {Boolean} + * @return {boolean} */ isPublishable() { if (!Array.isArray(this.allowedSharingModes)) { - return false; + return false } - return this.allowedSharingModes.includes(`{${NS.CALENDARSERVER}}can-be-published`); + return this.allowedSharingModes.includes(`{${NS.CALENDARSERVER}}can-be-published`) } /** @@ -147,9 +147,9 @@ export function davCollectionShareable(Base) { static getPropFindList() { return super.getPropFindList().concat([ [NS.OWNCLOUD, 'invite'], - [NS.CALENDARSERVER, 'allowed-sharing-modes'] - ]); + [NS.CALENDARSERVER, 'allowed-sharing-modes'], + ]) } - }; + } } diff --git a/src/models/davEvent.js b/src/models/davEvent.js index 19272c7d..fd70c9c5 100644 --- a/src/models/davEvent.js +++ b/src/models/davEvent.js @@ -30,8 +30,8 @@ export default class DAVEvent { */ constructor(type, options = {}) { Object.assign(this, { - type - }, options); + type, + }, options) } } diff --git a/src/models/davEventListener.js b/src/models/davEventListener.js index 26653011..f1bc50d9 100644 --- a/src/models/davEventListener.js +++ b/src/models/davEventListener.js @@ -24,38 +24,38 @@ export default class DAVEventListener { constructor() { - this._eventListeners = {}; + this._eventListeners = {} } /** * adds an event listener * * @param {string} type - * @param {function} listener + * @param {Function} listener * @param {object} options */ addEventListener(type, listener, options = null) { - this._eventListeners[type] = this._eventListeners[type] || []; - this._eventListeners[type].push({ listener, options }); + this._eventListeners[type] = this._eventListeners[type] || [] + this._eventListeners[type].push({ listener, options }) } /** * removes an event listener * * @param {string} type - * @param {function} dListener + * @param {Function} dListener */ removeEventListener(type, dListener) { if (!this._eventListeners[type]) { - return; + return } const index = this._eventListeners[type] - .findIndex(({ listener }) => listener === dListener); + .findIndex(({ listener }) => listener === dListener) if (index === -1) { - return; + return } - this._eventListeners[type].splice(index, 1); + this._eventListeners[type].splice(index, 1) } /** @@ -66,26 +66,26 @@ export default class DAVEventListener { */ dispatchEvent(type, event) { if (!this._eventListeners[type]) { - return; + return } - const listenersToCall = []; - const listenersToCallAndRemove = []; + const listenersToCall = [] + const listenersToCallAndRemove = [] this._eventListeners[type].forEach(({ listener, options }) => { if (options && options.once) { - listenersToCallAndRemove.push(listener); + listenersToCallAndRemove.push(listener) } else { - listenersToCall.push(listener); + listenersToCall.push(listener) } - }); + }) listenersToCallAndRemove.forEach(listener => { - this.removeEventListener(type, listener); - listener(event); - }); + this.removeEventListener(type, listener) + listener(event) + }) listenersToCall.forEach(listener => { - listener(event); - }); + listener(event) + }) } } diff --git a/src/models/davObject.js b/src/models/davObject.js index a74f38a4..f450c043 100644 --- a/src/models/davObject.js +++ b/src/models/davObject.js @@ -21,12 +21,12 @@ * */ -import DAVEventListener from './davEventListener.js'; -import NetworkRequestClientError from '../errors/networkRequestClientError.js'; -import * as NS from '../utility/namespaceUtility.js'; +import DAVEventListener from './davEventListener.js' +import NetworkRequestClientError from '../errors/networkRequestClientError.js' +import * as NS from '../utility/namespaceUtility.js' -import { debugFactory } from '../debug.js'; -const debug = debugFactory('DavObject'); +import { debugFactory } from '../debug.js' +const debug = debugFactory('DavObject') /** * @class @@ -37,12 +37,12 @@ export class DavObject extends DAVEventListener { /** * @param {DavCollection} parent - The parent collection this DavObject is a child of * @param {Request} request - The request object initialized by DavClient - * @param {String} url - Full url of this DavObject - * @param {Object} props - Properties including etag, content-type, etc. + * @param {string} url - Full url of this DavObject + * @param {object} props - Properties including etag, content-type, etc. * @param {boolean} isPartial - Are we dealing with the complete or just partial addressbook / calendar data */ constructor(parent, request, url, props, isPartial = false) { - super(); + super() Object.assign(this, { // parameters @@ -52,172 +52,175 @@ export class DavObject extends DAVEventListener { _props: props, // housekeeping _isPartial: isPartial, - _isDirty: false - }); + _isDirty: false, + }) - this._exposeProperty('etag', NS.DAV, 'getetag', true); - this._exposeProperty('contenttype', NS.DAV, 'getcontenttype'); + this._exposeProperty('etag', NS.DAV, 'getetag', true) + this._exposeProperty('contenttype', NS.DAV, 'getcontenttype') Object.defineProperty(this, 'url', { - get: () => this._url - }); + get: () => this._url, + }) } /** * gets unfiltered data for this object * * @param {boolean} forceReFetch Always refetch data, even if not partial - * @returns {Promise} + * @return {Promise} */ async fetchCompleteData(forceReFetch = false) { if (!forceReFetch && !this.isPartial()) { - return; + return } - const request = await this._request.propFind(this._url, this.constructor.getPropFindList(), 0); - this._props = request.body; - this._isDirty = false; - this._isPartial = false; + const request = await this._request.propFind(this._url, this.constructor.getPropFindList(), 0) + this._props = request.body + this._isDirty = false + this._isPartial = false } /** * copies a DavObject to a different DavCollection * @param {DavCollection} collection - * @param {Boolean} overwrite - * @returns {Promise} Promise that resolves to the copied DavObject + * @param {boolean} overwrite + * @param headers + * @return {Promise} Promise that resolves to the copied DavObject */ async copy(collection, overwrite = false, headers = {}) { - debug(`copying ${this.url} from ${this._parent.url} to ${collection.url}`); + debug(`copying ${this.url} from ${this._parent.url} to ${collection.url}`) if (this._parent === collection) { - throw new Error('Copying an object to the collection it\'s already part of is not supported'); + throw new Error('Copying an object to the collection it\'s already part of is not supported') } if (!this._parent.isSameCollectionTypeAs(collection)) { - throw new Error('Copying an object to a collection of a different type is not supported'); + throw new Error('Copying an object to a collection of a different type is not supported') } if (!collection.isWriteable()) { - throw new Error('Can not copy object into read-only destination collection'); + throw new Error('Can not copy object into read-only destination collection') } - const uri = this.url.split('/').splice(-1, 1)[0]; - const destination = collection.url + uri; + const uri = this.url.split('/').splice(-1, 1)[0] + const destination = collection.url + uri - await this._request.copy(this.url, destination, 0, overwrite, headers); - return collection.find(uri); + await this._request.copy(this.url, destination, 0, overwrite, headers) + return collection.find(uri) } /** * moves a DavObject to a different DavCollection * @param {DavCollection} collection - * @param {Boolean} overwrite - * @returns {Promise} + * @param {boolean} overwrite + * @param headers + * @return {Promise} */ async move(collection, overwrite = false, headers = {}) { - debug(`moving ${this.url} from ${this._parent.url} to ${collection.url}`); + debug(`moving ${this.url} from ${this._parent.url} to ${collection.url}`) if (this._parent === collection) { - throw new Error('Moving an object to the collection it\'s already part of is not supported'); + throw new Error('Moving an object to the collection it\'s already part of is not supported') } if (!this._parent.isSameCollectionTypeAs(collection)) { - throw new Error('Moving an object to a collection of a different type is not supported'); + throw new Error('Moving an object to a collection of a different type is not supported') } if (!collection.isWriteable()) { - throw new Error('Can not move object into read-only destination collection'); + throw new Error('Can not move object into read-only destination collection') } - const uri = this.url.split('/').splice(-1, 1)[0]; - const destination = collection.url + uri; + const uri = this.url.split('/').splice(-1, 1)[0] + const destination = collection.url + uri - await this._request.move(this.url, destination, overwrite, headers); - this._parent = collection; - this._url = destination; + await this._request.move(this.url, destination, overwrite, headers) + this._parent = collection + this._url = destination } /** * updates the DavObject on the server - * @returns {Promise} + * @return {Promise} */ async update() { // 1. Do not update filtered objects, because we would be loosing data on the server // 2. No need to update if object was never modified // 3. Do not update if called directly on DavObject, because there is no data prop if (this.isPartial() || !this.isDirty() || !this.data) { - return; + return } - const headers = {}; + const headers = {} // updating an object should use it's content-type if (this.contenttype) { - headers['Content-Type'] = `${this.contenttype}; charset=utf-8`; + headers['Content-Type'] = `${this.contenttype}; charset=utf-8` } if (this.etag) { - headers['If-Match'] = this.etag; + headers['If-Match'] = this.etag } return this._request.put(this.url, headers, this.data).then((res) => { - this._isDirty = false; + this._isDirty = false // Don't overwrite content-type, it's set to text/html in the response ... - this._props['{DAV:}getetag'] = res.xhr.getResponseHeader('etag'); + this._props['{DAV:}getetag'] = res.xhr.getResponseHeader('etag') }).catch((ex) => { - this._isDirty = true; + this._isDirty = true if (ex instanceof NetworkRequestClientError && ex.status === 412) { - this._isPartial = true; + this._isPartial = true } - throw ex; - }); + throw ex + }) } /** * deletes the DavObject on the server * - * @returns {Promise} + * @param headers + * @return {Promise} */ async delete(headers = {}) { - return this._request.delete(this.url, headers); + return this._request.delete(this.url, headers) } /** * returns whether the data in this DavObject is the result of a partial retrieval * - * @returns {boolean} + * @return {boolean} */ isPartial() { - return this._isPartial; + return this._isPartial } /** * returns whether the data in this DavObject contains unsynced changes * - * @returns {boolean} + * @return {boolean} */ isDirty() { - return this._isDirty; + return this._isDirty } /** * @protected - * @param {String} localName - * @param {String} xmlNamespace - * @param {String} xmlName + * @param {string} localName + * @param {string} xmlNamespace + * @param {string} xmlName * @param {boolean} mutable - * @returns void + * @return void */ _exposeProperty(localName, xmlNamespace, xmlName, mutable = false) { if (mutable) { Object.defineProperty(this, localName, { get: () => this._props[`{${xmlNamespace}}${xmlName}`], set: (val) => { - this._isDirty = true; - this._props[`{${xmlNamespace}}${xmlName}`] = val; - } - }); + this._isDirty = true + this._props[`{${xmlNamespace}}${xmlName}`] = val + }, + }) } else { Object.defineProperty(this, localName, { - get: () => this._props[`{${xmlNamespace}}${xmlName}`] - }); + get: () => this._props[`{${xmlNamespace}}${xmlName}`], + }) } } @@ -225,14 +228,14 @@ export class DavObject extends DAVEventListener { * A list of all property names that should be included * in propfind requests that may include this object * - * @returns {string[][]} + * @return {string[][]} */ static getPropFindList() { return [ [NS.DAV, 'getcontenttype'], [NS.DAV, 'getetag'], - [NS.DAV, 'resourcetype'] - ]; + [NS.DAV, 'resourcetype'], + ] } } diff --git a/src/models/deletedCalendar.js b/src/models/deletedCalendar.js index 6a002342..27d003a0 100644 --- a/src/models/deletedCalendar.js +++ b/src/models/deletedCalendar.js @@ -21,7 +21,7 @@ * */ -import { Calendar } from './calendar'; +import { Calendar } from './calendar.js' /** * This class represents a deleted calendar collection. diff --git a/src/models/principal.js b/src/models/principal.js index eca97441..6ab36fe5 100644 --- a/src/models/principal.js +++ b/src/models/principal.js @@ -22,11 +22,11 @@ * */ -import { DavObject } from './davObject.js'; -import * as NS from '../utility/namespaceUtility.js'; -import * as XMLUtility from '../utility/xmlUtility.js'; +import { DavObject } from './davObject.js' +import * as NS from '../utility/namespaceUtility.js' +import * as XMLUtility from '../utility/xmlUtility.js' -import prinicipalPropSet from '../propset/principalPropSet.js'; +import prinicipalPropSet from '../propset/principalPropSet.js' /** * @class @@ -42,138 +42,138 @@ export class Principal extends DavObject { * @inheritDoc */ constructor(...args) { - super(...args); + super(...args) Object.assign(this, { // house keeping _updatedProperties: [], // parsers / factories - _propSetFactory: [] - }); + _propSetFactory: [], + }) - this._registerPropSetFactory(prinicipalPropSet); + this._registerPropSetFactory(prinicipalPropSet) - this._exposeProperty('displayname', NS.DAV, 'displayname'); - this._exposeProperty('calendarUserType', NS.IETF_CALDAV, 'calendar-user-type'); - this._exposeProperty('calendarUserAddressSet', NS.IETF_CALDAV, 'calendar-user-address-set'); - this._exposeProperty('principalUrl', NS.DAV, 'principal-URL'); - this._exposeProperty('email', NS.SABREDAV, 'email-address'); - this._exposeProperty('language', NS.NEXTCLOUD, 'language'); + this._exposeProperty('displayname', NS.DAV, 'displayname') + this._exposeProperty('calendarUserType', NS.IETF_CALDAV, 'calendar-user-type') + this._exposeProperty('calendarUserAddressSet', NS.IETF_CALDAV, 'calendar-user-address-set') + this._exposeProperty('principalUrl', NS.DAV, 'principal-URL') + this._exposeProperty('email', NS.SABREDAV, 'email-address') + this._exposeProperty('language', NS.NEXTCLOUD, 'language') - this._exposeProperty('calendarHomes', NS.IETF_CALDAV, 'calendar-home-set'); - this._exposeProperty('scheduleInbox', NS.IETF_CALDAV, 'schedule-inbox-URL'); - this._exposeProperty('scheduleOutbox', NS.IETF_CALDAV, 'schedule-outbox-URL'); - this._exposeProperty('scheduleDefaultCalendarUrl', NS.IETF_CALDAV, 'schedule-default-calendar-URL', true); + this._exposeProperty('calendarHomes', NS.IETF_CALDAV, 'calendar-home-set') + this._exposeProperty('scheduleInbox', NS.IETF_CALDAV, 'schedule-inbox-URL') + this._exposeProperty('scheduleOutbox', NS.IETF_CALDAV, 'schedule-outbox-URL') + this._exposeProperty('scheduleDefaultCalendarUrl', NS.IETF_CALDAV, 'schedule-default-calendar-URL', true) - this._exposeProperty('addressBookHomes', NS.IETF_CARDDAV, 'addressbook-home-set'); + this._exposeProperty('addressBookHomes', NS.IETF_CARDDAV, 'addressbook-home-set') // Room and resource booking related - this._exposeProperty('roomType', NS.NEXTCLOUD, 'room-type'); - this._exposeProperty('roomSeatingCapacity', NS.NEXTCLOUD, 'room-seating-capacity'); - this._exposeProperty('roomBuildingAddress', NS.NEXTCLOUD, 'room-building-address'); - this._exposeProperty('roomBuildingStory', NS.NEXTCLOUD, 'room-building-story'); - this._exposeProperty('roomBuildingRoomNumber', NS.NEXTCLOUD, 'room-building-room-number'); - this._exposeProperty('roomFeatures', NS.NEXTCLOUD, 'room-features'); + this._exposeProperty('roomType', NS.NEXTCLOUD, 'room-type') + this._exposeProperty('roomSeatingCapacity', NS.NEXTCLOUD, 'room-seating-capacity') + this._exposeProperty('roomBuildingAddress', NS.NEXTCLOUD, 'room-building-address') + this._exposeProperty('roomBuildingStory', NS.NEXTCLOUD, 'room-building-story') + this._exposeProperty('roomBuildingRoomNumber', NS.NEXTCLOUD, 'room-building-room-number') + this._exposeProperty('roomFeatures', NS.NEXTCLOUD, 'room-features') Object.defineProperties(this, { principalScheme: { get: () => { - const baseUrl = this._request.pathname(this._request.baseUrl); - let principalURI = this.url.slice(baseUrl.length); + const baseUrl = this._request.pathname(this._request.baseUrl) + let principalURI = this.url.slice(baseUrl.length) if (principalURI.slice(-1) === '/') { - principalURI = principalURI.slice(0, -1); + principalURI = principalURI.slice(0, -1) } - return 'principal:' + principalURI; - } + return 'principal:' + principalURI + }, }, userId: { get: () => { if (this.calendarUserType !== 'INDIVIDUAL') { - return null; + return null } - return this.url.split('/').splice(-2, 2)[this.url.endsWith('/') ? 0 : 1]; - } + return this.url.split('/').splice(-2, 2)[this.url.endsWith('/') ? 0 : 1] + }, }, groupId: { get: () => { if (this.calendarUserType !== 'GROUP') { - return null; + return null } - return this.url.split('/').splice(-2, 2)[this.url.endsWith('/') ? 0 : 1]; - } + return this.url.split('/').splice(-2, 2)[this.url.endsWith('/') ? 0 : 1] + }, }, resourceId: { get: () => { if (this.calendarUserType !== 'RESOURCE') { - return null; + return null } - return this.url.split('/').splice(-2, 2)[this.url.endsWith('/') ? 0 : 1]; - } + return this.url.split('/').splice(-2, 2)[this.url.endsWith('/') ? 0 : 1] + }, }, roomId: { get: () => { if (this.calendarUserType !== 'ROOM') { - return null; + return null } - return this.url.split('/').splice(-2, 2)[this.url.endsWith('/') ? 0 : 1]; - } + return this.url.split('/').splice(-2, 2)[this.url.endsWith('/') ? 0 : 1] + }, }, roomAddress: { get: () => { const data = [ this.roomBuildingRoomNumber, this.roomBuildingStory, - this.roomBuildingAddress - ]; + this.roomBuildingAddress, + ] return data .filter(value => !!value) - .join(', '); - } - } - }); + .join(', ') + }, + }, + }) } /** * Expose property to the outside and track changes if it's mutable * * @protected - * @param {String} localName - * @param {String} xmlNamespace - * @param {String} xmlName + * @param {string} localName + * @param {string} xmlNamespace + * @param {string} xmlName * @param {boolean} mutable - * @returns void + * @return void */ _exposeProperty(localName, xmlNamespace, xmlName, mutable = false) { if (mutable) { Object.defineProperty(this, localName, { get: () => this._props[`{${xmlNamespace}}${xmlName}`], set: (val) => { - this._props[`{${xmlNamespace}}${xmlName}`] = val; + this._props[`{${xmlNamespace}}${xmlName}`] = val if (this._updatedProperties.indexOf(`{${xmlNamespace}}${xmlName}`) === -1) { - this._updatedProperties.push(`{${xmlNamespace}}${xmlName}`); + this._updatedProperties.push(`{${xmlNamespace}}${xmlName}`) } - } - }); + }, + }) } else { Object.defineProperty(this, localName, { - get: () => this._props[`{${xmlNamespace}}${xmlName}`] - }); + get: () => this._props[`{${xmlNamespace}}${xmlName}`], + }) } } /** * @protected * @param factory - * @returns void + * @return void */ _registerPropSetFactory(factory) { - this._propSetFactory.push(factory); + this._propSetFactory.push(factory) } /** @@ -187,8 +187,8 @@ export class Principal extends DavObject { [NS.DAV, 'principal-URL'], [NS.DAV, 'alternate-URI-set'], [NS.SABREDAV, 'email-address'], - [NS.NEXTCLOUD, 'language'] - ]; + [NS.NEXTCLOUD, 'language'], + ] if (options.enableCalDAV) { list.push( @@ -211,44 +211,44 @@ export class Principal extends DavObject { [NS.NEXTCLOUD, 'room-building-address'], [NS.NEXTCLOUD, 'room-building-story'], [NS.NEXTCLOUD, 'room-building-room-number'], - [NS.NEXTCLOUD, 'room-features'] - ); + [NS.NEXTCLOUD, 'room-features'], + ) } if (options.enableCardDAV) { list.push( - [NS.IETF_CARDDAV, 'addressbook-home-set'] - ); + [NS.IETF_CARDDAV, 'addressbook-home-set'], + ) } - return list; + return list } /** * Sends a PropPatch request to update the principal's properties. * The request is only made if properties actually changed. * - * @returns {Promise} + * @return {Promise} */ async update() { if (this._updatedProperties.length === 0) { - return; + return } - const properties = {}; + const properties = {} this._updatedProperties.forEach((updatedProperty) => { - properties[updatedProperty] = this._props[updatedProperty]; - }); - const propSet = this._propSetFactory.reduce((arr, p) => [...arr, ...p(properties)], []); + properties[updatedProperty] = this._props[updatedProperty] + }) + const propSet = this._propSetFactory.reduce((arr, p) => [...arr, ...p(properties)], []) const [skeleton, dPropSet] = XMLUtility.getRootSkeleton( [NS.DAV, 'propertyupdate'], [NS.DAV, 'set'], - [NS.DAV, 'prop']); + [NS.DAV, 'prop']) - dPropSet.push(...propSet); + dPropSet.push(...propSet) - const body = XMLUtility.serialize(skeleton); - await this._request.propPatch(this._url, {}, body); + const body = XMLUtility.serialize(skeleton) + await this._request.propPatch(this._url, {}, body) } } diff --git a/src/models/scheduleInbox.js b/src/models/scheduleInbox.js index 053dc876..cc826b87 100644 --- a/src/models/scheduleInbox.js +++ b/src/models/scheduleInbox.js @@ -21,9 +21,9 @@ * */ -import { Calendar } from './calendar.js'; -import * as NS from '../utility/namespaceUtility.js'; -import scheduleInboxPropSet from '../propset/scheduleInboxPropSet.js'; +import { Calendar } from './calendar.js' +import * as NS from '../utility/namespaceUtility.js' +import scheduleInboxPropSet from '../propset/scheduleInboxPropSet.js' export default class ScheduleInbox extends Calendar { @@ -31,12 +31,12 @@ export default class ScheduleInbox extends Calendar { * @inheritDoc */ constructor(...args) { - super(...args); + super(...args) - super._registerPropSetFactory(scheduleInboxPropSet); + super._registerPropSetFactory(scheduleInboxPropSet) // https://tools.ietf.org/html/rfc7953#section-7.2.4 - super._exposeProperty('availability', NS.IETF_CALDAV, 'calendar-availability', true); + super._exposeProperty('availability', NS.IETF_CALDAV, 'calendar-availability', true) } /** @@ -44,8 +44,8 @@ export default class ScheduleInbox extends Calendar { */ static getPropFindList() { return super.getPropFindList().concat([ - [NS.IETF_CALDAV, 'calendar-availability'] - ]); + [NS.IETF_CALDAV, 'calendar-availability'], + ]) } } diff --git a/src/models/scheduleOutbox.js b/src/models/scheduleOutbox.js index 910624ab..b89eb901 100644 --- a/src/models/scheduleOutbox.js +++ b/src/models/scheduleOutbox.js @@ -21,8 +21,8 @@ * */ -import { DavCollection } from './davCollection.js'; -import * as NS from '../utility/namespaceUtility.js'; +import { DavCollection } from './davCollection.js' +import * as NS from '../utility/namespaceUtility.js' export default class ScheduleOutbox extends DavCollection { @@ -31,35 +31,35 @@ export default class ScheduleOutbox extends DavCollection { * The data is required to be a valid iTIP data. * For an example, see https://tools.ietf.org/html/rfc6638#appendix-B.5 * - * @param {String} data iTIP with VFREEBUSY component and METHOD:REQUEST - * @returns {Promise} + * @param {string} data iTIP with VFREEBUSY component and METHOD:REQUEST + * @return {Promise} */ async freeBusyRequest(data) { - const result = {}; + const result = {} const response = await this._request.post(this.url, { - 'Content-Type': 'text/calendar; charset="utf-8"' - }, data); + 'Content-Type': 'text/calendar; charset="utf-8"', + }, data) - const domParser = new DOMParser(); - const document = domParser.parseFromString(response.body, 'application/xml'); + const domParser = new DOMParser() + const document = domParser.parseFromString(response.body, 'application/xml') - const responses = document.evaluate('/cl:schedule-response/cl:response', document, NS.resolve, XPathResult.ANY_TYPE, null); - let responseNode; + const responses = document.evaluate('/cl:schedule-response/cl:response', document, NS.resolve, XPathResult.ANY_TYPE, null) + let responseNode while ((responseNode = responses.iterateNext()) !== null) { - const recipient = document.evaluate('string(cl:recipient/d:href)', responseNode, NS.resolve, XPathResult.ANY_TYPE, null).stringValue; - const status = document.evaluate('string(cl:request-status)', responseNode, NS.resolve, XPathResult.ANY_TYPE, null).stringValue; - const calendarData = document.evaluate('string(cl:calendar-data)', responseNode, NS.resolve, XPathResult.ANY_TYPE, null).stringValue; - const success = /^2.\d(;.+)?$/.test(status); + const recipient = document.evaluate('string(cl:recipient/d:href)', responseNode, NS.resolve, XPathResult.ANY_TYPE, null).stringValue + const status = document.evaluate('string(cl:request-status)', responseNode, NS.resolve, XPathResult.ANY_TYPE, null).stringValue + const calendarData = document.evaluate('string(cl:calendar-data)', responseNode, NS.resolve, XPathResult.ANY_TYPE, null).stringValue + const success = /^2.\d(;.+)?$/.test(status) result[recipient] = { calendarData, status, - success - }; + success, + } } - return result; + return result } } diff --git a/src/models/subscription.js b/src/models/subscription.js index 7aa225cd..13f56be2 100644 --- a/src/models/subscription.js +++ b/src/models/subscription.js @@ -21,8 +21,8 @@ * */ -import { Calendar } from './calendar.js'; -import * as NS from '../utility/namespaceUtility.js'; +import { Calendar } from './calendar.js' +import * as NS from '../utility/namespaceUtility.js' /** * This class represents a subscription collection @@ -36,13 +36,13 @@ export class Subscription extends Calendar { * @inheritDoc */ constructor(...args) { - super(...args); + super(...args) - super._exposeProperty('source', NS.CALENDARSERVER, 'source', true); - super._exposeProperty('refreshRate', NS.APPLE, 'refreshrate', true); - super._exposeProperty('stripTodos', NS.CALENDARSERVER, 'subscribed-strip-todos', true); - super._exposeProperty('stripAlarms', NS.CALENDARSERVER, 'subscribed-strip-alarms', true); - super._exposeProperty('stripAttachments', NS.CALENDARSERVER, 'subscribed-strip-attachments', true); + super._exposeProperty('source', NS.CALENDARSERVER, 'source', true) + super._exposeProperty('refreshRate', NS.APPLE, 'refreshrate', true) + super._exposeProperty('stripTodos', NS.CALENDARSERVER, 'subscribed-strip-todos', true) + super._exposeProperty('stripAlarms', NS.CALENDARSERVER, 'subscribed-strip-alarms', true) + super._exposeProperty('stripAttachments', NS.CALENDARSERVER, 'subscribed-strip-attachments', true) } /** @@ -54,8 +54,8 @@ export class Subscription extends Calendar { [NS.APPLE, 'refreshrate'], [NS.CALENDARSERVER, 'subscribed-strip-todos'], [NS.CALENDARSERVER, 'subscribed-strip-alarms'], - [NS.CALENDARSERVER, 'subscribed-strip-attachments'] - ]); + [NS.CALENDARSERVER, 'subscribed-strip-attachments'], + ]) } } diff --git a/src/models/vcard.js b/src/models/vcard.js index b1f0f024..a032d50f 100644 --- a/src/models/vcard.js +++ b/src/models/vcard.js @@ -21,8 +21,8 @@ * */ -import { DavObject } from './davObject.js'; -import * as NS from '../utility/namespaceUtility.js'; +import { DavObject } from './davObject.js' +import * as NS from '../utility/namespaceUtility.js' /** * @class @@ -38,10 +38,10 @@ export class VCard extends DavObject { * @inheritDoc */ constructor(...args) { - super(...args); + super(...args) - super._exposeProperty('data', NS.IETF_CARDDAV, 'address-data', true); - super._exposeProperty('hasphoto', NS.NEXTCLOUD, 'has-photo', false); + super._exposeProperty('data', NS.IETF_CARDDAV, 'address-data', true) + super._exposeProperty('hasphoto', NS.NEXTCLOUD, 'has-photo', false) } /** @@ -49,8 +49,8 @@ export class VCard extends DavObject { */ static getPropFindList() { return super.getPropFindList().concat([ - [NS.IETF_CARDDAV, 'address-data'] - ]); + [NS.IETF_CARDDAV, 'address-data'], + ]) } } diff --git a/src/models/vobject.js b/src/models/vobject.js index b88b66ca..ec938ac3 100644 --- a/src/models/vobject.js +++ b/src/models/vobject.js @@ -21,8 +21,8 @@ * */ -import { DavObject } from './davObject.js'; -import * as NS from '../utility/namespaceUtility.js'; +import { DavObject } from './davObject.js' +import * as NS from '../utility/namespaceUtility.js' /** * @class @@ -38,9 +38,9 @@ export class VObject extends DavObject { * @inheritDoc */ constructor(...args) { - super(...args); + super(...args) - super._exposeProperty('data', NS.IETF_CALDAV, 'calendar-data', true); + super._exposeProperty('data', NS.IETF_CALDAV, 'calendar-data', true) } /** @@ -48,8 +48,8 @@ export class VObject extends DavObject { */ static getPropFindList() { return super.getPropFindList().concat([ - [NS.IETF_CALDAV, 'calendar-data'] - ]); + [NS.IETF_CALDAV, 'calendar-data'], + ]) } } diff --git a/src/parser.js b/src/parser.js index 37521651..f56495ac 100644 --- a/src/parser.js +++ b/src/parser.js @@ -33,23 +33,23 @@ export default class Parser { constructor() { /** * Key Value Map of propertyName => parser - * @type {Object} + * @type {object} * @private */ - this._parser = {}; + this._parser = {} // initialize default parsers shipped with this lib - this._registerDefaultParsers(); + this._registerDefaultParsers() } /** * checks if a parser exists for a given property name * - * @param {String} propertyName - * @returns {boolean} + * @param {string} propertyName + * @return {boolean} */ canParse(propertyName) { - return Object.prototype.hasOwnProperty.call(this._parser, propertyName); + return Object.prototype.hasOwnProperty.call(this._parser, propertyName) } /** @@ -61,31 +61,31 @@ export default class Parser { * @return {*} */ parse(document, node, resolver) { - const propertyName = `{${node.namespaceURI}}${node.localName}`; + const propertyName = `{${node.namespaceURI}}${node.localName}` if (!this.canParse(propertyName)) { - throw new Error(`Unable to parse unknown property "${propertyName}"`); + throw new Error(`Unable to parse unknown property "${propertyName}"`) } - return this._parser[propertyName](document, node, resolver); + return this._parser[propertyName](document, node, resolver) } /** * registers a parser for propertyName * - * @param {String} propertyName + * @param {string} propertyName * @param {Function} parser */ registerParser(propertyName, parser) { - this._parser[propertyName] = parser; + this._parser[propertyName] = parser } /** * unregisters a parser for propertyName * - * @param {String} propertyName + * @param {string} propertyName */ unregisterParser(propertyName) { - delete this._parser[propertyName]; + delete this._parser[propertyName] } /** @@ -95,119 +95,119 @@ export default class Parser { */ _registerDefaultParsers() { // RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV) - this.registerParser('{DAV:}displayname', Parser.text); - this.registerParser('{DAV:}creationdate', Parser.text); - this.registerParser('{DAV:}getcontentlength', Parser.decInt); - this.registerParser('{DAV:}getcontenttype', Parser.text); - this.registerParser('{DAV:}getcontentlanguage', Parser.text); - this.registerParser('{DAV:}getlastmodified', Parser.rfc1123Date); - this.registerParser('{DAV:}getetag', Parser.text); - this.registerParser('{DAV:}resourcetype', Parser.resourceType); + this.registerParser('{DAV:}displayname', Parser.text) + this.registerParser('{DAV:}creationdate', Parser.text) + this.registerParser('{DAV:}getcontentlength', Parser.decInt) + this.registerParser('{DAV:}getcontenttype', Parser.text) + this.registerParser('{DAV:}getcontentlanguage', Parser.text) + this.registerParser('{DAV:}getlastmodified', Parser.rfc1123Date) + this.registerParser('{DAV:}getetag', Parser.text) + this.registerParser('{DAV:}resourcetype', Parser.resourceType) // RFC 3744 - Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol - this.registerParser('{DAV:}inherited-acl-set', Parser.hrefs); - this.registerParser('{DAV:}group', Parser.href); - this.registerParser('{DAV:}owner', Parser.href); - this.registerParser('{DAV:}current-user-privilege-set', Parser.privileges); - this.registerParser('{DAV:}principal-collection-set', Parser.hrefs); - this.registerParser('{DAV:}principal-URL', Parser.href); - this.registerParser('{DAV:}alternate-URI-set', Parser.hrefs); - this.registerParser('{DAV:}group-member-set', Parser.hrefs); - this.registerParser('{DAV:}group-membership', Parser.hrefs); + this.registerParser('{DAV:}inherited-acl-set', Parser.hrefs) + this.registerParser('{DAV:}group', Parser.href) + this.registerParser('{DAV:}owner', Parser.href) + this.registerParser('{DAV:}current-user-privilege-set', Parser.privileges) + this.registerParser('{DAV:}principal-collection-set', Parser.hrefs) + this.registerParser('{DAV:}principal-URL', Parser.href) + this.registerParser('{DAV:}alternate-URI-set', Parser.hrefs) + this.registerParser('{DAV:}group-member-set', Parser.hrefs) + this.registerParser('{DAV:}group-membership', Parser.hrefs) // RFC 5397 - WebDAV Current Principal Extension - this.registerParser('{DAV:}current-user-principal', Parser.currentUserPrincipal); + this.registerParser('{DAV:}current-user-principal', Parser.currentUserPrincipal) // RFC 6578 - Collection Synchronization for Web Distributed Authoring and Versioning (WebDAV) - this.registerParser('{DAV:}sync-token', Parser.text); + this.registerParser('{DAV:}sync-token', Parser.text) // RFC 6352 - CardDAV: vCard Extensions to Web Distributed Authoring and Versioning (WebDAV) - this.registerParser('{urn:ietf:params:xml:ns:carddav}address-data', Parser.text); - this.registerParser('{urn:ietf:params:xml:ns:carddav}addressbook-description', Parser.text); - this.registerParser('{urn:ietf:params:xml:ns:carddav}supported-address-data', Parser.addressDataTypes); - this.registerParser('{urn:ietf:params:xml:ns:carddav}max-resource-size', Parser.decInt); - this.registerParser('{urn:ietf:params:xml:ns:carddav}addressbook-home-set', Parser.hrefs); - this.registerParser('{urn:ietf:params:xml:ns:carddav}principal-address', Parser.href); - this.registerParser('{urn:ietf:params:xml:ns:carddav}supported-collation-set', Parser.supportedCardDAVCollations); + this.registerParser('{urn:ietf:params:xml:ns:carddav}address-data', Parser.text) + this.registerParser('{urn:ietf:params:xml:ns:carddav}addressbook-description', Parser.text) + this.registerParser('{urn:ietf:params:xml:ns:carddav}supported-address-data', Parser.addressDataTypes) + this.registerParser('{urn:ietf:params:xml:ns:carddav}max-resource-size', Parser.decInt) + this.registerParser('{urn:ietf:params:xml:ns:carddav}addressbook-home-set', Parser.hrefs) + this.registerParser('{urn:ietf:params:xml:ns:carddav}principal-address', Parser.href) + this.registerParser('{urn:ietf:params:xml:ns:carddav}supported-collation-set', Parser.supportedCardDAVCollations) // RFC 4791 - Calendaring Extensions to WebDAV (CalDAV) - this.registerParser('{urn:ietf:params:xml:ns:caldav}calendar-data', Parser.text); - this.registerParser('{urn:ietf:params:xml:ns:caldav}calendar-home-set', Parser.hrefs); - this.registerParser('{urn:ietf:params:xml:ns:caldav}calendar-description', Parser.text); - this.registerParser('{urn:ietf:params:xml:ns:caldav}calendar-timezone', Parser.text); - this.registerParser('{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set', Parser.calendarComps); - this.registerParser('{urn:ietf:params:xml:ns:caldav}supported-calendar-data', Parser.calendarDatas); - this.registerParser('{urn:ietf:params:xml:ns:caldav}max-resource-size', Parser.decInt); - this.registerParser('{urn:ietf:params:xml:ns:caldav}min-date-time', Parser.iCalendarTimestamp); - this.registerParser('{urn:ietf:params:xml:ns:caldav}max-date-time', Parser.iCalendarTimestamp); - this.registerParser('{urn:ietf:params:xml:ns:caldav}max-instances', Parser.decInt); - this.registerParser('{urn:ietf:params:xml:ns:caldav}max-attendees-per-instance', Parser.decInt); - this.registerParser('{urn:ietf:params:xml:ns:caldav}supported-collation-set', Parser.supportedCalDAVCollations); + this.registerParser('{urn:ietf:params:xml:ns:caldav}calendar-data', Parser.text) + this.registerParser('{urn:ietf:params:xml:ns:caldav}calendar-home-set', Parser.hrefs) + this.registerParser('{urn:ietf:params:xml:ns:caldav}calendar-description', Parser.text) + this.registerParser('{urn:ietf:params:xml:ns:caldav}calendar-timezone', Parser.text) + this.registerParser('{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set', Parser.calendarComps) + this.registerParser('{urn:ietf:params:xml:ns:caldav}supported-calendar-data', Parser.calendarDatas) + this.registerParser('{urn:ietf:params:xml:ns:caldav}max-resource-size', Parser.decInt) + this.registerParser('{urn:ietf:params:xml:ns:caldav}min-date-time', Parser.iCalendarTimestamp) + this.registerParser('{urn:ietf:params:xml:ns:caldav}max-date-time', Parser.iCalendarTimestamp) + this.registerParser('{urn:ietf:params:xml:ns:caldav}max-instances', Parser.decInt) + this.registerParser('{urn:ietf:params:xml:ns:caldav}max-attendees-per-instance', Parser.decInt) + this.registerParser('{urn:ietf:params:xml:ns:caldav}supported-collation-set', Parser.supportedCalDAVCollations) // RFC 6638 - Scheduling Extensions to CalDAV - this.registerParser('{urn:ietf:params:xml:ns:caldav}schedule-outbox-URL', Parser.href); - this.registerParser('{urn:ietf:params:xml:ns:caldav}schedule-inbox-URL', Parser.href); - this.registerParser('{urn:ietf:params:xml:ns:caldav}calendar-user-address-set', Parser.hrefs); - this.registerParser('{urn:ietf:params:xml:ns:caldav}calendar-user-type', Parser.text); - this.registerParser('{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp', Parser.scheduleCalendarTransp); - this.registerParser('{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL', Parser.href); - this.registerParser('{urn:ietf:params:xml:ns:caldav}schedule-tag', Parser.text); + this.registerParser('{urn:ietf:params:xml:ns:caldav}schedule-outbox-URL', Parser.href) + this.registerParser('{urn:ietf:params:xml:ns:caldav}schedule-inbox-URL', Parser.href) + this.registerParser('{urn:ietf:params:xml:ns:caldav}calendar-user-address-set', Parser.hrefs) + this.registerParser('{urn:ietf:params:xml:ns:caldav}calendar-user-type', Parser.text) + this.registerParser('{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp', Parser.scheduleCalendarTransp) + this.registerParser('{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL', Parser.href) + this.registerParser('{urn:ietf:params:xml:ns:caldav}schedule-tag', Parser.text) // RFC 7809 - Calendaring Extensions to WebDAV (CalDAV): Time Zones by Reference - this.registerParser('{urn:ietf:params:xml:ns:caldav}timezone-service-set', Parser.hrefs); - this.registerParser('{urn:ietf:params:xml:ns:caldav}calendar-timezone-id', Parser.text); + this.registerParser('{urn:ietf:params:xml:ns:caldav}timezone-service-set', Parser.hrefs) + this.registerParser('{urn:ietf:params:xml:ns:caldav}calendar-timezone-id', Parser.text) // RFC 7953 - Calendar Availability - this.registerParser('{urn:ietf:params:xml:ns:caldav}calendar-availability', Parser.text); + this.registerParser('{urn:ietf:params:xml:ns:caldav}calendar-availability', Parser.text) // Apple - this.registerParser('{http://apple.com/ns/ical/}calendar-order', Parser.decInt); - this.registerParser('{http://apple.com/ns/ical/}calendar-color', Parser.color); - this.registerParser('{http://calendarserver.org/ns/}source', Parser.href); + this.registerParser('{http://apple.com/ns/ical/}calendar-order', Parser.decInt) + this.registerParser('{http://apple.com/ns/ical/}calendar-color', Parser.color) + this.registerParser('{http://calendarserver.org/ns/}source', Parser.href) // https://tools.ietf.org/html/draft-daboo-valarm-extensions-04#section-11.1 - this.registerParser('{urn:ietf:params:xml:ns:caldav}default-alarm-vevent-datetime', Parser.text); - this.registerParser('{urn:ietf:params:xml:ns:caldav}default-alarm-vevent-date', Parser.text); - this.registerParser('{urn:ietf:params:xml:ns:caldav}default-alarm-vtodo-datetime', Parser.text); - this.registerParser('{urn:ietf:params:xml:ns:caldav}default-alarm-vtodo-date', Parser.text); + this.registerParser('{urn:ietf:params:xml:ns:caldav}default-alarm-vevent-datetime', Parser.text) + this.registerParser('{urn:ietf:params:xml:ns:caldav}default-alarm-vevent-date', Parser.text) + this.registerParser('{urn:ietf:params:xml:ns:caldav}default-alarm-vtodo-datetime', Parser.text) + this.registerParser('{urn:ietf:params:xml:ns:caldav}default-alarm-vtodo-date', Parser.text) // https://github.com/apple/ccs-calendarserver/blob/master/doc/Extensions/caldav-ctag.txt - this.registerParser('{http://calendarserver.org/ns/}getctag', Parser.text); + this.registerParser('{http://calendarserver.org/ns/}getctag', Parser.text) // https://github.com/apple/ccs-calendarserver/blob/master/doc/Extensions/caldav-proxy.txt - this.registerParser('{http://calendarserver.org/ns/}calendar-proxy-read-for', Parser.hrefs); - this.registerParser('{http://calendarserver.org/ns/}calendar-proxy-write-for', Parser.hrefs); + this.registerParser('{http://calendarserver.org/ns/}calendar-proxy-read-for', Parser.hrefs) + this.registerParser('{http://calendarserver.org/ns/}calendar-proxy-write-for', Parser.hrefs) // https://github.com/apple/ccs-calendarserver/blob/master/doc/Extensions/caldav-sharing.txt - this.registerParser('{http://calendarserver.org/ns/}allowed-sharing-modes', Parser.allowedSharingModes); - this.registerParser('{http://calendarserver.org/ns/}shared-url', Parser.href); - this.registerParser('{http://sabredav.org/ns}owner-principal', Parser.href); - this.registerParser('{http://sabredav.org/ns}read-only', Parser.bool); - this.registerParser('{http://calendarserver.org/ns/}pre-publish-url', Parser.href); - this.registerParser('{http://calendarserver.org/ns/}publish-url', Parser.href); + this.registerParser('{http://calendarserver.org/ns/}allowed-sharing-modes', Parser.allowedSharingModes) + this.registerParser('{http://calendarserver.org/ns/}shared-url', Parser.href) + this.registerParser('{http://sabredav.org/ns}owner-principal', Parser.href) + this.registerParser('{http://sabredav.org/ns}read-only', Parser.bool) + this.registerParser('{http://calendarserver.org/ns/}pre-publish-url', Parser.href) + this.registerParser('{http://calendarserver.org/ns/}publish-url', Parser.href) // Nextcloud custom sharing - this.registerParser('{http://owncloud.org/ns}invite', Parser.ocInvite); + this.registerParser('{http://owncloud.org/ns}invite', Parser.ocInvite) // Nextcloud specific - this.registerParser('{http://owncloud.org/ns}calendar-enabled', Parser.bool); - this.registerParser('{http://owncloud.org/ns}enabled', Parser.bool); - this.registerParser('{http://owncloud.org/ns}read-only', Parser.bool); - this.registerParser('{http://nextcloud.com/ns}owner-displayname', Parser.text); - this.registerParser('{http://nextcloud.com/ns}deleted-at', Parser.iso8601DateTime); - this.registerParser('{http://nextcloud.com/ns}calendar-uri', Parser.text); - this.registerParser('{http://nextcloud.com/ns}has-photo', Parser.bool); - this.registerParser('{http://nextcloud.com/ns}trash-bin-retention-duration', Parser.decInt); - this.registerParser('{http://nextcloud.com/ns}language', Parser.text); - this.registerParser('{http://nextcloud.com/ns}room-type', Parser.text); - this.registerParser('{http://nextcloud.com/ns}room-seating-capacity', Parser.decInt); - this.registerParser('{http://nextcloud.com/ns}room-building-address', Parser.text); - this.registerParser('{http://nextcloud.com/ns}room-building-story', Parser.text); - this.registerParser('{http://nextcloud.com/ns}room-building-room-number', Parser.text); - this.registerParser('{http://nextcloud.com/ns}room-features', Parser.text); + this.registerParser('{http://owncloud.org/ns}calendar-enabled', Parser.bool) + this.registerParser('{http://owncloud.org/ns}enabled', Parser.bool) + this.registerParser('{http://owncloud.org/ns}read-only', Parser.bool) + this.registerParser('{http://nextcloud.com/ns}owner-displayname', Parser.text) + this.registerParser('{http://nextcloud.com/ns}deleted-at', Parser.iso8601DateTime) + this.registerParser('{http://nextcloud.com/ns}calendar-uri', Parser.text) + this.registerParser('{http://nextcloud.com/ns}has-photo', Parser.bool) + this.registerParser('{http://nextcloud.com/ns}trash-bin-retention-duration', Parser.decInt) + this.registerParser('{http://nextcloud.com/ns}language', Parser.text) + this.registerParser('{http://nextcloud.com/ns}room-type', Parser.text) + this.registerParser('{http://nextcloud.com/ns}room-seating-capacity', Parser.decInt) + this.registerParser('{http://nextcloud.com/ns}room-building-address', Parser.text) + this.registerParser('{http://nextcloud.com/ns}room-building-story', Parser.text) + this.registerParser('{http://nextcloud.com/ns}room-building-room-number', Parser.text) + this.registerParser('{http://nextcloud.com/ns}room-features', Parser.text) // Sabre/Dav specific - this.registerParser('{http://sabredav.org/ns}email-address', Parser.text); + this.registerParser('{http://sabredav.org/ns}email-address', Parser.text) } /** @@ -216,10 +216,10 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {String} + * @return {string} */ static text(document, node, resolver) { - return document.evaluate('string(.)', node, resolver, XPathResult.ANY_TYPE, null).stringValue; + return document.evaluate('string(.)', node, resolver, XPathResult.ANY_TYPE, null).stringValue } /** @@ -228,10 +228,10 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {Boolean} + * @return {boolean} */ static bool(document, node, resolver) { - return Parser.text(document, node, resolver) === '1'; + return Parser.text(document, node, resolver) === '1' } /** @@ -240,10 +240,10 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {Number} + * @return {number} */ static decInt(document, node, resolver) { - return parseInt(Parser.text(document, node, resolver), 10); + return parseInt(Parser.text(document, node, resolver), 10) } /** @@ -252,13 +252,13 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {Date} + * @return {Date} */ static rfc1123Date(document, node, resolver) { - const text = Parser.text(document, node, resolver); + const text = Parser.text(document, node, resolver) // TODO this might not work in every browser - return new Date(text); + return new Date(text) } /** @@ -267,12 +267,12 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {Date} + * @return {Date} */ static iso8601DateTime(document, node, resolver) { - const text = Parser.text(document, node, resolver); + const text = Parser.text(document, node, resolver) - return new Date(text); + return new Date(text) } /** @@ -281,23 +281,23 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {Date} + * @return {Date} */ static iCalendarTimestamp(document, node, resolver) { - const text = Parser.text(document, node, resolver); + const text = Parser.text(document, node, resolver) - const year = parseInt(text.slice(0, 4), 10); - const month = parseInt(text.slice(4, 6), 10) - 1; - const date = parseInt(text.slice(6, 8), 10); + const year = parseInt(text.slice(0, 4), 10) + const month = parseInt(text.slice(4, 6), 10) - 1 + const date = parseInt(text.slice(6, 8), 10) - const hour = parseInt(text.slice(9, 11), 10); - const minute = parseInt(text.slice(11, 13), 10); - const second = parseInt(text.slice(13, 15), 10); + const hour = parseInt(text.slice(9, 11), 10) + const minute = parseInt(text.slice(11, 13), 10) + const second = parseInt(text.slice(13, 15), 10) - const dateObj = new Date(); - dateObj.setUTCFullYear(year, month, date); - dateObj.setUTCHours(hour, minute, second, 0); - return dateObj; + const dateObj = new Date() + dateObj.setUTCFullYear(year, month, date) + dateObj.setUTCHours(hour, minute, second, 0) + return dateObj } /** @@ -306,21 +306,21 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {String[]} + * @return {string[]} */ static resourceType(document, node, resolver) { - const result = []; - const children = document.evaluate('*', node, resolver, XPathResult.ANY_TYPE, null); - let childNode; + const result = [] + const children = document.evaluate('*', node, resolver, XPathResult.ANY_TYPE, null) + let childNode while ((childNode = children.iterateNext()) !== null) { - const ns = document.evaluate('namespace-uri(.)', childNode, resolver, XPathResult.ANY_TYPE, null).stringValue; - const local = document.evaluate('local-name(.)', childNode, resolver, XPathResult.ANY_TYPE, null).stringValue; + const ns = document.evaluate('namespace-uri(.)', childNode, resolver, XPathResult.ANY_TYPE, null).stringValue + const local = document.evaluate('local-name(.)', childNode, resolver, XPathResult.ANY_TYPE, null).stringValue - result.push(`{${ns}}${local}`); + result.push(`{${ns}}${local}`) } - return result; + return result } /** @@ -329,10 +329,10 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {String} + * @return {string} */ static href(document, node, resolver) { - return document.evaluate('string(d:href)', node, resolver, XPathResult.ANY_TYPE, null).stringValue; + return document.evaluate('string(d:href)', node, resolver, XPathResult.ANY_TYPE, null).stringValue } /** @@ -341,18 +341,18 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {String[]} + * @return {string[]} */ static hrefs(document, node, resolver) { - const result = []; - const hrefs = document.evaluate('d:href', node, resolver, XPathResult.ANY_TYPE, null); - let hrefNode; + const result = [] + const hrefs = document.evaluate('d:href', node, resolver, XPathResult.ANY_TYPE, null) + let hrefNode while ((hrefNode = hrefs.iterateNext()) !== null) { - result.push(document.evaluate('string(.)', hrefNode, resolver, XPathResult.ANY_TYPE, null).stringValue); + result.push(document.evaluate('string(.)', hrefNode, resolver, XPathResult.ANY_TYPE, null).stringValue) } - return result; + return result } /** @@ -361,21 +361,21 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {String[]} + * @return {string[]} */ static privileges(document, node, resolver) { - const result = []; - const privileges = document.evaluate('d:privilege/*', node, resolver, XPathResult.ANY_TYPE, null); - let privilegeNode; + const result = [] + const privileges = document.evaluate('d:privilege/*', node, resolver, XPathResult.ANY_TYPE, null) + let privilegeNode while ((privilegeNode = privileges.iterateNext()) !== null) { - const ns = document.evaluate('namespace-uri(.)', privilegeNode, resolver, XPathResult.ANY_TYPE, null).stringValue; - const local = document.evaluate('local-name(.)', privilegeNode, resolver, XPathResult.ANY_TYPE, null).stringValue; + const ns = document.evaluate('namespace-uri(.)', privilegeNode, resolver, XPathResult.ANY_TYPE, null).stringValue + const local = document.evaluate('local-name(.)', privilegeNode, resolver, XPathResult.ANY_TYPE, null).stringValue - result.push(`{${ns}}${local}`); + result.push(`{${ns}}${local}`) } - return result; + return result } /** @@ -384,24 +384,24 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {Object} - * @property {String} type - * @property {String} href + * @return {object} + * @property {string} type + * @property {string} href */ static currentUserPrincipal(document, node, resolver) { const unauthenticatedCount - = document.evaluate('count(d:unauthenticated)', node, resolver, XPathResult.ANY_TYPE, null).numberValue; + = document.evaluate('count(d:unauthenticated)', node, resolver, XPathResult.ANY_TYPE, null).numberValue if (unauthenticatedCount !== 0) { return { type: 'unauthenticated', - href: null - }; + href: null, + } } else { return { type: 'href', - href: Parser.href(...arguments) - }; + href: Parser.href(...arguments), + } } } @@ -411,21 +411,21 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {*} + * @return {*} */ static addressDataTypes(document, node, resolver) { - const result = []; - const addressDatas = document.evaluate('cr:address-data-type', node, resolver, XPathResult.ANY_TYPE, null); - let addressDataNode; + const result = [] + const addressDatas = document.evaluate('cr:address-data-type', node, resolver, XPathResult.ANY_TYPE, null) + let addressDataNode while ((addressDataNode = addressDatas.iterateNext()) !== null) { result.push({ 'content-type': document.evaluate('string(@content-type)', addressDataNode, resolver, XPathResult.ANY_TYPE, null).stringValue, - version: document.evaluate('string(@version)', addressDataNode, resolver, XPathResult.ANY_TYPE, null).stringValue - }); + version: document.evaluate('string(@version)', addressDataNode, resolver, XPathResult.ANY_TYPE, null).stringValue, + }) } - return result; + return result } /** @@ -434,18 +434,18 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {*} + * @return {*} */ static supportedCardDAVCollations(document, node, resolver) { - const result = []; - const collations = document.evaluate('cr:supported-collation', node, resolver, XPathResult.ANY_TYPE, null); - let collationNode; + const result = [] + const collations = document.evaluate('cr:supported-collation', node, resolver, XPathResult.ANY_TYPE, null) + let collationNode while ((collationNode = collations.iterateNext()) !== null) { - result.push(document.evaluate('string(.)', collationNode, resolver, XPathResult.ANY_TYPE, null).stringValue); + result.push(document.evaluate('string(.)', collationNode, resolver, XPathResult.ANY_TYPE, null).stringValue) } - return result; + return result } /** @@ -454,18 +454,18 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {*} + * @return {*} */ static supportedCalDAVCollations(document, node, resolver) { - const result = []; - const collations = document.evaluate('cl:supported-collation', node, resolver, XPathResult.ANY_TYPE, null); - let collationNode; + const result = [] + const collations = document.evaluate('cl:supported-collation', node, resolver, XPathResult.ANY_TYPE, null) + let collationNode while ((collationNode = collations.iterateNext()) !== null) { - result.push(document.evaluate('string(.)', collationNode, resolver, XPathResult.ANY_TYPE, null).stringValue); + result.push(document.evaluate('string(.)', collationNode, resolver, XPathResult.ANY_TYPE, null).stringValue) } - return result; + return result } /** @@ -474,18 +474,18 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {String[]} + * @return {string[]} */ static calendarComps(document, node, resolver) { - const result = []; - const comps = document.evaluate('cl:comp', node, resolver, XPathResult.ANY_TYPE, null); - let compNode; + const result = [] + const comps = document.evaluate('cl:comp', node, resolver, XPathResult.ANY_TYPE, null) + let compNode while ((compNode = comps.iterateNext()) !== null) { - result.push(document.evaluate('string(@name)', compNode, resolver, XPathResult.ANY_TYPE, null).stringValue); + result.push(document.evaluate('string(@name)', compNode, resolver, XPathResult.ANY_TYPE, null).stringValue) } - return result; + return result } /** @@ -494,21 +494,21 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {*} + * @return {*} */ static calendarDatas(document, node, resolver) { - const result = []; - const calendarDatas = document.evaluate('cl:calendar-data', node, resolver, XPathResult.ANY_TYPE, null); - let calendarDataNode; + const result = [] + const calendarDatas = document.evaluate('cl:calendar-data', node, resolver, XPathResult.ANY_TYPE, null) + let calendarDataNode while ((calendarDataNode = calendarDatas.iterateNext()) !== null) { result.push({ 'content-type': document.evaluate('string(@content-type)', calendarDataNode, resolver, XPathResult.ANY_TYPE, null).stringValue, - version: document.evaluate('string(@version)', calendarDataNode, resolver, XPathResult.ANY_TYPE, null).stringValue - }); + version: document.evaluate('string(@version)', calendarDataNode, resolver, XPathResult.ANY_TYPE, null).stringValue, + }) } - return result; + return result } /** @@ -517,13 +517,13 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {String} + * @return {string} */ static scheduleCalendarTransp(document, node, resolver) { - const children = document.evaluate('cl:opaque | cl:transparent', node, resolver, XPathResult.ANY_TYPE, null); - const childNode = children.iterateNext(); + const children = document.evaluate('cl:opaque | cl:transparent', node, resolver, XPathResult.ANY_TYPE, null) + const childNode = children.iterateNext() if (childNode) { - return document.evaluate('local-name(.)', childNode, resolver, XPathResult.ANY_TYPE, null).stringValue; + return document.evaluate('local-name(.)', childNode, resolver, XPathResult.ANY_TYPE, null).stringValue } } @@ -534,18 +534,18 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {String} + * @return {string} */ static color(document, node, resolver) { - const text = Parser.text(document, node, resolver); + const text = Parser.text(document, node, resolver) // some stupid clients store an alpha value in the rgb hash (like #rrggbbaa) *cough cough* Apple Calendar *cough cough* // but some browsers can't parse that *cough cough* Safari 9 *cough cough* // Safari 10 seems to support this though if (text.length === 9) { - return text.slice(0, 7); + return text.slice(0, 7) } - return text; + return text } /** @@ -554,21 +554,21 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {String[]} + * @return {string[]} */ static allowedSharingModes(document, node, resolver) { - const result = []; - const children = document.evaluate('cs:can-be-shared | cs:can-be-published', node, resolver, XPathResult.ANY_TYPE, null); - let childNode; + const result = [] + const children = document.evaluate('cs:can-be-shared | cs:can-be-published', node, resolver, XPathResult.ANY_TYPE, null) + let childNode while ((childNode = children.iterateNext()) !== null) { - const ns = document.evaluate('namespace-uri(.)', childNode, resolver, XPathResult.ANY_TYPE, null).stringValue; - const local = document.evaluate('local-name(.)', childNode, resolver, XPathResult.ANY_TYPE, null).stringValue; + const ns = document.evaluate('namespace-uri(.)', childNode, resolver, XPathResult.ANY_TYPE, null).stringValue + const local = document.evaluate('local-name(.)', childNode, resolver, XPathResult.ANY_TYPE, null).stringValue - result.push(`{${ns}}${local}`); + result.push(`{${ns}}${local}`) } - return result; + return result } /** @@ -577,23 +577,23 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {*} + * @return {*} */ static ocInvite(document, node, resolver) { - const result = []; - const users = document.evaluate('oc:user', node, resolver, XPathResult.ANY_TYPE, null); - let userNode; + const result = [] + const users = document.evaluate('oc:user', node, resolver, XPathResult.ANY_TYPE, null) + let userNode while ((userNode = users.iterateNext()) !== null) { result.push({ href: Parser.href(document, userNode, resolver), 'common-name': document.evaluate('string(oc:common-name)', userNode, resolver, XPathResult.ANY_TYPE, null).stringValue, 'invite-accepted': document.evaluate('count(oc:invite-accepted)', userNode, resolver, XPathResult.ANY_TYPE, null).numberValue === 1, - access: Parser.ocAccess(document, userNode, resolver) - }); + access: Parser.ocAccess(document, userNode, resolver), + }) } - return result; + return result } /** @@ -602,21 +602,21 @@ export default class Parser { * @param {Document} document * @param {Node} node * @param {XPathNSResolver} resolver - * @returns {String[]} + * @return {string[]} */ static ocAccess(document, node, resolver) { - const result = []; - const privileges = document.evaluate('oc:access/*', node, resolver, XPathResult.ANY_TYPE, null); - let privilegeNode; + const result = [] + const privileges = document.evaluate('oc:access/*', node, resolver, XPathResult.ANY_TYPE, null) + let privilegeNode while ((privilegeNode = privileges.iterateNext()) !== null) { - const ns = document.evaluate('namespace-uri(.)', privilegeNode, resolver, XPathResult.ANY_TYPE, null).stringValue; - const local = document.evaluate('local-name(.)', privilegeNode, resolver, XPathResult.ANY_TYPE, null).stringValue; + const ns = document.evaluate('namespace-uri(.)', privilegeNode, resolver, XPathResult.ANY_TYPE, null).stringValue + const local = document.evaluate('local-name(.)', privilegeNode, resolver, XPathResult.ANY_TYPE, null).stringValue - result.push(`{${ns}}${local}`); + result.push(`{${ns}}${local}`) } - return result; + return result } } diff --git a/src/propset/addressBookPropSet.js b/src/propset/addressBookPropSet.js index 58658ecb..a4381ed3 100644 --- a/src/propset/addressBookPropSet.js +++ b/src/propset/addressBookPropSet.js @@ -21,7 +21,7 @@ * */ -import * as NS from '../utility/namespaceUtility.js'; +import * as NS from '../utility/namespaceUtility.js' /** * @@ -29,32 +29,32 @@ import * as NS from '../utility/namespaceUtility.js'; * - {urn:ietf:params:xml:ns:carddav}addressbook-description * - {http://owncloud.org/ns}enabled * - * @param {Object} props - * @return {Object} + * @param {object} props + * @return {object} */ export default function addressBookPropSet(props) { - const xmlified = []; + const xmlified = [] Object.entries(props).forEach(([key, value]) => { switch (key) { case '{urn:ietf:params:xml:ns:carddav}addressbook-description': xmlified.push({ name: [NS.IETF_CARDDAV, 'addressbook-description'], - value: value - }); - break; + value, + }) + break case '{http://owncloud.org/ns}enabled': xmlified.push({ name: [NS.OWNCLOUD, 'enabled'], - value: value ? '1' : '0' - }); - break; + value: value ? '1' : '0', + }) + break default: - break; + break } - }); + }) - return xmlified; + return xmlified } diff --git a/src/propset/calendarPropSet.js b/src/propset/calendarPropSet.js index 5aaabfe4..dfd5f5db 100644 --- a/src/propset/calendarPropSet.js +++ b/src/propset/calendarPropSet.js @@ -21,7 +21,7 @@ * */ -import * as NS from '../utility/namespaceUtility.js'; +import * as NS from '../utility/namespaceUtility.js' /** * @@ -33,63 +33,63 @@ import * as NS from '../utility/namespaceUtility.js'; * - {urn:ietf:params:xml:ns:caldav}calendar-timezone * - {http://owncloud.org/ns}calendar-enabled * - * @param {Object} props - * @return {Object} + * @param {object} props + * @return {object} */ export default function calendarPropSet(props) { - const xmlified = []; + const xmlified = [] Object.entries(props).forEach(([key, value]) => { switch (key) { case '{http://apple.com/ns/ical/}calendar-order': xmlified.push({ name: [NS.APPLE, 'calendar-order'], - value: value.toString() - }); - break; + value: value.toString(), + }) + break case '{http://apple.com/ns/ical/}calendar-color': xmlified.push({ name: [NS.APPLE, 'calendar-color'], - value: value - }); - break; + value, + }) + break case '{http://calendarserver.org/ns/}source': xmlified.push({ name: [NS.CALENDARSERVER, 'source'], children: [{ name: [NS.DAV, 'href'], - value: value - }] - }); - break; + value, + }], + }) + break case '{urn:ietf:params:xml:ns:caldav}calendar-description': xmlified.push({ name: [NS.IETF_CALDAV, 'calendar-description'], - value: value - }); - break; + value, + }) + break case '{urn:ietf:params:xml:ns:caldav}calendar-timezone': xmlified.push({ name: [NS.IETF_CALDAV, 'calendar-timezone'], - value: value - }); - break; + value, + }) + break case '{http://owncloud.org/ns}calendar-enabled': xmlified.push({ name: [NS.OWNCLOUD, 'calendar-enabled'], - value: value ? '1' : '0' - }); - break; + value: value ? '1' : '0', + }) + break default: - break; + break } - }); + }) - return xmlified; + return xmlified } diff --git a/src/propset/davCollectionPropSet.js b/src/propset/davCollectionPropSet.js index 46ccc1bf..68abd24c 100644 --- a/src/propset/davCollectionPropSet.js +++ b/src/propset/davCollectionPropSet.js @@ -21,32 +21,32 @@ * */ -import * as NS from '../utility/namespaceUtility.js'; +import * as NS from '../utility/namespaceUtility.js' /** * * This function is capable of creating the propset xml structure for: * - {DAV:}displayname * - * @param {Object} props - * @return {Object} + * @param {object} props + * @return {object} */ export default function davCollectionPropSet(props) { - const xmlified = []; + const xmlified = [] Object.entries(props).forEach(([key, value]) => { switch (key) { case '{DAV:}displayname': xmlified.push({ name: [NS.DAV, 'displayname'], - value: value - }); - break; + value, + }) + break default: - break; + break } - }); + }) - return xmlified; + return xmlified } diff --git a/src/propset/principalPropSet.js b/src/propset/principalPropSet.js index e712bfbf..ac6276e1 100644 --- a/src/propset/principalPropSet.js +++ b/src/propset/principalPropSet.js @@ -24,17 +24,17 @@ * */ -import * as NS from '../utility/namespaceUtility.js'; +import * as NS from '../utility/namespaceUtility.js' /** * This function is capable of creating the propset xml structure for: * - '{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL': * - * @param {Object} props - * @return {Object} + * @param {object} props + * @return {object} */ export default function prinicipalPropSet(props) { - const xmlified = []; + const xmlified = [] Object.entries(props).forEach(([key, value]) => { switch (key) { @@ -44,13 +44,13 @@ export default function prinicipalPropSet(props) { children: [ { name: ['DAV:', 'href'], - value - } - ] - }); - break; + value, + }, + ], + }) + break } - }); + }) - return xmlified; + return xmlified } diff --git a/src/propset/scheduleInboxPropSet.js b/src/propset/scheduleInboxPropSet.js index c1cdf70c..fb7616b5 100644 --- a/src/propset/scheduleInboxPropSet.js +++ b/src/propset/scheduleInboxPropSet.js @@ -21,28 +21,28 @@ * */ -import * as NS from '../utility/namespaceUtility.js'; +import * as NS from '../utility/namespaceUtility.js' /** * This function is capable of creating the propset xml structure for: * - {urn:ietf:params:xml:ns:caldav}calendar-availability * - * @param {Object} props - * @return {Object} + * @param {object} props + * @return {object} */ export default function calendarPropSet(props) { - const xmlified = []; + const xmlified = [] Object.entries(props).forEach(([key, value]) => { switch (key) { case '{urn:ietf:params:xml:ns:caldav}calendar-availability': xmlified.push({ name: [NS.IETF_CALDAV, 'calendar-availability'], - value: value.toString() - }); - break; + value: value.toString(), + }) + break } - }); + }) - return xmlified; + return xmlified } diff --git a/src/request.js b/src/request.js index 2dac9581..e5dc0284 100644 --- a/src/request.js +++ b/src/request.js @@ -21,14 +21,14 @@ * */ -import * as NS from './utility/namespaceUtility.js'; -import * as XMLUtility from './utility/xmlUtility.js'; +import * as NS from './utility/namespaceUtility.js' +import * as XMLUtility from './utility/xmlUtility.js' -import NetworkRequestAbortedError from './errors/networkRequestAbortedError.js'; -import NetworkRequestError from './errors/networkRequestError.js'; -import NetworkRequestServerError from './errors/networkRequestServerError.js'; -import NetworkRequestClientError from './errors/networkRequestClientError.js'; -import NetworkRequestHttpError from './errors/networkRequestHttpError.js'; +import NetworkRequestAbortedError from './errors/networkRequestAbortedError.js' +import NetworkRequestError from './errors/networkRequestError.js' +import NetworkRequestServerError from './errors/networkRequestServerError.js' +import NetworkRequestClientError from './errors/networkRequestClientError.js' +import NetworkRequestHttpError from './errors/networkRequestHttpError.js' /** * Request class is used to send any kind of request to the DAV server @@ -39,235 +39,235 @@ export default class Request { /** * Creates a new Request object * - * @param {String} baseUrl - root url of DAV server, use OC.remote('dav') + * @param {string} baseUrl - root url of DAV server, use OC.remote('dav') * @param {Parser} parser - instance of Parser class * @param {Function} xhrProvider - Function that returns new XMLHttpRequest objects */ constructor(baseUrl, parser, xhrProvider = () => new XMLHttpRequest()) { - this.baseUrl = baseUrl; - this.parser = parser; - this.xhrProvider = xhrProvider; + this.baseUrl = baseUrl + this.parser = parser + this.xhrProvider = xhrProvider } /** * sends a GET request * - * @param {String} url - URL to do the request on - * @param {Object} headers - additional HTTP headers to send - * @param {String} body - request body + * @param {string} url - URL to do the request on + * @param {object} headers - additional HTTP headers to send + * @param {string} body - request body * @param {Function} beforeRequestHandler - custom function to be called before the request is made * @param {Function} afterRequestHandler - custom function to be called after the request was made - * @returns {Promise<{Object}>} - * @property {String|Object} body - * @property {Number} status + * @return {Promise<{Object}>} + * @property {string | object} body + * @property {number} status * @property {XMLHttpRequest} xhr */ async get(url, headers = {}, body = null, beforeRequestHandler = () => null, afterRequestHandler = () => null) { - return this.request('GET', url, headers, body, beforeRequestHandler, afterRequestHandler); + return this.request('GET', url, headers, body, beforeRequestHandler, afterRequestHandler) } /** * sends a PATCH request * - * @param {String} url - URL to do the request on - * @param {Object} headers - additional HTTP headers to send - * @param {String} body - request body + * @param {string} url - URL to do the request on + * @param {object} headers - additional HTTP headers to send + * @param {string} body - request body * @param {Function} beforeRequestHandler - custom function to be called before the request is made * @param {Function} afterRequestHandler - custom function to be called after the request was made - * @returns {Promise<{Object}>} - * @property {String|Object} body - * @property {Number} status + * @return {Promise<{Object}>} + * @property {string | object} body + * @property {number} status * @property {XMLHttpRequest} xhr */ async patch(url, headers, body, beforeRequestHandler = () => null, afterRequestHandler = () => null) { - return this.request('PATCH', url, headers, body, beforeRequestHandler, afterRequestHandler); + return this.request('PATCH', url, headers, body, beforeRequestHandler, afterRequestHandler) } /** * sends a POST request * - * @param {String} url - URL to do the request on - * @param {Object} headers - additional HTTP headers to send - * @param {String} body - request body + * @param {string} url - URL to do the request on + * @param {object} headers - additional HTTP headers to send + * @param {string} body - request body * @param {Function} beforeRequestHandler - custom function to be called before the request is made * @param {Function} afterRequestHandler - custom function to be called after the request was made - * @returns {Promise<{Object}>} - * @property {String|Object} body - * @property {Number} status + * @return {Promise<{Object}>} + * @property {string | object} body + * @property {number} status * @property {XMLHttpRequest} xhr */ async post(url, headers, body, beforeRequestHandler = () => null, afterRequestHandler = () => null) { - return this.request('POST', url, headers, body, beforeRequestHandler, afterRequestHandler); + return this.request('POST', url, headers, body, beforeRequestHandler, afterRequestHandler) } /** * sends a PUT request * - * @param {String} url - URL to do the request on - * @param {Object} headers - additional HTTP headers to send - * @param {String} body - request body + * @param {string} url - URL to do the request on + * @param {object} headers - additional HTTP headers to send + * @param {string} body - request body * @param {Function} beforeRequestHandler - custom function to be called before the request is made * @param {Function} afterRequestHandler - custom function to be called after the request was made - * @returns {Promise<{Object}>} - * @property {String|Object} body - * @property {Number} status + * @return {Promise<{Object}>} + * @property {string | object} body + * @property {number} status * @property {XMLHttpRequest} xhr */ async put(url, headers, body, beforeRequestHandler = () => null, afterRequestHandler = () => null) { - return this.request('PUT', url, headers, body, beforeRequestHandler, afterRequestHandler); + return this.request('PUT', url, headers, body, beforeRequestHandler, afterRequestHandler) } /** * sends a DELETE request * - * @param {String} url - URL to do the request on - * @param {Object} headers - additional HTTP headers to send - * @param {String} body - request body + * @param {string} url - URL to do the request on + * @param {object} headers - additional HTTP headers to send + * @param {string} body - request body * @param {Function} beforeRequestHandler - custom function to be called before the request is made * @param {Function} afterRequestHandler - custom function to be called after the request was made - * @returns {Promise<{Object}>} - * @property {String|Object} body - * @property {Number} status + * @return {Promise<{Object}>} + * @property {string | object} body + * @property {number} status * @property {XMLHttpRequest} xhr */ async delete(url, headers = {}, body = null, beforeRequestHandler = () => null, afterRequestHandler = () => null) { - return this.request('DELETE', url, headers, body, beforeRequestHandler, afterRequestHandler); + return this.request('DELETE', url, headers, body, beforeRequestHandler, afterRequestHandler) } /** * sends a COPY request * https://tools.ietf.org/html/rfc4918#section-9.8 * - * @param {String} url - URL to do the request on - * @param {String} destination - place to copy the object/collection to - * @param {Number|String} depth - 0 = copy collection without content, Infinity = copy collection with content - * @param {Boolean} overwrite - whether or not to overwrite destination if existing - * @param {Object} headers - additional HTTP headers to send - * @param {String} body - request body + * @param {string} url - URL to do the request on + * @param {string} destination - place to copy the object/collection to + * @param {number | string} depth - 0 = copy collection without content, Infinity = copy collection with content + * @param {boolean} overwrite - whether or not to overwrite destination if existing + * @param {object} headers - additional HTTP headers to send + * @param {string} body - request body * @param {Function} beforeRequestHandler - custom function to be called before the request is made * @param {Function} afterRequestHandler - custom function to be called after the request was made - * @returns {Promise<{Object}>} - * @property {String|Object} body - * @property {Number} status + * @return {Promise<{Object}>} + * @property {string | object} body + * @property {number} status * @property {XMLHttpRequest} xhr */ async copy(url, destination, depth = 0, overwrite = false, headers = {}, body = null, beforeRequestHandler = () => null, afterRequestHandler = () => null) { - headers['Destination'] = destination; - headers['Depth'] = depth; - headers['Overwrite'] = overwrite ? 'T' : 'F'; + headers.Destination = destination + headers.Depth = depth + headers.Overwrite = overwrite ? 'T' : 'F' - return this.request('COPY', url, headers, body, beforeRequestHandler, afterRequestHandler); + return this.request('COPY', url, headers, body, beforeRequestHandler, afterRequestHandler) } /** * sends a MOVE request * https://tools.ietf.org/html/rfc4918#section-9.9 * - * @param {String} url - URL to do the request on - * @param {String} destination - place to move the object/collection to - * @param {Boolean} overwrite - whether or not to overwrite destination if existing - * @param {Object} headers - additional HTTP headers to send - * @param {String} body - request body + * @param {string} url - URL to do the request on + * @param {string} destination - place to move the object/collection to + * @param {boolean} overwrite - whether or not to overwrite destination if existing + * @param {object} headers - additional HTTP headers to send + * @param {string} body - request body * @param {Function} beforeRequestHandler - custom function to be called before the request is made * @param {Function} afterRequestHandler - custom function to be called after the request was made - * @returns {Promise<{Object}>} - * @property {String|Object} body - * @property {Number} status + * @return {Promise<{Object}>} + * @property {string | object} body + * @property {number} status * @property {XMLHttpRequest} xhr */ async move(url, destination, overwrite = false, headers = {}, body = null, beforeRequestHandler = () => null, afterRequestHandler = () => null) { - headers['Destination'] = destination; - headers['Depth'] = 'Infinity'; - headers['Overwrite'] = overwrite ? 'T' : 'F'; + headers.Destination = destination + headers.Depth = 'Infinity' + headers.Overwrite = overwrite ? 'T' : 'F' - return this.request('MOVE', url, headers, body, beforeRequestHandler, afterRequestHandler); + return this.request('MOVE', url, headers, body, beforeRequestHandler, afterRequestHandler) } /** * sends a LOCK request * https://tools.ietf.org/html/rfc4918#section-9.10 * - * @param {String} url - URL to do the request on - * @param {Object} headers - additional HTTP headers to send - * @param {String} body - request body + * @param {string} url - URL to do the request on + * @param {object} headers - additional HTTP headers to send + * @param {string} body - request body * @param {Function} beforeRequestHandler - custom function to be called before the request is made * @param {Function} afterRequestHandler - custom function to be called after the request was made - * @returns {Promise<{Object}>} - * @property {String|Object} body - * @property {Number} status + * @return {Promise<{Object}>} + * @property {string | object} body + * @property {number} status * @property {XMLHttpRequest} xhr */ async lock(url, headers = {}, body = null, beforeRequestHandler = () => null, afterRequestHandler = () => null) { // TODO - add parameters for Depth and Timeout - return this.request('LOCK', url, headers, body, beforeRequestHandler, afterRequestHandler); + return this.request('LOCK', url, headers, body, beforeRequestHandler, afterRequestHandler) } /** * sends an UNLOCK request * https://tools.ietf.org/html/rfc4918#section-9.11 * - * @param {String} url - URL to do the request on - * @param {Object} headers - additional HTTP headers to send - * @param {String} body - request body + * @param {string} url - URL to do the request on + * @param {object} headers - additional HTTP headers to send + * @param {string} body - request body * @param {Function} beforeRequestHandler - custom function to be called before the request is made * @param {Function} afterRequestHandler - custom function to be called after the request was made - * @returns {Promise<{Object}>} - * @property {String|Object} body - * @property {Number} status + * @return {Promise<{Object}>} + * @property {string | object} body + * @property {number} status * @property {XMLHttpRequest} xhr */ async unlock(url, headers = {}, body = null, beforeRequestHandler = () => null, afterRequestHandler = () => null) { // TODO - add parameter for Lock-Token - return this.request('UNLOCK', url, headers, body, beforeRequestHandler, afterRequestHandler); + return this.request('UNLOCK', url, headers, body, beforeRequestHandler, afterRequestHandler) } /** * sends a PROPFIND request * https://tools.ietf.org/html/rfc4918#section-9.1 * - * @param {String} url - URL to do the request on - * @param {String[][]} properties - list of properties to search for, formatted as [namespace, localName] - * @param {Number|String} depth - Depth header to send - * @param {Object} headers - additional HTTP headers to send + * @param {string} url - URL to do the request on + * @param {string[][]} properties - list of properties to search for, formatted as [namespace, localName] + * @param {number | string} depth - Depth header to send + * @param {object} headers - additional HTTP headers to send * @param {Function} beforeRequestHandler - custom function to be called before the request is made * @param {Function} afterRequestHandler - custom function to be called after the request was made - * @returns {Promise<{Object}>} - * @property {String|Object} body - * @property {Number} status + * @return {Promise<{Object}>} + * @property {string | object} body + * @property {number} status * @property {XMLHttpRequest} xhr */ async propFind(url, properties, depth = 0, headers = {}, beforeRequestHandler = () => null, afterRequestHandler = () => null) { // adjust headers - headers['Depth'] = depth; + headers.Depth = depth // create request body - const [skeleton, dPropChildren] = XMLUtility.getRootSkeleton([NS.DAV, 'propfind'], [NS.DAV, 'prop']); - dPropChildren.push(...properties.map(p => ({ name: p }))); - const body = XMLUtility.serialize(skeleton); + const [skeleton, dPropChildren] = XMLUtility.getRootSkeleton([NS.DAV, 'propfind'], [NS.DAV, 'prop']) + dPropChildren.push(...properties.map(p => ({ name: p }))) + const body = XMLUtility.serialize(skeleton) - return this.request('PROPFIND', url, headers, body, beforeRequestHandler, afterRequestHandler); + return this.request('PROPFIND', url, headers, body, beforeRequestHandler, afterRequestHandler) } /** * sends a PROPPATCH request * https://tools.ietf.org/html/rfc4918#section-9.2 * - * @param {String} url - URL to do the request on - * @param {Object} headers - additional HTTP headers to send - * @param {String} body - request body + * @param {string} url - URL to do the request on + * @param {object} headers - additional HTTP headers to send + * @param {string} body - request body * @param {Function} beforeRequestHandler - custom function to be called before the request is made * @param {Function} afterRequestHandler - custom function to be called after the request was made - * @returns {Promise<{Object}>} - * @property {String|Object} body - * @property {Number} status + * @return {Promise<{Object}>} + * @property {string | object} body + * @property {number} status * @property {XMLHttpRequest} xhr */ async propPatch(url, headers, body, beforeRequestHandler = () => null, afterRequestHandler = () => null) { - return this.request('PROPPATCH', url, headers, body, beforeRequestHandler, afterRequestHandler); + return this.request('PROPPATCH', url, headers, body, beforeRequestHandler, afterRequestHandler) } /** @@ -275,214 +275,216 @@ export default class Request { * https://tools.ietf.org/html/rfc4918#section-9.3 * https://tools.ietf.org/html/rfc5689 * - * @param {String} url - URL to do the request on - * @param {Object} headers - additional HTTP headers to send - * @param {String} body - request body + * @param {string} url - URL to do the request on + * @param {object} headers - additional HTTP headers to send + * @param {string} body - request body * @param {Function} beforeRequestHandler - custom function to be called before the request is made * @param {Function} afterRequestHandler - custom function to be called after the request was made - * @returns {Promise<{Object}>} - * @property {String|Object} body - * @property {Number} status + * @return {Promise<{Object}>} + * @property {string | object} body + * @property {number} status * @property {XMLHttpRequest} xhr */ async mkCol(url, headers, body, beforeRequestHandler = () => null, afterRequestHandler = () => null) { - return this.request('MKCOL', url, headers, body, beforeRequestHandler, afterRequestHandler); + return this.request('MKCOL', url, headers, body, beforeRequestHandler, afterRequestHandler) } /** * sends a REPORT request * https://tools.ietf.org/html/rfc3253#section-3.6 * - * @param {String} url - URL to do the request on - * @param {Object} headers - additional HTTP headers to send - * @param {String} body - request body + * @param {string} url - URL to do the request on + * @param {object} headers - additional HTTP headers to send + * @param {string} body - request body * @param {Function} beforeRequestHandler - custom function to be called before the request is made * @param {Function} afterRequestHandler - custom function to be called after the request was made - * @returns {Promise<{Object}>} - * @property {String|Object} body - * @property {Number} status + * @return {Promise<{Object}>} + * @property {string | object} body + * @property {number} status * @property {XMLHttpRequest} xhr */ async report(url, headers, body, beforeRequestHandler = () => null, afterRequestHandler = () => null) { - return this.request('REPORT', url, headers, body, beforeRequestHandler, afterRequestHandler); + return this.request('REPORT', url, headers, body, beforeRequestHandler, afterRequestHandler) } /** * sends generic request * - * @param {String} method - HTTP Method name - * @param {String} url - URL to do the request on - * @param {Object} headers - additional HTTP headers to send - * @param {String} body - request body + * @param {string} method - HTTP Method name + * @param {string} url - URL to do the request on + * @param {object} headers - additional HTTP headers to send + * @param {string} body - request body * @param {Function} beforeRequestHandler - custom function to be called before the request is made * @param {Function} afterRequestHandler - custom function to be called after the request was made - * @returns {Promise<{Object}>} - * @property {String|Object} body - * @property {Number} status + * @return {Promise<{Object}>} + * @property {string | object} body + * @property {number} status * @property {XMLHttpRequest} xhr */ async request(method, url, headers, body, beforeRequestHandler = () => null, afterRequestHandler = () => null) { - const xhr = this.xhrProvider(); - const assignHeaders = Object.assign({}, getDefaultHeaders(), headers); + const xhr = this.xhrProvider() + const assignHeaders = Object.assign({}, getDefaultHeaders(), headers) - xhr.open(method, this.absoluteUrl(url), true); + xhr.open(method, this.absoluteUrl(url), true) for (const header in assignHeaders) { - xhr.setRequestHeader(header, assignHeaders[header]); + xhr.setRequestHeader(header, assignHeaders[header]) } - beforeRequestHandler(xhr); + beforeRequestHandler(xhr) if (body === null || body === undefined) { - xhr.send(); + xhr.send() } else { - xhr.send(body); + xhr.send(body) } return new Promise((resolve, reject) => { xhr.onreadystatechange = () => { if (xhr.readyState !== 4) { - return; + return } - afterRequestHandler(xhr); + afterRequestHandler(xhr) - let responseBody = xhr.response; + let responseBody = xhr.response if (!wasRequestSuccessful(xhr.status)) { if (xhr.status >= 400 && xhr.status < 500) { reject(new NetworkRequestClientError({ body: responseBody, status: xhr.status, - xhr: xhr - })); - return; + xhr, + })) + return } if (xhr.status >= 500 && xhr.status < 600) { reject(new NetworkRequestServerError({ body: responseBody, status: xhr.status, - xhr: xhr - })); - return; + xhr, + })) + return } reject(new NetworkRequestHttpError({ body: responseBody, status: xhr.status, - xhr: xhr - })); - return; + xhr, + })) + return } if (xhr.status === 207) { - responseBody = this._parseMultiStatusResponse(responseBody); - if (parseInt(assignHeaders['Depth'], 10) === 0 && method === 'PROPFIND') { - responseBody = responseBody[Object.keys(responseBody)[0]]; + responseBody = this._parseMultiStatusResponse(responseBody) + if (parseInt(assignHeaders.Depth, 10) === 0 && method === 'PROPFIND') { + responseBody = responseBody[Object.keys(responseBody)[0]] } } resolve({ body: responseBody, status: xhr.status, - xhr: xhr - }); - }; + xhr, + }) + } xhr.onerror = () => reject(new NetworkRequestError({ body: null, status: -1, - xhr: xhr - })); + xhr, + })) xhr.onabort = () => reject(new NetworkRequestAbortedError({ body: null, status: -1, - xhr: xhr - })); - }); + xhr, + })) + }) } /** * returns name of file / folder of a url * - * @params {String} url - * @returns {String} + * @param url + * @params {string} url + * @return {string} */ filename(url) { - let pathname = this.pathname(url); + let pathname = this.pathname(url) if (pathname.slice(-1) === '/') { - pathname = pathname.slice(0, -1); + pathname = pathname.slice(0, -1) } - const slashPos = pathname.lastIndexOf('/'); - return pathname.slice(slashPos); + const slashPos = pathname.lastIndexOf('/') + return pathname.slice(slashPos) } /** * returns pathname for a URL * - * @params {String} url - * @returns {String} + * @param url + * @params {string} url + * @return {string} */ pathname(url) { - const urlObject = new URL(url, this.baseUrl); - return urlObject.pathname; + const urlObject = new URL(url, this.baseUrl) + return urlObject.pathname } /** * returns absolute url * - * @param {String} url - * @returns {String} + * @param {string} url + * @return {string} */ absoluteUrl(url) { - const urlObject = new URL(url, this.baseUrl); - return urlObject.href; + const urlObject = new URL(url, this.baseUrl) + return urlObject.href } /** * parses a multi status response (207), sorts them by path * and drops all unsuccessful responses * - * @param {String} body - * @returns {Object} + * @param {string} body + * @return {object} * @private */ _parseMultiStatusResponse(body) { - const result = {}; - const domParser = new DOMParser(); - const document = domParser.parseFromString(body, 'application/xml'); + const result = {} + const domParser = new DOMParser() + const document = domParser.parseFromString(body, 'application/xml') - const responses = document.evaluate('/d:multistatus/d:response', document, NS.resolve, XPathResult.ANY_TYPE, null); - let responseNode; + const responses = document.evaluate('/d:multistatus/d:response', document, NS.resolve, XPathResult.ANY_TYPE, null) + let responseNode while ((responseNode = responses.iterateNext()) !== null) { - const href = document.evaluate('string(d:href)', responseNode, NS.resolve, XPathResult.ANY_TYPE, null).stringValue; - const parsedProperties = {}; - const propStats = document.evaluate('d:propstat', responseNode, NS.resolve, XPathResult.ANY_TYPE, null); - let propStatNode; + const href = document.evaluate('string(d:href)', responseNode, NS.resolve, XPathResult.ANY_TYPE, null).stringValue + const parsedProperties = {} + const propStats = document.evaluate('d:propstat', responseNode, NS.resolve, XPathResult.ANY_TYPE, null) + let propStatNode while ((propStatNode = propStats.iterateNext()) !== null) { - const status = document.evaluate('string(d:status)', propStatNode, NS.resolve, XPathResult.ANY_TYPE, null).stringValue; + const status = document.evaluate('string(d:status)', propStatNode, NS.resolve, XPathResult.ANY_TYPE, null).stringValue if (!wasRequestSuccessful(getStatusCodeFromString(status))) { - continue; + continue } - const props = document.evaluate('d:prop/*', propStatNode, NS.resolve, XPathResult.ANY_TYPE, null); - let propNode; + const props = document.evaluate('d:prop/*', propStatNode, NS.resolve, XPathResult.ANY_TYPE, null) + let propNode while ((propNode = props.iterateNext()) !== null) { if (this.parser.canParse(`{${propNode.namespaceURI}}${propNode.localName}`)) { parsedProperties[`{${propNode.namespaceURI}}${propNode.localName}`] - = this.parser.parse(document, propNode, NS.resolve); + = this.parser.parse(document, propNode, NS.resolve) } } } - result[href] = parsedProperties; + result[href] = parsedProperties } - return result; + return result } } @@ -490,31 +492,31 @@ export default class Request { /** * Check if response code is in the 2xx section * - * @param {Number} status - * @returns {boolean} + * @param {number} status + * @return {boolean} * @private */ function wasRequestSuccessful(status) { - return status >= 200 && status < 300; + return status >= 200 && status < 300 } /** * Extract numeric status code from string like "HTTP/1.1 200 OK" * - * @param {String} status - * @returns {Number} + * @param {string} status + * @return {number} * @private */ function getStatusCodeFromString(status) { - return parseInt(status.split(' ')[1], 10); + return parseInt(status.split(' ')[1], 10) } /** * get object with default headers to include in every request * - * @returns {Object} - * @property {String} depth - * @property {String} Content-Type + * @return {object} + * @property {string} depth + * @property {string} Content-Type * @private */ function getDefaultHeaders() { @@ -525,6 +527,6 @@ function getDefaultHeaders() { return { Depth: '0', - 'Content-Type': 'application/xml; charset=utf-8' - }; + 'Content-Type': 'application/xml; charset=utf-8', + } } diff --git a/src/utility/namespaceUtility.js b/src/utility/namespaceUtility.js index a4099886..cec04f8b 100644 --- a/src/utility/namespaceUtility.js +++ b/src/utility/namespaceUtility.js @@ -21,14 +21,14 @@ * */ -export const DAV = 'DAV:'; -export const IETF_CALDAV = 'urn:ietf:params:xml:ns:caldav'; -export const IETF_CARDDAV = 'urn:ietf:params:xml:ns:carddav'; -export const OWNCLOUD = 'http://owncloud.org/ns'; -export const NEXTCLOUD = 'http://nextcloud.com/ns'; -export const APPLE = 'http://apple.com/ns/ical/'; -export const CALENDARSERVER = 'http://calendarserver.org/ns/'; -export const SABREDAV = 'http://sabredav.org/ns'; +export const DAV = 'DAV:' +export const IETF_CALDAV = 'urn:ietf:params:xml:ns:caldav' +export const IETF_CARDDAV = 'urn:ietf:params:xml:ns:carddav' +export const OWNCLOUD = 'http://owncloud.org/ns' +export const NEXTCLOUD = 'http://nextcloud.com/ns' +export const APPLE = 'http://apple.com/ns/ical/' +export const CALENDARSERVER = 'http://calendarserver.org/ns/' +export const SABREDAV = 'http://sabredav.org/ns' export const NS_MAP = { d: DAV, @@ -38,15 +38,15 @@ export const NS_MAP = { nc: NEXTCLOUD, aapl: APPLE, cs: CALENDARSERVER, - sd: SABREDAV -}; + sd: SABREDAV, +} /** * maps namespace like DAV: to it's short equivalent * - * @param {String} short - * @returns {String} + * @param {string} short + * @return {string} */ export function resolve(short) { - return NS_MAP[short] || null; + return NS_MAP[short] || null } diff --git a/src/utility/stringUtility.js b/src/utility/stringUtility.js index 2deaf86d..ffd4c5fa 100644 --- a/src/utility/stringUtility.js +++ b/src/utility/stringUtility.js @@ -24,9 +24,9 @@ // uuidv4 taken from https://stackoverflow.com/a/2117523 function uuidv4() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { - const r = Math.random() * 16 | 0; const v = c === 'x' ? r : (r & 0x3 | 0x8); - return v.toString(16).toUpperCase(); - }); + const r = Math.random() * 16 | 0; const v = c === 'x' ? r : (r & 0x3 | 0x8) + return v.toString(16).toUpperCase() + }) } /** @@ -34,20 +34,20 @@ function uuidv4() { * * @param {string} prefix * @param {string} suffix - * @returns {string} + * @return {string} */ export function uid(prefix, suffix) { - prefix = prefix || ''; - suffix = suffix || ''; + prefix = prefix || '' + suffix = suffix || '' if (prefix !== '') { - prefix += '-'; + prefix += '-' } if (suffix !== '') { - suffix = '.' + suffix; + suffix = '.' + suffix } - return prefix + uuidv4() + suffix; + return prefix + uuidv4() + suffix } /** @@ -55,48 +55,48 @@ export function uid(prefix, suffix) { * * @param {string} start * @param {Function} isAvailable - * @returns {string} + * @return {string} */ export function uri(start, isAvailable) { - start = start || ''; + start = start || '' let uri = start.toString().toLowerCase() .replace(/\s+/g, '-') // Replace spaces with - .replace(/[^\w-]+/g, '') // Remove all non-word chars .replace(/--+/g, '-') // Replace multiple - with single - .replace(/^-+/, '') // Trim - from start of text - .replace(/-+$/, ''); // Trim - from end of text + .replace(/-+$/, '') // Trim - from end of text if (uri === '') { - uri = '-'; + uri = '-' } if (isAvailable(uri)) { - return uri; + return uri } if (uri.indexOf('-') === -1) { - uri = uri + '-1'; + uri = uri + '-1' if (isAvailable(uri)) { - return uri; + return uri } } // === false because !undefined = true, possible infinite loop do { - const positionLastDash = uri.lastIndexOf('-'); - const firstPart = uri.slice(0, positionLastDash); - let lastPart = uri.slice(positionLastDash + 1); + const positionLastDash = uri.lastIndexOf('-') + const firstPart = uri.slice(0, positionLastDash) + let lastPart = uri.slice(positionLastDash + 1) if (lastPart.match(/^\d+$/)) { - lastPart = parseInt(lastPart); - lastPart++; + lastPart = parseInt(lastPart) + lastPart++ - uri = firstPart + '-' + lastPart; + uri = firstPart + '-' + lastPart } else { - uri = uri + '-1'; + uri = uri + '-1' } - } while (isAvailable(uri) === false); + } while (isAvailable(uri) === false) - return uri; + return uri } diff --git a/src/utility/xmlUtility.js b/src/utility/xmlUtility.js index 904560f2..c6e688f8 100644 --- a/src/utility/xmlUtility.js +++ b/src/utility/xmlUtility.js @@ -21,92 +21,92 @@ * */ -const serializer = new XMLSerializer(); -let prefixMap = {}; +const serializer = new XMLSerializer() +let prefixMap = {} /** * builds the root skeleton * * @params {...Array} array of namespace / name pairs - * @returns {*[]} + * @return {*[]} */ export function getRootSkeleton() { if (arguments.length === 0) { - return [{}, null]; + return [{}, null] } const skeleton = { name: arguments[0], - children: [] - }; + children: [], + } - let childrenWrapper = skeleton.children; + let childrenWrapper = skeleton.children - const args = Array.prototype.slice.call(arguments, 1); + const args = Array.prototype.slice.call(arguments, 1) args.forEach(function(argument) { const level = { name: argument, - children: [] - }; - childrenWrapper.push(level); - childrenWrapper = level.children; - }); + children: [], + } + childrenWrapper.push(level) + childrenWrapper = level.children + }) - return [skeleton, childrenWrapper]; + return [skeleton, childrenWrapper] } /** * serializes an simple xml representation into a string * - * @param {Object} json - * @returns {string} + * @param {object} json + * @return {string} */ export function serialize(json) { - json = json || {}; + json = json || {} if (typeof json !== 'object' || !Object.prototype.hasOwnProperty.call(json, 'name')) { - return ''; + return '' } - const root = document.implementation.createDocument('', '', null); - xmlify(root, root, json); + const root = document.implementation.createDocument('', '', null) + xmlify(root, root, json) - return serializer.serializeToString(root); + return serializer.serializeToString(root) } function xmlify(xmlDoc, parent, json) { - const [ns, localName] = json.name; - const element = xmlDoc.createElementNS(ns, getPrefixedNameForNamespace(ns, localName)); + const [ns, localName] = json.name + const element = xmlDoc.createElementNS(ns, getPrefixedNameForNamespace(ns, localName)) - json.attributes = json.attributes || []; + json.attributes = json.attributes || [] json.attributes.forEach((attribute) => { if (attribute.length === 2) { - const [name, value] = attribute; - element.setAttribute(name, value); + const [name, value] = attribute + element.setAttribute(name, value) } else { - const [namespace, localName, value] = attribute; - element.setAttributeNS(namespace, localName, value); + const [namespace, localName, value] = attribute + element.setAttributeNS(namespace, localName, value) } - }); + }) if (json.value) { - element.textContent = json.value; + element.textContent = json.value } else if (json.children) { json.children.forEach((child) => { - xmlify(xmlDoc, element, child); - }); + xmlify(xmlDoc, element, child) + }) } - parent.appendChild(element); + parent.appendChild(element) } export function resetPrefixMap() { - prefixMap = {}; + prefixMap = {} } function getPrefixedNameForNamespace(ns, localName) { if (!Object.prototype.hasOwnProperty.call(prefixMap, ns)) { - prefixMap[ns] = 'x' + Object.keys(prefixMap).length; + prefixMap[ns] = 'x' + Object.keys(prefixMap).length } - return prefixMap[ns] + ':' + localName; + return prefixMap[ns] + ':' + localName } diff --git a/webpack.common.js b/webpack.common.js index 8d5e2ef5..f70cefa5 100755 --- a/webpack.common.js +++ b/webpack.common.js @@ -12,12 +12,6 @@ module.exports = { }, module: { rules: [ - { - enforce: 'pre', - test: /\.js$/, - exclude: /node_modules/, - loader: 'eslint-loader' - }, { test: /\.js$/, loader: 'babel-loader',