diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..404abb22 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +coverage/ diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 00000000..09c2e423 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,3 @@ +{ + "extends": "@antfu" +} diff --git a/build.config.ts b/build.config.ts index e4a91e10..ca9a3234 100644 --- a/build.config.ts +++ b/build.config.ts @@ -20,20 +20,6 @@ export default defineBuildConfig({ format: 'cjs', ext: 'cjs', }, - { - input: 'src/ssr/index.ts', - outDir: 'dist', - name: 'ssr', - format: 'esm', - ext: 'mjs', - }, - { - input: 'src/ssr/index.ts', - outDir: 'dist', - name: 'ssr', - format: 'cjs', - ext: 'cjs', - }, ], externals: [ 'vue', diff --git a/demo/src/App.vue b/demo/src/App.vue index 605eefb3..b7879ae0 100644 --- a/demo/src/App.vue +++ b/demo/src/App.vue @@ -7,7 +7,9 @@ diff --git a/package.json b/package.json index ccdef832..edb30510 100644 --- a/package.json +++ b/package.json @@ -30,8 +30,8 @@ "scripts": { "build": "unbuild", "dev": "jiti scripts/watch.ts --cache", - "lint": "prettier -c --parser typescript \"{src,__tests__,e2e}/**/*.[jt]s?(x)\"", - "lint:fix": "pnpm lint --write", + "lint": "eslint --ext .js,.vue,.ts,.tsx .", + "lint:fix": "eslint --ext .js,.vue,.ts,.tsx . --fix", "test:types": "tsc --build tsconfig.json", "test:unit": "vitest run", "test:coverage": "vitest run --coverage", @@ -63,6 +63,7 @@ } }, "devDependencies": { + "@antfu/eslint-config": "^0.16.1", "@types/prismjs": "^1.26.0", "@vitejs/plugin-vue": "^2.2.2", "@vue/server-renderer": "^3.2.31", @@ -71,6 +72,7 @@ "@vuedx/typescript-plugin-vue": "^0.7.4", "c8": "^7.11.0", "chokidar": "^3.5.3", + "eslint": "^8.9.0", "happy-dom": "^2.41.0", "lint-staged": "^12.3.4", "prettier": "^2.5.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7caffb2b..89fb7274 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,6 +1,7 @@ lockfileVersion: 5.3 specifiers: + '@antfu/eslint-config': ^0.16.1 '@types/prismjs': ^1.26.0 '@vitejs/plugin-vue': ^2.2.2 '@vue/server-renderer': ^3.2.31 @@ -10,6 +11,7 @@ specifiers: '@vueuse/core': ^7.6.2 c8: ^7.11.0 chokidar: ^3.5.3 + eslint: ^8.9.0 happy-dom: ^2.41.0 lint-staged: ^12.3.4 popmotion: ^11.0.3 @@ -34,6 +36,7 @@ dependencies: vue-demi: 0.12.1_vue@3.2.31 devDependencies: + '@antfu/eslint-config': 0.16.1_eslint@8.9.0+typescript@4.5.5 '@types/prismjs': 1.26.0 '@vitejs/plugin-vue': 2.2.2_vite@2.8.4+vue@3.2.31 '@vue/server-renderer': 3.2.31_vue@3.2.31 @@ -42,6 +45,7 @@ devDependencies: '@vuedx/typescript-plugin-vue': 0.7.4 c8: 7.11.0 chokidar: 3.5.3 + eslint: 8.9.0 happy-dom: 2.41.0 lint-staged: 12.3.4 prettier: 2.5.1 @@ -170,6 +174,95 @@ packages: '@algolia/requester-common': 4.11.0 dev: true + /@antfu/eslint-config-basic/0.16.1_eslint@8.9.0: + resolution: {integrity: sha512-kUA7UBD1W8FG2frH4pKfos4l5eUSxVH8oMK7+T9OxBAxpvXDAYUGU0KNZoMOdhWhu0dmE/7iHXYbnu6r9KXwUw==} + peerDependencies: + eslint: '>=7.4.0' + dependencies: + eslint: 8.9.0 + eslint-config-standard: 17.0.0-0_c8ad1c911fa160b4a9904c4bb416080e + eslint-plugin-eslint-comments: 3.2.0_eslint@8.9.0 + eslint-plugin-html: 6.2.0 + eslint-plugin-import: 2.25.4_eslint@8.9.0 + eslint-plugin-jsonc: 2.2.1_eslint@8.9.0 + eslint-plugin-n: 14.0.0_eslint@8.9.0 + eslint-plugin-promise: 6.0.0_eslint@8.9.0 + eslint-plugin-unicorn: 40.1.0_eslint@8.9.0 + eslint-plugin-yml: 0.12.0_eslint@8.9.0 + jsonc-eslint-parser: 2.1.0 + yaml-eslint-parser: 0.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@antfu/eslint-config-react/0.16.1_eslint@8.9.0+typescript@4.5.5: + resolution: {integrity: sha512-UU/KqDVRb6/XQVBsrL2a3fBwn2NRGWnZCBPAU9HbIqLY/zJ5p8CpBJTvvIvCC4p4aiO3unwnYhhf5SdCQtfOjw==} + peerDependencies: + eslint: '>=7.4.0' + dependencies: + '@antfu/eslint-config-ts': 0.16.1_eslint@8.9.0+typescript@4.5.5 + eslint: 8.9.0 + eslint-plugin-react: 7.29.0_eslint@8.9.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@antfu/eslint-config-ts/0.16.1_eslint@8.9.0+typescript@4.5.5: + resolution: {integrity: sha512-FrIosrYILXog7v8GcQkj8YyMKe6HxUvv8DFDHxQjR5liI77BQ9kmIqRu8JZ/6RwMEEpMWV5Ed+LDR7FDjJiTxg==} + peerDependencies: + eslint: '>=7.4.0' + typescript: '>=3.9' + dependencies: + '@antfu/eslint-config-basic': 0.16.1_eslint@8.9.0 + '@typescript-eslint/eslint-plugin': 5.12.1_aa3af6382115a42a71cc388b7b2c30b3 + '@typescript-eslint/parser': 5.12.1_eslint@8.9.0+typescript@4.5.5 + eslint: 8.9.0 + typescript: 4.5.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@antfu/eslint-config-vue/0.16.1_eslint@8.9.0+typescript@4.5.5: + resolution: {integrity: sha512-2BMQBTVQrElu2Pvmubgc1G3BrCbaQjBzcepZZvHNnK74Wq4ec1Cl5i9BMRVVwBGg5fIg5erRPzUWr17j5BLa0A==} + peerDependencies: + eslint: '>=7.4.0' + dependencies: + '@antfu/eslint-config-ts': 0.16.1_eslint@8.9.0+typescript@4.5.5 + eslint: 8.9.0 + eslint-plugin-vue: 8.5.0_eslint@8.9.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@antfu/eslint-config/0.16.1_eslint@8.9.0+typescript@4.5.5: + resolution: {integrity: sha512-GYJMtcEpHNNQA1A2acsRqSKGRkLEZ38Y9lvHBcX7HomJ+NsPFG4a3AJ5DW1CKpPTk5W3mOF0XBMiGA+pQOC37g==} + peerDependencies: + eslint: '>=7.4.0' + dependencies: + '@antfu/eslint-config-react': 0.16.1_eslint@8.9.0+typescript@4.5.5 + '@antfu/eslint-config-vue': 0.16.1_eslint@8.9.0+typescript@4.5.5 + '@typescript-eslint/eslint-plugin': 5.12.1_aa3af6382115a42a71cc388b7b2c30b3 + '@typescript-eslint/parser': 5.12.1_eslint@8.9.0+typescript@4.5.5 + eslint: 8.9.0 + eslint-config-standard: 17.0.0-0_c8ad1c911fa160b4a9904c4bb416080e + eslint-plugin-eslint-comments: 3.2.0_eslint@8.9.0 + eslint-plugin-html: 6.2.0 + eslint-plugin-import: 2.25.4_eslint@8.9.0 + eslint-plugin-jsonc: 2.2.1_eslint@8.9.0 + eslint-plugin-n: 14.0.0_eslint@8.9.0 + eslint-plugin-promise: 6.0.0_eslint@8.9.0 + eslint-plugin-unicorn: 40.1.0_eslint@8.9.0 + eslint-plugin-vue: 8.5.0_eslint@8.9.0 + eslint-plugin-yml: 0.12.0_eslint@8.9.0 + jsonc-eslint-parser: 2.1.0 + yaml-eslint-parser: 0.5.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@antfu/utils/0.4.0: resolution: {integrity: sha512-gqkpvjkgFUu+s3kP+Ly33OKpo5zvVY3FDFhv5BIb98SncS3KD6DNxPfNDjwHIoyXbz1leWo1j8DtRLZ1D2Jv+Q==} dependencies: @@ -317,6 +410,38 @@ packages: - '@algolia/client-search' dev: true + /@eslint/eslintrc/1.1.0: + resolution: {integrity: sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.3 + espree: 9.3.1 + globals: 13.12.1 + ignore: 4.0.6 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/config-array/0.9.5: + resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.3 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/object-schema/1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + /@intlify/core-base/9.1.9: resolution: {integrity: sha512-x5T0p/Ja0S8hs5xs+ImKyYckVkL4CzcEXykVYYV6rcbXxJTe2o58IquSqX9bdncVKbRZP7GlBU1EcRaQEEJ+vw==} engines: {node: '>= 10'} @@ -594,6 +719,14 @@ packages: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true + /@types/json-schema/7.0.9: + resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==} + dev: true + + /@types/json5/0.0.29: + resolution: {integrity: sha1-7ihweulOEdK4J7y+UnC86n8+ce4=} + dev: true + /@types/micromatch/4.0.2: resolution: {integrity: sha512-oqXqVb0ci19GtH0vOA/U2TmHTcRY9kuZl4mqUxe0QmJAlIW13kzhuK5pi1i9+ngav8FjpSb9FVS/GE00GLX1VA==} dependencies: @@ -612,6 +745,10 @@ packages: resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} dev: true + /@types/normalize-package-data/2.4.1: + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + dev: true + /@types/prismjs/1.26.0: resolution: {integrity: sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==} dev: true @@ -630,6 +767,132 @@ packages: resolution: {integrity: sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==} dev: true + /@typescript-eslint/eslint-plugin/5.12.1_aa3af6382115a42a71cc388b7b2c30b3: + resolution: {integrity: sha512-M499lqa8rnNK7mUv74lSFFttuUsubIRdAbHcVaP93oFcKkEmHmLqy2n7jM9C8DVmFMYK61ExrZU6dLYhQZmUpw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/parser': 5.12.1_eslint@8.9.0+typescript@4.5.5 + '@typescript-eslint/scope-manager': 5.12.1 + '@typescript-eslint/type-utils': 5.12.1_eslint@8.9.0+typescript@4.5.5 + '@typescript-eslint/utils': 5.12.1_eslint@8.9.0+typescript@4.5.5 + debug: 4.3.3 + eslint: 8.9.0 + functional-red-black-tree: 1.0.1 + ignore: 5.2.0 + regexpp: 3.2.0 + semver: 7.3.5 + tsutils: 3.21.0_typescript@4.5.5 + typescript: 4.5.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser/5.12.1_eslint@8.9.0+typescript@4.5.5: + resolution: {integrity: sha512-6LuVUbe7oSdHxUWoX/m40Ni8gsZMKCi31rlawBHt7VtW15iHzjbpj2WLiToG2758KjtCCiLRKZqfrOdl3cNKuw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.12.1 + '@typescript-eslint/types': 5.12.1 + '@typescript-eslint/typescript-estree': 5.12.1_typescript@4.5.5 + debug: 4.3.3 + eslint: 8.9.0 + typescript: 4.5.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager/5.12.1: + resolution: {integrity: sha512-J0Wrh5xS6XNkd4TkOosxdpObzlYfXjAFIm9QxYLCPOcHVv1FyyFCPom66uIh8uBr0sZCrtS+n19tzufhwab8ZQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.12.1 + '@typescript-eslint/visitor-keys': 5.12.1 + dev: true + + /@typescript-eslint/type-utils/5.12.1_eslint@8.9.0+typescript@4.5.5: + resolution: {integrity: sha512-Gh8feEhsNLeCz6aYqynh61Vsdy+tiNNkQtc+bN3IvQvRqHkXGUhYkUi+ePKzP0Mb42se7FDb+y2SypTbpbR/Sg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/utils': 5.12.1_eslint@8.9.0+typescript@4.5.5 + debug: 4.3.3 + eslint: 8.9.0 + tsutils: 3.21.0_typescript@4.5.5 + typescript: 4.5.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types/5.12.1: + resolution: {integrity: sha512-hfcbq4qVOHV1YRdhkDldhV9NpmmAu2vp6wuFODL71Y0Ixak+FLeEU4rnPxgmZMnGreGEghlEucs9UZn5KOfHJA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/typescript-estree/5.12.1_typescript@4.5.5: + resolution: {integrity: sha512-ahOdkIY9Mgbza7L9sIi205Pe1inCkZWAHE1TV1bpxlU4RZNPtXaDZfiiFWcL9jdxvW1hDYZJXrFm+vlMkXRbBw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.12.1 + '@typescript-eslint/visitor-keys': 5.12.1 + debug: 4.3.3 + globby: 11.0.4 + is-glob: 4.0.3 + semver: 7.3.5 + tsutils: 3.21.0_typescript@4.5.5 + typescript: 4.5.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils/5.12.1_eslint@8.9.0+typescript@4.5.5: + resolution: {integrity: sha512-Qq9FIuU0EVEsi8fS6pG+uurbhNTtoYr4fq8tKjBupsK5Bgbk2I32UGm0Sh+WOyjOPgo/5URbxxSNV6HYsxV4MQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.9 + '@typescript-eslint/scope-manager': 5.12.1 + '@typescript-eslint/types': 5.12.1 + '@typescript-eslint/typescript-estree': 5.12.1_typescript@4.5.5 + eslint: 8.9.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.9.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys/5.12.1: + resolution: {integrity: sha512-l1KSLfupuwrXx6wc0AuOmC7Ko5g14ZOQ86wJJqRbdLbXLK02pK/DPiDDqCc7BqqiiA04/eAA6ayL0bgOrAkH7A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.12.1 + eslint-visitor-keys: 3.3.0 + dev: true + /@vitejs/plugin-vue/2.2.2_vite@2.8.4+vue@3.2.31: resolution: {integrity: sha512-3C0s45VOwIFEDU+2ownJOpb0zD5fnjXWaHVOLID2R1mYOlAx3doNBFnNbVjaZvpke/L7IdPJXjpyYpXZToDKig==} engines: {node: '>=12.0.0'} @@ -913,6 +1176,20 @@ packages: - supports-color dev: true + /acorn-jsx/5.3.2_acorn@8.7.0: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.7.0 + dev: true + + /acorn/8.7.0: + resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /agent-base/6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -930,6 +1207,15 @@ packages: indent-string: 4.0.0 dev: true + /ajv/6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + /algoliasearch/4.11.0: resolution: {integrity: sha512-IXRj8kAP2WrMmj+eoPqPc6P7Ncq1yZkFiyDrjTBObV1ADNL8Z/KdZ+dWC5MmYcBLAbcB/mMCpak5N/D1UIZvsA==} dependencies: @@ -997,11 +1283,44 @@ packages: picomatch: 2.3.1 dev: true + /argparse/2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-includes/3.1.4: + resolution: {integrity: sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.19.1 + get-intrinsic: 1.1.1 + is-string: 1.0.7 + dev: true + /array-union/2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} dev: true + /array.prototype.flat/1.2.5: + resolution: {integrity: sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.19.1 + dev: true + + /array.prototype.flatmap/1.2.5: + resolution: {integrity: sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.19.1 + dev: true + /asap/2.0.6: resolution: {integrity: sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=} dev: true @@ -1077,6 +1396,11 @@ packages: get-intrinsic: 1.1.1 dev: true + /callsites/3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + /caseless/0.12.0: resolution: {integrity: sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=} dev: true @@ -1139,6 +1463,17 @@ packages: resolution: {integrity: sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==} dev: true + /ci-info/3.3.0: + resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} + dev: true + + /clean-regexp/1.0.0: + resolution: {integrity: sha1-jffHquUf02h06PjQW5GAvBGj/tc=} + engines: {node: '>=4'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + /clean-stack/2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -1296,6 +1631,18 @@ packages: resolution: {integrity: sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=} dev: true + /debug/2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + dependencies: + ms: 2.0.0 + dev: true + + /debug/3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + dependencies: + ms: 2.1.2 + dev: true + /debug/4.3.3: resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} engines: {node: '>=6.0'} @@ -1328,11 +1675,22 @@ packages: type-detect: 4.0.8 dev: true + /deep-is/0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + /deepmerge/4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} dev: true + /define-properties/1.1.3: + resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==} + engines: {node: '>= 0.4'} + dependencies: + object-keys: 1.1.1 + dev: true + /defu/5.0.1: resolution: {integrity: sha512-EPS1carKg+dkEVy3qNTqIdp2qV7mUP08nIsupfwQpz++slCVRw7qbQyWvSTig+kFPwz2XXp5/kIIkH+CwrJKkQ==} dev: true @@ -1349,6 +1707,47 @@ packages: path-type: 4.0.0 dev: true + /doctrine/2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine/3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dom-serializer/1.3.2: + resolution: {integrity: sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==} + dependencies: + domelementtype: 2.2.0 + domhandler: 4.3.0 + entities: 2.2.0 + dev: true + + /domelementtype/2.2.0: + resolution: {integrity: sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==} + dev: true + + /domhandler/4.3.0: + resolution: {integrity: sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.2.0 + dev: true + + /domutils/2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.3.2 + domelementtype: 2.2.0 + domhandler: 4.3.0 + dev: true + /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true @@ -1357,10 +1756,60 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true + /entities/2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true + + /entities/3.0.1: + resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} + engines: {node: '>=0.12'} + dev: true + + /error-ex/1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es-abstract/1.19.1: + resolution: {integrity: sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + es-to-primitive: 1.2.1 + function-bind: 1.1.1 + get-intrinsic: 1.1.1 + get-symbol-description: 1.0.0 + has: 1.0.3 + has-symbols: 1.0.2 + internal-slot: 1.0.3 + is-callable: 1.2.4 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.1 + is-string: 1.0.7 + is-weakref: 1.0.2 + object-inspect: 1.12.0 + object-keys: 1.1.1 + object.assign: 4.1.2 + string.prototype.trimend: 1.0.4 + string.prototype.trimstart: 1.0.4 + unbox-primitive: 1.0.1 + dev: true + /es-module-lexer/0.9.3: resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} dev: true + /es-to-primitive/1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.4 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + /esbuild-android-arm64/0.13.15: resolution: {integrity: sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg==} cpu: [arm64] @@ -1729,62 +2178,401 @@ packages: engines: {node: '>=0.8.0'} dev: true - /estree-walker/1.0.1: - resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + /escape-string-regexp/4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} dev: true - /estree-walker/2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + /eslint-config-standard/17.0.0-0_c8ad1c911fa160b4a9904c4bb416080e: + resolution: {integrity: sha512-sf9udec8fkLTnH82SmhZQ3E31e4eJaMW09Mt9fbN3OccXFtvSSbGrltpQgGFVooGHoIdiMzDfp6ZNFd+I6Ob+w==} + peerDependencies: + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: ^14.0.0 + eslint-plugin-promise: ^6.0.0 + dependencies: + eslint: 8.9.0 + eslint-plugin-import: 2.25.4_eslint@8.9.0 + eslint-plugin-n: 14.0.0_eslint@8.9.0 + eslint-plugin-promise: 6.0.0_eslint@8.9.0 dev: true - /execa/0.8.0: - resolution: {integrity: sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=} + /eslint-import-resolver-node/0.3.6: + resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} + dependencies: + debug: 3.2.7 + resolve: 1.22.0 + dev: true + + /eslint-module-utils/2.7.3: + resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} engines: {node: '>=4'} dependencies: - cross-spawn: 5.1.0 - get-stream: 3.0.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.6 - strip-eof: 1.0.0 + debug: 3.2.7 + find-up: 2.1.0 dev: true - /execa/5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} + /eslint-plugin-es/4.1.0_eslint@8.9.0: + resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.6 - strip-final-newline: 2.0.0 + eslint: 8.9.0 + eslint-utils: 2.1.0 + regexpp: 3.2.0 dev: true - /fast-glob/3.2.11: - resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} - engines: {node: '>=8.6.0'} + /eslint-plugin-eslint-comments/3.2.0_eslint@8.9.0: + resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} + engines: {node: '>=6.5.0'} + peerDependencies: + eslint: '>=4.19.1' dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.4 + escape-string-regexp: 1.0.5 + eslint: 8.9.0 + ignore: 5.2.0 dev: true - /fast-glob/3.2.7: - resolution: {integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==} - engines: {node: '>=8'} + /eslint-plugin-html/6.2.0: + resolution: {integrity: sha512-vi3NW0E8AJombTvt8beMwkL1R/fdRWl4QSNRNMhVQKWm36/X0KF0unGNAY4mqUF06mnwVWZcIcerrCnfn9025g==} dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.4 + htmlparser2: 7.2.0 + dev: true + + /eslint-plugin-import/2.25.4_eslint@8.9.0: + resolution: {integrity: sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + dependencies: + array-includes: 3.1.4 + array.prototype.flat: 1.2.5 + debug: 2.6.9 + doctrine: 2.1.0 + eslint: 8.9.0 + eslint-import-resolver-node: 0.3.6 + eslint-module-utils: 2.7.3 + has: 1.0.3 + is-core-module: 2.8.1 + is-glob: 4.0.3 + minimatch: 3.0.4 + object.values: 1.1.5 + resolve: 1.22.0 + tsconfig-paths: 3.12.0 + dev: true + + /eslint-plugin-jsonc/2.2.1_eslint@8.9.0: + resolution: {integrity: sha512-ozGjWXhxF3ZfITHmRLuUL6zORh5Dzo0ymwVdxhfFaa4LEtU2S88JIwDYCWAifQLG92x7chqcnZlGUggaPSlfIQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + eslint: 8.9.0 + eslint-utils: 3.0.0_eslint@8.9.0 + jsonc-eslint-parser: 2.1.0 + natural-compare: 1.4.0 + dev: true + + /eslint-plugin-n/14.0.0_eslint@8.9.0: + resolution: {integrity: sha512-mNwplPLsbaKhHyA0fa/cy8j+oF6bF6l81hzBTWa6JOvPcMNAuIogk2ih6d9tYvWYzyUG+7ZFeChqbzdFpg2QrQ==} + engines: {node: '>=12.22.0'} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.9.0 + eslint-plugin-es: 4.1.0_eslint@8.9.0 + eslint-utils: 3.0.0_eslint@8.9.0 + ignore: 5.2.0 + is-core-module: 2.8.1 + minimatch: 3.0.4 + resolve: 1.22.0 + semver: 6.3.0 + dev: true + + /eslint-plugin-promise/6.0.0_eslint@8.9.0: + resolution: {integrity: sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + eslint: 8.9.0 + dev: true + + /eslint-plugin-react/7.29.0_eslint@8.9.0: + resolution: {integrity: sha512-lwbGCO4cEotwl+Wo0zkkjzbhxEzFcG6lv4mpWXfxKzXNZMF5wDEQqykPetB4mi3uTLGVSXxmgVlBMzHTHue6cA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.4 + array.prototype.flatmap: 1.2.5 + doctrine: 2.1.0 + eslint: 8.9.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.2.1 + minimatch: 3.1.2 + object.entries: 1.1.5 + object.fromentries: 2.0.5 + object.hasown: 1.1.0 + object.values: 1.1.5 + prop-types: 15.8.1 + resolve: 2.0.0-next.3 + semver: 6.3.0 + string.prototype.matchall: 4.0.6 + dev: true + + /eslint-plugin-unicorn/40.1.0_eslint@8.9.0: + resolution: {integrity: sha512-y5doK2DF9Sr5AqKEHbHxjFllJ167nKDRU01HDcWyv4Tnmaoe9iNxMrBnaybZvWZUaE3OC5Unu0lNIevYamloig==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=7.32.0' + dependencies: + '@babel/helper-validator-identifier': 7.16.7 + ci-info: 3.3.0 + clean-regexp: 1.0.0 + eslint: 8.9.0 + eslint-utils: 3.0.0_eslint@8.9.0 + esquery: 1.4.0 + indent-string: 4.0.0 + is-builtin-module: 3.1.0 + lodash: 4.17.21 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.24 + safe-regex: 2.1.1 + semver: 7.3.5 + strip-indent: 3.0.0 + dev: true + + /eslint-plugin-vue/8.5.0_eslint@8.9.0: + resolution: {integrity: sha512-i1uHCTAKOoEj12RDvdtONWrGzjFm/djkzqfhmQ0d6M/W8KM81mhswd/z+iTZ0jCpdUedW3YRgcVfQ37/J4zoYQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + dependencies: + eslint: 8.9.0 + eslint-utils: 3.0.0_eslint@8.9.0 + natural-compare: 1.4.0 + semver: 7.3.5 + vue-eslint-parser: 8.3.0_eslint@8.9.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-yml/0.12.0_eslint@8.9.0: + resolution: {integrity: sha512-aS82M+diohZTusadiByzh/bKDrfi+Y6VBQkD3ym/7JH+KF9WUB9qKCizLfTaCACwtRrHpqaLz3G8GKmslshyiw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.3 + eslint: 8.9.0 + lodash: 4.17.21 + natural-compare: 1.4.0 + yaml-eslint-parser: 0.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-scope/5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope/7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils/2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-utils/3.0.0_eslint@8.9.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.9.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys/1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + dev: true + + /eslint-visitor-keys/2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys/3.3.0: + resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint/8.9.0: + resolution: {integrity: sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': 1.1.0 + '@humanwhocodes/config-array': 0.9.5 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.3 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0_eslint@8.9.0 + eslint-visitor-keys: 3.3.0 + espree: 9.3.1 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 6.0.2 + globals: 13.12.1 + ignore: 5.2.0 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.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.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + v8-compile-cache: 2.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree/9.3.1: + resolution: {integrity: sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.7.0 + acorn-jsx: 5.3.2_acorn@8.7.0 + eslint-visitor-keys: 3.3.0 + dev: true + + /esquery/1.4.0: + resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse/4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse/4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse/5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker/1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + dev: true + + /estree-walker/2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + + /esutils/2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /execa/0.8.0: + resolution: {integrity: sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=} + engines: {node: '>=4'} + dependencies: + cross-spawn: 5.1.0 + get-stream: 3.0.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.6 + strip-eof: 1.0.0 + dev: true + + /execa/5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.6 + strip-final-newline: 2.0.0 + dev: true + + /fast-deep-equal/3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob/3.2.11: + resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.4 + dev: true + + /fast-glob/3.2.7: + resolution: {integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==} + engines: {node: '>=8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.4 + dev: true + + /fast-json-stable-stringify/2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein/2.0.6: + resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} dev: true /fastq/1.13.0: @@ -1793,6 +2581,13 @@ packages: reusify: 1.0.4 dev: true + /file-entry-cache/6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: true + /fill-range/7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -1800,6 +2595,21 @@ packages: to-regex-range: 5.0.1 dev: true + /find-up/2.1.0: + resolution: {integrity: sha1-RdG35QbHF93UgndaK3eSCjwMV6c=} + engines: {node: '>=4'} + dependencies: + locate-path: 2.0.0 + dev: true + + /find-up/4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + /find-up/5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -1808,6 +2618,18 @@ packages: path-exists: 4.0.0 dev: true + /flat-cache/3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.5 + rimraf: 3.0.2 + dev: true + + /flatted/3.2.5: + resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==} + dev: true + /foreground-child/2.0.0: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} engines: {node: '>=8.0.0'} @@ -1856,6 +2678,10 @@ packages: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true + /functional-red-black-tree/1.0.1: + resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} + dev: true + /get-caller-file/2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -1888,6 +2714,14 @@ packages: engines: {node: '>=10'} dev: true + /get-symbol-description/1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.1 + dev: true + /glob-parent/5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1895,6 +2729,13 @@ packages: is-glob: 4.0.3 dev: true + /glob-parent/6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + /glob/7.2.0: resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} dependencies: @@ -1911,6 +2752,13 @@ packages: engines: {node: '>=4'} dev: true + /globals/13.12.1: + resolution: {integrity: sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + /globby/11.0.4: resolution: {integrity: sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==} engines: {node: '>=10'} @@ -1939,6 +2787,10 @@ packages: whatwg-mimetype: 2.3.0 dev: true + /has-bigints/1.0.1: + resolution: {integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==} + dev: true + /has-flag/3.0.0: resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} engines: {node: '>=4'} @@ -1954,6 +2806,13 @@ packages: engines: {node: '>= 0.4'} dev: true + /has-tostringtag/1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.2 + dev: true + /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -1981,10 +2840,23 @@ packages: resolution: {integrity: sha512-7qam9XBFb+DijNBthaL1k/7lHU2TEMZkWSyuqmU3sCQze1wFm5w9AlEx30PD7a+QVAjOy6Ec2goFwe1YVyk2uA==} dev: true + /hosted-git-info/2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + /html-escaper/2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true + /htmlparser2/7.2.0: + resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} + dependencies: + domelementtype: 2.2.0 + domhandler: 4.3.0 + domutils: 2.8.0 + entities: 3.0.1 + dev: true + /http-basic/8.1.3: resolution: {integrity: sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==} engines: {node: '>=6.0.0'} @@ -2023,11 +2895,29 @@ packages: safer-buffer: 2.1.2 dev: true + /ignore/4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + dev: true + /ignore/5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} dev: true + /import-fresh/3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /imurmurhash/0.1.4: + resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} + engines: {node: '>=0.8.19'} + dev: true + /indent-string/4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} @@ -2044,6 +2934,25 @@ packages: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true + /internal-slot/1.0.3: + resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.1.1 + has: 1.0.3 + side-channel: 1.0.4 + dev: true + + /is-arrayish/0.2.1: + resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} + dev: true + + /is-bigint/1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.1 + dev: true + /is-binary-path/2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} @@ -2051,6 +2960,26 @@ packages: binary-extensions: 2.2.0 dev: true + /is-boolean-object/1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-builtin-module/3.1.0: + resolution: {integrity: sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.2.0 + dev: true + + /is-callable/1.2.4: + resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} + engines: {node: '>= 0.4'} + dev: true + /is-ci/1.2.1: resolution: {integrity: sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==} hasBin: true @@ -2064,6 +2993,13 @@ packages: has: 1.0.3 dev: true + /is-date-object/1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + /is-extglob/2.1.1: resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} engines: {node: '>=0.10.0'} @@ -2090,6 +3026,18 @@ packages: resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=} dev: true + /is-negative-zero/2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object/1.0.6: + resolution: {integrity: sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -2101,6 +3049,18 @@ packages: '@types/estree': 0.0.50 dev: true + /is-regex/1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-shared-array-buffer/1.0.1: + resolution: {integrity: sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==} + dev: true + /is-stream/1.1.0: resolution: {integrity: sha1-EtSj3U5o4Lec6428hBc66A2RykQ=} engines: {node: '>=0.10.0'} @@ -2111,6 +3071,26 @@ packages: engines: {node: '>=8'} dev: true + /is-string/1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-symbol/1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.2 + dev: true + + /is-weakref/1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + dev: true + /isarray/1.0.0: resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} dev: true @@ -2155,10 +3135,36 @@ packages: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true - /jsesc/2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} + /js-yaml/4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsesc/2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-parse-even-better-errors/2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-schema-traverse/0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} + dev: true + + /json5/1.0.1: + resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} hasBin: true + dependencies: + minimist: 1.2.5 dev: true /json5/2.2.0: @@ -2169,6 +3175,16 @@ packages: minimist: 1.2.5 dev: true + /jsonc-eslint-parser/2.1.0: + resolution: {integrity: sha512-qCRJWlbP2v6HbmKW7R3lFbeiVWHo+oMJ0j+MizwvauqnCV/EvtAeEeuCgoc/ErtsuoKgYB8U4Ih8AxJbXoE6/g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.7.0 + eslint-visitor-keys: 3.3.0 + espree: 9.3.1 + semver: 7.3.5 + dev: true + /jsonc-parser/3.0.0: resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==} dev: true @@ -2181,15 +3197,35 @@ packages: graceful-fs: 4.2.8 dev: true + /jsx-ast-utils/3.2.1: + resolution: {integrity: sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.4 + object.assign: 4.1.2 + dev: true + /kolorist/1.5.1: resolution: {integrity: sha512-lxpCM3HTvquGxKGzHeknB/sUjuVoUElLlfYnXZT73K8geR9jQbroGlSCFBax9/0mpGoD3kzcMLnOlGQPJJNyqQ==} dev: true + /levn/0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + /lilconfig/2.0.4: resolution: {integrity: sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==} engines: {node: '>=10'} dev: true + /lines-and-columns/1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + /lint-staged/12.3.4: resolution: {integrity: sha512-yv/iK4WwZ7/v0GtVkNb3R82pdL9M+ScpIbJLJNyCXkJ1FGaXvRCOg/SeL59SZtPpqZhE7BD6kPKFLIDUhDx2/w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2236,6 +3272,21 @@ packages: engines: {node: '>=14'} dev: true + /locate-path/2.0.0: + resolution: {integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=} + engines: {node: '>=4'} + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + dev: true + + /locate-path/5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + /locate-path/6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -2243,6 +3294,10 @@ packages: p-locate: 5.0.0 dev: true + /lodash.merge/4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + /lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true @@ -2257,6 +3312,13 @@ packages: wrap-ansi: 6.2.0 dev: true + /loose-envify/1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: true + /loupe/2.3.4: resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==} dependencies: @@ -2328,12 +3390,23 @@ packages: engines: {node: '>=6'} dev: true + /min-indent/1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + /minimatch/3.0.4: resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} dependencies: brace-expansion: 1.1.11 dev: true + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + /minimist/1.2.5: resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} dev: true @@ -2376,6 +3449,10 @@ packages: engines: {node: '>=4'} dev: true + /ms/2.0.0: + resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} + dev: true + /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true @@ -2394,6 +3471,10 @@ packages: hasBin: true dev: true + /natural-compare/1.4.0: + resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} + dev: true + /node-fetch/2.6.6: resolution: {integrity: sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==} engines: {node: 4.x || >=6.0.0} @@ -2407,6 +3488,15 @@ packages: uuid: 3.4.0 dev: true + /normalize-package-data/2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.0 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + dev: true + /normalize-path/1.0.0: resolution: {integrity: sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=} engines: {node: '>=0.10.0'} @@ -2440,6 +3530,55 @@ packages: resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} dev: true + /object-keys/1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign/4.1.2: + resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + has-symbols: 1.0.2 + object-keys: 1.1.1 + dev: true + + /object.entries/1.1.5: + resolution: {integrity: sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.19.1 + dev: true + + /object.fromentries/2.0.5: + resolution: {integrity: sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.19.1 + dev: true + + /object.hasown/1.1.0: + resolution: {integrity: sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==} + dependencies: + define-properties: 1.1.3 + es-abstract: 1.19.1 + dev: true + + /object.values/1.1.5: + resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.19.1 + dev: true + /once/1.4.0: resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} dependencies: @@ -2453,11 +3592,37 @@ packages: mimic-fn: 2.1.0 dev: true + /optionator/0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + dev: true + /p-finally/1.0.0: resolution: {integrity: sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=} engines: {node: '>=4'} dev: true + /p-limit/1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + dependencies: + p-try: 1.0.0 + dev: true + + /p-limit/2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + /p-limit/3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -2465,6 +3630,20 @@ packages: yocto-queue: 0.1.0 dev: true + /p-locate/2.0.0: + resolution: {integrity: sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=} + engines: {node: '>=4'} + dependencies: + p-limit: 1.3.0 + dev: true + + /p-locate/4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + /p-locate/5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -2479,10 +3658,37 @@ packages: aggregate-error: 3.1.0 dev: true + /p-try/1.0.0: + resolution: {integrity: sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=} + engines: {node: '>=4'} + dev: true + + /p-try/2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /parent-module/1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + /parse-cache-control/1.0.1: resolution: {integrity: sha1-juqz5U+laSD+Fro493+iGqzC104=} dev: true + /parse-json/5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.16.7 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + /parse5-htmlparser2-tree-adapter/6.0.1: resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} dependencies: @@ -2497,6 +3703,11 @@ packages: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} dev: true + /path-exists/3.0.0: + resolution: {integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=} + engines: {node: '>=4'} + dev: true + /path-exists/4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -2551,6 +3762,11 @@ packages: pathe: 0.2.0 dev: true + /pluralize/8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: true + /popmotion/11.0.3: resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==} dependencies: @@ -2573,6 +3789,11 @@ packages: resolution: {integrity: sha512-WyosM7pxGcndU8hY0OQlLd54tOU+qmG45QXj2dAYrL11HoyU/EzOSTlpJsirbBr1QW7lICxSsVJJmcmUglovHQ==} dev: true + /prelude-ls/1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + /prettier/2.5.1: resolution: {integrity: sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==} engines: {node: '>=10.13.0'} @@ -2603,10 +3824,23 @@ packages: asap: 2.0.6 dev: true + /prop-types/15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + dev: true + /pseudomap/1.0.2: resolution: {integrity: sha1-8FKijacOYYkX7wqKw0wa5aaChrM=} dev: true + /punycode/2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + engines: {node: '>=6'} + dev: true + /qs/6.10.2: resolution: {integrity: sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw==} engines: {node: '>=0.6'} @@ -2623,6 +3857,29 @@ packages: engines: {node: '>=10'} dev: true + /react-is/16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: true + + /read-pkg-up/7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg/5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + /readable-stream/2.3.7: resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} dependencies: @@ -2642,11 +3899,34 @@ packages: picomatch: 2.3.1 dev: true + /regexp-tree/0.1.24: + resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==} + hasBin: true + dev: true + + /regexp.prototype.flags/1.4.1: + resolution: {integrity: sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + dev: true + + /regexpp/3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true + /require-directory/2.1.1: resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} engines: {node: '>=0.10.0'} dev: true + /resolve-from/4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + /resolve-from/5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} @@ -2661,6 +3941,13 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true + /resolve/2.0.0-next.3: + resolution: {integrity: sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==} + dependencies: + is-core-module: 2.8.1 + path-parse: 1.0.7 + dev: true + /restore-cursor/3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} @@ -2741,6 +4028,12 @@ packages: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true + /safe-regex/2.1.1: + resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} + dependencies: + regexp-tree: 0.1.24 + dev: true + /safer-buffer/2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true @@ -2749,11 +4042,24 @@ packages: resolution: {integrity: sha512-M9gnWtn3J0W+UhJOHmBxBTwv8mZCan5i1Himp60t6vvZcor0wr+IM0URKmIglsWJ7bRujNAVVN77fp+uZaWoKg==} dev: true + /semver/5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + dev: true + /semver/6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true dev: true + /semver/7.3.5: + resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + /shebang-command/1.2.0: resolution: {integrity: sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=} engines: {node: '>=0.10.0'} @@ -2845,6 +4151,28 @@ packages: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} dev: true + /spdx-correct/3.1.1: + resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.11 + dev: true + + /spdx-exceptions/2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: true + + /spdx-expression-parse/3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.11 + dev: true + + /spdx-license-ids/3.0.11: + resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} + dev: true + /string-argv/0.3.1: resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} engines: {node: '>=0.6.19'} @@ -2868,6 +4196,33 @@ packages: strip-ansi: 7.0.1 dev: true + /string.prototype.matchall/4.0.6: + resolution: {integrity: sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + es-abstract: 1.19.1 + get-intrinsic: 1.1.1 + has-symbols: 1.0.2 + internal-slot: 1.0.3 + regexp.prototype.flags: 1.4.1 + side-channel: 1.0.4 + dev: true + + /string.prototype.trimend/1.0.4: + resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + dev: true + + /string.prototype.trimstart/1.0.4: + resolution: {integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.3 + dev: true + /string_decoder/1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: @@ -2888,6 +4243,11 @@ packages: ansi-regex: 6.0.1 dev: true + /strip-bom/3.0.0: + resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} + engines: {node: '>=4'} + dev: true + /strip-eof/1.0.0: resolution: {integrity: sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=} engines: {node: '>=0.10.0'} @@ -2903,6 +4263,18 @@ packages: engines: {node: '>=4'} dev: true + /strip-indent/3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + + /strip-json-comments/3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + /style-value-types/5.0.0: resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==} dependencies: @@ -2965,6 +4337,10 @@ packages: minimatch: 3.0.4 dev: true + /text-table/0.2.0: + resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} + dev: true + /then-request/6.0.2: resolution: {integrity: sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==} engines: {node: '>=6.0.0'} @@ -3025,6 +4401,15 @@ packages: resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=} dev: true + /tsconfig-paths/3.12.0: + resolution: {integrity: sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.1 + minimist: 1.2.5 + strip-bom: 3.0.0 + dev: true + /tslib/1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true @@ -3032,16 +4417,48 @@ packages: /tslib/2.3.1: resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} + /tsutils/3.21.0_typescript@4.5.5: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 4.5.5 + dev: true + + /type-check/0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + /type-detect/4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} dev: true + /type-fest/0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + /type-fest/0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} dev: true + /type-fest/0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true + + /type-fest/0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true + /typedarray/0.0.6: resolution: {integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=} dev: true @@ -3052,6 +4469,15 @@ packages: hasBin: true dev: true + /unbox-primitive/1.0.1: + resolution: {integrity: sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==} + dependencies: + function-bind: 1.1.1 + has-bigints: 1.0.1 + has-symbols: 1.0.2 + which-boxed-primitive: 1.0.2 + dev: true + /unbuild/0.6.9: resolution: {integrity: sha512-IALhVj6cLWAxFqX5qcuR932Y3OKFgWcZXPeQ0qU1YAuBucWzpY171GHMi+rXot3C4V7JwD0khGmjvu41E980mQ==} hasBin: true @@ -3101,6 +4527,12 @@ packages: engines: {node: '>=4'} dev: true + /uri-js/4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.1.1 + dev: true + /util-deprecate/1.0.2: resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} dev: true @@ -3111,6 +4543,10 @@ packages: hasBin: true dev: true + /v8-compile-cache/2.3.0: + resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} + dev: true + /v8-to-istanbul/8.1.0: resolution: {integrity: sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==} engines: {node: '>=10.12.0'} @@ -3120,6 +4556,13 @@ packages: source-map: 0.7.3 dev: true + /validate-npm-package-license/3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.1.1 + spdx-expression-parse: 3.0.1 + dev: true + /vite-plugin-windicss/1.7.1_vite@2.8.4: resolution: {integrity: sha512-eEDeTPaeQAfe0widkTkm9X51BVpOE/yDIuFbULIKjXI7CfY1yjsPcxA6E3aZbLBYQcUmfhVUTYVaH5iAE5L8Hg==} peerDependencies: @@ -3240,6 +4683,24 @@ packages: vue: 3.2.31 dev: false + /vue-eslint-parser/8.3.0_eslint@8.9.0: + resolution: {integrity: sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.3 + eslint: 8.9.0 + 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.5 + transitivePeerDependencies: + - supports-color + dev: true + /vue/3.2.31: resolution: {integrity: sha512-odT3W2tcffTiQCy57nOT93INw1auq5lYLLYtWpPYQQYQOOdHiqFct9Xhna6GJ+pJQaF67yZABraH47oywkJgFw==} dependencies: @@ -3276,6 +4737,16 @@ packages: webidl-conversions: 3.0.1 dev: true + /which-boxed-primitive/1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.6 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + /which/1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -3297,6 +4768,11 @@ packages: hasBin: true dev: true + /word-wrap/1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + dev: true + /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -3332,6 +4808,15 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true + /yaml-eslint-parser/0.5.0: + resolution: {integrity: sha512-nJeyLA3YHAzhBTZbRAbu3W6xrSCucyxExmA+ZDtEdUFpGllxAZpto2Zxo2IG0r0eiuEiBM4e+wiAdxTziTq94g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + eslint-visitor-keys: 3.3.0 + lodash: 4.17.21 + yaml: 1.10.2 + dev: true + /yaml/1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} diff --git a/src/directive/index.ts b/src/directive/index.ts index 73085a70..395dc188 100644 --- a/src/directive/index.ts +++ b/src/directive/index.ts @@ -1,6 +1,7 @@ -import { Directive, DirectiveBinding, ref, set as __set, VNode } from 'vue-demi' +import type { Directive, DirectiveBinding, VNode } from 'vue-demi' +import { set as __set, ref } from 'vue-demi' import { motionState } from '../features/state' -import { MotionVariants } from '../types' +import type { MotionVariants } from '../types' import { useMotion } from '../useMotion' import { resolveVariants } from '../utils/directive' import { reactiveStyle, reactiveTransform } from '../index' @@ -12,13 +13,7 @@ export const directive = ( const register = ( el: HTMLElement | SVGElement, binding: DirectiveBinding, - node: VNode< - any, - HTMLElement | SVGElement, - { - [key: string]: any - } - >, + node: VNode>, ) => { // Get instance key if possible (binding value or element key in case of v-for's) const key = ( @@ -34,9 +29,7 @@ export const directive = ( const variantsRef = ref(variants || {}) // Set variants from v-motion binding - if (typeof binding.value === 'object') { - variantsRef.value = binding.value - } + if (typeof binding.value === 'object') variantsRef.value = binding.value // Resolve variants from node props resolveVariants(node, variantsRef) @@ -45,26 +38,16 @@ export const directive = ( const motionInstance = useMotion(el, variantsRef) // Pass the motion instance via the local element - // @ts-ignore + // @ts-expect-error - we know that the element is a HTMLElement el.motionInstance = motionInstance // Set the global state reference if the name is set through v-motion="`value`" if (key) __set(motionState, key, motionInstance) } - const unregister = ( - el: HTMLElement | SVGElement, - _: DirectiveBinding, - __: VNode< - any, - HTMLElement | SVGElement, - { - [key: string]: any - } - >, - ) => { + const unregister = (el: HTMLElement | SVGElement) => { // Cleanup the unregistered element motion instance - // @ts-ignore + // @ts-expect-error - we know that the element is a HTMLElement if (el.motionInstance) el.motionInstance.stop() } @@ -74,22 +57,26 @@ export const directive = ( unmounted: unregister, // Vue 2 Directive Hooks // For Nuxt & Vue 2 compatibility - // @ts-expect-error + // @ts-expect-error - Compatibility bind: register, unbind: unregister, // Vue 3 SSR getSSRProps(binding) { const { initial = {} } = binding.value - if (Object.keys(initial).length === 0) return + // No initial + if (!initial || Object.keys(initial).length === 0) return + // Split values between `transform` and `style` const { transform: _transform, style: _style } = splitValues(initial) + // Generate transform string const { transform } = reactiveTransform(_transform) + // Generate style string const { style } = reactiveStyle(_style) - // @ts-ignore + // @ts-expect-error - Set transform from style if (transform.value) style.value.transform = transform.value return { diff --git a/src/features/eventListeners.ts b/src/features/eventListeners.ts index d9b8c4b9..0e5c7974 100644 --- a/src/features/eventListeners.ts +++ b/src/features/eventListeners.ts @@ -1,6 +1,7 @@ -import { useEventListener, Fn } from '@vueuse/core' +import type { Fn } from '@vueuse/core' +import { useEventListener } from '@vueuse/core' import { computed, ref, unref, watch } from 'vue-demi' -import { MotionInstance, MotionVariants } from '../types' +import type { MotionInstance, MotionVariants } from '../types' import { supportsMouseEvents, supportsPointerEvents, @@ -18,6 +19,7 @@ export function registerEventListeners({ // Proxy useEventListener to force cancellation on stop function const _eventListeners: Fn[] = [] const _useEventListener: typeof useEventListener = (...args: any[]) => { + // eslint-disable-next-line prefer-spread const _stop = useEventListener.apply(null, args as any) _eventListeners.push(_stop) return _stop @@ -33,17 +35,13 @@ export function registerEventListeners({ if (!_variants) return result - if (_variants.hovered) { + if (_variants.hovered) result = [...result, ...Object.keys(_variants.hovered)] - } - if (_variants.tapped) { - result = [...result, ...Object.keys(_variants.tapped)] - } + if (_variants.tapped) result = [...result, ...Object.keys(_variants.tapped)] - if (_variants.focused) { + if (_variants.focused) result = [...result, ...Object.keys(_variants.focused)] - } return result }) @@ -53,21 +51,17 @@ export function registerEventListeners({ Object.assign(result, state.value) - if (hovered.value && _variants.hovered) { + if (hovered.value && _variants.hovered) Object.assign(result, _variants.hovered) - } - if (tapped.value && _variants.tapped) { + if (tapped.value && _variants.tapped) Object.assign(result, _variants.tapped) - } - if (focused.value && _variants.focused) { + if (focused.value && _variants.focused) Object.assign(result, _variants.focused) - } - for (const key in result) { + for (const key in result) if (!mutableKeys.value.includes(key)) delete result[key] - } return result }) diff --git a/src/features/lifeCycleHooks.ts b/src/features/lifeCycleHooks.ts index ee503e13..ef31d0df 100644 --- a/src/features/lifeCycleHooks.ts +++ b/src/features/lifeCycleHooks.ts @@ -1,5 +1,5 @@ import { unref, watch } from 'vue-demi' -import { MotionInstance, MotionVariants } from '../types' +import type { MotionInstance, MotionVariants } from '../types' export function registerLifeCycleHooks({ set, diff --git a/src/features/state.ts b/src/features/state.ts index 320836f7..316701ca 100644 --- a/src/features/state.ts +++ b/src/features/state.ts @@ -1,3 +1,3 @@ -import { MotionInstanceBindings } from '../types' +import type { MotionInstanceBindings } from '../types' export const motionState: MotionInstanceBindings = {} diff --git a/src/features/syncVariants.ts b/src/features/syncVariants.ts index 5018460d..16d454f1 100644 --- a/src/features/syncVariants.ts +++ b/src/features/syncVariants.ts @@ -1,5 +1,5 @@ import { watch } from 'vue-demi' -import { MotionInstance, MotionVariants } from '../types' +import type { MotionInstance, MotionVariants } from '../types' export function registerVariantsSync({ state, diff --git a/src/features/visibilityHooks.ts b/src/features/visibilityHooks.ts index 3ebb15af..8afe2d1c 100644 --- a/src/features/visibilityHooks.ts +++ b/src/features/visibilityHooks.ts @@ -1,6 +1,6 @@ import { noop, useIntersectionObserver } from '@vueuse/core' import { unref } from 'vue-demi' -import { MotionInstance, MotionVariants } from '../types' +import type { MotionInstance, MotionVariants } from '../types' export function registerVisibilityHooks({ target, @@ -15,11 +15,8 @@ export function registerVisibilityHooks({ const { stop: stopObserver } = useIntersectionObserver( target, ([{ isIntersecting }]) => { - if (isIntersecting) { - variant.value = 'visible' - } else { - variant.value = 'initial' - } + if (isIntersecting) variant.value = 'visible' + else variant.value = 'initial' }, ) diff --git a/src/motionValue.ts b/src/motionValue.ts index b8588b7d..60b1d783 100644 --- a/src/motionValue.ts +++ b/src/motionValue.ts @@ -1,6 +1,7 @@ -import sync, { FrameData, getFrameData } from 'framesync' +import type { FrameData } from 'framesync' +import sync, { getFrameData } from 'framesync' import { velocityPerSecond } from 'popmotion' -import { StartAnimation, Subscriber } from './types' +import type { StartAnimation, Subscriber } from './types' import { SubscriptionManager } from './utils/subscription-manager' const isFloat = (value: any): value is string => { @@ -24,12 +25,12 @@ export class MotionValue { /** * Duration, in milliseconds, since last updating frame. */ - private timeDelta: number = 0 + private timeDelta = 0 /** * Timestamp of the last time this `MotionValue` was updated. */ - private lastUpdated: number = 0 + private lastUpdated = 0 /** * Functions to notify when the `MotionValue` updates. @@ -130,9 +131,9 @@ export class MotionValue { */ getVelocity() { // This could be isFloat(this.prev) && isFloat(this.current), but that would be wasteful + // These casts could be avoided if parseFloat would be typed better return this.canTrackVelocity - ? // These casts could be avoided if parseFloat would be typed better - velocityPerSecond( + ? velocityPerSecond( parseFloat(this.current as any) - parseFloat(this.prev as any), this.timeDelta, ) @@ -151,9 +152,7 @@ export class MotionValue { private velocityCheck = ({ timestamp }: FrameData) => { if (!this.canTrackVelocity) this.canTrackVelocity = isFloat(this.current) - if (timestamp !== this.lastUpdated) { - this.prev = this.current - } + if (timestamp !== this.lastUpdated) this.prev = this.current } /** diff --git a/src/plugin/index.ts b/src/plugin/index.ts index bfc4fab8..1f0a956b 100644 --- a/src/plugin/index.ts +++ b/src/plugin/index.ts @@ -1,7 +1,7 @@ -import { Plugin } from 'vue-demi' +import type { Plugin } from 'vue-demi' import { directive } from '../directive' import * as presets from '../presets' -import { MotionPluginOptions, MotionVariants } from '../types' +import type { MotionPluginOptions, MotionVariants } from '../types' import slugify from '../utils/slugify' export const MotionPlugin: Plugin = { diff --git a/src/presets/fade.ts b/src/presets/fade.ts index 250f6fe4..b3af76bb 100644 --- a/src/presets/fade.ts +++ b/src/presets/fade.ts @@ -1,4 +1,4 @@ -import { MotionVariants } from '../types' +import type { MotionVariants } from '../types' export const fade: MotionVariants = { initial: { diff --git a/src/presets/pop.ts b/src/presets/pop.ts index e1600497..8236fe5e 100644 --- a/src/presets/pop.ts +++ b/src/presets/pop.ts @@ -1,4 +1,4 @@ -import { MotionVariants } from '../types' +import type { MotionVariants } from '../types' export const pop: MotionVariants = { initial: { diff --git a/src/presets/roll.ts b/src/presets/roll.ts index 37f92f38..49259953 100644 --- a/src/presets/roll.ts +++ b/src/presets/roll.ts @@ -1,4 +1,4 @@ -import { MotionVariants } from '../types' +import type { MotionVariants } from '../types' // Roll from left diff --git a/src/presets/slide.ts b/src/presets/slide.ts index adebc127..3d731a56 100644 --- a/src/presets/slide.ts +++ b/src/presets/slide.ts @@ -1,4 +1,4 @@ -import { MotionVariants } from '../types' +import type { MotionVariants } from '../types' // Slide from left diff --git a/src/reactiveStyle.ts b/src/reactiveStyle.ts index aa72f3c6..a8b6e6f1 100644 --- a/src/reactiveStyle.ts +++ b/src/reactiveStyle.ts @@ -1,5 +1,6 @@ -import { reactive, Ref, ref, watch } from 'vue-demi' -import { StyleProperties } from './types' +import type { Ref } from 'vue-demi' +import { reactive, ref, watch } from 'vue-demi' +import type { StyleProperties } from './types' import { getValueAsType, getValueType } from './utils/style' /** diff --git a/src/reactiveTransform.ts b/src/reactiveTransform.ts index 33773885..9b11b2e0 100644 --- a/src/reactiveTransform.ts +++ b/src/reactiveTransform.ts @@ -1,12 +1,12 @@ import { px } from 'style-value-types' import { reactive, ref, watch } from 'vue-demi' -import { TransformProperties } from './types' +import type { TransformProperties } from './types' import { getValueAsType, getValueType } from './utils/style' /** * Aliases translate key for simpler API integration. */ -const translateAlias: { [key: string]: string } = { +const translateAlias: Record = { x: 'translateX', y: 'translateY', z: 'translateZ', @@ -20,7 +20,7 @@ const translateAlias: { [key: string]: string } = { */ export function reactiveTransform( props: TransformProperties = {}, - enableHardwareAcceleration: boolean = true, + enableHardwareAcceleration = true, ) { // Reactive TransformProperties object const state = reactive({ ...props }) @@ -62,9 +62,8 @@ export function reactiveTransform( result += `${translateAlias[key] || key}(${valueAsType}) ` } - if (enableHardwareAcceleration && !hasHardwareAcceleration) { - result += `translateZ(0px) ` - } + if (enableHardwareAcceleration && !hasHardwareAcceleration) + result += 'translateZ(0px) ' transform.value = result.trim() }, diff --git a/src/ssr/index.ts b/src/ssr/index.ts deleted file mode 100644 index 0c870a03..00000000 --- a/src/ssr/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './transform' -export * from './transpile' diff --git a/src/ssr/transform.ts b/src/ssr/transform.ts deleted file mode 100644 index 6e325cb5..00000000 --- a/src/ssr/transform.ts +++ /dev/null @@ -1,186 +0,0 @@ -import { - createObjectProperty, - createSimpleExpression, - createObjectExpression, - createCallExpression, - findProp, - isText, - MERGE_PROPS, -} from '@vue/compiler-core' -import { isString } from '@vueuse/core' -import { evaluateValue } from './transpile' -import type { - DirectiveTransform, - DirectiveNode, - SimpleExpressionNode, - CompoundExpressionNode, - TransformContext, - TextNode, - ElementNode, - InterpolationNode, - Property, -} from '@vue/compiler-core' -import type { MotionVariants } from '../types' - -type DirectiveTransformResult = ReturnType - -export function transform(variants?: MotionVariants): DirectiveTransform { - return (dir, node, context): DirectiveTransformResult => { - // Debug logging - // console.log({ dir, node, context }) - - const result: DirectiveTransformResult = { props: [], needRuntime: true } - - // Check `v-motion` directive expression - const { exp } = dir - if (exp) { - // TODO: Handle { initial: { ...} } expression - // console.log({ exp }) - - console.log(createObjectProperty('style', exp)) - } - - // Find `initial` prop binding - const prop = findProp(node, 'initial', true, false) - // Check if `initial` prop binding exists - if (!isBindDirective(prop) || prop.exp == null || prop.arg == null) { - return result - } - - /* - console.log({ - prop, - node, - context, - }) - */ - - // Transform `initial` prop to `style` attribute - result.props = [ - createObjectProperty( - `style`, - createStyleObjectExpressionFromDirectiveNode(prop, node, context), - ), - ] - - return result - } -} - -const isSymbol = (val: unknown): val is symbol => typeof val === 'symbol' - -// NodeTypes.DIRECTIVE -const isBindDirective = (prop: any): prop is DirectiveNode => - prop != null && prop.type === 7 && prop.name === 'bind' - -// NodeTypes.SIMPLE_EXPRESSION -const isSimpleExpressionNode = (node: any): node is SimpleExpressionNode => - node != null && node.type === 4 - -// NodeTypes.COMPOUND_EXPRESSION -const isCompoundExpressionNode = (node: any): node is CompoundExpressionNode => - node != null && node.type === 8 - -// @ts-ignore -function mapNodeContentHanlder( - value: - | string - | symbol - | SimpleExpressionNode - | CompoundExpressionNode - | TextNode - | InterpolationNode, -): string { - if (isString(value)) { - return value - } else if (isSymbol(value)) { - return value.description || '' - } else if (isSimpleExpressionNode(value)) { - return value.content - } else if (isCompoundExpressionNode(value)) { - return value.children.map(mapNodeContentHanlder).join('') - } else if (isText(value)) { - if (isString(value.content)) { - return value.content - } else if (isSimpleExpressionNode(value.content)) { - return value.content.content - } else if (isCompoundExpressionNode(value.content)) { - return value.content.children.map(mapNodeContentHanlder).join('') - } else { - return '' - } - } else { - return '' - } -} - -function isConstant(node: SimpleExpressionNode): boolean { - if ('isConstant' in node) { - // For v3.0.3 earlier - return (node as any).isConstant - } else if ('constType' in node) { - // For v3.0.3 or later - return (node.constType as number) > 0 - } else { - throw Error('Unexpected error while transforming a v-motion directive.') - } -} - -function createStyleObjectExpressionFromDirectiveNode( - prop: DirectiveNode, - node: ElementNode, - context: TransformContext, -): Property['value'] { - const properties: Property[] = [] - - // @ts-ignore - const content = prop.exp.content - - if (isSimpleExpressionNode(prop.exp)) { - if (isConstant(prop.exp)) { - const { status, value } = evaluateValue(prop.exp.content) - - if (status === 'ok') { - for (const [key, val] of Object.entries(value as Record)) { - properties.push( - createObjectProperty( - key, - createSimpleExpression(String(val), true, prop.loc, 3), - ), - ) - } - } - - return createObjectExpression(properties, node.loc) - } else { - if (isSimpleExpressionNode(prop.arg) && isConstant(prop.arg)) { - const source = createSimpleExpression( - prop.exp.content, - false, - prop.loc, - 0, - ) - const from = createObjectExpression([], prop.loc) - return createCallExpression( - context.helper(MERGE_PROPS), - [source, from], - node.loc, - ) - } else { - return createObjectExpression(properties, node.loc) - } - } - } else if (isCompoundExpressionNode(prop.exp)) { - const expression = prop.exp!.children.map(mapNodeContentHanlder).join('') - const source = createSimpleExpression(expression, false, prop.loc, 0) - const from = createObjectExpression([], prop.loc) - - return createCallExpression( - context.helper(MERGE_PROPS), - [source, from], - node.loc, - ) - } else { - return createObjectExpression(properties, node.loc) - } -} diff --git a/src/ssr/transpile.ts b/src/ssr/transpile.ts deleted file mode 100644 index 43c935c4..00000000 --- a/src/ssr/transpile.ts +++ /dev/null @@ -1,130 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import { parse } from '@babel/parser' - -interface EvaluateReturn { - status: 'ok' | 'ng' - value?: unknown -} - -type NestedValue = { [P in keyof T]: NestedValue } - -export type TranslationParams> = { - path: string - named: NestedValue - options: { - locale?: string - plural?: string - } -} - -export function evaluateValue(expression: string): EvaluateReturn { - const ret = { status: 'ng', value: undefined } as EvaluateReturn - - try { - const ast = parse(`const a = ${expression.trim()}`) - const node = (ast.program.body[0] as any).declarations[0].init - if (node.type === 'ObjectExpression') { - const val = new Function(`return ${expression.trim()}`)() - ret.status = 'ok' - ret.value = val - } - } catch (e) {} - - return ret -} - -export function parseExpression(expression: string): TranslationParams { - const ret: TranslationParams = { - path: '', - named: {}, - options: {}, - } - - try { - const ast = parse(`const a = ${expression.trim()}`) - const node = (ast.program.body[0] as any).declarations[0].init - if (node.type === 'StringLiteral') { - ret.path = node.extra.raw - } else if (node.type === 'Identifier') { - ret.path = node.name - } else if (node.type === 'MemberExpression') { - ret.path = getObjectMemberValue(node) - } else if (node.type === 'ObjectExpression') { - node.properties.forEach((propNode: any) => { - const propKeyNode = propNode.key - if (propKeyNode.type !== 'Identifier') { - return - } - const propValueNode = propNode.value - switch (propKeyNode.name) { - case 'path': - ret.path = getObjectMemberValue(propValueNode) - break - case 'locale': - ret.options.locale = getObjectMemberValue(propValueNode) - break - case 'choice': - case 'plural': - ret.options.plural = getObjectMemberValue(propValueNode) - break - case 'args': - // console.log('args', propValueNode) - traverseObjectMember(propValueNode, ret.named) - break - default: - break - } - }) - } - } catch (e) {} - - return ret -} - -function getObjectMemberValue(node: any): string { - if (node.type === 'StringLiteral' || node.type === 'NumericLiteral') { - return node.extra.raw - } else if (node.type === 'Identifier') { - return node.name - } else if (node.type === 'MemberExpression') { - const paths: string[] = [] - collectMemberPath(node, paths) - paths.reverse() - return paths.join('.') - } else { - return '' - } -} - -function traverseObjectMember(node: any, target: any): void { - node.properties.forEach((propNode: any) => { - const propKeyNode = propNode.key - if (propKeyNode.type !== 'Identifier') { - return - } - if (!(propKeyNode.name in target)) { - target[propKeyNode.name] = {} - } - // console.log('propNode', propNode) - const propValueNode = propNode.value - if (propValueNode.type === 'ObjectExpression') { - traverseObjectMember(propValueNode, target[propKeyNode.name]) - } else { - target[propKeyNode.name] = getObjectMemberValue(propValueNode) - } - }) -} - -function collectMemberPath(node: any, paths: string[]): void { - if (node.type === 'Identifier') { - paths.push(node.name) - return - } - - if (node.property.type === 'Identifier') { - paths.push(node.property.name) - return collectMemberPath(node.object, paths) - } -} - -/* eslint-enable @typescript-eslint/no-explicit-any */ diff --git a/src/types/instance.ts b/src/types/instance.ts index 6e0c8117..4f510147 100644 --- a/src/types/instance.ts +++ b/src/types/instance.ts @@ -1,6 +1,6 @@ -import { Fn, MaybeRef, VueInstance } from '@vueuse/core' -import { Ref, UnwrapRef } from 'vue-demi' -import { MotionProperties, MotionVariants, Variant } from './variants' +import type { Fn, MaybeRef, VueInstance } from '@vueuse/core' +import type { Ref, UnwrapRef } from 'vue-demi' +import type { MotionProperties, MotionVariants, Variant } from './variants' export type PermissiveTarget = VueInstance | MotionTarget @@ -15,14 +15,14 @@ export interface MotionInstance extends MotionControls { stop: (force?: boolean) => void } -export type UseMotionOptions = { +export interface UseMotionOptions { syncVariants?: boolean lifeCycleHooks?: boolean visibilityHooks?: boolean eventListeners?: boolean } -export type MotionControls = { +export interface MotionControls { /** * Apply a variant declaration and execute the resolved transitions. * @@ -52,7 +52,7 @@ export type MotionControls = { isAnimating: any } -export type SpringControls = { +export interface SpringControls { /** * Apply new values with transitions. * @@ -73,9 +73,7 @@ export type SpringControls = { values: MotionProperties } -export type MotionInstanceBindings = { - [key: string]: MotionInstance -} +export type MotionInstanceBindings = Record> declare module '@vue/runtime-core' { export interface ComponentCustomProperties { diff --git a/src/types/plugin.ts b/src/types/plugin.ts index 99e5aa82..278d1f86 100644 --- a/src/types/plugin.ts +++ b/src/types/plugin.ts @@ -1,8 +1,6 @@ -import { MotionVariants } from './variants' +import type { MotionVariants } from './variants' export interface MotionPluginOptions { - directives?: { - [key: string]: MotionVariants - } + directives?: Record excludePresets?: boolean } diff --git a/src/types/transitions.ts b/src/types/transitions.ts index 3362c11b..2ce92dc1 100644 --- a/src/types/transitions.ts +++ b/src/types/transitions.ts @@ -1,6 +1,6 @@ -import { Ref } from 'vue-demi' -import { MotionValue } from '../motionValue' -import { MotionProperties, PermissiveMotionProperties } from './variants' +import type { Ref } from 'vue-demi' +import type { MotionValue } from '../motionValue' +import type { MotionProperties, PermissiveMotionProperties } from './variants' export type ResolvedKeyframesTarget = | [null, ...number[]] @@ -21,7 +21,7 @@ export type ResolvedValueTarget = ResolvedSingleTarget | ResolvedKeyframesTarget export type ValueTarget = SingleTarget | KeyframesTarget -export type Props = { [key: string]: any } +export type Props = Record export type EasingFunction = (v: number) => number @@ -364,9 +364,7 @@ export interface Keyframes { export type PopmotionTransitionProps = Tween | Spring | Keyframes | Inertia -export type PermissiveTransitionDefinition = { - [key: string]: any -} +export type PermissiveTransitionDefinition = Record export type TransitionDefinition = | Tween @@ -375,9 +373,7 @@ export type TransitionDefinition = | Inertia | PermissiveTransitionDefinition -export type TransitionMap = Orchestration & { - [key: string]: TransitionDefinition -} +export type TransitionMap = Orchestration & Record /** * Transition props diff --git a/src/types/value.ts b/src/types/value.ts index 4b9090e3..b5be4e80 100644 --- a/src/types/value.ts +++ b/src/types/value.ts @@ -1,4 +1,6 @@ -export type StopAnimation = { stop: () => void } +export interface StopAnimation { + stop: () => void +} export type Transformer = (v: T) => T diff --git a/src/types/variants.ts b/src/types/variants.ts index 9805c598..d32424b6 100644 --- a/src/types/variants.ts +++ b/src/types/variants.ts @@ -1,17 +1,15 @@ -import { CSSProperties, SVGAttributes } from 'vue-demi' -import { ResolvedSingleTarget, Transition } from './transitions' +import type { CSSProperties, SVGAttributes } from 'vue-demi' +import type { ResolvedSingleTarget, Transition } from './transitions' /** * Permissive properties keys */ -export type PropertiesKeys = { - [key: string]: string | number | undefined | any -} +export type PropertiesKeys = Record /** * SVG Supported properties */ -export type SVGPathProperties = { +export interface SVGPathProperties { pathLength?: number pathOffset?: number pathSpacing?: number @@ -20,7 +18,7 @@ export type SVGPathProperties = { /** * Transform properties */ -export type TransformProperties = { +export interface TransformProperties { x?: string | number y?: string | number z?: string | number @@ -73,9 +71,8 @@ export type MotionProperties = /** * Permissive properties for useSpring */ -export type PermissiveMotionProperties = MotionProperties & { - [key: string]: ResolvedSingleTarget -} +export type PermissiveMotionProperties = MotionProperties & + Record /** * Variant @@ -87,7 +84,7 @@ export type Variant = { /** * Motion variants object */ -export type MotionVariants = { +export interface MotionVariants { // Initial variant initial?: Variant // Lifecycle hooks variants diff --git a/src/useElementStyle.ts b/src/useElementStyle.ts index 9783c984..8dc7d69e 100644 --- a/src/useElementStyle.ts +++ b/src/useElementStyle.ts @@ -1,7 +1,8 @@ -import { MaybeRef, unrefElement } from '@vueuse/core' +import type { MaybeRef } from '@vueuse/core' +import { unrefElement } from '@vueuse/core' import { set as __set, watch } from 'vue-demi' import { reactiveStyle } from './reactiveStyle' -import { MotionTarget, PermissiveTarget, StyleProperties } from './types' +import type { MotionTarget, PermissiveTarget, StyleProperties } from './types' import { valueTypes } from './utils/style' import { isTransformOriginProp, isTransformProp } from './utils/transform' @@ -17,7 +18,7 @@ export function useElementStyle( // Transform cache available before the element is mounted let _cache: StyleProperties | undefined // Local target cache as we need to resolve the element from PermissiveTarget - let _target: MotionTarget = undefined + let _target: MotionTarget // Create a reactive style object const { state, style } = reactiveStyle() diff --git a/src/useElementTransform.ts b/src/useElementTransform.ts index d25fe74b..c6745fad 100644 --- a/src/useElementTransform.ts +++ b/src/useElementTransform.ts @@ -1,7 +1,12 @@ -import { MaybeRef, unrefElement } from '@vueuse/core' +import type { MaybeRef } from '@vueuse/core' +import { unrefElement } from '@vueuse/core' import { watch } from 'vue-demi' import { reactiveTransform } from './reactiveTransform' -import { MotionTarget, PermissiveTarget, TransformProperties } from './types' +import type { + MotionTarget, + PermissiveTarget, + TransformProperties, +} from './types' import { stateFromTransform } from './utils/transform-parser' /** @@ -16,7 +21,7 @@ export function useElementTransform( // Transform cache available before the element is mounted let _cache: string | undefined // Local target cache as we need to resolve the element from PermissiveTarget - let _target: MotionTarget = undefined + let _target: MotionTarget // Create a reactive transform object const { state, transform } = reactiveTransform() @@ -32,9 +37,7 @@ export function useElementTransform( if (el.style.transform) stateFromTransform(state, el.style.transform) // If cache is present, init the target with the current cached value - if (_cache) { - el.style.transform = _cache - } + if (_cache) el.style.transform = _cache if (onInit) onInit(state) }, diff --git a/src/useMotion.ts b/src/useMotion.ts index 1c68ef86..cfe0ad22 100644 --- a/src/useMotion.ts +++ b/src/useMotion.ts @@ -1,6 +1,7 @@ import { watch } from 'vue-demi' -import { MaybeRef, tryOnUnmounted } from '@vueuse/core' -import { +import type { MaybeRef } from '@vueuse/core' +import { tryOnUnmounted } from '@vueuse/core' +import type { MotionInstance, MotionVariants, PermissiveTarget, @@ -43,14 +44,15 @@ export function useMotion( state, motionProperties, ...controls, - stop: (force: boolean = false) => {}, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + stop: (force = false) => {}, } // Bind features const { stop: stopMotionFeatures } = useMotionFeatures(instance, options) // Instance cleanup function - instance.stop = (force: boolean = false) => { + instance.stop = (force = false) => { const _stop = () => { instance.stopTransitions() stopMotionProperties() @@ -58,7 +60,7 @@ export function useMotion( } // Check if leave variant exist, if so wait for the animation to end before cleaning up - if (!force && variants.value && variants.value['leave']) { + if (!force && variants.value && (variants.value as MotionVariants).leave) { const _stopWatch = watch(instance.isAnimating, (newVal) => { if (!newVal) { _stopWatch() diff --git a/src/useMotionControls.ts b/src/useMotionControls.ts index 4d4c0467..faa5ffca 100644 --- a/src/useMotionControls.ts +++ b/src/useMotionControls.ts @@ -1,6 +1,7 @@ -import { isObject, MaybeRef } from '@vueuse/core' +import type { MaybeRef } from '@vueuse/core' +import { isObject } from '@vueuse/core' import { ref, unref, watch } from 'vue-demi' -import { +import type { MotionControls, MotionProperties, MotionTransitions, @@ -43,42 +44,41 @@ export function useMotionControls( ) const getVariantFromKey = (variant: keyof T): Variant => { - if (!_variants || !_variants[variant]) { + if (!_variants || !_variants[variant]) throw new Error(`The variant ${variant} does not exist.`) - } return _variants[variant] as Variant } const apply = (variant: Variant | keyof T): Promise | undefined => { // If variant is a key, try to resolve it - if (typeof variant === 'string') { - variant = getVariantFromKey(variant) - } + if (typeof variant === 'string') variant = getVariantFromKey(variant) // Return Promise chain return Promise.all( - Object.entries(variant).map(([key, value]) => { - // Skip transition key - if (key === 'transition') return - - return new Promise((resolve) => { - push( - key as keyof MotionProperties, - value, - motionProperties, - (variant as Variant).transition || - getDefaultTransition(key, variant[key]), - resolve, - ) + Object.entries(variant) + .map(([key, value]) => { + // Skip transition key + if (key === 'transition') return undefined + + return new Promise((resolve) => { + push( + key as keyof MotionProperties, + value, + motionProperties, + (variant as Variant).transition || + getDefaultTransition(key, variant[key]), + resolve, + ) + }) }) - }), + .filter(Boolean), ) } const set = (variant: Variant | keyof T) => { // Get variant data from parameter - let variantData = isObject(variant) ? variant : getVariantFromKey(variant) + const variantData = isObject(variant) ? variant : getVariantFromKey(variant) // Set in chain Object.entries(variantData).forEach(([key, value]) => { @@ -95,13 +95,10 @@ export function useMotionControls( let leaveVariant: Variant | undefined if (_variants) { - if (_variants.leave) { - leaveVariant = _variants.leave - } + if (_variants.leave) leaveVariant = _variants.leave - if (!_variants.leave && _variants.initial) { + if (!_variants.leave && _variants.initial) leaveVariant = _variants.initial - } } if (!leaveVariant) { diff --git a/src/useMotionFeatures.ts b/src/useMotionFeatures.ts index 1f7dd502..b26ae885 100644 --- a/src/useMotionFeatures.ts +++ b/src/useMotionFeatures.ts @@ -1,10 +1,11 @@ -import { Fn, tryOnUnmounted } from '@vueuse/core' +import type { Fn } from '@vueuse/core' +import { tryOnUnmounted } from '@vueuse/core' import { ref } from 'vue-demi' import { registerEventListeners } from './features/eventListeners' import { registerLifeCycleHooks } from './features/lifeCycleHooks' import { registerVariantsSync } from './features/syncVariants' import { registerVisibilityHooks } from './features/visibilityHooks' -import { MotionInstance, MotionVariants, UseMotionOptions } from './types' +import type { MotionInstance, MotionVariants, UseMotionOptions } from './types' /** * A Composable executing resolved variants features from variants declarations. diff --git a/src/useMotionProperties.ts b/src/useMotionProperties.ts index 70416032..37cb7255 100644 --- a/src/useMotionProperties.ts +++ b/src/useMotionProperties.ts @@ -1,6 +1,7 @@ -import { MaybeRef, unrefElement } from '@vueuse/core' -import { reactive, set as __set, watch } from 'vue-demi' -import { MotionProperties, PermissiveTarget } from './types' +import type { MaybeRef } from '@vueuse/core' +import { unrefElement } from '@vueuse/core' +import { set as __set, reactive, watch } from 'vue-demi' +import type { MotionProperties, PermissiveTarget } from './types' import { useElementStyle } from './useElementStyle' import { useElementTransform } from './useElementTransform' import { isTransformProp } from './utils/transform' diff --git a/src/useMotionTransitions.ts b/src/useMotionTransitions.ts index 64341b88..76714e7a 100644 --- a/src/useMotionTransitions.ts +++ b/src/useMotionTransitions.ts @@ -1,4 +1,4 @@ -import { +import type { MotionProperties, MotionTransitions, ResolvedValueTarget, diff --git a/src/useMotionValues.ts b/src/useMotionValues.ts index 69afa246..a983678c 100644 --- a/src/useMotionValues.ts +++ b/src/useMotionValues.ts @@ -1,7 +1,9 @@ import { tryOnUnmounted } from '@vueuse/shared' -import { del as __del, Ref, ref, set as __set } from 'vue-demi' -import { getMotionValue, MotionValue } from './motionValue' -import { MotionProperties, MotionValuesMap } from './types' +import type { Ref } from 'vue-demi' +import { del as __del, set as __set, ref } from 'vue-demi' +import type { MotionValue } from './motionValue' +import { getMotionValue } from './motionValue' +import type { MotionProperties, MotionValuesMap } from './types' const { isArray } = Array export function useMotionValues() { diff --git a/src/useMotionVariants.ts b/src/useMotionVariants.ts index efec115a..a452deb8 100644 --- a/src/useMotionVariants.ts +++ b/src/useMotionVariants.ts @@ -1,6 +1,7 @@ -import { MaybeRef } from '@vueuse/core' -import { computed, Ref, ref, unref } from 'vue-demi' -import { MotionVariants, Variant } from './types' +import type { MaybeRef } from '@vueuse/core' +import type { Ref } from 'vue-demi' +import { computed, ref, unref } from 'vue-demi' +import type { MotionVariants, Variant } from './types' /** * A Composable handling variants selection and features. diff --git a/src/useReducedMotion.ts b/src/useReducedMotion.ts index b41cd027..420e14a3 100644 --- a/src/useReducedMotion.ts +++ b/src/useReducedMotion.ts @@ -1,4 +1,4 @@ -import { Ref } from 'vue-demi' +import type { Ref } from 'vue-demi' import { useMediaQuery } from '@vueuse/core' /** diff --git a/src/useSpring.ts b/src/useSpring.ts index 4ea735df..f445cf36 100644 --- a/src/useSpring.ts +++ b/src/useSpring.ts @@ -1,6 +1,6 @@ -import { MaybeRef } from '@vueuse/shared' +import type { MaybeRef } from '@vueuse/shared' import { animate } from 'popmotion' -import { +import type { MotionProperties, PermissiveMotionProperties, PermissiveTarget, diff --git a/src/utils/defaults.ts b/src/utils/defaults.ts index 062f263e..9f8dd437 100644 --- a/src/utils/defaults.ts +++ b/src/utils/defaults.ts @@ -1,4 +1,4 @@ -import { +import type { Keyframes, KeyframesTarget, PopmotionTransitionProps, diff --git a/src/utils/directive.ts b/src/utils/directive.ts index f2e4a965..24b205ee 100644 --- a/src/utils/directive.ts +++ b/src/utils/directive.ts @@ -1,6 +1,6 @@ import { isNumber, isObject } from '@vueuse/core' -import { Ref, VNode } from 'vue-demi' -import { MotionVariants } from '../types' +import type { Ref, VNode } from 'vue-demi' +import type { MotionVariants } from '../types' const directivePropsKeys = [ 'initial', @@ -14,30 +14,24 @@ const directivePropsKeys = [ ] export const resolveVariants = ( - node: VNode< - any, - HTMLElement | SVGElement, - { - [key: string]: any - } - >, + node: VNode>, variantsRef: Ref, ) => { // This is done to achieve compat with Vue 2 & 3 // node.props = Vue 3 element props location // node.data.attrs = Vue 2 element props location const target = node.props - ? node.props // @ts-expect-error - : node.data && node.data.attrs // @ts-expect-error + ? node.props // @ts-expect-error - Compatibility (Vue 3) + : node.data && node.data.attrs // @ts-expect-error - Compatibility (Vue 2) ? node.data.attrs : {} if (target) { - if (target['variants'] && isObject(target['variants'])) { + if (target.variants && isObject(target.variants)) { // If variant are passed through a single object reference, initialize with it variantsRef.value = { ...variantsRef.value, - ...target['variants'], + ...target.variants, } } @@ -49,9 +43,8 @@ export const resolveVariants = ( if (variantsRef && variantsRef.value) { if (variantsRef.value.enter) { - if (!variantsRef.value.enter.transition) { + if (!variantsRef.value.enter.transition) variantsRef.value.enter.transition = {} - } variantsRef.value.enter.transition = { ...variantsRef.value.enter.transition, @@ -60,9 +53,8 @@ export const resolveVariants = ( } if (variantsRef.value.visible) { - if (!variantsRef.value.visible.transition) { + if (!variantsRef.value.visible.transition) variantsRef.value.visible.transition = {} - } variantsRef.value.visible.transition = { ...variantsRef.value.visible.transition, @@ -75,9 +67,8 @@ export const resolveVariants = ( return } - if (target && target[key] && isObject(target[key])) { + if (target && target[key] && isObject(target[key])) variantsRef.value[key] = target[key] - } }) } } diff --git a/src/utils/element.ts b/src/utils/element.ts index da7ecf8b..2cdddcca 100644 --- a/src/utils/element.ts +++ b/src/utils/element.ts @@ -1,8 +1,9 @@ -import { Ref, ref } from '@vue/reactivity' +import type { Ref } from '@vue/reactivity' +import { ref } from '@vue/reactivity' import { watch } from '@vue/runtime-core' -import { VueInstance } from '@vueuse/core' -import { MaybeRef } from '@vueuse/shared' -import { MotionTarget, PermissiveTarget } from '../types' +import type { VueInstance } from '@vueuse/core' +import type { MaybeRef } from '@vueuse/shared' +import type { MotionTarget, PermissiveTarget } from '../types' export function resolveElement( target: MaybeRef, diff --git a/src/utils/is-motion-instance.ts b/src/utils/is-motion-instance.ts index ddd3f8e3..c1e77df6 100644 --- a/src/utils/is-motion-instance.ts +++ b/src/utils/is-motion-instance.ts @@ -1,6 +1,6 @@ import { isFunction } from '@vueuse/shared' import { isRef } from 'vue-demi' -import { MotionInstance } from '../types' +import type { MotionInstance } from '../types' /** * Check whether an object is a Motion Instance or not. diff --git a/src/utils/slugify.ts b/src/utils/slugify.ts index a0ad785f..c1dcab12 100644 --- a/src/utils/slugify.ts +++ b/src/utils/slugify.ts @@ -17,7 +17,7 @@ export function slugify(string: string) { return string .toString() - .replace(/[A-Z]/g, (s) => '-' + s) // Camel to slug + .replace(/[A-Z]/g, (s) => `-${s}`) // Camel to slug .toLowerCase() .replace(/\s+/g, '-') // Replace spaces with - .replace(p, (c) => b.charAt(a.indexOf(c))) // Replace special characters diff --git a/src/utils/style.ts b/src/utils/style.ts index 4e28100c..52fbe18c 100644 --- a/src/utils/style.ts +++ b/src/utils/style.ts @@ -1,3 +1,4 @@ +import type { ValueType } from 'style-value-types' import { alpha, color, @@ -8,12 +9,9 @@ import { progressPercentage, px, scale, - ValueType, } from 'style-value-types' -interface ValueTypeMap { - [key: string]: ValueType -} +type ValueTypeMap = Record /** * ValueType for "auto" diff --git a/src/utils/subscription-manager.ts b/src/utils/subscription-manager.ts index 405e5815..d5920620 100644 --- a/src/utils/subscription-manager.ts +++ b/src/utils/subscription-manager.ts @@ -8,7 +8,7 @@ export class SubscriptionManager { add(handler: Handler) { this.subscriptions.add(handler) - return () => void this.subscriptions.delete(handler) + return () => this.subscriptions.delete(handler) } notify( @@ -21,9 +21,7 @@ export class SubscriptionManager { c?: Parameters[2], ) { if (!this.subscriptions.size) return - for (const handler of this.subscriptions) { - handler(a, b, c) - } + for (const handler of this.subscriptions) handler(a, b, c) } clear() { diff --git a/src/utils/transform-parser.ts b/src/utils/transform-parser.ts index 1ebe6114..70789ba4 100644 --- a/src/utils/transform-parser.ts +++ b/src/utils/transform-parser.ts @@ -1,5 +1,5 @@ import { set as __set } from 'vue-demi' -import { +import type { MotionProperties, ResolvedValueTarget, TransformProperties, @@ -15,9 +15,7 @@ export function parseTransform(transform: string): Partial { const transforms = transform.trim().split(/\) |\)/) // Handle "initial", "inherit", "unset". - if (transforms.length === 1) { - return {} - } + if (transforms.length === 1) return {} const parseValues = (value: string): string | number => { // If value is ending with px or deg, return it as a number diff --git a/src/utils/transform.ts b/src/utils/transform.ts index fae2c1f9..e334511c 100644 --- a/src/utils/transform.ts +++ b/src/utils/transform.ts @@ -1,4 +1,4 @@ -import { Variant } from './../types/variants' +import type { Variant } from './../types/variants' /** * A list of all transformable axes. We'll use this list to generated a version @@ -54,11 +54,9 @@ export function splitValues(variant: Variant) { const style = {} Object.entries(variant).forEach(([key, value]) => { - if (isTransformProp(key) || isTransformOriginProp(key)) { + if (isTransformProp(key) || isTransformOriginProp(key)) transform[key] = value - } else { - style[key] = value - } + else style[key] = value }) return { transform, style } diff --git a/src/utils/transition.ts b/src/utils/transition.ts index 6527233f..4ea57c8d 100644 --- a/src/utils/transition.ts +++ b/src/utils/transition.ts @@ -1,6 +1,6 @@ +import type { AnimationOptions, Easing } from 'popmotion' import { animate, - AnimationOptions, anticipate, backIn, backInOut, @@ -15,13 +15,12 @@ import { easeIn, easeInOut, easeOut, - Easing, inertia, linear, } from 'popmotion' import { complex } from 'style-value-types' -import { MotionValue } from '../motionValue' -import { +import type { MotionValue } from '../motionValue' +import type { PermissiveTransitionDefinition, ResolvedValueTarget, StartAnimation, @@ -96,9 +95,8 @@ export const isAnimatable = (key: string, value: ResolvedValueTarget) => { typeof value === 'string' && // It's animatable if we have a string complex.test(value) && // And it contains numbers and/or colors !value.startsWith('url(') // Unless it starts with "url(" - ) { + ) return true - } return false } @@ -128,19 +126,17 @@ export function convertTransitionToAnimationOptions({ }: PermissiveTransitionDefinition): AnimationOptions { const options: AnimationOptions = { ...transition } - if (times) options['offset'] = times + if (times) (options as any).offset = times // Map easing names to Popmotion's easing functions if (ease) { - options['ease'] = isEasingArray(ease) + ;(options as any).ease = isEasingArray(ease) ? ease.map(easingDefinitionToFunction) : easingDefinitionToFunction(ease) } // Map delay to elapsed from Popmotion - if (delay) { - options['elapsed'] = -delay - } + if (delay) options.elapsed = -delay return options } @@ -157,9 +153,8 @@ export function getPopmotionAnimationOptions( options: any, key: string, ) { - if (Array.isArray(options.to)) { + if (Array.isArray(options.to)) if (!transition.duration) transition.duration = 800 - } hydrateKeyframes(options) @@ -183,11 +178,13 @@ export function getPopmotionAnimationOptions( * if any options are left. */ export function isTransitionDefined({ + /* eslint-disable @typescript-eslint/no-unused-vars */ delay, repeat, repeatType, repeatDelay, from, + /* eslint-enable */ ...transition }: Transition) { return !!Object.keys(transition).length @@ -203,7 +200,7 @@ export function isTransitionDefined({ * @param key */ export function getValueTransition(transition: Transition, key: string) { - return transition[key] || transition['default'] || transition + return transition[key] || (transition as any).default || transition } /** @@ -230,9 +227,8 @@ export function getAnimation( // If we're trying to animate from "none", try and get an animatable version // of the target. This could be improved to work both ways. - if (origin === 'none' && isTargetAnimatable && typeof target === 'string') { + if (origin === 'none' && isTargetAnimatable && typeof target === 'string') origin = getAnimatableNone(key, target) - } // Is origin animatable const isOriginAnimatable = isAnimatable(key, origin) diff --git a/tests/isMotionInstance.spec.ts b/tests/isMotionInstance.spec.ts index 736e84c1..aab3da08 100644 --- a/tests/isMotionInstance.spec.ts +++ b/tests/isMotionInstance.spec.ts @@ -1,7 +1,7 @@ import { ref } from '@vue/reactivity' import { mount } from '@vue/test-utils' +import { describe, expect, it } from 'vitest' import { isMotionInstance, useMotion } from '../src' -import { describe, it, expect } from 'vitest' const TestComponent = { template: '
Hello world
', diff --git a/tests/reactiveStyle.spec.ts b/tests/reactiveStyle.spec.ts index 30a383bf..76e75328 100644 --- a/tests/reactiveStyle.spec.ts +++ b/tests/reactiveStyle.spec.ts @@ -1,5 +1,5 @@ import { nextTick } from 'vue' -import { describe, it, expect } from 'vitest' +import { describe, expect, it } from 'vitest' import { reactiveStyle } from '../src/reactiveStyle' describe('reactiveStyle', () => { diff --git a/tests/reactiveTransform.spec.ts b/tests/reactiveTransform.spec.ts index 4ddcd7b1..4e33e56f 100644 --- a/tests/reactiveTransform.spec.ts +++ b/tests/reactiveTransform.spec.ts @@ -1,6 +1,6 @@ import { nextTick } from 'vue' +import { describe, expect, it } from 'vitest' import { reactiveTransform } from '../src/reactiveTransform' -import { describe, it, expect } from 'vitest' describe('reactiveTransform', () => { it('generate transform from transformProperties', () => { diff --git a/tests/transform.spec.ts b/tests/transform.spec.ts deleted file mode 100644 index 5b3f11b4..00000000 --- a/tests/transform.spec.ts +++ /dev/null @@ -1,205 +0,0 @@ -import { transform } from '../src/ssr/transform' -import * as runtimeDom from '@vue/runtime-dom' -import { MotionDirective } from '../src/index' -import { compile } from '@vue/compiler-ssr' -import { defineComponent, createSSRApp } from 'vue' -import { renderToString } from '@vue/server-renderer' -import { describe, test, expect } from 'vitest' - -describe('transform', () => { - test('initial: basic', async () => { - const source = `
Hello world
` - const { code, ast } = compile(source, { - mode: 'function', - directiveTransforms: { - motion: transform(), - }, - }) - expect(code).toMatchSnapshot(source) - expect(ast).toMatchSnapshot(source) - const render = Function('require', 'Vue', code)(require, runtimeDom) - const App = defineComponent({ - directives: { - motion: MotionDirective(), - }, - ssrRender: render, - }) - const app = createSSRApp(App) - expect(await renderToString(app)).toMatch( - `
Hello world
`, - ) - }) - - test('initial: simple binding', async () => { - const source = `
Hello world
` - const { code, ast } = compile(source, { - mode: 'function', - directiveTransforms: { - motion: transform(), - }, - }) - expect(code).toMatchSnapshot(source) - expect(ast).toMatchSnapshot(source) - const render = Function('require', 'Vue', code)(require, runtimeDom) - const App = defineComponent({ - directives: { - motion: MotionDirective(), - }, - ssrRender: render, - data() { - return { initial: { scale: 1, opacity: 1 } } - }, - }) - const app = createSSRApp(App) - expect(await renderToString(app)).toMatch( - `
Hello world
`, - ) - }) - - test('initial: compound binding', async () => { - const source = `
Hello world
` - const { code, ast } = compile(source, { - mode: 'function', - directiveTransforms: { - motion: transform(), - }, - }) - expect(code).toMatchSnapshot(source) - expect(ast).toMatchSnapshot(source) - const render = Function('require', 'Vue', code)(require, runtimeDom) - const App = defineComponent({ - directives: { - motion: MotionDirective(), - }, - ssrRender: render, - data() { - return { scale: 1, opa: 1 } - }, - }) - const app = createSSRApp(App) - expect(await renderToString(app)).toMatch( - `
Hello world
`, - ) - }) - - test('with static style', async () => { - const source = `
Hello world
` - const { code, ast } = compile(source, { - mode: 'function', - directiveTransforms: { - motion: transform(), - }, - }) - expect(code).toMatchSnapshot(source) - expect(ast).toMatchSnapshot(source) - const render = Function('require', 'Vue', code)(require, runtimeDom) - const App = defineComponent({ - directives: { - motion: MotionDirective(), - }, - ssrRender: render, - }) - const app = createSSRApp(App) - expect(await renderToString(app)).toMatch( - `
Hello world
`, - ) - }) - - test('with dynamic style', async () => { - const source = `
Hello world
` - const { code, ast } = compile(source, { - mode: 'function', - directiveTransforms: { - motion: transform(), - }, - }) - expect(code).toMatchSnapshot(source) - expect(ast).toMatchSnapshot(source) - const render = Function('require', 'Vue', code)(require, runtimeDom) - const App = defineComponent({ - directives: { - motion: MotionDirective(), - }, - ssrRender: render, - }) - const app = createSSRApp(App) - expect(await renderToString(app)).toMatch( - `
Hello world
`, - ) - }) - - test('with style binidng', async () => { - const source = `
Hello world
` - const { code, ast } = compile(source, { - mode: 'function', - directiveTransforms: { - motion: transform(), - }, - }) - expect(code).toMatchSnapshot(source) - expect(ast).toMatchSnapshot(source) - const render = Function('require', 'Vue', code)(require, runtimeDom) - const App = defineComponent({ - directives: { - motion: MotionDirective(), - }, - data() { - return { activeColor: 'blue', fontSize: 10 } - }, - ssrRender: render, - }) - const app = createSSRApp(App) - expect(await renderToString(app)).toMatch( - `
Hello world
`, - ) - }) - - test('with static + dynamic style', async () => { - const source = `
Hello world
` - const { code, ast } = compile(source, { - mode: 'function', - directiveTransforms: { - motion: transform(), - }, - }) - expect(code).toMatchSnapshot(source) - expect(ast).toMatchSnapshot(source) - const render = Function('require', 'Vue', code)(require, runtimeDom) - const App = defineComponent({ - directives: { - motion: MotionDirective(), - }, - ssrRender: render, - }) - const app = createSSRApp(App) - expect(await renderToString(app)).toMatch( - `
Hello world
`, - ) - }) - - test('with v-show', async () => { - const source = `
Hello world
` - const { code, ast } = compile(source, { - mode: 'function', - directiveTransforms: { - motion: transform(), - }, - }) - expect(code).toMatchSnapshot(source) - expect(ast).toMatchSnapshot(source) - const render = Function('require', 'Vue', code)(require, runtimeDom) - const App = defineComponent({ - directives: { - motion: MotionDirective(), - }, - data() { - return { hide: false } - }, - ssrRender: render, - }) - const app = createSSRApp(App) - expect(await renderToString(app)).toMatch( - `
Hello world
`, - ) - }) -}) diff --git a/tests/useElementStyle.spec.ts b/tests/useElementStyle.spec.ts index 2b47c544..c72364ff 100644 --- a/tests/useElementStyle.spec.ts +++ b/tests/useElementStyle.spec.ts @@ -1,7 +1,7 @@ import { mount } from '@vue/test-utils' import { nextTick, ref } from 'vue-demi' +import { describe, expect, it } from 'vitest' import { useElementStyle } from '../src' -import { describe, it, expect } from 'vitest' const TestComponent = { template: '
Hello world
', diff --git a/tests/useElementTransform.spec.ts b/tests/useElementTransform.spec.ts index 3d641c52..d4ce5ee9 100644 --- a/tests/useElementTransform.spec.ts +++ b/tests/useElementTransform.spec.ts @@ -1,7 +1,7 @@ import { mount } from '@vue/test-utils' import { nextTick, ref } from 'vue-demi' +import { describe, expect, it } from 'vitest' import { useElementTransform } from '../src' -import { describe, it, expect } from 'vitest' const TestComponent = { template: '
Hello world
', diff --git a/tests/useMotion.spec.ts b/tests/useMotion.spec.ts index 3b746ae8..be1c448f 100644 --- a/tests/useMotion.spec.ts +++ b/tests/useMotion.spec.ts @@ -1,6 +1,6 @@ import { mount } from '@vue/test-utils' import { ref } from 'vue-demi' -import { describe, it, expect } from 'vitest' +import { describe, expect, it } from 'vitest' import { useMotion } from '../src' const TestComponent = { diff --git a/tests/useMotionTransitions.spec.ts b/tests/useMotionTransitions.spec.ts index 2df2b651..40927238 100644 --- a/tests/useMotionTransitions.spec.ts +++ b/tests/useMotionTransitions.spec.ts @@ -1,6 +1,6 @@ +import { describe, expect, it } from 'vitest' import { useMotionTransitions } from '../src' -import { describe, it, expect } from 'vitest' -import { Transition } from '../src/types/transitions' +import type { Transition } from '../src/types/transitions' const defaultTransition: Transition = { type: 'spring', diff --git a/vite.config.ts b/vite.config.ts index b281e3c5..2dae6e82 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,5 +1,5 @@ -import vue from '@vitejs/plugin-vue' import { resolve } from 'path' +import vue from '@vitejs/plugin-vue' import { defineConfig } from 'vite' import WindiCSS from 'vite-plugin-windicss'