From 7e7114251d5cad37957d1aa3caa14c971f08af28 Mon Sep 17 00:00:00 2001 From: "X.Q. Chen" <31237954+brenner8023@users.noreply.github.com> Date: Fri, 19 Aug 2022 00:51:17 +0800 Subject: [PATCH] refactor: switch jest to vitest (#962) --- package.json | 29 +- pnpm-lock.yaml | 3249 ++++------------- test/apis/computed.spec.js | 268 +- test/apis/inject.spec.js | 106 +- test/apis/lifecycle.spec.js | 318 +- test/apis/state.spec.js | 198 +- test/apis/useCssModule.spec.js | 35 +- test/apis/warn.spec.js | 8 +- test/apis/watch.spec.js | 1240 ++++--- test/helpers/mockWarn.ts | 16 +- ...{wait-for-update.js => wait-for-update.ts} | 10 +- test/setup.spec.js | 304 +- test/setupContext.spec.ts | 6 +- test/setupTest.js | 9 - test/ssr/serverPrefetch.spec.js | 12 +- test/ssr/ssrReactive.spec.ts | 59 +- test/templateRefs.spec.js | 131 +- test/use.spec.ts | 2 +- test/v3/reactivity/computed.spec.ts | 10 +- test/v3/reactivity/del.spec.ts | 10 +- test/v3/reactivity/effectScope.spec.ts | 10 +- test/v3/reactivity/reactive.spec.ts | 4 +- test/v3/reactivity/readonly.spec.ts | 4 +- test/v3/reactivity/set.spec.ts | 6 +- .../v3/runtime-core/apiAsyncComponent.spec.ts | 22 +- test/v3/runtime-core/apiLifecycle.spec.ts | 18 +- test/v3/runtime-core/apiWatch.spec.ts | 24 +- test/v3/runtime-core/h.spec.ts | 2 +- test/vitest.setup.js | 14 + tsconfig.json | 3 +- vitest.config.ts | 16 + 31 files changed, 2259 insertions(+), 3884 deletions(-) rename test/helpers/{wait-for-update.js => wait-for-update.ts} (88%) delete mode 100644 test/setupTest.js create mode 100644 test/vitest.setup.js create mode 100644 vitest.config.ts diff --git a/package.json b/package.json index d245b2a4..8981aa07 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "start": "rollup -c -w", "build": "rimraf dist && rollup -c", "lint": "prettier --write --parser typescript \"{src,test,test-dts}/**/*.ts?(x)\" && prettier --write \"{src,test}/**/*.js\"", - "test": "cross-env NODE_ENV=test jest", + "test": "vitest", "test:all": "pnpm run test && pnpm run test:dts", "test:dts": "tsc -p ./test-dts/tsconfig.json && tsc -p ./test-dts/tsconfig.vue3.json && pnpm run build && tsc -p ./test-dts/tsconfig.build.json", "update-readme": "node ./scripts/update-readme.js", @@ -56,13 +56,11 @@ "devDependencies": { "@rollup/plugin-node-resolve": "^13.3.0", "@rollup/plugin-replace": "^4.0.0", - "@types/jest": "^26.0.24", "@types/node": "^17.0.31", "bumpp": "^7.1.1", "conventional-changelog-cli": "^2.2.2", "conventional-github-releaser": "^3.1.5", - "cross-env": "^7.0.3", - "jest": "^26.6.3", + "jsdom": "^20.0.0", "lint-staged": "^12.4.1", "prettier": "^2.6.2", "rimraf": "^3.0.2", @@ -71,9 +69,9 @@ "rollup-plugin-terser": "^7.0.2", "rollup-plugin-typescript2": "^0.31.2", "simple-git-hooks": "^2.7.0", - "ts-jest": "^26.5.6", "tslib": "^2.4.0", "typescript": "^4.6.4", + "vitest": "^0.22.0", "vue": "^2.6.14", "vue-router": "^3.5.3", "vue-server-renderer": "^2.6.14", @@ -90,27 +88,6 @@ "prettier --parser=typescript --write" ] }, - "jest": { - "verbose": true, - "globals": { - "__DEV__": true, - "__VERSION__": "0.0.0" - }, - "setupFiles": [ - "/test/setupTest.js" - ], - "setupFilesAfterEnv": [ - "/test/helpers/wait-for-update.js" - ], - "moduleFileExtensions": [ - "ts", - "js" - ], - "testMatch": [ - "/test/**/*.spec.{js,ts}" - ], - "preset": "ts-jest" - }, "prettier": { "semi": false, "singleQuote": true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ae6512cd..67e01ba3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3,13 +3,11 @@ lockfileVersion: 5.4 specifiers: '@rollup/plugin-node-resolve': ^13.3.0 '@rollup/plugin-replace': ^4.0.0 - '@types/jest': ^26.0.24 '@types/node': ^17.0.31 bumpp: ^7.1.1 conventional-changelog-cli: ^2.2.2 conventional-github-releaser: ^3.1.5 - cross-env: ^7.0.3 - jest: ^26.6.3 + jsdom: ^20.0.0 lint-staged: ^12.4.1 prettier: ^2.6.2 rimraf: ^3.0.2 @@ -18,9 +16,9 @@ specifiers: rollup-plugin-terser: ^7.0.2 rollup-plugin-typescript2: ^0.31.2 simple-git-hooks: ^2.7.0 - ts-jest: ^26.5.6 tslib: ^2.4.0 typescript: ^4.6.4 + vitest: ^0.22.0 vue: ^2.6.14 vue-router: ^3.5.3 vue-server-renderer: ^2.6.14 @@ -29,13 +27,11 @@ specifiers: devDependencies: '@rollup/plugin-node-resolve': 13.3.0_rollup@2.72.0 '@rollup/plugin-replace': 4.0.0_rollup@2.72.0 - '@types/jest': 26.0.24 '@types/node': 17.0.31 bumpp: 7.1.1 conventional-changelog-cli: 2.2.2 conventional-github-releaser: 3.1.5 - cross-env: 7.0.3 - jest: 26.6.3 + jsdom: 20.0.0 lint-staged: 12.4.1 prettier: 2.6.2 rimraf: 3.0.2 @@ -44,9 +40,9 @@ devDependencies: rollup-plugin-terser: 7.0.2_rollup@2.72.0 rollup-plugin-typescript2: 0.31.2_gucgpcfkl2vuh2xx63prpab3bu simple-git-hooks: 2.7.0 - ts-jest: 26.5.6_ip4jai7pxkumsngma2fb7ud2tm tslib: 2.4.0 typescript: 4.6.4 + vitest: 0.22.0_jsdom@20.0.0 vue: 2.6.14 vue-router: 3.5.3 vue-server-renderer: 2.6.14 @@ -54,6 +50,10 @@ devDependencies: packages: + /@antfu/utils/0.5.2: + resolution: {integrity: sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==} + dev: true + /@babel/code-frame/7.16.7: resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} engines: {node: '>=6.9.0'} @@ -61,149 +61,11 @@ packages: '@babel/highlight': 7.16.10 dev: true - /@babel/compat-data/7.16.8: - resolution: {integrity: sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/core/7.16.12: - resolution: {integrity: sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.16.7 - '@babel/generator': 7.16.8 - '@babel/helper-compilation-targets': 7.16.7_@babel+core@7.16.12 - '@babel/helper-module-transforms': 7.16.7 - '@babel/helpers': 7.16.7 - '@babel/parser': 7.16.12 - '@babel/template': 7.16.7 - '@babel/traverse': 7.16.10 - '@babel/types': 7.16.8 - convert-source-map: 1.8.0 - debug: 4.3.3 - gensync: 1.0.0-beta.2 - json5: 2.2.0 - semver: 6.3.0 - source-map: 0.5.7 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/generator/7.16.8: - resolution: {integrity: sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.8 - jsesc: 2.5.2 - source-map: 0.5.7 - dev: true - - /@babel/helper-compilation-targets/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.16.8 - '@babel/core': 7.16.12 - '@babel/helper-validator-option': 7.16.7 - browserslist: 4.19.1 - semver: 6.3.0 - dev: true - - /@babel/helper-environment-visitor/7.16.7: - resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.8 - dev: true - - /@babel/helper-function-name/7.16.7: - resolution: {integrity: sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-get-function-arity': 7.16.7 - '@babel/template': 7.16.7 - '@babel/types': 7.16.8 - dev: true - - /@babel/helper-get-function-arity/7.16.7: - resolution: {integrity: sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.8 - dev: true - - /@babel/helper-hoist-variables/7.16.7: - resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.8 - dev: true - - /@babel/helper-module-imports/7.16.7: - resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.8 - dev: true - - /@babel/helper-module-transforms/7.16.7: - resolution: {integrity: sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-simple-access': 7.16.7 - '@babel/helper-split-export-declaration': 7.16.7 - '@babel/helper-validator-identifier': 7.16.7 - '@babel/template': 7.16.7 - '@babel/traverse': 7.16.10 - '@babel/types': 7.16.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-plugin-utils/7.16.7: - resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-simple-access/7.16.7: - resolution: {integrity: sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.8 - dev: true - - /@babel/helper-split-export-declaration/7.16.7: - resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.8 - dev: true - /@babel/helper-validator-identifier/7.16.7: resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-option/7.16.7: - resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helpers/7.16.7: - resolution: {integrity: sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.16.7 - '@babel/traverse': 7.16.10 - '@babel/types': 7.16.8 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/highlight/7.16.10: resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==} engines: {node: '>=6.9.0'} @@ -219,371 +81,20 @@ packages: hasBin: true dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.16.12: - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.16.12: - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.16.12: - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.16.12: - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.16.12: - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.16.12: - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.16.12: - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.16.12: - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.16.12: - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.16.12: - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.16.12: - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.16.12: - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/template/7.16.7: - resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.16.7 - '@babel/parser': 7.16.12 - '@babel/types': 7.16.8 - dev: true - - /@babel/traverse/7.16.10: - resolution: {integrity: sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.16.7 - '@babel/generator': 7.16.8 - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-function-name': 7.16.7 - '@babel/helper-hoist-variables': 7.16.7 - '@babel/helper-split-export-declaration': 7.16.7 - '@babel/parser': 7.16.12 - '@babel/types': 7.16.8 - debug: 4.3.3 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types/7.16.8: - resolution: {integrity: sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.16.7 - to-fast-properties: 2.0.0 - dev: true - - /@bcoe/v8-coverage/0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true - - /@cnakazawa/watch/1.0.4: - resolution: {integrity: sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==} - engines: {node: '>=0.1.95'} - hasBin: true - dependencies: - exec-sh: 0.3.6 - minimist: 1.2.5 + /@esbuild/linux-loong64/0.14.54: + resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true dev: true + optional: true /@hutson/parse-repository-url/3.0.2: resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} engines: {node: '>=6.9.0'} dev: true - /@istanbuljs/load-nyc-config/1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - dev: true - - /@istanbuljs/schema/0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - dev: true - - /@jest/console/26.6.2: - resolution: {integrity: sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/types': 26.6.2 - '@types/node': 17.0.31 - chalk: 4.1.2 - jest-message-util: 26.6.2 - jest-util: 26.6.2 - slash: 3.0.0 - dev: true - - /@jest/core/26.6.3: - resolution: {integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/console': 26.6.2 - '@jest/reporters': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/transform': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 17.0.31 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.9 - jest-changed-files: 26.6.2 - jest-config: 26.6.3 - jest-haste-map: 26.6.2 - jest-message-util: 26.6.2 - jest-regex-util: 26.0.0 - jest-resolve: 26.6.2 - jest-resolve-dependencies: 26.6.3 - jest-runner: 26.6.3 - jest-runtime: 26.6.3 - jest-snapshot: 26.6.2 - jest-util: 26.6.2 - jest-validate: 26.6.2 - jest-watcher: 26.6.2 - micromatch: 4.0.4 - p-each-series: 2.2.0 - rimraf: 3.0.2 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - dev: true - - /@jest/environment/26.6.2: - resolution: {integrity: sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/fake-timers': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 17.0.31 - jest-mock: 26.6.2 - dev: true - - /@jest/fake-timers/26.6.2: - resolution: {integrity: sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/types': 26.6.2 - '@sinonjs/fake-timers': 6.0.1 - '@types/node': 17.0.31 - jest-message-util: 26.6.2 - jest-mock: 26.6.2 - jest-util: 26.6.2 - dev: true - - /@jest/globals/26.6.2: - resolution: {integrity: sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/environment': 26.6.2 - '@jest/types': 26.6.2 - expect: 26.6.2 - dev: true - - /@jest/reporters/26.6.2: - resolution: {integrity: sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==} - engines: {node: '>= 10.14.2'} - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/transform': 26.6.2 - '@jest/types': 26.6.2 - chalk: 4.1.2 - collect-v8-coverage: 1.0.1 - exit: 0.1.2 - glob: 7.2.0 - graceful-fs: 4.2.9 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 4.0.3 - istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.3 - jest-haste-map: 26.6.2 - jest-resolve: 26.6.2 - jest-util: 26.6.2 - jest-worker: 26.6.2 - slash: 3.0.0 - source-map: 0.6.1 - string-length: 4.0.2 - terminal-link: 2.1.1 - v8-to-istanbul: 7.1.2 - optionalDependencies: - node-notifier: 8.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/source-map/26.6.2: - resolution: {integrity: sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==} - engines: {node: '>= 10.14.2'} - dependencies: - callsites: 3.1.0 - graceful-fs: 4.2.9 - source-map: 0.6.1 - dev: true - - /@jest/test-result/26.6.2: - resolution: {integrity: sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/console': 26.6.2 - '@jest/types': 26.6.2 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 - dev: true - - /@jest/test-sequencer/26.6.3: - resolution: {integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/test-result': 26.6.2 - graceful-fs: 4.2.9 - jest-haste-map: 26.6.2 - jest-runner: 26.6.3 - jest-runtime: 26.6.3 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - dev: true - - /@jest/transform/26.6.2: - resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} - engines: {node: '>= 10.14.2'} - dependencies: - '@babel/core': 7.16.12 - '@jest/types': 26.6.2 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 1.8.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.9 - jest-haste-map: 26.6.2 - jest-regex-util: 26.0.0 - jest-util: 26.6.2 - micromatch: 4.0.4 - pirates: 4.0.5 - slash: 3.0.0 - source-map: 0.6.1 - write-file-atomic: 3.0.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/types/26.6.2: - resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} - engines: {node: '>= 10.14.2'} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 17.0.31 - '@types/yargs': 15.0.14 - chalk: 4.1.2 - dev: true - /@jsdevtools/ez-spawn/3.0.4: resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==} engines: {node: '>=10'} @@ -665,21 +176,9 @@ packages: engines: {node: '>=4'} dev: true - /@sinonjs/commons/1.8.3: - resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} - dependencies: - type-detect: 4.0.8 - dev: true - - /@sinonjs/fake-timers/6.0.1: - resolution: {integrity: sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==} - dependencies: - '@sinonjs/commons': 1.8.3 - dev: true - - /@tootallnate/once/1.1.2: - resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} - engines: {node: '>= 6'} + /@tootallnate/once/2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} dev: true /@ts-type/package-dts/1.0.58_@types+node@17.0.31: @@ -694,84 +193,32 @@ packages: ts-type: 2.1.4_@types+node@17.0.31 dev: true - /@types/babel__core/7.1.18: - resolution: {integrity: sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==} - dependencies: - '@babel/parser': 7.16.12 - '@babel/types': 7.16.8 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.14.2 - dev: true - - /@types/babel__generator/7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} - dependencies: - '@babel/types': 7.16.8 - dev: true - - /@types/babel__template/7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + /@types/chai-subset/1.3.3: + resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: - '@babel/parser': 7.16.12 - '@babel/types': 7.16.8 + '@types/chai': 4.3.3 dev: true - /@types/babel__traverse/7.14.2: - resolution: {integrity: sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==} - dependencies: - '@babel/types': 7.16.8 + /@types/chai/4.3.3: + resolution: {integrity: sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==} dev: true /@types/estree/0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} dev: true - /@types/graceful-fs/4.1.5: - resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} - dependencies: - '@types/node': 17.0.31 + /@types/minimist/1.2.2: + resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/istanbul-lib-coverage/2.0.4: - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - dev: true - - /@types/istanbul-lib-report/3.0.0: - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - dev: true - - /@types/istanbul-reports/3.0.1: - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} - dependencies: - '@types/istanbul-lib-report': 3.0.0 - dev: true - - /@types/jest/26.0.24: - resolution: {integrity: sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==} - dependencies: - jest-diff: 26.6.2 - pretty-format: 26.6.2 - dev: true - - /@types/minimist/1.2.2: - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - dev: true - - /@types/node/17.0.31: - resolution: {integrity: sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==} + /@types/node/17.0.31: + resolution: {integrity: sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==} dev: true /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true - /@types/prettier/2.4.3: - resolution: {integrity: sha512-QzSuZMBuG5u8HqYz01qtMdg/Jfctlnvj1z/lYnIDXs/golxw0fxtRAHd9KrzjR7Yxz1qVeI00o0kiO3PmVdJ9w==} - dev: true - /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: @@ -782,20 +229,6 @@ packages: resolution: {integrity: sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==} dev: true - /@types/stack-utils/2.0.1: - resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} - dev: true - - /@types/yargs-parser/20.2.1: - resolution: {integrity: sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==} - dev: true - - /@types/yargs/15.0.14: - resolution: {integrity: sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==} - dependencies: - '@types/yargs-parser': 20.2.1 - dev: true - /@vue/compiler-core/3.2.21: resolution: {integrity: sha512-NhhiQZNG71KNq1h5pMW/fAXdTF7lJRaSI7LDm2edhHXVz1ROMICo8SreUmQnSf4Fet0UPBVqJ988eF4+936iDQ==} dependencies: @@ -823,7 +256,7 @@ packages: '@vue/shared': 3.2.21 estree-walker: 2.0.2 magic-string: 0.25.7 - postcss: 8.4.5 + postcss: 8.4.16 source-map: 0.6.1 dev: true @@ -924,8 +357,8 @@ packages: hasBin: true dev: true - /acorn/8.7.1: - resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==} + /acorn/8.8.0: + resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} engines: {node: '>=0.4.0'} hasBin: true dev: true @@ -938,7 +371,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.3 + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -959,7 +392,7 @@ packages: dev: true /ansi-regex/2.1.1: - resolution: {integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8=} + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} engines: {node: '>=0.10.0'} dev: true @@ -997,42 +430,6 @@ packages: engines: {node: '>=12'} dev: true - /anymatch/2.0.0: - resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} - dependencies: - micromatch: 3.1.10 - normalize-path: 2.1.1 - dev: true - - /anymatch/3.1.2: - resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - - /argparse/1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: true - - /arr-diff/4.0.0: - resolution: {integrity: sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=} - engines: {node: '>=0.10.0'} - dev: true - - /arr-flatten/1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} - dev: true - - /arr-union/3.1.0: - resolution: {integrity: sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=} - engines: {node: '>=0.10.0'} - dev: true - /array-back/3.1.0: resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} engines: {node: '>=6'} @@ -1052,19 +449,13 @@ packages: engines: {node: '>=8'} dev: true - /array-unique/0.3.2: - resolution: {integrity: sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=} - engines: {node: '>=0.10.0'} - dev: true - /arrify/1.0.1: resolution: {integrity: sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=} engines: {node: '>=0.10.0'} dev: true - /assign-symbols/1.0.0: - resolution: {integrity: sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=} - engines: {node: '>=0.10.0'} + /assertion-error/1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true /astral-regex/2.0.0: @@ -1073,105 +464,13 @@ packages: dev: true /asynckit/0.4.0: - resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} - dev: true - - /atob/2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - dev: true - - /babel-jest/26.6.3_@babel+core@7.16.12: - resolution: {integrity: sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==} - engines: {node: '>= 10.14.2'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.16.12 - '@jest/transform': 26.6.2 - '@jest/types': 26.6.2 - '@types/babel__core': 7.1.18 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 26.6.2_@babel+core@7.16.12 - chalk: 4.1.2 - graceful-fs: 4.2.9 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-istanbul/6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - dependencies: - '@babel/helper-plugin-utils': 7.16.7 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.1.0 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-jest-hoist/26.6.2: - resolution: {integrity: sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==} - engines: {node: '>= 10.14.2'} - dependencies: - '@babel/template': 7.16.7 - '@babel/types': 7.16.8 - '@types/babel__core': 7.1.18 - '@types/babel__traverse': 7.14.2 - dev: true - - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.16.12: - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.16.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.16.12 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.16.12 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.16.12 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.16.12 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.16.12 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.16.12 - dev: true - - /babel-preset-jest/26.6.2_@babel+core@7.16.12: - resolution: {integrity: sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==} - engines: {node: '>= 10.14.2'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.16.12 - babel-plugin-jest-hoist: 26.6.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.16.12 + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - /base/0.11.2: - resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} - engines: {node: '>=0.10.0'} - dependencies: - cache-base: 1.0.1 - class-utils: 0.3.6 - component-emitter: 1.3.0 - define-property: 1.0.0 - isobject: 3.0.1 - mixin-deep: 1.3.2 - pascalcase: 0.1.1 - dev: true - /brace-expansion/1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -1179,22 +478,6 @@ packages: concat-map: 0.0.1 dev: true - /braces/2.3.2: - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - extend-shallow: 2.0.1 - fill-range: 4.0.0 - isobject: 3.0.1 - repeat-element: 1.1.4 - snapdragon: 0.8.2 - snapdragon-node: 2.1.1 - split-string: 3.1.0 - to-regex: 3.0.2 - dev: true - /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -1206,31 +489,6 @@ packages: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} dev: true - /browserslist/4.19.1: - resolution: {integrity: sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001303 - electron-to-chromium: 1.4.54 - escalade: 3.1.1 - node-releases: 2.0.1 - picocolors: 1.0.0 - dev: true - - /bs-logger/0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} - dependencies: - fast-json-stable-stringify: 2.1.0 - dev: true - - /bser/2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - dependencies: - node-int64: 0.4.0 - dev: true - /buffer-from/1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true @@ -1253,19 +511,21 @@ packages: semver: 7.3.5 dev: true - /cache-base/1.0.1: - resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} - engines: {node: '>=0.10.0'} + /c12/0.2.9: + resolution: {integrity: sha512-6jYdexgAKr+3kYoTmvC5eDtDHUg7GmFQSdeQqZzAKiPlFAN1heGUoXDbAYYwUCfefZy+WgVJbmAej5TTQpp3jA==} dependencies: - collection-visit: 1.0.0 - component-emitter: 1.3.0 - get-value: 2.0.6 - has-value: 1.0.0 - isobject: 3.0.1 - set-value: 2.0.1 - to-object-path: 0.3.0 - union-value: 1.0.1 - unset-value: 1.0.0 + defu: 6.1.0 + dotenv: 16.0.1 + gittar: 0.1.1 + jiti: 1.14.0 + mlly: 0.5.12 + pathe: 0.3.4 + rc9: 1.2.2 + dev: true + + /cac/6.7.12: + resolution: {integrity: sha512-rM7E2ygtMkJqD9c7WnFU6fruFcN3xe4FM5yUmgxhZzIKJk4uHl9U/fhwdajGFQbQuv43FAUo1Fe8gX/oIKDeSA==} + engines: {node: '>=8'} dev: true /cacheable-request/2.1.4: @@ -1284,11 +544,6 @@ packages: resolution: {integrity: sha1-JtII6onje1y95gJQoV8DHBak1ms=} dev: true - /callsites/3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true - /camelcase-keys/2.1.0: resolution: {integrity: sha1-MIvur/3ygRkFHvodkyITyRuPkuc=} engines: {node: '>=0.10.0'} @@ -1330,20 +585,17 @@ packages: engines: {node: '>=6'} dev: true - /camelcase/6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: true - - /caniuse-lite/1.0.30001303: - resolution: {integrity: sha512-/Mqc1oESndUNszJP0kx0UaQU9kEv9nNtJ7Kn8AdA0mNnH8eR1cj0kG+NbNuC1Wq/b21eA8prhKRA3bbkjONegQ==} - dev: true - - /capture-exit/2.0.0: - resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} - engines: {node: 6.* || 8.* || >= 10.*} + /chai/4.3.6: + resolution: {integrity: sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==} + engines: {node: '>=4'} dependencies: - rsvp: 4.8.5 + assertion-error: 1.1.0 + check-error: 1.0.2 + deep-eql: 3.0.1 + get-func-name: 2.0.0 + loupe: 2.3.4 + pathval: 1.1.1 + type-detect: 4.0.8 dev: true /chalk/1.1.3: @@ -1374,27 +626,37 @@ packages: supports-color: 7.2.0 dev: true - /char-regex/1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} + /changelogen/0.1.1: + resolution: {integrity: sha512-LBbyAPmqpJ3sm/soYWZ+z8FDACaGB9eY8O2villawSxRDv83kve25Kje54FkiN6YrPiQaW2ehz9owKY+YzHTWw==} + hasBin: true + dependencies: + c12: 0.2.9 + consola: 2.15.3 + execa: 6.1.0 + mri: 1.2.0 + scule: 0.2.1 dev: true - /ci-info/2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + /changelogithub/0.6.6: + resolution: {integrity: sha512-9STm+siwI3pvigi0UcuI5l1RGkilg8Eh7nE6LiGcOBrMnrxW5wt+To+HNPMnmPLL0L9KVVVMll7xNykd0UwQIg==} + engines: {node: '>=12.0.0'} + hasBin: true + dependencies: + '@antfu/utils': 0.5.2 + c12: 0.2.9 + cac: 6.7.12 + changelogen: 0.1.1 + execa: 6.1.0 + kolorist: 1.5.1 + ohmyfetch: 0.4.18 dev: true - /cjs-module-lexer/0.6.0: - resolution: {integrity: sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==} + /check-error/1.0.2: + resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true - /class-utils/0.3.6: - resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - define-property: 0.2.5 - isobject: 3.0.1 - static-extend: 0.1.2 + /chownr/1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} dev: true /clean-stack/2.2.0: @@ -1425,14 +687,6 @@ packages: string-width: 5.1.2 dev: true - /cliui/6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - dev: true - /cliui/7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: @@ -1447,23 +701,6 @@ packages: mimic-response: 1.0.1 dev: true - /co/4.6.0: - resolution: {integrity: sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: true - - /collect-v8-coverage/1.0.1: - resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} - dev: true - - /collection-visit/1.0.0: - resolution: {integrity: sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=} - engines: {node: '>=0.10.0'} - dependencies: - map-visit: 1.0.0 - object-visit: 1.0.1 - dev: true - /color-convert/1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -1478,7 +715,7 @@ packages: dev: true /color-name/1.1.3: - resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} dev: true /color-name/1.1.4: @@ -1533,14 +770,14 @@ packages: dot-prop: 5.3.0 dev: true - /component-emitter/1.3.0: - resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} - dev: true - /concat-map/0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} dev: true + /consola/2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + dev: true + /conventional-changelog-angular/1.6.6: resolution: {integrity: sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg==} dependencies: @@ -1790,40 +1027,10 @@ packages: through2: 2.0.5 dev: true - /convert-source-map/1.8.0: - resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} - dependencies: - safe-buffer: 5.1.2 - dev: true - - /copy-descriptor/0.1.1: - resolution: {integrity: sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=} - engines: {node: '>=0.10.0'} - dev: true - /core-util-is/1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cross-env/7.0.3: - resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} - engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} - hasBin: true - dependencies: - cross-spawn: 7.0.3 - dev: true - - /cross-spawn/6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.1 - shebang-command: 1.2.0 - which: 1.3.1 - dev: true - /cross-spawn/7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -1837,8 +1044,8 @@ packages: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} dev: true - /cssom/0.4.4: - resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} + /cssom/0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} dev: true /cssstyle/2.3.0: @@ -1871,32 +1078,26 @@ packages: engines: {node: '>=8'} dev: true - /data-urls/2.0.0: - resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} - engines: {node: '>=10'} + /data-urls/3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} dependencies: abab: 2.0.6 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 dev: true /dateformat/3.0.3: resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} 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.3 dev: true - /debug/4.3.3: + /debug/4.3.3_supports-color@9.2.2: resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} engines: {node: '>=6.0'} peerDependencies: @@ -1906,10 +1107,11 @@ packages: optional: true dependencies: ms: 2.1.2 + supports-color: 9.2.2 dev: true - /debug/4.3.3_supports-color@9.2.2: - resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -1918,7 +1120,6 @@ packages: optional: true dependencies: ms: 2.1.2 - supports-color: 9.2.2 dev: true /decamelize-keys/1.1.0: @@ -1934,8 +1135,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /decimal.js/10.3.1: - resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} + /decimal.js/10.4.0: + resolution: {integrity: sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg==} dev: true /decode-uri-component/0.2.0: @@ -1950,6 +1151,13 @@ packages: mimic-response: 1.0.1 dev: true + /deep-eql/3.0.1: + resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==} + engines: {node: '>=0.12'} + dependencies: + 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 @@ -1959,41 +1167,17 @@ packages: engines: {node: '>=0.10.0'} dev: true - /define-property/0.2.5: - resolution: {integrity: sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 0.1.6 - dev: true - - /define-property/1.0.0: - resolution: {integrity: sha1-dp66rz9KY6rTr56NMEybvnm/sOY=} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.2 - dev: true - - /define-property/2.0.2: - resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.2 - isobject: 3.0.1 + /defu/6.1.0: + resolution: {integrity: sha512-pOFYRTIhoKujrmbTRhcW5lYQLBXw/dlTwfI8IguF1QCDJOcJzNH1w+YFjxqy6BAuJrClTy6MUE8q+oKJ2FLsIw==} dev: true /delayed-stream/1.0.0: - resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: true - /detect-newline/3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - dev: true - - /diff-sequences/26.6.2: - resolution: {integrity: sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==} - engines: {node: '>= 10.14.2'} + /destr/1.1.1: + resolution: {integrity: sha512-QqkneF8LrYmwATMdnuD2MLI3GHQIcBnG6qFC2q9bSH430VTCDAVjcspPmUaKhPGtAtPAftIUFqY1obQYQuwmbg==} dev: true /dir-glob/3.0.1: @@ -2003,11 +1187,11 @@ packages: path-type: 4.0.0 dev: true - /domexception/2.0.1: - resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} - engines: {node: '>=8'} + /domexception/4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} dependencies: - webidl-conversions: 5.0.0 + webidl-conversions: 7.0.0 dev: true /dot-prop/3.0.0: @@ -2024,6 +1208,11 @@ packages: is-obj: 2.0.0 dev: true + /dotenv/16.0.1: + resolution: {integrity: sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==} + engines: {node: '>=12'} + dev: true + /duplexer3/0.1.4: resolution: {integrity: sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=} dev: true @@ -2032,15 +1221,6 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium/1.4.54: - resolution: {integrity: sha512-jRAoneRdSxnpRHO0ANpnEUtQHXxlgfVjrLOnQSisw1ryjXJXvS0pJaR/v2B7S++/tRjgEDp4Sjn5nmgb6uTySw==} - dev: true - - /emittery/0.7.2: - resolution: {integrity: sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==} - engines: {node: '>=10'} - dev: true - /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true @@ -2049,10 +1229,9 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /end-of-stream/1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 + /entities/4.3.1: + resolution: {integrity: sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==} + engines: {node: '>=0.12'} dev: true /error-ex/1.3.2: @@ -2061,88 +1240,260 @@ packages: is-arrayish: 0.2.1 dev: true - /escalade/3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} + /esbuild-android-64/0.14.54: + resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true dev: true + optional: true - /escape-string-regexp/1.0.5: - resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} - engines: {node: '>=0.8.0'} + /esbuild-android-arm64/0.14.54: + resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true dev: true + optional: true - /escape-string-regexp/2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} + /esbuild-darwin-64/0.14.54: + resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /escodegen/2.0.0: - resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} - engines: {node: '>=6.0'} - hasBin: true - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionator: 0.8.3 - optionalDependencies: - source-map: 0.6.1 + /esbuild-darwin-arm64/0.14.54: + resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /esprima/4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true + /esbuild-freebsd-64/0.14.54: + resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true dev: true + optional: true - /estraverse/5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} + /esbuild-freebsd-arm64/0.14.54: + resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true dev: true + optional: true - /estree-walker/1.0.1: - resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + /esbuild-linux-32/0.14.54: + resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true dev: true + optional: true - /estree-walker/2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + /esbuild-linux-64/0.14.54: + resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true dev: true + optional: true - /esutils/2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} + /esbuild-linux-arm/0.14.54: + resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true dev: true + optional: true - /exec-sh/0.3.6: - resolution: {integrity: sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==} + /esbuild-linux-arm64/0.14.54: + resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: true + optional: true - /execa/1.0.0: - resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} + /esbuild-linux-mips64le/0.14.54: + resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le/0.14.54: + resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64/0.14.54: + resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x/0.14.54: + resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64/0.14.54: + resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64/0.14.54: + resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64/0.14.54: + resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32/0.14.54: + resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64/0.14.54: + resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64/0.14.54: + resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild/0.14.54: + resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/linux-loong64': 0.14.54 + esbuild-android-64: 0.14.54 + esbuild-android-arm64: 0.14.54 + esbuild-darwin-64: 0.14.54 + esbuild-darwin-arm64: 0.14.54 + esbuild-freebsd-64: 0.14.54 + esbuild-freebsd-arm64: 0.14.54 + esbuild-linux-32: 0.14.54 + esbuild-linux-64: 0.14.54 + esbuild-linux-arm: 0.14.54 + esbuild-linux-arm64: 0.14.54 + esbuild-linux-mips64le: 0.14.54 + esbuild-linux-ppc64le: 0.14.54 + esbuild-linux-riscv64: 0.14.54 + esbuild-linux-s390x: 0.14.54 + esbuild-netbsd-64: 0.14.54 + esbuild-openbsd-64: 0.14.54 + esbuild-sunos-64: 0.14.54 + esbuild-windows-32: 0.14.54 + esbuild-windows-64: 0.14.54 + esbuild-windows-arm64: 0.14.54 + dev: true + + /escalade/3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - dependencies: - cross-spawn: 6.0.5 - get-stream: 4.1.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 dev: true - /execa/4.1.0: - resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} - engines: {node: '>=10'} + /escape-string-regexp/1.0.5: + resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} + engines: {node: '>=0.8.0'} + dev: true + + /escodegen/2.0.0: + resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} + engines: {node: '>=6.0'} + hasBin: true dependencies: - cross-spawn: 7.0.3 - get-stream: 5.2.0 - human-signals: 1.1.1 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + dev: true + + /esprima/4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + 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/5.1.1: @@ -2160,63 +1511,19 @@ packages: strip-final-newline: 2.0.0 dev: true - /exit/0.1.2: - resolution: {integrity: sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=} - engines: {node: '>= 0.8.0'} - dev: true - - /expand-brackets/2.1.4: - resolution: {integrity: sha1-t3c14xXOMPa27/D4OwQVGiJEliI=} - engines: {node: '>=0.10.0'} - dependencies: - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - posix-character-classes: 0.1.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - dev: true - - /expect/26.6.2: - resolution: {integrity: sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/types': 26.6.2 - ansi-styles: 4.3.0 - jest-get-type: 26.3.0 - jest-matcher-utils: 26.6.2 - jest-message-util: 26.6.2 - jest-regex-util: 26.0.0 - dev: true - - /extend-shallow/2.0.1: - resolution: {integrity: sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=} - engines: {node: '>=0.10.0'} - dependencies: - is-extendable: 0.1.1 - dev: true - - /extend-shallow/3.0.2: - resolution: {integrity: sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=} - engines: {node: '>=0.10.0'} - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - dev: true - - /extglob/2.0.4: - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} + /execa/6.1.0: + resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - array-unique: 0.3.2 - define-property: 1.0.0 - expand-brackets: 2.1.4 - extend-shallow: 2.0.1 - fragment-cache: 0.2.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 3.0.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 dev: true /fast-glob/3.2.11: @@ -2230,12 +1537,8 @@ packages: 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=} + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true /fastq/1.13.0: @@ -2244,22 +1547,6 @@ packages: reusify: 1.0.4 dev: true - /fb-watchman/2.0.1: - resolution: {integrity: sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==} - dependencies: - bser: 2.1.1 - dev: true - - /fill-range/4.0.0: - resolution: {integrity: sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range: 2.1.1 - dev: true - /fill-range/7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -2314,13 +1601,13 @@ packages: path-exists: 4.0.0 dev: true - /for-in/1.0.2: - resolution: {integrity: sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=} - engines: {node: '>=0.10.0'} + /flat/5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true dev: true - /form-data/3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} + /form-data/4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 @@ -2328,13 +1615,6 @@ packages: mime-types: 2.1.35 dev: true - /fragment-cache/0.2.1: - resolution: {integrity: sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=} - engines: {node: '>=0.10.0'} - dependencies: - map-cache: 0.2.2 - dev: true - /from2/2.3.0: resolution: {integrity: sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=} dependencies: @@ -2351,6 +1631,12 @@ packages: universalify: 2.0.0 dev: true + /fs-minipass/1.2.7: + resolution: {integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==} + dependencies: + minipass: 2.9.0 + dev: true + /fs.realpath/1.0.0: resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} dev: true @@ -2367,19 +1653,13 @@ packages: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true - /gensync/1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true - /get-caller-file/2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-package-type/0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} + /get-func-name/2.0.0: + resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true /get-pkg-repo/1.4.0: @@ -2414,30 +1694,11 @@ packages: engines: {node: '>=4'} dev: true - /get-stream/4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - dependencies: - pump: 3.0.0 - dev: true - - /get-stream/5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - dependencies: - pump: 3.0.0 - dev: true - /get-stream/6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} dev: true - /get-value/2.0.6: - resolution: {integrity: sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=} - engines: {node: '>=0.10.0'} - dev: true - /gh-got/7.1.0: resolution: {integrity: sha512-KeWkkhresa7sbpzQLYzITMgez5rMigUsijhmSAHcLDORIMUbdlkdoZyaN1wQvIjmUZnyb/wkAPaXb4MQKX0mdQ==} engines: {node: '>=4'} @@ -2502,6 +1763,14 @@ packages: ini: 1.3.8 dev: true + /gittar/0.1.1: + resolution: {integrity: sha512-p+XuqWJpW9ahUuNTptqeFjudFq31o6Jd+maMBarkMAR5U3K9c7zJB4sQ4BV8mIqrTOV29TtqikDhnZfCD4XNfQ==} + engines: {node: '>=4'} + dependencies: + mkdirp: 0.5.6 + tar: 4.4.19 + dev: true + /glob-parent/5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -2520,11 +1789,6 @@ packages: path-is-absolute: 1.0.1 dev: true - /globals/11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true - /globby/11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -2564,11 +1828,6 @@ packages: resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==} dev: true - /growly/1.3.0: - resolution: {integrity: sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=} - dev: true - optional: true - /handlebars/4.7.7: resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} engines: {node: '>=0.4.7'} @@ -2614,37 +1873,6 @@ packages: has-symbol-support-x: 1.4.2 dev: true - /has-value/0.3.1: - resolution: {integrity: sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 0.1.4 - isobject: 2.1.0 - dev: true - - /has-value/1.0.0: - resolution: {integrity: sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 1.0.0 - isobject: 3.0.1 - dev: true - - /has-values/0.1.4: - resolution: {integrity: sha1-bWHeldkd/Km5oCCJrThL/49it3E=} - engines: {node: '>=0.10.0'} - dev: true - - /has-values/1.0.0: - resolution: {integrity: sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - kind-of: 4.0.0 - dev: true - /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -2672,28 +1900,24 @@ packages: lru-cache: 6.0.0 dev: true - /html-encoding-sniffer/2.0.1: - resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} - engines: {node: '>=10'} + /html-encoding-sniffer/3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} dependencies: - whatwg-encoding: 1.0.5 - dev: true - - /html-escaper/2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + whatwg-encoding: 2.0.0 dev: true /http-cache-semantics/3.8.1: resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==} dev: true - /http-proxy-agent/4.0.1: - resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + /http-proxy-agent/5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} dependencies: - '@tootallnate/once': 1.1.2 + '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.3 + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -2703,23 +1927,23 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.3 + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true - /human-signals/1.1.1: - resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} - engines: {node: '>=8.12.0'} - dev: true - /human-signals/2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} dev: true - /iconv-lite/0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + /human-signals/3.0.1: + resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} + engines: {node: '>=12.20.0'} + dev: true + + /iconv-lite/0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 @@ -2730,20 +1954,6 @@ packages: engines: {node: '>= 4'} dev: true - /import-local/3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} - engines: {node: '>=8'} - hasBin: true - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - dev: true - - /imurmurhash/0.1.4: - resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} - engines: {node: '>=0.8.19'} - dev: true - /indent-string/2.1.0: resolution: {integrity: sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=} engines: {node: '>=0.10.0'} @@ -2784,28 +1994,10 @@ packages: p-is-promise: 1.1.0 dev: true - /is-accessor-descriptor/0.1.6: - resolution: {integrity: sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /is-accessor-descriptor/1.0.0: - resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 6.0.3 - dev: true - /is-arrayish/0.2.1: resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} dev: true - /is-buffer/1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: true - /is-builtin-module/3.1.0: resolution: {integrity: sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==} engines: {node: '>=6'} @@ -2813,11 +2005,10 @@ packages: builtin-modules: 3.2.0 dev: true - /is-ci/2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} - hasBin: true + /is-core-module/2.10.0: + resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} dependencies: - ci-info: 2.0.0 + has: 1.0.3 dev: true /is-core-module/2.8.1: @@ -2826,57 +2017,6 @@ packages: has: 1.0.3 dev: true - /is-data-descriptor/0.1.4: - resolution: {integrity: sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /is-data-descriptor/1.0.0: - resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 6.0.3 - dev: true - - /is-descriptor/0.1.6: - resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} - engines: {node: '>=0.10.0'} - dependencies: - is-accessor-descriptor: 0.1.6 - is-data-descriptor: 0.1.4 - kind-of: 5.1.0 - dev: true - - /is-descriptor/1.0.2: - resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} - engines: {node: '>=0.10.0'} - dependencies: - is-accessor-descriptor: 1.0.0 - is-data-descriptor: 1.0.0 - kind-of: 6.0.3 - dev: true - - /is-docker/2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: true - optional: true - - /is-extendable/0.1.1: - resolution: {integrity: sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=} - engines: {node: '>=0.10.0'} - dev: true - - /is-extendable/1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} - dependencies: - is-plain-object: 2.0.4 - dev: true - /is-extglob/2.1.1: resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} engines: {node: '>=0.10.0'} @@ -2891,600 +2031,91 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} dev: true - - /is-fullwidth-code-point/4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - dev: true - - /is-generator-fn/2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - dev: true - - /is-glob/4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true - - /is-module/1.0.0: - resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=} - dev: true - - /is-number/3.0.0: - resolution: {integrity: sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /is-number/7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true - - /is-obj/1.0.1: - resolution: {integrity: sha1-PkcprB9f3gJc19g6iW2rn09n2w8=} - engines: {node: '>=0.10.0'} - dev: true - - /is-obj/2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} - dev: true - - /is-object/1.0.2: - resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} - dev: true - - /is-plain-obj/1.1.0: - resolution: {integrity: sha1-caUMhCnfync8kqOQpKA7OfzVHT4=} - engines: {node: '>=0.10.0'} - dev: true - - /is-plain-object/2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - - /is-potential-custom-element-name/1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - dev: true - - /is-retry-allowed/1.2.0: - resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} - engines: {node: '>=0.10.0'} - dev: true - - /is-stream/1.1.0: - resolution: {integrity: sha1-EtSj3U5o4Lec6428hBc66A2RykQ=} - engines: {node: '>=0.10.0'} - dev: true - - /is-stream/2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true - - /is-text-path/1.0.1: - resolution: {integrity: sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=} - engines: {node: '>=0.10.0'} - dependencies: - text-extensions: 1.9.0 - dev: true - - /is-typedarray/1.0.0: - resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=} - dev: true - - /is-utf8/0.2.1: - resolution: {integrity: sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=} - dev: true - - /is-windows/1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: true - - /is-wsl/2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - dev: true - optional: true - - /isarray/1.0.0: - resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} - dev: true - - /isexe/2.0.0: - resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} - dev: true - - /isobject/2.1.0: - resolution: {integrity: sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=} - engines: {node: '>=0.10.0'} - dependencies: - isarray: 1.0.0 - dev: true - - /isobject/3.0.1: - resolution: {integrity: sha1-TkMekrEalzFjaqH5yNHMvP2reN8=} - engines: {node: '>=0.10.0'} - dev: true - - /istanbul-lib-coverage/3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} - dev: true - - /istanbul-lib-instrument/4.0.3: - resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} - engines: {node: '>=8'} - dependencies: - '@babel/core': 7.16.12 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-lib-instrument/5.1.0: - resolution: {integrity: sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==} - engines: {node: '>=8'} - dependencies: - '@babel/core': 7.16.12 - '@babel/parser': 7.16.12 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-lib-report/3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} - dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 - supports-color: 7.2.0 - dev: true - - /istanbul-lib-source-maps/4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - dependencies: - debug: 4.3.3 - istanbul-lib-coverage: 3.2.0 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-reports/3.1.3: - resolution: {integrity: sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==} - engines: {node: '>=8'} - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 - dev: true - - /isurl/1.0.0: - resolution: {integrity: sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==} - engines: {node: '>= 4'} - dependencies: - has-to-string-tag-x: 1.4.1 - is-object: 1.0.2 - dev: true - - /jest-changed-files/26.6.2: - resolution: {integrity: sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/types': 26.6.2 - execa: 4.1.0 - throat: 5.0.0 - dev: true - - /jest-cli/26.6.3: - resolution: {integrity: sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==} - engines: {node: '>= 10.14.2'} - hasBin: true - dependencies: - '@jest/core': 26.6.3 - '@jest/test-result': 26.6.2 - '@jest/types': 26.6.2 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.9 - import-local: 3.1.0 - is-ci: 2.0.0 - jest-config: 26.6.3 - jest-util: 26.6.2 - jest-validate: 26.6.2 - prompts: 2.4.2 - yargs: 15.4.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - dev: true - - /jest-config/26.6.3: - resolution: {integrity: sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==} - engines: {node: '>= 10.14.2'} - peerDependencies: - ts-node: '>=9.0.0' - peerDependenciesMeta: - ts-node: - optional: true - dependencies: - '@babel/core': 7.16.12 - '@jest/test-sequencer': 26.6.3 - '@jest/types': 26.6.2 - babel-jest: 26.6.3_@babel+core@7.16.12 - chalk: 4.1.2 - deepmerge: 4.2.2 - glob: 7.2.0 - graceful-fs: 4.2.9 - jest-environment-jsdom: 26.6.2 - jest-environment-node: 26.6.2 - jest-get-type: 26.3.0 - jest-jasmine2: 26.6.3 - jest-regex-util: 26.0.0 - jest-resolve: 26.6.2 - jest-util: 26.6.2 - jest-validate: 26.6.2 - micromatch: 4.0.4 - pretty-format: 26.6.2 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - dev: true - - /jest-diff/26.6.2: - resolution: {integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==} - engines: {node: '>= 10.14.2'} - dependencies: - chalk: 4.1.2 - diff-sequences: 26.6.2 - jest-get-type: 26.3.0 - pretty-format: 26.6.2 - dev: true - - /jest-docblock/26.0.0: - resolution: {integrity: sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==} - engines: {node: '>= 10.14.2'} - dependencies: - detect-newline: 3.1.0 - dev: true - - /jest-each/26.6.2: - resolution: {integrity: sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/types': 26.6.2 - chalk: 4.1.2 - jest-get-type: 26.3.0 - jest-util: 26.6.2 - pretty-format: 26.6.2 - dev: true - - /jest-environment-jsdom/26.6.2: - resolution: {integrity: sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/environment': 26.6.2 - '@jest/fake-timers': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 17.0.31 - jest-mock: 26.6.2 - jest-util: 26.6.2 - jsdom: 16.7.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - dev: true - - /jest-environment-node/26.6.2: - resolution: {integrity: sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/environment': 26.6.2 - '@jest/fake-timers': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 17.0.31 - jest-mock: 26.6.2 - jest-util: 26.6.2 - dev: true - - /jest-get-type/26.3.0: - resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} - engines: {node: '>= 10.14.2'} - dev: true - - /jest-haste-map/26.6.2: - resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/types': 26.6.2 - '@types/graceful-fs': 4.1.5 - '@types/node': 17.0.31 - anymatch: 3.1.2 - fb-watchman: 2.0.1 - graceful-fs: 4.2.9 - jest-regex-util: 26.0.0 - jest-serializer: 26.6.2 - jest-util: 26.6.2 - jest-worker: 26.6.2 - micromatch: 4.0.4 - sane: 4.1.0 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.2 + + /is-fullwidth-code-point/4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} dev: true - /jest-jasmine2/26.6.3: - resolution: {integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==} - engines: {node: '>= 10.14.2'} + /is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} dependencies: - '@babel/traverse': 7.16.10 - '@jest/environment': 26.6.2 - '@jest/source-map': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 17.0.31 - chalk: 4.1.2 - co: 4.6.0 - expect: 26.6.2 - is-generator-fn: 2.1.0 - jest-each: 26.6.2 - jest-matcher-utils: 26.6.2 - jest-message-util: 26.6.2 - jest-runtime: 26.6.3 - jest-snapshot: 26.6.2 - jest-util: 26.6.2 - pretty-format: 26.6.2 - throat: 5.0.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate + is-extglob: 2.1.1 dev: true - /jest-leak-detector/26.6.2: - resolution: {integrity: sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==} - engines: {node: '>= 10.14.2'} - dependencies: - jest-get-type: 26.3.0 - pretty-format: 26.6.2 + /is-module/1.0.0: + resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=} dev: true - /jest-matcher-utils/26.6.2: - resolution: {integrity: sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==} - engines: {node: '>= 10.14.2'} - dependencies: - chalk: 4.1.2 - jest-diff: 26.6.2 - jest-get-type: 26.3.0 - pretty-format: 26.6.2 + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} dev: true - /jest-message-util/26.6.2: - resolution: {integrity: sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==} - engines: {node: '>= 10.14.2'} - dependencies: - '@babel/code-frame': 7.16.7 - '@jest/types': 26.6.2 - '@types/stack-utils': 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.9 - micromatch: 4.0.4 - pretty-format: 26.6.2 - slash: 3.0.0 - stack-utils: 2.0.5 + /is-obj/1.0.1: + resolution: {integrity: sha1-PkcprB9f3gJc19g6iW2rn09n2w8=} + engines: {node: '>=0.10.0'} dev: true - /jest-mock/26.6.2: - resolution: {integrity: sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/types': 26.6.2 - '@types/node': 17.0.31 + /is-obj/2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} dev: true - /jest-pnp-resolver/1.2.2_jest-resolve@26.6.2: - resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - dependencies: - jest-resolve: 26.6.2 + /is-object/1.0.2: + resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} dev: true - /jest-regex-util/26.0.0: - resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} - engines: {node: '>= 10.14.2'} + /is-plain-obj/1.1.0: + resolution: {integrity: sha1-caUMhCnfync8kqOQpKA7OfzVHT4=} + engines: {node: '>=0.10.0'} dev: true - /jest-resolve-dependencies/26.6.3: - resolution: {integrity: sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/types': 26.6.2 - jest-regex-util: 26.0.0 - jest-snapshot: 26.6.2 + /is-potential-custom-element-name/1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true - /jest-resolve/26.6.2: - resolution: {integrity: sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/types': 26.6.2 - chalk: 4.1.2 - graceful-fs: 4.2.9 - jest-pnp-resolver: 1.2.2_jest-resolve@26.6.2 - jest-util: 26.6.2 - read-pkg-up: 7.0.1 - resolve: 1.22.0 - slash: 3.0.0 + /is-retry-allowed/1.2.0: + resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} + engines: {node: '>=0.10.0'} dev: true - /jest-runner/26.6.3: - resolution: {integrity: sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/console': 26.6.2 - '@jest/environment': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 17.0.31 - chalk: 4.1.2 - emittery: 0.7.2 - exit: 0.1.2 - graceful-fs: 4.2.9 - jest-config: 26.6.3 - jest-docblock: 26.0.0 - jest-haste-map: 26.6.2 - jest-leak-detector: 26.6.2 - jest-message-util: 26.6.2 - jest-resolve: 26.6.2 - jest-runtime: 26.6.3 - jest-util: 26.6.2 - jest-worker: 26.6.2 - source-map-support: 0.5.21 - throat: 5.0.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate + /is-stream/2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} dev: true - /jest-runtime/26.6.3: - resolution: {integrity: sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==} - engines: {node: '>= 10.14.2'} - hasBin: true - dependencies: - '@jest/console': 26.6.2 - '@jest/environment': 26.6.2 - '@jest/fake-timers': 26.6.2 - '@jest/globals': 26.6.2 - '@jest/source-map': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/transform': 26.6.2 - '@jest/types': 26.6.2 - '@types/yargs': 15.0.14 - chalk: 4.1.2 - cjs-module-lexer: 0.6.0 - collect-v8-coverage: 1.0.1 - exit: 0.1.2 - glob: 7.2.0 - graceful-fs: 4.2.9 - jest-config: 26.6.3 - jest-haste-map: 26.6.2 - jest-message-util: 26.6.2 - jest-mock: 26.6.2 - jest-regex-util: 26.0.0 - jest-resolve: 26.6.2 - jest-snapshot: 26.6.2 - jest-util: 26.6.2 - jest-validate: 26.6.2 - slash: 3.0.0 - strip-bom: 4.0.0 - yargs: 15.4.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate + /is-stream/3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /jest-serializer/26.6.2: - resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} - engines: {node: '>= 10.14.2'} + /is-text-path/1.0.1: + resolution: {integrity: sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=} + engines: {node: '>=0.10.0'} dependencies: - '@types/node': 17.0.31 - graceful-fs: 4.2.9 + text-extensions: 1.9.0 dev: true - /jest-snapshot/26.6.2: - resolution: {integrity: sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==} - engines: {node: '>= 10.14.2'} - dependencies: - '@babel/types': 7.16.8 - '@jest/types': 26.6.2 - '@types/babel__traverse': 7.14.2 - '@types/prettier': 2.4.3 - chalk: 4.1.2 - expect: 26.6.2 - graceful-fs: 4.2.9 - jest-diff: 26.6.2 - jest-get-type: 26.3.0 - jest-haste-map: 26.6.2 - jest-matcher-utils: 26.6.2 - jest-message-util: 26.6.2 - jest-resolve: 26.6.2 - natural-compare: 1.4.0 - pretty-format: 26.6.2 - semver: 7.3.5 + /is-utf8/0.2.1: + resolution: {integrity: sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=} dev: true - /jest-util/26.6.2: - resolution: {integrity: sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/types': 26.6.2 - '@types/node': 17.0.31 - chalk: 4.1.2 - graceful-fs: 4.2.9 - is-ci: 2.0.0 - micromatch: 4.0.4 + /isarray/1.0.0: + resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} dev: true - /jest-validate/26.6.2: - resolution: {integrity: sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/types': 26.6.2 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 26.3.0 - leven: 3.1.0 - pretty-format: 26.6.2 + /isexe/2.0.0: + resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} dev: true - /jest-watcher/26.6.2: - resolution: {integrity: sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==} - engines: {node: '>= 10.14.2'} + /isurl/1.0.0: + resolution: {integrity: sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==} + engines: {node: '>= 4'} dependencies: - '@jest/test-result': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 17.0.31 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - jest-util: 26.6.2 - string-length: 4.0.2 + has-to-string-tag-x: 1.4.1 + is-object: 1.0.2 dev: true /jest-worker/26.6.2: @@ -3496,37 +2127,18 @@ packages: supports-color: 7.2.0 dev: true - /jest/26.6.3: - resolution: {integrity: sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==} - engines: {node: '>= 10.14.2'} + /jiti/1.14.0: + resolution: {integrity: sha512-4IwstlaKQc9vCTC+qUXLM1hajy2ImiL9KnLvVYiaHOtS/v3wRjhLlGl121AmgDgx/O43uKmxownJghS5XMya2A==} hasBin: true - dependencies: - '@jest/core': 26.6.3 - import-local: 3.1.0 - jest-cli: 26.6.3 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate dev: true /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true - /js-yaml/3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - - /jsdom/16.7.0: - resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} - engines: {node: '>=10'} + /jsdom/20.0.0: + resolution: {integrity: sha512-x4a6CKCgx00uCmP+QakBDFXwjAJ69IkkIWHmtmjd3wvXPcdOS44hfX2vqkOQrVrq8l9DhNNADZRXaCEWvgXtVA==} + engines: {node: '>=14'} peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: @@ -3534,44 +2146,38 @@ packages: optional: true dependencies: abab: 2.0.6 - acorn: 8.7.1 + acorn: 8.8.0 acorn-globals: 6.0.0 - cssom: 0.4.4 + cssom: 0.5.0 cssstyle: 2.3.0 - data-urls: 2.0.0 - decimal.js: 10.3.1 - domexception: 2.0.1 + data-urls: 3.0.2 + decimal.js: 10.4.0 + domexception: 4.0.0 escodegen: 2.0.0 - form-data: 3.0.1 - html-encoding-sniffer: 2.0.1 - http-proxy-agent: 4.0.1 + form-data: 4.0.0 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.0 - parse5: 6.0.1 - saxes: 5.0.1 + nwsapi: 2.2.1 + parse5: 7.0.0 + saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 4.0.0 w3c-hr-time: 1.0.2 - w3c-xmlserializer: 2.0.0 - webidl-conversions: 6.1.0 - whatwg-encoding: 1.0.5 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - ws: 7.5.7 - xml-name-validator: 3.0.0 + w3c-xmlserializer: 3.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + ws: 8.8.1 + xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate dev: true - /jsesc/2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true - /json-buffer/3.0.0: resolution: {integrity: sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=} dev: true @@ -3588,12 +2194,8 @@ packages: resolution: {integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=} dev: true - /json5/2.2.0: - resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==} - engines: {node: '>=6'} - hasBin: true - dependencies: - minimist: 1.2.5 + /jsonc-parser/3.1.0: + resolution: {integrity: sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==} dev: true /jsonfile/6.1.0: @@ -3615,25 +2217,6 @@ packages: json-buffer: 3.0.0 dev: true - /kind-of/3.2.2: - resolution: {integrity: sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: true - - /kind-of/4.0.0: - resolution: {integrity: sha1-IIE989cSkosgc3hpGkUGb65y3Vc=} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: true - - /kind-of/5.1.0: - resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} - engines: {node: '>=0.10.0'} - dev: true - /kind-of/6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -3644,13 +2227,12 @@ packages: engines: {node: '>=6'} dev: true - /leven/3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} + /kolorist/1.5.1: + resolution: {integrity: sha512-lxpCM3HTvquGxKGzHeknB/sUjuVoUElLlfYnXZT73K8geR9jQbroGlSCFBax9/0mpGoD3kzcMLnOlGQPJJNyqQ==} dev: true /levn/0.3.0: - resolution: {integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=} + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 @@ -3729,6 +2311,11 @@ packages: strip-bom: 3.0.0 dev: true + /local-pkg/0.4.2: + resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} + engines: {node: '>=14'} + dev: true + /locate-path/2.0.0: resolution: {integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=} engines: {node: '>=4'} @@ -3806,6 +2393,12 @@ packages: signal-exit: 3.0.7 dev: true + /loupe/2.3.4: + resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==} + dependencies: + get-func-name: 2.0.0 + dev: true + /lowercase-keys/1.0.0: resolution: {integrity: sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=} engines: {node: '>=0.10.0'} @@ -3843,21 +2436,6 @@ packages: semver: 6.3.0 dev: true - /make-error/1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true - - /makeerror/1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - dependencies: - tmpl: 1.0.5 - dev: true - - /map-cache/0.2.2: - resolution: {integrity: sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=} - engines: {node: '>=0.10.0'} - dev: true - /map-obj/1.0.1: resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=} engines: {node: '>=0.10.0'} @@ -3873,13 +2451,6 @@ packages: engines: {node: '>=8'} dev: true - /map-visit/1.0.0: - resolution: {integrity: sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=} - engines: {node: '>=0.10.0'} - dependencies: - object-visit: 1.0.1 - dev: true - /meow/3.7.0: resolution: {integrity: sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=} engines: {node: '>=0.10.0'} @@ -3954,25 +2525,6 @@ packages: engines: {node: '>= 8'} dev: true - /micromatch/3.1.10: - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - braces: 2.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - extglob: 2.0.4 - fragment-cache: 0.2.1 - kind-of: 6.0.3 - nanomatch: 1.2.13 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - dev: true - /micromatch/4.0.4: resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} engines: {node: '>=8.6'} @@ -3998,6 +2550,11 @@ packages: engines: {node: '>=6'} dev: true + /mimic-fn/4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + /mimic-response/1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} @@ -4035,18 +2592,37 @@ packages: resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} dev: true - /mixin-deep/1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} + /minimist/1.2.6: + resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} + dev: true + + /minipass/2.9.0: + resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==} dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 + safe-buffer: 5.2.1 + yallist: 3.1.1 dev: true - /mkdirp/1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} + /minizlib/1.3.3: + resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==} + dependencies: + minipass: 2.9.0 + dev: true + + /mkdirp/0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true + dependencies: + minimist: 1.2.6 + dev: true + + /mlly/0.5.12: + resolution: {integrity: sha512-8moXGh6Hfy2Nmys3DDEm4CuxDBk5Y7Lk1jQ4JcwW0djO9b+SCKTpw0enIQeZIuEnPljdxHSGmcbXU9hpIIEYeQ==} + dependencies: + acorn: 8.8.0 + pathe: 0.3.4 + pkg-types: 0.3.3 + ufo: 0.8.5 dev: true /modify-values/1.0.1: @@ -4054,8 +2630,9 @@ packages: engines: {node: '>=0.10.0'} dev: true - /ms/2.0.0: - resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} + /mri/1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} dev: true /ms/2.1.2: @@ -4066,60 +2643,18 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /nanoid/3.2.0: - resolution: {integrity: sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==} + /nanoid/3.3.4: + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true - /nanomatch/1.2.13: - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - fragment-cache: 0.2.1 - is-windows: 1.0.2 - kind-of: 6.0.3 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - dev: true - - /natural-compare/1.4.0: - resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} - dev: true - /neo-async/2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true - /nice-try/1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - dev: true - - /node-int64/0.4.0: - resolution: {integrity: sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=} - dev: true - - /node-notifier/8.0.2: - resolution: {integrity: sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==} - requiresBuild: true - dependencies: - growly: 1.3.0 - is-wsl: 2.2.0 - semver: 7.3.5 - shellwords: 0.1.1 - uuid: 8.3.2 - which: 2.0.2 - dev: true - optional: true - - /node-releases/2.0.1: - resolution: {integrity: sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==} + /node-fetch-native/0.1.4: + resolution: {integrity: sha512-10EKpOCQPXwZVFh3U1ptOMWBgKTbsN7Vvo6WVKt5pw4hp8zbv6ZVBZPlXw+5M6Tyi1oc1iD4/sNPd71KYA16tQ==} dev: true /normalize-package-data/2.5.0: @@ -4141,13 +2676,6 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-path/2.1.1: - resolution: {integrity: sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=} - engines: {node: '>=0.10.0'} - dependencies: - remove-trailing-separator: 1.1.0 - dev: true - /normalize-path/3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -4162,13 +2690,6 @@ packages: sort-keys: 2.0.0 dev: true - /npm-run-path/2.0.2: - resolution: {integrity: sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=} - engines: {node: '>=4'} - dependencies: - path-key: 2.0.1 - dev: true - /npm-run-path/4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -4176,13 +2697,20 @@ packages: path-key: 3.1.1 dev: true + /npm-run-path/5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + /number-is-nan/1.0.1: resolution: {integrity: sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=} engines: {node: '>=0.10.0'} dev: true - /nwsapi/2.2.0: - resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==} + /nwsapi/2.2.1: + resolution: {integrity: sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==} dev: true /object-assign/4.1.1: @@ -4190,31 +2718,17 @@ packages: engines: {node: '>=0.10.0'} dev: true - /object-copy/0.1.0: - resolution: {integrity: sha1-fn2Fi3gb18mRpBupde04EnVOmYw=} - engines: {node: '>=0.10.0'} - dependencies: - copy-descriptor: 0.1.1 - define-property: 0.2.5 - kind-of: 3.2.2 - dev: true - /object-inspect/1.12.0: resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} dev: true - /object-visit/1.0.1: - resolution: {integrity: sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - - /object.pick/1.3.0: - resolution: {integrity: sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=} - engines: {node: '>=0.10.0'} + /ohmyfetch/0.4.18: + resolution: {integrity: sha512-MslzNrQzBLtZHmiZBI8QMOcMpdNFlK61OJ34nFNFynZ4v+4BonfCQ7VIN4EGXvGGq5zhDzgdJoY3o9S1l2T7KQ==} dependencies: - isobject: 3.0.1 + destr: 1.1.1 + node-fetch-native: 0.1.4 + ufo: 0.8.5 + undici: 5.8.2 dev: true /once/1.4.0: @@ -4230,6 +2744,13 @@ packages: mimic-fn: 2.1.0 dev: true + /onetime/6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + /optionator/0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} @@ -4247,11 +2768,6 @@ packages: engines: {node: '>=4'} dev: true - /p-each-series/2.2.0: - resolution: {integrity: sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==} - engines: {node: '>=8'} - dev: true - /p-finally/1.0.0: resolution: {integrity: sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=} engines: {node: '>=4'} @@ -4357,13 +2873,10 @@ packages: lines-and-columns: 1.2.4 dev: true - /parse5/6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - dev: true - - /pascalcase/0.1.1: - resolution: {integrity: sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=} - engines: {node: '>=0.10.0'} + /parse5/7.0.0: + resolution: {integrity: sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==} + dependencies: + entities: 4.3.1 dev: true /path-exists/2.1.0: @@ -4394,16 +2907,16 @@ packages: tslib: 2.4.0 dev: true - /path-key/2.0.1: - resolution: {integrity: sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=} - engines: {node: '>=4'} - dev: true - /path-key/3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} dev: true + /path-key/4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true @@ -4435,6 +2948,14 @@ packages: engines: {node: '>=8'} dev: true + /pathe/0.3.4: + resolution: {integrity: sha512-YWgqEdxf36R6vcsyj0A+yT/rDRPe0wui4J9gRR7T4whjU5Lx/jZOr75ckEgTNaLVQABAwsrlzHRpIKcCdXAQ5A==} + dev: true + + /pathval/1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true @@ -4472,11 +2993,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /pirates/4.0.5: - resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} - engines: {node: '>= 6'} - dev: true - /pkg-dir/4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -4491,22 +3007,25 @@ packages: find-up: 5.0.0 dev: true - /posix-character-classes/0.1.1: - resolution: {integrity: sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=} - engines: {node: '>=0.10.0'} + /pkg-types/0.3.3: + resolution: {integrity: sha512-6AJcCMnjUQPQv/Wk960w0TOmjhdjbeaQJoSKWRQv9N3rgkessCu6J0Ydsog/nw1MbpnxHuPzYbfOn2KmlZO1FA==} + dependencies: + jsonc-parser: 3.1.0 + mlly: 0.5.12 + pathe: 0.3.4 dev: true - /postcss/8.4.5: - resolution: {integrity: sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==} + /postcss/8.4.16: + resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.2.0 + nanoid: 3.3.4 picocolors: 1.0.0 source-map-js: 1.0.2 dev: true /prelude-ls/1.1.2: - resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} dev: true @@ -4516,19 +3035,9 @@ packages: dev: true /prettier/2.6.2: - resolution: {integrity: sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: true - - /pretty-format/26.6.2: - resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} - engines: {node: '>= 10'} - dependencies: - '@jest/types': 26.6.2 - ansi-regex: 5.0.1 - ansi-styles: 4.3.0 - react-is: 17.0.2 + resolution: {integrity: sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==} + engines: {node: '>=10.13.0'} + hasBin: true dev: true /process-nextick-args/2.0.1: @@ -4543,15 +3052,8 @@ packages: sisteransi: 1.0.5 dev: true - /psl/1.8.0: - resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==} - dev: true - - /pump/3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 + /psl/1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true /punycode/2.1.1: @@ -4593,8 +3095,12 @@ packages: safe-buffer: 5.2.1 dev: true - /react-is/17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + /rc9/1.2.2: + resolution: {integrity: sha512-zbe8+HR2X28eZepAwohuKkebbEsA67h0DO9I7g12QrHa2CQopR9gztOLPIPXXGTvcxeUjAN4wZ+b29t3m/u05g==} + dependencies: + defu: 6.1.0 + destr: 1.1.1 + flat: 5.0.2 dev: true /read-pkg-up/1.0.1: @@ -4695,28 +3201,6 @@ packages: strip-indent: 3.0.0 dev: true - /regex-not/1.0.2: - resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 3.0.2 - safe-regex: 1.1.0 - dev: true - - /remove-trailing-separator/1.1.0: - resolution: {integrity: sha1-wkvOKig62tW8P1jg1IJJuSN52O8=} - dev: true - - /repeat-element/1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} - dev: true - - /repeat-string/1.6.1: - resolution: {integrity: sha1-jcrkcOHIirwtYA//Sndihtp15jc=} - engines: {node: '>=0.10'} - dev: true - /repeating/2.0.1: resolution: {integrity: sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=} engines: {node: '>=0.10.0'} @@ -4729,27 +3213,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /require-main-filename/2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: true - - /resolve-cwd/3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - dependencies: - resolve-from: 5.0.0 - dev: true - - /resolve-from/5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true - - /resolve-url/0.2.1: - resolution: {integrity: sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=} - deprecated: https://github.com/lydell/resolve-url#deprecated - dev: true - /resolve/1.22.0: resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} hasBin: true @@ -4759,6 +3222,15 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true + dependencies: + is-core-module: 2.10.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + /responselike/1.0.2: resolution: {integrity: sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=} dependencies: @@ -4773,11 +3245,6 @@ packages: signal-exit: 3.0.7 dev: true - /ret/0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} - dev: true - /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -4850,9 +3317,12 @@ packages: fsevents: 2.3.2 dev: true - /rsvp/4.8.5: - resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==} - engines: {node: 6.* || >= 7.*} + /rollup/2.77.3: + resolution: {integrity: sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 dev: true /run-parallel/1.2.0: @@ -4875,38 +3345,19 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - /safe-regex/1.1.0: - resolution: {integrity: sha1-QKNmnzsHfR6UPURinhV91IAjvy4=} - dependencies: - ret: 0.1.15 - dev: true - /safer-buffer/2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sane/4.1.0: - resolution: {integrity: sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==} - engines: {node: 6.* || 8.* || >= 10.*} - deprecated: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added - hasBin: true + /saxes/6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} dependencies: - '@cnakazawa/watch': 1.0.4 - anymatch: 2.0.0 - capture-exit: 2.0.0 - exec-sh: 0.3.6 - execa: 1.0.0 - fb-watchman: 2.0.1 - micromatch: 3.1.10 - minimist: 1.2.5 - walker: 1.0.8 + xmlchars: 2.2.0 dev: true - /saxes/5.0.1: - resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} - engines: {node: '>=10'} - dependencies: - xmlchars: 2.2.0 + /scule/0.2.1: + resolution: {integrity: sha512-M9gnWtn3J0W+UhJOHmBxBTwv8mZCan5i1Himp60t6vvZcor0wr+IM0URKmIglsWJ7bRujNAVVN77fp+uZaWoKg==} dev: true /semver-regex/2.0.0: @@ -4944,27 +3395,6 @@ packages: randombytes: 2.1.0 dev: true - /set-blocking/2.0.0: - resolution: {integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=} - dev: true - - /set-value/2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 - dev: true - - /shebang-command/1.2.0: - resolution: {integrity: sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=} - engines: {node: '>=0.10.0'} - dependencies: - shebang-regex: 1.0.0 - dev: true - /shebang-command/2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -4972,21 +3402,11 @@ packages: shebang-regex: 3.0.0 dev: true - /shebang-regex/1.0.0: - resolution: {integrity: sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=} - engines: {node: '>=0.10.0'} - dev: true - /shebang-regex/3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} dev: true - /shellwords/0.1.1: - resolution: {integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==} - dev: true - optional: true - /signal-exit/3.0.6: resolution: {integrity: sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==} dev: true @@ -5036,36 +3456,6 @@ packages: is-fullwidth-code-point: 4.0.0 dev: true - /snapdragon-node/2.1.1: - resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 1.0.0 - isobject: 3.0.1 - snapdragon-util: 3.0.1 - dev: true - - /snapdragon-util/3.0.1: - resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /snapdragon/0.8.2: - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} - dependencies: - base: 0.11.2 - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - map-cache: 0.2.2 - source-map: 0.5.7 - source-map-resolve: 0.5.3 - use: 3.1.1 - dev: true - /sort-keys/2.0.0: resolution: {integrity: sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=} engines: {node: '>=4'} @@ -5078,17 +3468,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /source-map-resolve/0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.0 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 - dev: true - /source-map-support/0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: @@ -5096,21 +3475,11 @@ packages: source-map: 0.6.1 dev: true - /source-map-url/0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - deprecated: See https://github.com/lydell/source-map-url#deprecated - dev: true - /source-map/0.5.6: resolution: {integrity: sha1-dc449SvwczxafwwRjYEzSiu19BI=} engines: {node: '>=0.10.0'} dev: true - /source-map/0.5.7: - resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} - engines: {node: '>=0.10.0'} - dev: true - /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -5147,13 +3516,6 @@ packages: resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} dev: true - /split-string/3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 3.0.2 - dev: true - /split/1.0.1: resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} dependencies: @@ -5172,25 +3534,6 @@ packages: readable-stream: 3.6.0 dev: true - /sprintf-js/1.0.3: - resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} - dev: true - - /stack-utils/2.0.5: - resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} - engines: {node: '>=10'} - dependencies: - escape-string-regexp: 2.0.0 - dev: true - - /static-extend/0.1.2: - resolution: {integrity: sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 0.2.5 - object-copy: 0.1.0 - dev: true - /strict-uri-encode/1.1.0: resolution: {integrity: sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=} engines: {node: '>=0.10.0'} @@ -5201,14 +3544,6 @@ packages: engines: {node: '>=0.6.19'} dev: true - /string-length/4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - dev: true - /string-width/4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -5272,21 +3607,16 @@ packages: engines: {node: '>=4'} dev: true - /strip-bom/4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true - - /strip-eof/1.0.0: - resolution: {integrity: sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=} - engines: {node: '>=0.10.0'} - dev: true - /strip-final-newline/2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} dev: true + /strip-final-newline/3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + /strip-indent/1.0.1: resolution: {integrity: sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=} engines: {node: '>=0.10.0'} @@ -5331,14 +3661,6 @@ packages: engines: {node: '>=12'} dev: true - /supports-hyperlinks/2.2.0: - resolution: {integrity: sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - dev: true - /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -5348,6 +3670,19 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true + /tar/4.4.19: + resolution: {integrity: sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==} + engines: {node: '>=4.5'} + dependencies: + chownr: 1.1.4 + fs-minipass: 1.2.7 + minipass: 2.9.0 + minizlib: 1.3.3 + mkdirp: 0.5.6 + safe-buffer: 5.2.1 + yallist: 3.1.1 + dev: true + /temp-dir/2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} @@ -5361,14 +3696,6 @@ packages: uuid: 3.4.0 dev: true - /terminal-link/2.1.1: - resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} - engines: {node: '>=8'} - dependencies: - ansi-escapes: 4.3.2 - supports-hyperlinks: 2.2.0 - dev: true - /terser/5.10.0: resolution: {integrity: sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==} engines: {node: '>=10'} @@ -5384,24 +3711,11 @@ packages: source-map-support: 0.5.21 dev: true - /test-exclude/6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.0 - minimatch: 3.0.4 - dev: true - /text-extensions/1.9.0: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} engines: {node: '>=0.10'} dev: true - /throat/5.0.0: - resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} - dev: true - /through/2.3.8: resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} dev: true @@ -5431,28 +3745,16 @@ packages: engines: {node: '>=0.10.0'} dev: true - /tmpl/1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - dev: true - - /to-fast-properties/2.0.0: - resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} - engines: {node: '>=4'} - dev: true - - /to-object-path/0.3.0: - resolution: {integrity: sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 + /tinypool/0.2.4: + resolution: {integrity: sha512-Vs3rhkUH6Qq1t5bqtb816oT+HeJTXfwt2cbPH17sWHIYKTotQIFPk3tf2fgqRrVyMDVOc1EnPgzIxfIulXVzwQ==} + engines: {node: '>=14.0.0'} dev: true - /to-regex-range/2.1.1: - resolution: {integrity: sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=} - engines: {node: '>=0.10.0'} + /tinyspy/1.0.1: + resolution: {integrity: sha512-xuhU//HrMEC6mcZPKjQpusK5ZHeh9b1JpeMAkFqR3kasUEk1dGdJXWqRYh2945qq0N7ftiv1QQQLh1RSE7lS1w==} + engines: {node: '>=14.0.0'} dependencies: - is-number: 3.0.0 - repeat-string: 1.6.1 + changelogithub: 0.6.6 dev: true /to-regex-range/5.0.1: @@ -5462,28 +3764,18 @@ packages: is-number: 7.0.0 dev: true - /to-regex/3.0.2: - resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 2.0.2 - extend-shallow: 3.0.2 - regex-not: 1.0.2 - safe-regex: 1.1.0 - dev: true - /tough-cookie/4.0.0: resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} engines: {node: '>=6'} dependencies: - psl: 1.8.0 + psl: 1.9.0 punycode: 2.1.1 universalify: 0.1.2 dev: true - /tr46/2.1.0: - resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} - engines: {node: '>=8'} + /tr46/3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} dependencies: punycode: 2.1.1 dev: true @@ -5503,28 +3795,6 @@ packages: engines: {node: '>=8'} dev: true - /ts-jest/26.5.6_ip4jai7pxkumsngma2fb7ud2tm: - resolution: {integrity: sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==} - engines: {node: '>= 10'} - hasBin: true - peerDependencies: - jest: '>=26 <27' - typescript: '>=3.8 <5.0' - dependencies: - bs-logger: 0.2.6 - buffer-from: 1.1.2 - fast-json-stable-stringify: 2.1.0 - jest: 26.6.3 - jest-util: 26.6.2 - json5: 2.2.0 - lodash: 4.17.21 - make-error: 1.3.6 - mkdirp: 1.0.4 - semver: 7.3.5 - typescript: 4.6.4 - yargs-parser: 20.2.9 - dev: true - /ts-type/2.1.4_@types+node@17.0.31: resolution: {integrity: sha512-wnajiiIMhn/RHJ1oPld95siKmMJrOgaT6+rMmC8vO1LORgDFEzKP2nBmEFM5b4XVe7Q0J5KcU9oRJFzju7UzrA==} peerDependencies: @@ -5542,7 +3812,7 @@ packages: dev: true /type-check/0.3.2: - resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 @@ -5582,12 +3852,6 @@ packages: resolution: {integrity: sha512-Ka0DBegjuV9IPYFT1h0Qqk5U4pccebNIJCGl8C5uU7xtOs+jpJvKGAY4fHGK25hTmXZOEUl9Cnsg5cS6K/b5DA==} dev: true - /typedarray-to-buffer/3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - dependencies: - is-typedarray: 1.0.0 - dev: true - /typescript/4.6.4: resolution: {integrity: sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==} engines: {node: '>=4.2.0'} @@ -5599,6 +3863,10 @@ packages: engines: {node: '>=8'} dev: true + /ufo/0.8.5: + resolution: {integrity: sha512-e4+UtA5IRO+ha6hYklwj6r7BjiGMxS0O+UaSg9HbaTefg4kMkzj4tXzEBajRR+wkxf+golgAWKzLbytCUDMJAA==} + dev: true + /uglify-js/3.15.0: resolution: {integrity: sha512-x+xdeDWq7FiORDvyIJ0q/waWd4PhjBNOm5dQUOq2AKC0IEjxOS66Ha9tctiVDGcRQuh69K7fgU5oRuTK4cysSg==} engines: {node: '>=0.8.0'} @@ -5607,14 +3875,9 @@ packages: dev: true optional: true - /union-value/1.0.1: - resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 2.0.1 + /undici/5.8.2: + resolution: {integrity: sha512-3KLq3pXMS0Y4IELV045fTxqz04Nk9Ms7yfBBHum3yxsTR4XNn+ZCaUbf/mWitgYDAhsplQ0B1G4S5D345lMO3A==} + engines: {node: '>=12.18'} dev: true /universalify/0.1.2: @@ -5627,14 +3890,6 @@ packages: engines: {node: '>= 10.0.0'} dev: true - /unset-value/1.0.0: - resolution: {integrity: sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=} - engines: {node: '>=0.10.0'} - dependencies: - has-value: 0.3.1 - isobject: 3.0.1 - dev: true - /upath2/3.1.12_@types+node@17.0.31: resolution: {integrity: sha512-yC3eZeCyCXFWjy7Nu4pgjLhXNYjuzuUmJiRgSSw6TJp8Emc+E4951HGPJf+bldFC5SL7oBLeNbtm1fGzXn2gxw==} peerDependencies: @@ -5646,11 +3901,6 @@ packages: tslib: 2.4.0 dev: true - /urix/0.1.0: - resolution: {integrity: sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=} - deprecated: Please see https://github.com/lydell/urix#deprecated - dev: true - /url-parse-lax/3.0.0: resolution: {integrity: sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=} engines: {node: '>=4'} @@ -5663,11 +3913,6 @@ packages: engines: {node: '>= 4'} dev: true - /use/3.1.1: - resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} - engines: {node: '>=0.10.0'} - dev: true - /util-deprecate/1.0.2: resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} dev: true @@ -5678,26 +3923,78 @@ packages: hasBin: true dev: true - /uuid/8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: 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 - optional: true - /v8-to-istanbul/7.1.2: - resolution: {integrity: sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==} - engines: {node: '>=10.10.0'} + /vite/3.0.8: + resolution: {integrity: sha512-AOZ4eN7mrkJiOLuw8IA7piS4IdOQyQCA81GxGsAQvAZzMRi9ZwGB3TOaYsj4uLAWK46T5L4AfQ6InNGlxX30IQ==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + less: '*' + sass: '*' + stylus: '*' + terser: ^5.4.0 + peerDependenciesMeta: + less: + optional: true + sass: + optional: true + stylus: + optional: true + terser: + optional: true dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - convert-source-map: 1.8.0 - source-map: 0.7.3 + esbuild: 0.14.54 + postcss: 8.4.16 + resolve: 1.22.1 + rollup: 2.77.3 + optionalDependencies: + fsevents: 2.3.2 dev: true - /validate-npm-package-license/3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + /vitest/0.22.0_jsdom@20.0.0: + resolution: {integrity: sha512-BSIro/QOHLaQY08FHwT6THWhqLQ+VPU+N4Rdo4pcP+16XB6oLmNNAXGcSh/MOLUhfUy+mqCwx7AyKmU7Ms5R+g==} + engines: {node: '>=v14.16.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true dependencies: - spdx-correct: 3.1.1 - spdx-expression-parse: 3.0.1 + '@types/chai': 4.3.3 + '@types/chai-subset': 1.3.3 + '@types/node': 17.0.31 + chai: 4.3.6 + debug: 4.3.4 + jsdom: 20.0.0 + local-pkg: 0.4.2 + tinypool: 0.2.4 + tinyspy: 1.0.1 + vite: 3.0.8 + transitivePeerDependencies: + - less + - sass + - stylus + - supports-color + - terser dev: true /vue-router/3.5.3: @@ -5737,57 +4034,36 @@ packages: browser-process-hrtime: 1.0.0 dev: true - /w3c-xmlserializer/2.0.0: - resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} - engines: {node: '>=10'} - dependencies: - xml-name-validator: 3.0.0 - dev: true - - /walker/1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - dependencies: - makeerror: 1.0.12 - dev: true - - /webidl-conversions/5.0.0: - resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} - engines: {node: '>=8'} - dev: true - - /webidl-conversions/6.1.0: - resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} - engines: {node: '>=10.4'} - dev: true - - /whatwg-encoding/1.0.5: - resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} + /w3c-xmlserializer/3.0.0: + resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==} + engines: {node: '>=12'} dependencies: - iconv-lite: 0.4.24 + xml-name-validator: 4.0.0 dev: true - /whatwg-mimetype/2.3.0: - resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} + /webidl-conversions/7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} dev: true - /whatwg-url/8.7.0: - resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} - engines: {node: '>=10'} + /whatwg-encoding/2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} dependencies: - lodash: 4.17.21 - tr46: 2.1.0 - webidl-conversions: 6.1.0 + iconv-lite: 0.6.3 dev: true - /which-module/2.0.0: - resolution: {integrity: sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=} + /whatwg-mimetype/3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} dev: true - /which/1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true + /whatwg-url/11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} dependencies: - isexe: 2.0.0 + tr46: 3.0.0 + webidl-conversions: 7.0.0 dev: true /which/2.0.2: @@ -5829,18 +4105,9 @@ packages: resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} dev: true - /write-file-atomic/3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - dev: true - - /ws/7.5.7: - resolution: {integrity: sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==} - engines: {node: '>=8.3.0'} + /ws/8.8.1: + resolution: {integrity: sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==} + engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -5851,8 +4118,9 @@ packages: optional: true dev: true - /xml-name-validator/3.0.0: - resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} + /xml-name-validator/4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} dev: true /xmlchars/2.2.0: @@ -5864,15 +4132,15 @@ packages: engines: {node: '>=0.4'} dev: true - /y18n/4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: true - /y18n/5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} dev: true + /yallist/3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true @@ -5895,23 +4163,6 @@ packages: engines: {node: '>=10'} dev: true - /yargs/15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.0 - y18n: 4.0.3 - yargs-parser: 18.1.3 - dev: true - /yargs/16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} diff --git a/test/apis/computed.spec.js b/test/apis/computed.spec.js index da7c8300..9779e96a 100644 --- a/test/apis/computed.spec.js +++ b/test/apis/computed.spec.js @@ -1,71 +1,72 @@ -const Vue = require('vue/dist/vue.common.js') -const { - ref, - computed, - isReadonly, - reactive, - isRef, - toRef, -} = require('../../src') +import Vue from 'vue/dist/vue.common.js' +import { ref, computed, isReadonly, reactive, isRef, toRef } from '../../src' describe('Hooks computed', () => { + let warn = null + beforeEach(() => { - warn = jest.spyOn(global.console, 'error').mockImplementation(() => null) + warn = vi.spyOn(global.console, 'error').mockImplementation(() => null) }) afterEach(() => { warn.mockRestore() }) - it('basic usage', (done) => { - const vm = new Vue({ - template: '
{{ b }}
', - setup() { - const a = ref(1) - const b = computed(() => a.value + 1) - return { - a, - b, - } - }, - }).$mount() - expect(vm.b).toBe(2) - expect(vm.$el.textContent).toBe('2') - vm.a = 2 - expect(vm.b).toBe(3) - waitForUpdate(() => { - expect(vm.$el.textContent).toBe('3') - }).then(done) - }) + it('basic usage', () => + new Promise((done, reject) => { + done.fail = reject - it('with setter', (done) => { - const vm = new Vue({ - template: '
{{ b }}
', - setup() { - const a = ref(1) - const b = computed({ - get: () => a.value + 1, - set: (v) => (a.value = v - 1), - }) - return { - a, - b, - } - }, - }).$mount() - expect(vm.b).toBe(2) - expect(vm.$el.textContent).toBe('2') - vm.a = 2 - expect(vm.b).toBe(3) - waitForUpdate(() => { - expect(vm.$el.textContent).toBe('3') - vm.b = 1 - expect(vm.a).toBe(0) - }) - .then(() => { - expect(vm.$el.textContent).toBe('1') + const vm = new Vue({ + template: '
{{ b }}
', + setup() { + const a = ref(1) + const b = computed(() => a.value + 1) + return { + a, + b, + } + }, + }).$mount() + expect(vm.b).toBe(2) + expect(vm.$el.textContent).toBe('2') + vm.a = 2 + expect(vm.b).toBe(3) + waitForUpdate(() => { + expect(vm.$el.textContent).toBe('3') + }).then(done) + })) + + it('with setter', () => + new Promise((done, reject) => { + done.fail = reject + + const vm = new Vue({ + template: '
{{ b }}
', + setup() { + const a = ref(1) + const b = computed({ + get: () => a.value + 1, + set: (v) => (a.value = v - 1), + }) + return { + a, + b, + } + }, + }).$mount() + expect(vm.b).toBe(2) + expect(vm.$el.textContent).toBe('2') + vm.a = 2 + expect(vm.b).toBe(3) + waitForUpdate(() => { + expect(vm.$el.textContent).toBe('3') + vm.b = 1 + expect(vm.a).toBe(0) }) - .then(done) - }) + .then(() => { + expect(vm.$el.textContent).toBe('1') + }) + .then(done) + })) it('warn assigning to computed with no setter', () => { const vm = new Vue({ @@ -82,27 +83,30 @@ describe('Hooks computed', () => { ) }) - it('watching computed', (done) => { - const spy = jest.fn() - const vm = new Vue({ - setup() { - const a = ref(1) - const b = computed(() => a.value + 1) - return { - a, - b, - } - }, - }) - vm.$watch('b', spy) - vm.a = 2 - waitForUpdate(() => { - expect(spy).toHaveBeenCalledWith(3, 2) - }).then(done) - }) + it('watching computed', () => + new Promise((done, reject) => { + done.fail = reject + + const spy = vi.fn() + const vm = new Vue({ + setup() { + const a = ref(1) + const b = computed(() => a.value + 1) + return { + a, + b, + } + }, + }) + vm.$watch('b', spy) + vm.a = 2 + waitForUpdate(() => { + expect(spy).toHaveBeenCalledWith(3, 2) + }).then(done) + })) it('caching', () => { - const spy = jest.fn() + const spy = vi.fn() const vm = new Vue({ setup() { const a = ref(1) @@ -123,42 +127,45 @@ describe('Hooks computed', () => { expect(spy.mock.calls.length).toBe(1) }) - it('as component', (done) => { - const Comp = Vue.extend({ - template: `
{{ b }} {{ c }}
`, - setup() { - const a = ref(1) - const b = computed(() => { - return a.value + 1 - }) - return { - a, - b, - } - }, - }) + it('as component', () => + new Promise((done, reject) => { + done.fail = reject - const vm = new Comp({ - setup(_, { _vm }) { - const c = computed(() => { - return _vm.b + 1 - }) + const Comp = Vue.extend({ + template: `
{{ b }} {{ c }}
`, + setup() { + const a = ref(1) + const b = computed(() => { + return a.value + 1 + }) + return { + a, + b, + } + }, + }) - return { - c, - } - }, - }).$mount() - expect(vm.b).toBe(2) - expect(vm.c).toBe(3) - expect(vm.$el.textContent).toBe('2 3') - vm.a = 2 - expect(vm.b).toBe(3) - expect(vm.c).toBe(4) - waitForUpdate(() => { - expect(vm.$el.textContent).toBe('3 4') - }).then(done) - }) + const vm = new Comp({ + setup(_, { _vm }) { + const c = computed(() => { + return _vm.b + 1 + }) + + return { + c, + } + }, + }).$mount() + expect(vm.b).toBe(2) + expect(vm.c).toBe(3) + expect(vm.$el.textContent).toBe('2 3') + vm.a = 2 + expect(vm.b).toBe(3) + expect(vm.c).toBe(4) + waitForUpdate(() => { + expect(vm.$el.textContent).toBe('3 4') + }).then(done) + })) it('rethrow computed error', () => { const vm = new Vue({ @@ -202,25 +209,28 @@ describe('Hooks computed', () => { expect(app.$children[1].example).toBe('B') }) - it('should watch a reactive property created via toRef', (done) => { - const spy = jest.fn() - const vm = new Vue({ - setup() { - const a = reactive({}) - const b = toRef(a, 'b') + it('should watch a reactive property created via toRef', () => + new Promise((done, reject) => { + done.fail = reject - return { - a, - b, - } - }, - }) - vm.$watch('b', spy) - vm.b = 2 - waitForUpdate(() => { - expect(spy).toHaveBeenCalledWith(2, undefined) - }).then(done) - }) + const spy = vi.fn() + const vm = new Vue({ + setup() { + const a = reactive({}) + const b = toRef(a, 'b') + + return { + a, + b, + } + }, + }) + vm.$watch('b', spy) + vm.b = 2 + waitForUpdate(() => { + expect(spy).toHaveBeenCalledWith(2, undefined) + }).then(done) + })) it('should be readonly', () => { let a = { a: 1 } diff --git a/test/apis/inject.spec.js b/test/apis/inject.spec.js index b2a817f8..655967dd 100644 --- a/test/apis/inject.spec.js +++ b/test/apis/inject.spec.js @@ -1,5 +1,5 @@ -const Vue = require('vue/dist/vue.common.js') -const { inject, provide, ref, reactive } = require('../../src') +import Vue from 'vue/dist/vue.common.js' +import { inject, provide, ref, reactive } from '../../src' let injected const injectedComp = { @@ -20,8 +20,10 @@ beforeEach(() => { }) describe('Hooks provide/inject', () => { + let warn = null + beforeEach(() => { - warn = jest.spyOn(global.console, 'error').mockImplementation(() => null) + warn = vi.spyOn(global.console, 'error').mockImplementation(() => null) }) afterEach(() => { warn.mockRestore() @@ -68,57 +70,63 @@ describe('Hooks provide/inject', () => { expect(injected).toBe('foo') }) - it('should work for ref value', (done) => { - const Msg = Symbol() - const app = new Vue({ - template: ``, - setup() { - provide(Msg, ref('hello')) - }, - components: { - child: { - template: `
{{ msg }}
`, - setup() { - return { - msg: inject(Msg), - } + it('should work for ref value', () => + new Promise((done, reject) => { + done.fail = reject + + const Msg = Symbol() + const app = new Vue({ + template: ``, + setup() { + provide(Msg, ref('hello')) + }, + components: { + child: { + template: `
{{ msg }}
`, + setup() { + return { + msg: inject(Msg), + } + }, }, }, - }, - }).$mount() + }).$mount() - app.$children[0].msg = 'bar' - waitForUpdate(() => { - expect(app.$el.textContent).toBe('bar') - }).then(done) - }) + app.$children[0].msg = 'bar' + waitForUpdate(() => { + expect(app.$el.textContent).toBe('bar') + }).then(done) + })) - it('should work for reactive value', (done) => { - const State = Symbol() - let obj - const app = new Vue({ - template: ``, - setup() { - provide(State, reactive({ msg: 'foo' })) - }, - components: { - child: { - template: `
{{ state.msg }}
`, - setup() { - obj = inject(State) - return { - state: obj, - } + it('should work for reactive value', () => + new Promise((done, reject) => { + done.fail = reject + + const State = Symbol() + let obj + const app = new Vue({ + template: ``, + setup() { + provide(State, reactive({ msg: 'foo' })) + }, + components: { + child: { + template: `
{{ state.msg }}
`, + setup() { + obj = inject(State) + return { + state: obj, + } + }, }, }, - }, - }).$mount() - expect(obj.msg).toBe('foo') - app.$children[0].state.msg = 'bar' - waitForUpdate(() => { - expect(app.$el.textContent).toBe('bar') - }).then(done) - }) + }).$mount() + expect(obj.msg).toBe('foo') + app.$children[0].state.msg = 'bar' + waitForUpdate(() => { + expect(app.$el.textContent).toBe('bar') + }).then(done) + })) it('should work when combined with 2.x provide option', () => { const State = Symbol() @@ -148,7 +156,7 @@ describe('Hooks provide/inject', () => { it('should call default value as factory', () => { const State = Symbol() - let fn = jest.fn() + let fn = vi.fn() new Vue({ template: ``, setup() {}, diff --git a/test/apis/lifecycle.spec.js b/test/apis/lifecycle.spec.js index 7f291279..8ae55537 100644 --- a/test/apis/lifecycle.spec.js +++ b/test/apis/lifecycle.spec.js @@ -1,5 +1,5 @@ -const Vue = require('vue/dist/vue.common.js') -const { +import Vue from 'vue/dist/vue.common.js' +import { onBeforeMount, onMounted, onBeforeUpdate, @@ -8,12 +8,12 @@ const { onUnmounted, onErrorCaptured, getCurrentInstance, -} = require('../../src') +} from '../../src' describe('Hooks lifecycle', () => { describe('beforeMount', () => { it('should not have mounted', () => { - const spy = jest.fn() + const spy = vi.fn() const vm = new Vue({ render() {}, setup(_, { _vm }) { @@ -34,7 +34,7 @@ describe('Hooks lifecycle', () => { describe('mounted', () => { it('should have mounted', () => { - const spy = jest.fn() + const spy = vi.fn() const vm = new Vue({ template: '
', setup(_, { _vm }) { @@ -52,7 +52,7 @@ describe('Hooks lifecycle', () => { }) it('should call for manually mounted instance with parent', () => { - const spy = jest.fn() + const spy = vi.fn() const parent = new Vue() expect(spy).not.toHaveBeenCalled() new Vue({ @@ -138,177 +138,195 @@ describe('Hooks lifecycle', () => { }) describe('beforeUpdate', () => { - it('should be called before update', (done) => { - const spy = jest.fn() - const vm = new Vue({ - template: '
{{ msg }}
', - data: { msg: 'foo' }, - setup(_, { _vm }) { - onBeforeUpdate(() => { - expect(_vm.$el.textContent).toBe('foo') - spy() - }) - }, - }).$mount() - expect(spy).not.toHaveBeenCalled() - vm.msg = 'bar' - expect(spy).not.toHaveBeenCalled() // should be async - waitForUpdate(() => { - expect(spy).toHaveBeenCalled() - }).then(done) - }) + it('should be called before update', () => + new Promise((done, reject) => { + done.fail = reject - it('should be called before render and allow mutating state', (done) => { - const vm = new Vue({ - template: '
{{ msg }}
', - data: { msg: 'foo' }, - setup(_, { _vm }) { - onBeforeUpdate(() => { - _vm.msg += '!' - }) - }, - }).$mount() - expect(vm.$el.textContent).toBe('foo') - vm.msg = 'bar' - waitForUpdate(() => { - expect(vm.$el.textContent).toBe('bar!') - }).then(done) - }) + const spy = vi.fn() + const vm = new Vue({ + template: '
{{ msg }}
', + data: { msg: 'foo' }, + setup(_, { _vm }) { + onBeforeUpdate(() => { + expect(_vm.$el.textContent).toBe('foo') + spy() + }) + }, + }).$mount() + expect(spy).not.toHaveBeenCalled() + vm.msg = 'bar' + expect(spy).not.toHaveBeenCalled() // should be async + waitForUpdate(() => { + expect(spy).toHaveBeenCalled() + }).then(done) + })) - it('should not be called after destroy', (done) => { - const beforeUpdate = jest.fn() - const destroyed = jest.fn() + it('should be called before render and allow mutating state', () => + new Promise((done, reject) => { + done.fail = reject - Vue.component('todo', { - template: '
{{todo.done}}
', - props: ['todo'], - setup() { - onBeforeUpdate(beforeUpdate) - onUnmounted(destroyed) - }, - }) + const vm = new Vue({ + template: '
{{ msg }}
', + data: { msg: 'foo' }, + setup(_, { _vm }) { + onBeforeUpdate(() => { + _vm.msg += '!' + }) + }, + }).$mount() + expect(vm.$el.textContent).toBe('foo') + vm.msg = 'bar' + waitForUpdate(() => { + expect(vm.$el.textContent).toBe('bar!') + }).then(done) + })) - const vm = new Vue({ - template: ` + it('should not be called after destroy', () => + new Promise((done, reject) => { + done.fail = reject + + const beforeUpdate = vi.fn() + const destroyed = vi.fn() + + Vue.component('todo', { + template: '
{{todo.done}}
', + props: ['todo'], + setup() { + onBeforeUpdate(beforeUpdate) + onUnmounted(destroyed) + }, + }) + + const vm = new Vue({ + template: `
`, - data() { - return { - todos: [{ id: 1, done: false }], - } - }, - computed: { - pendingTodos() { - return this.todos.filter((t) => !t.done) + data() { + return { + todos: [{ id: 1, done: false }], + } }, - }, - }).$mount() + computed: { + pendingTodos() { + return this.todos.filter((t) => !t.done) + }, + }, + }).$mount() - vm.todos[0].done = true - waitForUpdate(() => { - expect(destroyed).toHaveBeenCalled() - expect(beforeUpdate).not.toHaveBeenCalled() - }).then(done) - }) + vm.todos[0].done = true + waitForUpdate(() => { + expect(destroyed).toHaveBeenCalled() + expect(beforeUpdate).not.toHaveBeenCalled() + }).then(done) + })) }) describe('updated', () => { - it('should be called after update', (done) => { - const spy = jest.fn() - const vm = new Vue({ - template: '
{{ msg }}
', - data: { msg: 'foo' }, - setup(_, { _vm }) { - onUpdated(() => { - expect(_vm.$el.textContent).toBe('bar') - spy() - }) - }, - }).$mount() - expect(spy).not.toHaveBeenCalled() - vm.msg = 'bar' - expect(spy).not.toHaveBeenCalled() // should be async - waitForUpdate(() => { - expect(spy).toHaveBeenCalled() - }).then(done) - }) + it('should be called after update', () => + new Promise((done, reject) => { + done.fail = reject - it('should be called after children are updated', (done) => { - const calls = [] - const vm = new Vue({ - template: '
{{ msg }}
', - data: { msg: 'foo' }, - components: { - test: { - template: `
`, - setup(_, { _vm }) { - onUpdated(() => { - expect(_vm.$el.textContent).toBe('bar') - calls.push('child') - }) + const spy = vi.fn() + const vm = new Vue({ + template: '
{{ msg }}
', + data: { msg: 'foo' }, + setup(_, { _vm }) { + onUpdated(() => { + expect(_vm.$el.textContent).toBe('bar') + spy() + }) + }, + }).$mount() + expect(spy).not.toHaveBeenCalled() + vm.msg = 'bar' + expect(spy).not.toHaveBeenCalled() // should be async + waitForUpdate(() => { + expect(spy).toHaveBeenCalled() + }).then(done) + })) + + it('should be called after children are updated', () => + new Promise((done, reject) => { + done.fail = reject + + const calls = [] + const vm = new Vue({ + template: '
{{ msg }}
', + data: { msg: 'foo' }, + components: { + test: { + template: `
`, + setup(_, { _vm }) { + onUpdated(() => { + expect(_vm.$el.textContent).toBe('bar') + calls.push('child') + }) + }, }, }, - }, - setup(_, { _vm }) { - onUpdated(() => { - expect(_vm.$el.textContent).toBe('bar') - calls.push('parent') - }) - }, - }).$mount() + setup(_, { _vm }) { + onUpdated(() => { + expect(_vm.$el.textContent).toBe('bar') + calls.push('parent') + }) + }, + }).$mount() - expect(calls).toEqual([]) - vm.msg = 'bar' - expect(calls).toEqual([]) - waitForUpdate(() => { - expect(calls).toEqual(['child', 'parent']) - }).then(done) - }) + expect(calls).toEqual([]) + vm.msg = 'bar' + expect(calls).toEqual([]) + waitForUpdate(() => { + expect(calls).toEqual(['child', 'parent']) + }).then(done) + })) - it('should not be called after destroy', (done) => { - const updated = jest.fn() - const destroyed = jest.fn() + it('should not be called after destroy', () => + new Promise((done, reject) => { + done.fail = reject - Vue.component('todo', { - template: '
{{todo.done}}
', - props: ['todo'], - setup() { - onUpdated(updated) - onUnmounted(destroyed) - }, - }) + const updated = vi.fn() + const destroyed = vi.fn() - const vm = new Vue({ - template: ` + Vue.component('todo', { + template: '
{{todo.done}}
', + props: ['todo'], + setup() { + onUpdated(updated) + onUnmounted(destroyed) + }, + }) + + const vm = new Vue({ + template: `
`, - data() { - return { - todos: [{ id: 1, done: false }], - } - }, - computed: { - pendingTodos() { - return this.todos.filter((t) => !t.done) + data() { + return { + todos: [{ id: 1, done: false }], + } }, - }, - }).$mount() + computed: { + pendingTodos() { + return this.todos.filter((t) => !t.done) + }, + }, + }).$mount() - vm.todos[0].done = true - waitForUpdate(() => { - expect(destroyed).toHaveBeenCalled() - expect(updated).not.toHaveBeenCalled() - }).then(done) - }) + vm.todos[0].done = true + waitForUpdate(() => { + expect(destroyed).toHaveBeenCalled() + expect(updated).not.toHaveBeenCalled() + }).then(done) + })) }) describe('beforeUnmount', () => { it('should be called before destroy', () => { - const spy = jest.fn() + const spy = vi.fn() const vm = new Vue({ render() {}, setup(_, { _vm }) { @@ -329,7 +347,7 @@ describe('Hooks lifecycle', () => { describe('unmounted', () => { it('should be called after destroy', () => { - const spy = jest.fn() + const spy = vi.fn() const vm = new Vue({ render() {}, setup(_, { _vm }) { @@ -352,7 +370,7 @@ describe('Hooks lifecycle', () => { let globalSpy beforeEach(() => { - globalSpy = Vue.config.errorHandler = jest.fn() + globalSpy = Vue.config.errorHandler = vi.fn() }) afterEach(() => { @@ -360,7 +378,7 @@ describe('Hooks lifecycle', () => { }) it('should capture error from child component', () => { - const spy = jest.fn() + const spy = vi.fn() let child let err diff --git a/test/apis/state.spec.js b/test/apis/state.spec.js index c2861ab1..936ff7f5 100644 --- a/test/apis/state.spec.js +++ b/test/apis/state.spec.js @@ -1,13 +1,5 @@ -const Vue = require('vue/dist/vue.common.js') -const { - reactive, - ref, - watch, - set, - toRefs, - computed, - unref, -} = require('../../src') +import Vue from 'vue/dist/vue.common.js' +import { reactive, ref, watch, set, toRefs, computed, unref } from '../../src' describe('api/ref', () => { it('should work with array', () => { @@ -29,67 +21,76 @@ describe('api/ref', () => { expect(a.value).toBe(2) }) - it('should be reactive', (done) => { - const a = ref(1) - let dummy - watch( - a, - () => { - dummy = a.value - }, - { immediate: true } - ) - expect(dummy).toBe(1) - a.value = 2 - waitForUpdate(() => { - expect(dummy).toBe(2) - }).then(done) - }) - - it('should make nested properties reactive', (done) => { - const a = ref({ - count: 1, - }) - let dummy - watch( - a, - () => { - dummy = a.value.count - }, - { deep: true, immediate: true } - ) - expect(dummy).toBe(1) - a.value.count = 2 - waitForUpdate(() => { - expect(dummy).toBe(2) - }).then(done) - }) + it('should be reactive', () => + new Promise((done, reject) => { + done.fail = reject + + const a = ref(1) + let dummy + watch( + a, + () => { + dummy = a.value + }, + { immediate: true } + ) + expect(dummy).toBe(1) + a.value = 2 + waitForUpdate(() => { + expect(dummy).toBe(2) + }).then(done) + })) + + it('should make nested properties reactive', () => + new Promise((done, reject) => { + done.fail = reject + + const a = ref({ + count: 1, + }) + let dummy + watch( + a, + () => { + dummy = a.value.count + }, + { deep: true, immediate: true } + ) + expect(dummy).toBe(1) + a.value.count = 2 + waitForUpdate(() => { + expect(dummy).toBe(2) + }).then(done) + })) }) describe('api/reactive', () => { - it('should work', (done) => { - const app = new Vue({ - setup() { - return { - state: reactive({ - count: 0, - }), - } - }, - render(h) { - return h('div', [h('span', this.state.count)]) - }, - }).$mount() - - expect(app.$el.querySelector('span').textContent).toBe('0') - app.state.count++ - waitForUpdate(() => { - expect(app.$el.querySelector('span').textContent).toBe('1') - }).then(done) - }) + it('should work', () => + new Promise((done, reject) => { + done.fail = reject + + const app = new Vue({ + setup() { + return { + state: reactive({ + count: 0, + }), + } + }, + render(h) { + return h('div', [h('span', this.state.count)]) + }, + }).$mount() + + expect(app.$el.querySelector('span').textContent).toBe('0') + app.state.count++ + waitForUpdate(() => { + expect(app.$el.querySelector('span').textContent).toBe('1') + }).then(done) + })) it('should warn for non-object params', () => { - warn = jest.spyOn(global.console, 'error').mockImplementation(() => null) + let warn = vi.spyOn(global.console, 'error').mockImplementation(() => null) reactive() expect(warn.mock.calls[0][0]).toMatch( '[Vue warn]: "reactive()" must be called on an object.' @@ -104,40 +105,43 @@ describe('api/reactive', () => { }) describe('api/toRefs', () => { - it('should work', (done) => { - const state = reactive({ - foo: 1, - bar: 2, - }) + it('should work', () => + new Promise((done, reject) => { + done.fail = reject - let dummy - watch( - () => state, - () => { - dummy = state.foo - }, - { immediate: true } - ) - const stateAsRefs = toRefs(state) - expect(dummy).toBe(1) - expect(stateAsRefs.foo.value).toBe(1) - expect(stateAsRefs.bar.value).toBe(2) - state.foo++ - waitForUpdate(() => { - dummy = 2 - expect(stateAsRefs.foo.value).toBe(2) - stateAsRefs.foo.value++ - }) - .then(() => { - dummy = 3 - expect(state.foo).toBe(3) + const state = reactive({ + foo: 1, + bar: 2, }) - .then(done) - }) + + let dummy + watch( + () => state, + () => { + dummy = state.foo + }, + { immediate: true } + ) + const stateAsRefs = toRefs(state) + expect(dummy).toBe(1) + expect(stateAsRefs.foo.value).toBe(1) + expect(stateAsRefs.bar.value).toBe(2) + state.foo++ + waitForUpdate(() => { + dummy = 2 + expect(stateAsRefs.foo.value).toBe(2) + stateAsRefs.foo.value++ + }) + .then(() => { + dummy = 3 + expect(state.foo).toBe(3) + }) + .then(done) + })) it('should proxy plain object but not make it a reactive', () => { - warn = jest.spyOn(global.console, 'error').mockImplementation(() => null) - const spy = jest.fn() + let warn = vi.spyOn(global.console, 'error').mockImplementation(() => null) + const spy = vi.fn() const state = { foo: 1, bar: 2, @@ -379,7 +383,7 @@ describe('unwrapping', () => { }) it('should not call the computed property until accessing it', () => { - const spy = jest.fn() + const spy = vi.fn() const state = reactive({ count: 1, double: computed(() => { diff --git a/test/apis/useCssModule.spec.js b/test/apis/useCssModule.spec.js index c7befddf..0580ddf5 100644 --- a/test/apis/useCssModule.spec.js +++ b/test/apis/useCssModule.spec.js @@ -1,5 +1,5 @@ -const Vue = require('vue/dist/vue.common.js') -const { useCssModule } = require('../../src') +import Vue from 'vue/dist/vue.common.js' +import { useCssModule } from '../../src' const style = { whateverStyle: 'whateverStyle' } @@ -13,19 +13,20 @@ function injectStyles() { } describe('api/useCssModule', () => { - it('should get the same object', (done) => { - const vm = new Vue({ - beforeCreate() { - injectStyles.call(this) - }, - template: '
{{style}}
', - setup() { - const style = useCssModule() - return { style } - }, - }) - vm.$mount() - expect(vm.style).toBe(style) - done() - }) + it('should get the same object', () => + new Promise((done) => { + const vm = new Vue({ + beforeCreate() { + injectStyles.call(this) + }, + template: '
{{style}}
', + setup() { + const style = useCssModule() + return { style } + }, + }) + vm.$mount() + expect(vm.style).toBe(style) + done() + })) }) diff --git a/test/apis/warn.spec.js b/test/apis/warn.spec.js index 9ceb5fa9..2b6aa665 100644 --- a/test/apis/warn.spec.js +++ b/test/apis/warn.spec.js @@ -1,9 +1,11 @@ -const Vue = require('vue/dist/vue.common.js') -const { warn: apiWarn } = require('../../src') +import Vue from 'vue/dist/vue.common.js' +import { warn as apiWarn } from '../../src' describe('api/warn', () => { + let warn = null + beforeEach(() => { - warn = jest.spyOn(global.console, 'error').mockImplementation(() => null) + warn = vi.spyOn(global.console, 'error').mockImplementation(() => null) }) afterEach(() => { warn.mockRestore() diff --git a/test/apis/watch.spec.js b/test/apis/watch.spec.js index 3462a7fc..e1aab32f 100644 --- a/test/apis/watch.spec.js +++ b/test/apis/watch.spec.js @@ -1,5 +1,5 @@ -const Vue = require('vue/dist/vue.common.js') -const { +import Vue from 'vue/dist/vue.common.js' +import { ref, reactive, watch, @@ -8,338 +8,374 @@ const { computed, nextTick, markRaw, -} = require('../../src') -const { mockWarn } = require('../helpers') +} from '../../src' +import { mockWarn } from '../helpers' describe('api/watch', () => { mockWarn(true) const anyFn = expect.any(Function) let spy beforeEach(() => { - spy = jest.fn() + spy = vi.fn() }) afterEach(() => { spy.mockReset() }) - it('should work', (done) => { - const onCleanupSpy = jest.fn() - const vm = new Vue({ - setup() { - const a = ref(1) - watch( - a, - (n, o, _onCleanup) => { - spy(n, o, _onCleanup) - _onCleanup(onCleanupSpy) - }, - { immediate: true } - ) - return { - a, - } - }, - template: `
{{a}}
`, - }).$mount() - expect(spy).toBeCalledTimes(1) - expect(spy).toHaveBeenLastCalledWith(1, undefined, anyFn) - expect(onCleanupSpy).toHaveBeenCalledTimes(0) - vm.a = 2 - vm.a = 3 - expect(spy).toBeCalledTimes(1) - waitForUpdate(() => { - expect(spy).toBeCalledTimes(2) - expect(spy).toHaveBeenLastCalledWith(3, 1, anyFn) - expect(onCleanupSpy).toHaveBeenCalledTimes(1) + it('should work', () => + new Promise((done, reject) => { + done.fail = reject - vm.$destroy() - }) - .then(() => { - expect(onCleanupSpy).toHaveBeenCalledTimes(2) + const onCleanupSpy = vi.fn() + const vm = new Vue({ + setup() { + const a = ref(1) + watch( + a, + (n, o, _onCleanup) => { + spy(n, o, _onCleanup) + _onCleanup(onCleanupSpy) + }, + { immediate: true } + ) + return { + a, + } + }, + template: `
{{a}}
`, + }).$mount() + expect(spy).toBeCalledTimes(1) + expect(spy).toHaveBeenLastCalledWith(1, undefined, anyFn) + expect(onCleanupSpy).toHaveBeenCalledTimes(0) + vm.a = 2 + vm.a = 3 + expect(spy).toBeCalledTimes(1) + waitForUpdate(() => { + expect(spy).toBeCalledTimes(2) + expect(spy).toHaveBeenLastCalledWith(3, 1, anyFn) + expect(onCleanupSpy).toHaveBeenCalledTimes(1) + + vm.$destroy() }) - .then(done) - }) + .then(() => { + expect(onCleanupSpy).toHaveBeenCalledTimes(2) + }) + .then(done) + })) - it('basic usage(value wrapper)', (done) => { - const vm = new Vue({ - setup() { - const a = ref(1) - watch(a, (n, o) => spy(n, o), { flush: 'pre', immediate: true }) + it('basic usage(value wrapper)', () => + new Promise((done, reject) => { + done.fail = reject - return { - a, - } - }, - template: `
{{a}}
`, - }).$mount() - expect(spy).toBeCalledTimes(1) - expect(spy).toHaveBeenLastCalledWith(1, undefined) - vm.a = 2 - expect(spy).toBeCalledTimes(1) - waitForUpdate(() => { - expect(spy).toBeCalledTimes(2) - expect(spy).toHaveBeenLastCalledWith(2, 1) - }).then(done) - }) + const vm = new Vue({ + setup() { + const a = ref(1) + watch(a, (n, o) => spy(n, o), { flush: 'pre', immediate: true }) - it('basic usage(function)', (done) => { - const vm = new Vue({ - setup() { - const a = ref(1) - watch( - () => a.value, - (n, o) => spy(n, o), - { immediate: true } - ) + return { + a, + } + }, + template: `
{{a}}
`, + }).$mount() + expect(spy).toBeCalledTimes(1) + expect(spy).toHaveBeenLastCalledWith(1, undefined) + vm.a = 2 + expect(spy).toBeCalledTimes(1) + waitForUpdate(() => { + expect(spy).toBeCalledTimes(2) + expect(spy).toHaveBeenLastCalledWith(2, 1) + }).then(done) + })) - return { - a, - } - }, - template: `
{{a}}
`, - }).$mount() - expect(spy).toBeCalledTimes(1) - expect(spy).toHaveBeenLastCalledWith(1, undefined) - vm.a = 2 - expect(spy).toBeCalledTimes(1) - waitForUpdate(() => { - expect(spy).toBeCalledTimes(2) - expect(spy).toHaveBeenLastCalledWith(2, 1) - }).then(done) - }) + it('basic usage(function)', () => + new Promise((done, reject) => { + done.fail = reject - it('multiple cbs (after option merge)', (done) => { - const spy1 = jest.fn() - const a = ref(1) - const Test = Vue.extend({ - setup() { - watch(a, (n, o) => spy1(n, o)) - }, - }) - new Test({ - setup() { - watch(a, (n, o) => spy(n, o)) - return { - a, - } - }, - template: `
{{a}}
`, - }).$mount() - a.value = 2 - waitForUpdate(() => { - expect(spy1).toHaveBeenLastCalledWith(2, 1) - expect(spy).toHaveBeenLastCalledWith(2, 1) - }).then(done) - }) + const vm = new Vue({ + setup() { + const a = ref(1) + watch( + () => a.value, + (n, o) => spy(n, o), + { immediate: true } + ) - it('with option: lazy', (done) => { - const vm = new Vue({ - setup() { - const a = ref(1) - watch(a, (n, o) => spy(n, o), { lazy: true }) + return { + a, + } + }, + template: `
{{a}}
`, + }).$mount() + expect(spy).toBeCalledTimes(1) + expect(spy).toHaveBeenLastCalledWith(1, undefined) + vm.a = 2 + expect(spy).toBeCalledTimes(1) + waitForUpdate(() => { + expect(spy).toBeCalledTimes(2) + expect(spy).toHaveBeenLastCalledWith(2, 1) + }).then(done) + })) - return { - a, - } - }, - template: `
{{a}}
`, - }).$mount() - expect(spy).not.toHaveBeenCalled() - vm.a = 2 - waitForUpdate(() => { - expect(spy).toHaveBeenLastCalledWith(2, 1) - }).then(done) - }) + it('multiple cbs (after option merge)', () => + new Promise((done, reject) => { + done.fail = reject - it('with option: deep', (done) => { - const vm = new Vue({ - setup() { - const a = ref({ b: 1 }) - watch(a, (n, o) => spy(n, o), { lazy: true, deep: true }) + const spy1 = vi.fn() + const a = ref(1) + const Test = Vue.extend({ + setup() { + watch(a, (n, o) => spy1(n, o)) + }, + }) + new Test({ + setup() { + watch(a, (n, o) => spy(n, o)) + return { + a, + } + }, + template: `
{{a}}
`, + }).$mount() + a.value = 2 + waitForUpdate(() => { + expect(spy1).toHaveBeenLastCalledWith(2, 1) + expect(spy).toHaveBeenLastCalledWith(2, 1) + }).then(done) + })) - return { - a, - } - }, - template: `
{{a}}
`, - }).$mount() - const oldA = vm.a - expect(spy).not.toHaveBeenCalled() - vm.a.b = 2 - expect(spy).not.toHaveBeenCalled() - waitForUpdate(() => { - expect(spy).toHaveBeenLastCalledWith(vm.a, vm.a) - vm.a = { b: 3 } - }) - .then(() => { - expect(spy).toHaveBeenLastCalledWith(vm.a, oldA) + it('with option: lazy', () => + new Promise((done, reject) => { + done.fail = reject + + const vm = new Vue({ + setup() { + const a = ref(1) + watch(a, (n, o) => spy(n, o), { lazy: true }) + + return { + a, + } + }, + template: `
{{a}}
`, + }).$mount() + expect(spy).not.toHaveBeenCalled() + vm.a = 2 + waitForUpdate(() => { + expect(spy).toHaveBeenLastCalledWith(2, 1) + }).then(done) + })) + + it('with option: deep', () => + new Promise((done, reject) => { + done.fail = reject + + const vm = new Vue({ + setup() { + const a = ref({ b: 1 }) + watch(a, (n, o) => spy(n, o), { lazy: true, deep: true }) + + return { + a, + } + }, + template: `
{{a}}
`, + }).$mount() + const oldA = vm.a + expect(spy).not.toHaveBeenCalled() + vm.a.b = 2 + expect(spy).not.toHaveBeenCalled() + waitForUpdate(() => { + expect(spy).toHaveBeenLastCalledWith(vm.a, vm.a) + vm.a = { b: 3 } }) - .then(done) - }) + .then(() => { + expect(spy).toHaveBeenLastCalledWith(vm.a, oldA) + }) + .then(done) + })) - it('markRaw', (done) => { - const nestedState = ref(100) + it('markRaw', () => + new Promise((done, reject) => { + done.fail = reject - const state = ref({ - rawValue: markRaw({ - nestedState, - }), - }) + const nestedState = ref(100) - watch( - state, - () => { - spy() - }, - { deep: true } - ) + const state = ref({ + rawValue: markRaw({ + nestedState, + }), + }) - function changeRawValue() { - nestedState.value = Math.random() - } + watch( + state, + () => { + spy() + }, + { deep: true } + ) - changeRawValue() + function changeRawValue() { + nestedState.value = Math.random() + } - waitForUpdate(() => { - expect(spy).not.toBeCalled() - }).then(done) - }) + changeRawValue() - it('should flush after render (immediate=false)', (done) => { - let rerenderedText - const vm = new Vue({ - setup() { - const a = ref(1) - watch( - a, - (newVal, oldVal) => { - spy(newVal, oldVal) - rerenderedText = vm.$el.textContent - }, - { lazy: true, flush: 'post' } - ) - return { - a, - } - }, - render(h) { - return h('div', this.a) - }, - }).$mount() - expect(spy).not.toHaveBeenCalled() - vm.a = 2 - waitForUpdate(() => { - expect(rerenderedText).toBe('2') - expect(spy).toBeCalledTimes(1) - expect(spy).toHaveBeenLastCalledWith(2, 1) - }).then(done) - }) + waitForUpdate(() => { + expect(spy).not.toBeCalled() + }).then(done) + })) - it('should flush after render (immediate=true)', (done) => { - let rerenderedText - var vm = new Vue({ - setup() { - const a = ref(1) - watch( - a, - (newVal, oldVal) => { - spy(newVal, oldVal) - if (vm) { + it('should flush after render (immediate=false)', () => + new Promise((done, reject) => { + done.fail = reject + + let rerenderedText + const vm = new Vue({ + setup() { + const a = ref(1) + watch( + a, + (newVal, oldVal) => { + spy(newVal, oldVal) rerenderedText = vm.$el.textContent - } - }, - { immediate: true, flush: 'post' } - ) - return { - a, - } - }, - render(h) { - return h('div', this.a) - }, - }).$mount() - expect(spy).toBeCalledTimes(1) - expect(spy).toHaveBeenLastCalledWith(1, undefined) - vm.a = 2 - waitForUpdate(() => { - expect(rerenderedText).toBe('2') - expect(spy).toBeCalledTimes(2) - expect(spy).toHaveBeenLastCalledWith(2, 1) - }).then(done) - }) + }, + { lazy: true, flush: 'post' } + ) + return { + a, + } + }, + render(h) { + return h('div', this.a) + }, + }).$mount() + expect(spy).not.toHaveBeenCalled() + vm.a = 2 + waitForUpdate(() => { + expect(rerenderedText).toBe('2') + expect(spy).toBeCalledTimes(1) + expect(spy).toHaveBeenLastCalledWith(2, 1) + }).then(done) + })) - it('should flush before render', (done) => { - const vm = new Vue({ - setup() { - const a = ref(1) - watch( - a, - (newVal, oldVal) => { - spy(newVal, oldVal) - expect(vm.$el.textContent).toBe('1') - }, - { lazy: true, flush: 'pre' } - ) - return { - a, - } - }, - render(h) { - return h('div', this.a) - }, - }).$mount() - vm.a = 2 - waitForUpdate(() => { + it('should flush after render (immediate=true)', () => + new Promise((done, reject) => { + done.fail = reject + + let rerenderedText + var vm = new Vue({ + setup() { + const a = ref(1) + watch( + a, + (newVal, oldVal) => { + spy(newVal, oldVal) + if (vm) { + rerenderedText = vm.$el.textContent + } + }, + { immediate: true, flush: 'post' } + ) + return { + a, + } + }, + render(h) { + return h('div', this.a) + }, + }).$mount() expect(spy).toBeCalledTimes(1) - expect(spy).toHaveBeenLastCalledWith(2, 1) - }).then(done) - }) + expect(spy).toHaveBeenLastCalledWith(1, undefined) + vm.a = 2 + waitForUpdate(() => { + expect(rerenderedText).toBe('2') + expect(spy).toBeCalledTimes(2) + expect(spy).toHaveBeenLastCalledWith(2, 1) + }).then(done) + })) - it('should flush synchronously', (done) => { - const vm = new Vue({ - setup() { - const a = ref(1) - watch(a, (n, o) => spy(n, o), { lazy: true, flush: 'sync' }) - return { - a, - } - }, - render(h) { - return h('div', this.a) - }, - }).$mount() - expect(spy).not.toHaveBeenCalled() - vm.a = 2 - expect(spy).toHaveBeenLastCalledWith(2, 1) - vm.a = 3 - expect(spy).toHaveBeenLastCalledWith(3, 2) - waitForUpdate(() => { - expect(spy).toBeCalledTimes(2) - }).then(done) - }) + it('should flush before render', () => + new Promise((done, reject) => { + done.fail = reject - it('should support watching unicode paths', (done) => { - const vm = new Vue({ - setup() { - const a = ref(1) - watch(a, (n, o) => spy(n, o), { lazy: true }) + const vm = new Vue({ + setup() { + const a = ref(1) + watch( + a, + (newVal, oldVal) => { + spy(newVal, oldVal) + expect(vm.$el.textContent).toBe('1') + }, + { lazy: true, flush: 'pre' } + ) + return { + a, + } + }, + render(h) { + return h('div', this.a) + }, + }).$mount() + vm.a = 2 + waitForUpdate(() => { + expect(spy).toBeCalledTimes(1) + expect(spy).toHaveBeenLastCalledWith(2, 1) + }).then(done) + })) - return { - 数据: a, - } - }, - render(h) { - return h('div', this['数据']) - }, - }).$mount() - expect(spy).not.toHaveBeenCalled() - vm['数据'] = 2 - expect(spy).not.toHaveBeenCalled() - waitForUpdate(() => { + it('should flush synchronously', () => + new Promise((done, reject) => { + done.fail = reject + + const vm = new Vue({ + setup() { + const a = ref(1) + watch(a, (n, o) => spy(n, o), { lazy: true, flush: 'sync' }) + return { + a, + } + }, + render(h) { + return h('div', this.a) + }, + }).$mount() + expect(spy).not.toHaveBeenCalled() + vm.a = 2 expect(spy).toHaveBeenLastCalledWith(2, 1) - }).then(done) - }) + vm.a = 3 + expect(spy).toHaveBeenLastCalledWith(3, 2) + waitForUpdate(() => { + expect(spy).toBeCalledTimes(2) + }).then(done) + })) + + it('should support watching unicode paths', () => + new Promise((done, reject) => { + done.fail = reject + + const vm = new Vue({ + setup() { + const a = ref(1) + watch(a, (n, o) => spy(n, o), { lazy: true }) + + return { + 数据: a, + } + }, + render(h) { + return h('div', this['数据']) + }, + }).$mount() + expect(spy).not.toHaveBeenCalled() + vm['数据'] = 2 + expect(spy).not.toHaveBeenCalled() + waitForUpdate(() => { + expect(spy).toHaveBeenLastCalledWith(2, 1) + }).then(done) + })) it('should allow to be triggered in setup', () => { new Vue({ @@ -354,105 +390,111 @@ describe('api/watch', () => { expect(spy).toHaveBeenNthCalledWith(2, 1, 0) }) - it('should run in a expected order', (done) => { - const result = [] - var vm = new Vue({ - setup() { - const x = ref(0) - - // prettier-ignore - watchEffect(() => { void x.value; result.push('sync effect'); }, { flush: 'sync' }); - // prettier-ignore - watchEffect(() => { void x.value; result.push('pre effect'); }, { flush: 'pre' }); - // prettier-ignore - watchEffect(() => { void x.value; result.push('post effect'); }, { flush: 'post' }); - - // prettier-ignore - watch(x, () => { result.push('sync callback') }, { flush: 'sync', immediate: true }) - // prettier-ignore - watch(x, () => { result.push('pre callback') }, { flush: 'pre', immediate: true }) - // prettier-ignore - watch(x, () => { result.push('post callback') }, { flush: 'post', immediate: true }) - - const inc = () => { - result.push('before inc') - x.value++ - result.push('after inc') - } - - return { x, inc } - }, - template: `
{{x}}
`, - }).$mount() - expect(result).toEqual([ - 'sync effect', - 'pre effect', - 'post effect', - 'sync callback', - 'pre callback', - 'post callback', - ]) - result.length = 0 - - waitForUpdate(() => { - expect(result).toEqual([]) - result.length = 0 + it('should run in a expected order', () => + new Promise((done, reject) => { + done.fail = reject - vm.inc() - }) - .then(() => { - expect(result).toEqual([ - 'before inc', - 'sync effect', - 'sync callback', - 'after inc', - 'pre effect', - 'pre callback', - 'post effect', - 'post callback', - ]) - }) - .then(done) - }) - - describe('simple effect', () => { - it('should work', (done) => { - let onCleanup - const onCleanupSpy = jest.fn() - const vm = new Vue({ + const result = [] + var vm = new Vue({ setup() { - const count = ref(0) - watchEffect((_onCleanup) => { - onCleanup = _onCleanup - _onCleanup(onCleanupSpy) - spy(count.value) - }) - - return { - count, + const x = ref(0) + + // prettier-ignore + watchEffect(() => { void x.value; result.push('sync effect'); }, { flush: 'sync' }); + // prettier-ignore + watchEffect(() => { void x.value; result.push('pre effect'); }, { flush: 'pre' }); + // prettier-ignore + watchEffect(() => { void x.value; result.push('post effect'); }, { flush: 'post' }); + + // prettier-ignore + watch(x, () => { result.push('sync callback') }, { flush: 'sync', immediate: true }) + // prettier-ignore + watch(x, () => { result.push('pre callback') }, { flush: 'pre', immediate: true }) + // prettier-ignore + watch(x, () => { result.push('post callback') }, { flush: 'post', immediate: true }) + + const inc = () => { + result.push('before inc') + x.value++ + result.push('after inc') } + + return { x, inc } }, - render(h) { - return h('div', this.count) - }, + template: `
{{x}}
`, }).$mount() - expect(spy).toHaveBeenCalled() + expect(result).toEqual([ + 'sync effect', + 'pre effect', + 'post effect', + 'sync callback', + 'pre callback', + 'post callback', + ]) + result.length = 0 + waitForUpdate(() => { - expect(onCleanup).toEqual(anyFn) - expect(onCleanupSpy).toHaveBeenCalledTimes(0) - expect(spy).toHaveBeenLastCalledWith(0) - vm.count++ + expect(result).toEqual([]) + result.length = 0 + + vm.inc() }) .then(() => { - expect(spy).toHaveBeenLastCalledWith(1) - expect(onCleanupSpy).toHaveBeenCalledTimes(1) - vm.$destroy() - }) - .then(() => { - expect(onCleanupSpy).toHaveBeenCalledTimes(2) + expect(result).toEqual([ + 'before inc', + 'sync effect', + 'sync callback', + 'after inc', + 'pre effect', + 'pre callback', + 'post effect', + 'post callback', + ]) }) .then(done) - }) + })) + + describe('simple effect', () => { + it('should work', () => + new Promise((done, reject) => { + done.fail = reject + + let onCleanup + const onCleanupSpy = vi.fn() + const vm = new Vue({ + setup() { + const count = ref(0) + watchEffect((_onCleanup) => { + onCleanup = _onCleanup + _onCleanup(onCleanupSpy) + spy(count.value) + }) + + return { + count, + } + }, + render(h) { + return h('div', this.count) + }, + }).$mount() + expect(spy).toHaveBeenCalled() + waitForUpdate(() => { + expect(onCleanup).toEqual(anyFn) + expect(onCleanupSpy).toHaveBeenCalledTimes(0) + expect(spy).toHaveBeenLastCalledWith(0) + vm.count++ + }) + .then(() => { + expect(spy).toHaveBeenLastCalledWith(1) + expect(onCleanupSpy).toHaveBeenCalledTimes(1) + vm.$destroy() + }) + .then(() => { + expect(onCleanupSpy).toHaveBeenCalledTimes(2) + }) + .then(done) + })) it('sync=true', () => { const vm = new Vue({ @@ -496,7 +538,7 @@ describe('api/watch', () => { it('warn and not respect deep option when using effect', async () => { const arr = ref([1, [2]]) - const spy = jest.fn() + const spy = vi.fn() watchEffect( () => { spy() @@ -514,103 +556,115 @@ describe('api/watch', () => { describe('Multiple sources', () => { let obj1, obj2 - it('do not store the intermediate state', (done) => { - new Vue({ - setup() { - obj1 = reactive({ a: 1 }) - obj2 = reactive({ a: 2 }) - watch([() => obj1.a, () => obj2.a], (n, o) => spy(n, o), { - immediate: true, - }) - return { - obj1, - obj2, - } - }, - template: `
{{obj1.a}} {{obj2.a}}
`, - }).$mount() - expect(spy).toBeCalledTimes(1) - expect(spy).toHaveBeenLastCalledWith([1, 2], []) - obj1.a = 2 - obj2.a = 3 - - obj1.a = 3 - obj2.a = 4 - waitForUpdate(() => { - expect(spy).toBeCalledTimes(2) - expect(spy).toHaveBeenLastCalledWith([3, 4], [1, 2]) - obj2.a = 5 - obj2.a = 6 - }) - .then(() => { - expect(spy).toBeCalledTimes(3) - expect(spy).toHaveBeenLastCalledWith([3, 6], [3, 4]) - }) - .then(done) - }) - - it('basic usage(immediate=true, flush=none-sync)', (done) => { - const vm = new Vue({ - setup() { - const a = ref(1) - const b = ref(1) - watch([a, b], (n, o) => spy(n, o), { flush: 'post', immediate: true }) + it('do not store the intermediate state', () => + new Promise((done, reject) => { + done.fail = reject + + new Vue({ + setup() { + obj1 = reactive({ a: 1 }) + obj2 = reactive({ a: 2 }) + watch([() => obj1.a, () => obj2.a], (n, o) => spy(n, o), { + immediate: true, + }) + return { + obj1, + obj2, + } + }, + template: `
{{obj1.a}} {{obj2.a}}
`, + }).$mount() + expect(spy).toBeCalledTimes(1) + expect(spy).toHaveBeenLastCalledWith([1, 2], []) + obj1.a = 2 + obj2.a = 3 - return { - a, - b, - } - }, - template: `
{{a}} {{b}}
`, - }).$mount() - expect(spy).toBeCalledTimes(1) - expect(spy).toHaveBeenLastCalledWith([1, 1], []) - vm.a = 2 - expect(spy).toBeCalledTimes(1) - waitForUpdate(() => { - expect(spy).toBeCalledTimes(2) - expect(spy).toHaveBeenLastCalledWith([2, 1], [1, 1]) - vm.a = 3 - vm.b = 3 - }) - .then(() => { - expect(spy).toBeCalledTimes(3) - expect(spy).toHaveBeenLastCalledWith([3, 3], [2, 1]) + obj1.a = 3 + obj2.a = 4 + waitForUpdate(() => { + expect(spy).toBeCalledTimes(2) + expect(spy).toHaveBeenLastCalledWith([3, 4], [1, 2]) + obj2.a = 5 + obj2.a = 6 }) - .then(done) - }) - - it('basic usage(immediate=false, flush=none-sync)', (done) => { - const vm = new Vue({ - setup() { - const a = ref(1) - const b = ref(1) - watch([a, b], (n, o) => spy(n, o), { - immediate: false, - flush: 'post', + .then(() => { + expect(spy).toBeCalledTimes(3) + expect(spy).toHaveBeenLastCalledWith([3, 6], [3, 4]) }) - - return { - a, - b, - } - }, - template: `
{{a}} {{b}}
`, - }).$mount() - vm.a = 2 - expect(spy).not.toHaveBeenCalled() - waitForUpdate(() => { + .then(done) + })) + + it('basic usage(immediate=true, flush=none-sync)', () => + new Promise((done, reject) => { + done.fail = reject + + const vm = new Vue({ + setup() { + const a = ref(1) + const b = ref(1) + watch([a, b], (n, o) => spy(n, o), { + flush: 'post', + immediate: true, + }) + + return { + a, + b, + } + }, + template: `
{{a}} {{b}}
`, + }).$mount() expect(spy).toBeCalledTimes(1) - expect(spy).toHaveBeenLastCalledWith([2, 1], [1, 1]) - vm.a = 3 - vm.b = 3 - }) - .then(() => { + expect(spy).toHaveBeenLastCalledWith([1, 1], []) + vm.a = 2 + expect(spy).toBeCalledTimes(1) + waitForUpdate(() => { expect(spy).toBeCalledTimes(2) - expect(spy).toHaveBeenLastCalledWith([3, 3], [2, 1]) + expect(spy).toHaveBeenLastCalledWith([2, 1], [1, 1]) + vm.a = 3 + vm.b = 3 }) - .then(done) - }) + .then(() => { + expect(spy).toBeCalledTimes(3) + expect(spy).toHaveBeenLastCalledWith([3, 3], [2, 1]) + }) + .then(done) + })) + + it('basic usage(immediate=false, flush=none-sync)', () => + new Promise((done, reject) => { + done.fail = reject + + const vm = new Vue({ + setup() { + const a = ref(1) + const b = ref(1) + watch([a, b], (n, o) => spy(n, o), { + immediate: false, + flush: 'post', + }) + + return { + a, + b, + } + }, + template: `
{{a}} {{b}}
`, + }).$mount() + vm.a = 2 + expect(spy).not.toHaveBeenCalled() + waitForUpdate(() => { + expect(spy).toBeCalledTimes(1) + expect(spy).toHaveBeenLastCalledWith([2, 1], [1, 1]) + vm.a = 3 + vm.b = 3 + }) + .then(() => { + expect(spy).toBeCalledTimes(2) + expect(spy).toHaveBeenLastCalledWith([3, 3], [2, 1]) + }) + .then(done) + })) it('basic usage(immediate=true, flush=sync)', () => { const vm = new Vue({ @@ -684,36 +738,42 @@ describe('api/watch', () => { }) describe('Out of setup', () => { - it('should work', (done) => { - const obj = reactive({ a: 1 }) - watch( - () => obj.a, - (n, o) => spy(n, o), - { immediate: true } - ) - expect(spy).toHaveBeenLastCalledWith(1, undefined) - obj.a = 2 - waitForUpdate(() => { - expect(spy).toBeCalledTimes(2) - expect(spy).toHaveBeenLastCalledWith(2, 1) - }).then(done) - }) + it('should work', () => + new Promise((done, reject) => { + done.fail = reject - it('simple effect', (done) => { - const obj = reactive({ a: 1 }) - watchEffect(() => spy(obj.a)) - expect(spy).toHaveBeenCalled() - waitForUpdate(() => { - expect(spy).toBeCalledTimes(1) - expect(spy).toHaveBeenLastCalledWith(1) + const obj = reactive({ a: 1 }) + watch( + () => obj.a, + (n, o) => spy(n, o), + { immediate: true } + ) + expect(spy).toHaveBeenLastCalledWith(1, undefined) obj.a = 2 - }) - .then(() => { + waitForUpdate(() => { expect(spy).toBeCalledTimes(2) - expect(spy).toHaveBeenLastCalledWith(2) + expect(spy).toHaveBeenLastCalledWith(2, 1) + }).then(done) + })) + + it('simple effect', () => + new Promise((done, reject) => { + done.fail = reject + + const obj = reactive({ a: 1 }) + watchEffect(() => spy(obj.a)) + expect(spy).toHaveBeenCalled() + waitForUpdate(() => { + expect(spy).toBeCalledTimes(1) + expect(spy).toHaveBeenLastCalledWith(1) + obj.a = 2 }) - .then(done) - }) + .then(() => { + expect(spy).toBeCalledTimes(2) + expect(spy).toHaveBeenLastCalledWith(2) + }) + .then(done) + })) }) describe('cleanup', () => { @@ -734,48 +794,54 @@ describe('api/watch', () => { return p } - it('work with effect', (done) => { - const id = ref(1) - const promises = [] - watchEffect((onCleanup) => { - const val = getAsyncValue(id.value) - promises.push(val) - onCleanup(() => { - val.cancel() + it('work with effect', () => + new Promise((done, reject) => { + done.fail = reject + + const id = ref(1) + const promises = [] + watchEffect((onCleanup) => { + const val = getAsyncValue(id.value) + promises.push(val) + onCleanup(() => { + val.cancel() + }) }) - }) - waitForUpdate(() => { - id.value = 2 - }) - .thenWaitFor(async (next) => { - const values = await Promise.all(promises) - expect(values).toEqual(['canceled', 2]) - next() + waitForUpdate(() => { + id.value = 2 }) - .then(done) - }) + .thenWaitFor(async (next) => { + const values = await Promise.all(promises) + expect(values).toEqual(['canceled', 2]) + next() + }) + .then(done) + })) - it('run cleanup when watch stops (effect)', (done) => { - const spy = jest.fn() - const cleanup = jest.fn() - const stop = watchEffect((onCleanup) => { - spy() - onCleanup(cleanup) - }) - waitForUpdate(() => { - expect(spy).toHaveBeenCalled() - stop() - }) - .then(() => { - expect(cleanup).toHaveBeenCalled() + it('run cleanup when watch stops (effect)', () => + new Promise((done, reject) => { + done.fail = reject + + const spy = vi.fn() + const cleanup = vi.fn() + const stop = watchEffect((onCleanup) => { + spy() + onCleanup(cleanup) }) - .then(done) - }) + waitForUpdate(() => { + expect(spy).toHaveBeenCalled() + stop() + }) + .then(() => { + expect(cleanup).toHaveBeenCalled() + }) + .then(done) + })) it('run cleanup when watch stops', () => { const id = ref(1) - const spy = jest.fn() - const cleanup = jest.fn() + const spy = vi.fn() + const cleanup = vi.fn() const stop = watch( id, (value, oldValue, onCleanup) => { @@ -790,60 +856,66 @@ describe('api/watch', () => { expect(cleanup).toHaveBeenCalled() }) - it('should not collect reactive in onCleanup', (done) => { - const ref1 = ref(1) - const ref2 = ref(1) - watchEffect((onCleanup) => { - spy(ref1.value) - onCleanup(() => { - ref2.value = ref2.value + 1 - }) - }) - waitForUpdate(() => { - expect(spy).toBeCalledTimes(1) - expect(spy).toHaveBeenLastCalledWith(1) - ref1.value++ - }) - .then(() => { - expect(spy).toBeCalledTimes(2) - expect(spy).toHaveBeenLastCalledWith(2) - ref2.value = 10 - }) - .then(() => { - expect(spy).toBeCalledTimes(2) - }) - .then(done) - }) + it('should not collect reactive in onCleanup', () => + new Promise((done, reject) => { + done.fail = reject - it('work with callback ', (done) => { - const id = ref(1) - const promises = [] - watch( - id, - (newVal, oldVal, onCleanup) => { - const val = getAsyncValue(newVal) - promises.push(val) + const ref1 = ref(1) + const ref2 = ref(1) + watchEffect((onCleanup) => { + spy(ref1.value) onCleanup(() => { - val.cancel() + ref2.value = ref2.value + 1 }) - }, - { immediate: true } - ) - id.value = 2 - waitForUpdate() - .thenWaitFor(async (next) => { - const values = await Promise.all(promises) - expect(values).toEqual(['canceled', 2]) - next() }) - .then(done) - }) + waitForUpdate(() => { + expect(spy).toBeCalledTimes(1) + expect(spy).toHaveBeenLastCalledWith(1) + ref1.value++ + }) + .then(() => { + expect(spy).toBeCalledTimes(2) + expect(spy).toHaveBeenLastCalledWith(2) + ref2.value = 10 + }) + .then(() => { + expect(spy).toBeCalledTimes(2) + }) + .then(done) + })) + + it('work with callback ', () => + new Promise((done, reject) => { + done.fail = reject + + const id = ref(1) + const promises = [] + watch( + id, + (newVal, oldVal, onCleanup) => { + const val = getAsyncValue(newVal) + promises.push(val) + onCleanup(() => { + val.cancel() + }) + }, + { immediate: true } + ) + id.value = 2 + waitForUpdate() + .thenWaitFor(async (next) => { + const values = await Promise.all(promises) + expect(values).toEqual(['canceled', 2]) + next() + }) + .then(done) + })) }) it('should execute watch when new key is added', () => { const r = reactive({}) - const cb = jest.fn() + const cb = vi.fn() watch(r, cb, { deep: true }) @@ -854,7 +926,7 @@ describe('api/watch', () => { it('watching sources: ref<[]>', async () => { const foo = ref([1]) - const cb = jest.fn() + const cb = vi.fn() watch(foo, cb) foo.value = foo.value.slice() await nextTick() @@ -869,7 +941,7 @@ describe('api/watch', () => { const div3 = computed(() => { return number.value > 3 ? '>3' : '<=3' }) - const cb = jest.fn() + const cb = vi.fn() watch([div2, div3], cb) number.value = 2 await nextTick() diff --git a/test/helpers/mockWarn.ts b/test/helpers/mockWarn.ts index 500238b9..c9be10d0 100644 --- a/test/helpers/mockWarn.ts +++ b/test/helpers/mockWarn.ts @@ -1,13 +1,15 @@ declare global { - namespace jest { - interface Matchers { - toHaveBeenWarned(): R - toHaveBeenWarnedLast(): R - toHaveBeenWarnedTimes(n: number): R + namespace Vi { + interface JestAssertion { + toHaveBeenWarned(): T + toHaveBeenWarnedLast(): T + toHaveBeenWarnedTimes(n: number): T } } } +import type { SpyInstance } from 'vitest' + export const mockError = () => mockWarn(true) export function mockWarn(asError = false) { @@ -76,12 +78,12 @@ export function mockWarn(asError = false) { }, }) - let warn: jest.SpyInstance + let warn: SpyInstance const asserted: Set = new Set() beforeEach(() => { asserted.clear() - warn = jest.spyOn(console, asError ? 'error' : 'warn') + warn = vi.spyOn(console, asError ? 'error' : 'warn') warn.mockImplementation(() => {}) }) diff --git a/test/helpers/wait-for-update.js b/test/helpers/wait-for-update.ts similarity index 88% rename from test/helpers/wait-for-update.js rename to test/helpers/wait-for-update.ts index df8334d1..c125757d 100644 --- a/test/helpers/wait-for-update.js +++ b/test/helpers/wait-for-update.ts @@ -1,4 +1,4 @@ -const Vue = require('vue') +import Vue from 'vue' // helper for async assertions. // Use like this: @@ -13,7 +13,7 @@ const Vue = require('vue') // }) // .then(done) -const waitForUpdate = (initialCb) => { +export const waitForUpdate = (initialCb) => { let end const queue = initialCb ? [initialCb] : [] @@ -69,12 +69,6 @@ const waitForUpdate = (initialCb) => { return chainer } -if (typeof window !== 'undefined') { - window.waitForUpdate = waitForUpdate -} - -exports.waitForUpdate = waitForUpdate - function timeout(n) { return (next) => setTimeout(next, n) } diff --git a/test/setup.spec.js b/test/setup.spec.js index 4f55b03d..8d5e75e2 100644 --- a/test/setup.spec.js +++ b/test/setup.spec.js @@ -1,5 +1,5 @@ -const Vue = require('vue/dist/vue.common.js') -const { +import Vue from 'vue/dist/vue.common.js' +import { ref, computed, h, @@ -16,12 +16,14 @@ const { onMounted, set, del, -} = require('../src') -const { sleep } = require('./helpers/utils') +} from '../src' +import { sleep } from './helpers/utils' describe('setup', () => { + let warn = null + beforeEach(() => { - warn = jest.spyOn(global.console, 'error').mockImplementation(() => null) + warn = vi.spyOn(global.console, 'error').mockImplementation(() => null) }) afterEach(() => { warn.mockRestore() @@ -93,52 +95,55 @@ describe('setup', () => { expect(vm.b).toBe(1) }) - it('should work with `methods` and `data` options', (done) => { - let calls = 0 - const vm = new Vue({ - template: `
{{a}}{{b}}{{c}}
`, - setup() { - return { - a: ref(1), - } - }, - beforeUpdate() { - calls++ - }, - created() { - this.m() - }, - data() { - return { - b: this.a, - c: 0, - } - }, - methods: { - m() { - this.c = this.a + it('should work with `methods` and `data` options', () => + new Promise((done, reject) => { + done.fail = reject + + let calls = 0 + const vm = new Vue({ + template: `
{{a}}{{b}}{{c}}
`, + setup() { + return { + a: ref(1), + } }, - }, - }).$mount() - expect(vm.a).toBe(1) - expect(vm.b).toBe(1) - expect(vm.c).toBe(1) - vm.a = 2 - waitForUpdate(() => { - expect(calls).toBe(1) - expect(vm.a).toBe(2) + beforeUpdate() { + calls++ + }, + created() { + this.m() + }, + data() { + return { + b: this.a, + c: 0, + } + }, + methods: { + m() { + this.c = this.a + }, + }, + }).$mount() + expect(vm.a).toBe(1) expect(vm.b).toBe(1) expect(vm.c).toBe(1) - vm.b = 2 - }) - .then(() => { - expect(calls).toBe(2) + vm.a = 2 + waitForUpdate(() => { + expect(calls).toBe(1) expect(vm.a).toBe(2) - expect(vm.b).toBe(2) + expect(vm.b).toBe(1) expect(vm.c).toBe(1) + vm.b = 2 }) - .then(done) - }) + .then(() => { + expect(calls).toBe(2) + expect(vm.a).toBe(2) + expect(vm.b).toBe(2) + expect(vm.c).toBe(1) + }) + .then(done) + })) it('should receive props as first params', () => { let props @@ -307,46 +312,49 @@ describe('setup', () => { expect(vm.$refs.test.b).toBe(1) }) - it('props should be reactive', (done) => { - let calls = 0 - let _props - const vm = new Vue({ - template: ``, - setup() { - return { msg: ref('hello') } - }, - beforeUpdate() { - calls++ - }, - components: { - child: { - template: `{{ localMsg }}`, - props: ['msg'], - setup(props) { - _props = props + it('props should be reactive', () => + new Promise((done, reject) => { + done.fail = reject - return { - localMsg: props.msg, - computedMsg: computed(() => props.msg + ' world'), - } + let calls = 0 + let _props + const vm = new Vue({ + template: ``, + setup() { + return { msg: ref('hello') } + }, + beforeUpdate() { + calls++ + }, + components: { + child: { + template: `{{ localMsg }}`, + props: ['msg'], + setup(props) { + _props = props + + return { + localMsg: props.msg, + computedMsg: computed(() => props.msg + ' world'), + } + }, }, }, - }, - }).$mount() + }).$mount() - expect(isReactive(_props)).toBe(true) + expect(isReactive(_props)).toBe(true) - const child = vm.$children[0] - expect(child.localMsg).toBe('hello') - expect(child.computedMsg).toBe('hello world') - expect(calls).toBe(0) - vm.msg = 'hi' - waitForUpdate(() => { + const child = vm.$children[0] expect(child.localMsg).toBe('hello') - expect(child.computedMsg).toBe('hi world') - expect(calls).toBe(1) - }).then(done) - }) + expect(child.computedMsg).toBe('hello world') + expect(calls).toBe(0) + vm.msg = 'hi' + waitForUpdate(() => { + expect(child.localMsg).toBe('hello') + expect(child.computedMsg).toBe('hi world') + expect(calls).toBe(1) + }).then(done) + })) it('toRefs(props) should not warn', async () => { let a @@ -407,37 +415,40 @@ describe('setup', () => { }).$mount() }) - it('should not make returned non-reactive object reactive', (done) => { - const vm = new Vue({ - setup() { - return { - form: { - a: 1, - b: 2, - }, - } - }, - template: '
{{ form.a }}, {{ form.b }}
', - }).$mount() - expect(vm.$el.textContent).toBe('1, 2') + it('should not make returned non-reactive object reactive', () => + new Promise((done, reject) => { + done.fail = reject - // should not trigger a re-render - vm.form.a = 2 - waitForUpdate(() => { + const vm = new Vue({ + setup() { + return { + form: { + a: 1, + b: 2, + }, + } + }, + template: '
{{ form.a }}, {{ form.b }}
', + }).$mount() expect(vm.$el.textContent).toBe('1, 2') - // not trigger event - vm.form = { a: 2, b: 3 } - }) - .then(() => { + // should not trigger a re-render + vm.form.a = 2 + waitForUpdate(() => { expect(vm.$el.textContent).toBe('1, 2') + + // not trigger event + vm.form = { a: 2, b: 3 } }) - .then(done) - }) + .then(() => { + expect(vm.$el.textContent).toBe('1, 2') + }) + .then(done) + })) it("should put a unenumerable '__ob__' for non-reactive object", () => { const clone = (obj) => JSON.parse(JSON.stringify(obj)) - const componentSetup = jest.fn((props) => { + const componentSetup = vi.fn((props) => { const internalOptions = clone(props.options) return { internalOptions } }) @@ -454,7 +465,7 @@ describe('setup', () => { }) it('current vue should exist in nested setup call', () => { - const spy = jest.fn() + const spy = vi.fn() new Vue({ setup() { new Vue({ @@ -491,47 +502,50 @@ describe('setup', () => { expect(p).toBe(undefined) }) - it('inline render function should work', (done) => { - // let createElement; - const vm = new Vue({ - props: ['msg'], - template: '
1
', - setup(props) { - const count = ref(0) - const increment = () => { - count.value++ - } + it('inline render function should work', () => + new Promise((done, reject) => { + done.fail = reject - return () => - h('div', [ - h('span', props.msg), - h( - 'button', - { - on: { - click: increment, + // let createElement; + const vm = new Vue({ + props: ['msg'], + template: '
1
', + setup(props) { + const count = ref(0) + const increment = () => { + count.value++ + } + + return () => + h('div', [ + h('span', props.msg), + h( + 'button', + { + on: { + click: increment, + }, }, - }, - count.value - ), - ]) - }, - propsData: { - msg: 'foo', - }, - }).$mount() - expect(vm.$el.querySelector('span').textContent).toBe('foo') - expect(vm.$el.querySelector('button').textContent).toBe('0') - vm.$el.querySelector('button').click() - waitForUpdate(() => { - expect(vm.$el.querySelector('button').textContent).toBe('1') - vm.msg = 'bar' - }) - .then(() => { - expect(vm.$el.querySelector('span').textContent).toBe('bar') + count.value + ), + ]) + }, + propsData: { + msg: 'foo', + }, + }).$mount() + expect(vm.$el.querySelector('span').textContent).toBe('foo') + expect(vm.$el.querySelector('button').textContent).toBe('0') + vm.$el.querySelector('button').click() + waitForUpdate(() => { + expect(vm.$el.querySelector('button').textContent).toBe('1') + vm.msg = 'bar' }) - .then(done) - }) + .then(() => { + expect(vm.$el.querySelector('span').textContent).toBe('bar') + }) + .then(done) + })) describe('setup unwrap', () => { test('ref', () => { @@ -825,7 +839,7 @@ describe('setup', () => { describe('Methods', () => { it('binds methods when calling with parenthesis', async () => { let context = null - const contextFunction = jest.fn(function () { + const contextFunction = vi.fn(function () { context = this }) @@ -845,7 +859,7 @@ describe('setup', () => { it('binds methods when calling without parenthesis', async () => { let context = null - const contextFunction = jest.fn(function () { + const contextFunction = vi.fn(function () { context = this }) @@ -1176,7 +1190,7 @@ describe('setup', () => { {}, { get() { - return jest.fn() + return vi.fn() }, } ) @@ -1223,7 +1237,7 @@ describe('setup', () => { // #794 it('should not trigger getter w/ object computed nested', () => { - const spy = jest.fn() + const spy = vi.fn() new Vue({ setup() { new Vue({ diff --git a/test/setupContext.spec.ts b/test/setupContext.spec.ts index 701bc95d..7943d5c2 100644 --- a/test/setupContext.spec.ts +++ b/test/setupContext.spec.ts @@ -65,9 +65,7 @@ describe('setupContext', () => { }) it('warn for slots calls outside of the render() function', () => { - let warn = jest - .spyOn(global.console, 'error') - .mockImplementation(() => null) + let warn = vi.spyOn(global.console, 'error').mockImplementation(() => null) createApp( defineComponent({ @@ -229,7 +227,7 @@ describe('setupContext', () => { // #794 it('should not trigger getter w/ object computed nested', async () => { - const spy = jest.fn() + const spy = vi.fn() createApp( defineComponent({ template: `
`, diff --git a/test/setupTest.js b/test/setupTest.js deleted file mode 100644 index 0f0e5cc4..00000000 --- a/test/setupTest.js +++ /dev/null @@ -1,9 +0,0 @@ -const Vue = require('vue/dist/vue.common') -const FullVue = require('vue/dist/vue.runtime.common') -const plugin = require('../src').default - -FullVue.config.productionTip = false -FullVue.config.devtools = false -Vue.config.productionTip = false -Vue.config.devtools = false -Vue.use(plugin) diff --git a/test/ssr/serverPrefetch.spec.js b/test/ssr/serverPrefetch.spec.js index 578c7866..14d2dd8c 100644 --- a/test/ssr/serverPrefetch.spec.js +++ b/test/ssr/serverPrefetch.spec.js @@ -1,12 +1,6 @@ -const Vue = require('vue/dist/vue.common.js') -const { createRenderer } = require('vue-server-renderer') -const { - ref, - onServerPrefetch, - getCurrentInstance, - isReactive, - reactive, -} = require('../../src') +import Vue from 'vue/dist/vue.common.js' +import { createRenderer } from 'vue-server-renderer' +import { ref, onServerPrefetch, getCurrentInstance } from '../../src' function fetch(result) { return new Promise((resolve) => { diff --git a/test/ssr/ssrReactive.spec.ts b/test/ssr/ssrReactive.spec.ts index c5fa4d6e..66c3dc3d 100644 --- a/test/ssr/ssrReactive.spec.ts +++ b/test/ssr/ssrReactive.spec.ts @@ -78,42 +78,43 @@ describe('SSR Reactive', () => { }) // #550 - it('props should work with set', async (done) => { - let props: any + it('props should work with set', () => + new Promise(async (done) => { + let props: any - const app = new Vue({ - render(this: any, h) { - return h('child', { attrs: { msg: this.msg } }) - }, - setup() { - return { msg: ref('hello') } - }, - components: { - child: { - render(this: any, h: any) { - return h('span', this.data.msg) - }, - props: ['msg'], - setup(_props) { - props = _props - - return { data: _props } + const app = new Vue({ + render(this: any, h) { + return h('child', { attrs: { msg: this.msg } }) + }, + setup() { + return { msg: ref('hello') } + }, + components: { + child: { + render(this: any, h: any) { + return h('span', this.data.msg) + }, + props: ['msg'], + setup(_props) { + props = _props + + return { data: _props } + }, }, }, - }, - }) + }) - const serverRenderer = createRenderer() - const html = await serverRenderer.renderToString(app) + const serverRenderer = createRenderer() + const html = await serverRenderer.renderToString(app) - expect(html).toBe('hello') + expect(html).toBe('hello') - expect(props.bar).toBeUndefined() - set(props, 'bar', 'bar') - expect(props.bar).toBe('bar') + expect(props.bar).toBeUndefined() + set(props, 'bar', 'bar') + expect(props.bar).toBe('bar') - done() - }) + done() + })) // #721 it('should behave correctly', () => { diff --git a/test/templateRefs.spec.js b/test/templateRefs.spec.js index 2becd297..42bfee01 100644 --- a/test/templateRefs.spec.js +++ b/test/templateRefs.spec.js @@ -1,73 +1,80 @@ -const Vue = require('vue/dist/vue.common.js') -const { ref, watchEffect, nextTick } = require('../src') +import Vue from 'vue/dist/vue.common.js' +import { ref, watchEffect, nextTick } from '../src' describe('ref', () => { - it('should work', (done) => { - let dummy - const vm = new Vue({ - setup() { - const ref1 = ref(null) - watchEffect(() => { - dummy = ref1.value - }) + it('should work', () => + new Promise((done) => { + let dummy + const vm = new Vue({ + setup() { + const ref1 = ref(null) + watchEffect(() => { + dummy = ref1.value + }) - return { - bar: ref1, - } - }, - template: `
+ return { + bar: ref1, + } + }, + template: `
`, - components: { - test: { - id: 'test', - template: '
test
', + components: { + test: { + id: 'test', + template: '
test
', + }, }, - }, - }).$mount() - vm.$nextTick() - .then(() => { - expect(dummy).toBe(vm.$refs.bar) - }) - .then(done) - }) - - it('should dynamically update refs', (done) => { - const vm = new Vue({ - setup() { - const ref1 = ref(null) - const ref2 = ref(null) - watchEffect(() => { - dummy1 = ref1.value - dummy2 = ref2.value + }).$mount() + vm.$nextTick() + .then(() => { + expect(dummy).toBe(vm.$refs.bar) }) + .then(done) + })) - return { - value: 'bar', - bar: ref1, - foo: ref2, - } - }, - template: '
', - }).$mount() - waitForUpdate(() => {}) - .then(() => { - expect(dummy1).toBe(vm.$refs.bar) - expect(dummy2).toBe(null) - vm.value = 'foo' - }) - .then(() => { - // vm updated. ref update occures after updated; - }) - .then(() => { - // no render cycle, empty tick - }) - .then(() => { - expect(dummy1).toBe(null) - expect(dummy2).toBe(vm.$refs.foo) - }) - .then(done) - }) + it('should dynamically update refs', () => + new Promise((done, reject) => { + done.fail = reject + + let dummy1 = null + let dummy2 = null + + const vm = new Vue({ + setup() { + const ref1 = ref(null) + const ref2 = ref(null) + watchEffect(() => { + dummy1 = ref1.value + dummy2 = ref2.value + }) + + return { + value: 'bar', + bar: ref1, + foo: ref2, + } + }, + template: '
', + }).$mount() + waitForUpdate(() => {}) + .then(() => { + expect(dummy1).toBe(vm.$refs.bar) + expect(dummy2).toBe(null) + vm.value = 'foo' + }) + .then(() => { + // vm updated. ref update occures after updated; + }) + .then(() => { + // no render cycle, empty tick + }) + .then(() => { + expect(dummy1).toBe(null) + expect(dummy2).toBe(vm.$refs.foo) + }) + .then(done) + })) // #296 it('should dynamically update refs in context', async () => { diff --git a/test/use.spec.ts b/test/use.spec.ts index 469e2f81..b375dbfb 100644 --- a/test/use.spec.ts +++ b/test/use.spec.ts @@ -25,7 +25,7 @@ describe('use', () => { config: { optionMergeStrategies: {}, }, - mixin: jest.fn(), + mixin: vi.fn(), } // @ts-ignore diff --git a/test/v3/reactivity/computed.spec.ts b/test/v3/reactivity/computed.spec.ts index 75517286..f903066b 100644 --- a/test/v3/reactivity/computed.spec.ts +++ b/test/v3/reactivity/computed.spec.ts @@ -23,7 +23,7 @@ describe('reactivity/computed', () => { it('should compute lazily', () => { const value = reactive<{ foo?: number }>({ foo: undefined }) - const getter = jest.fn(() => value.foo) + const getter = vi.fn(() => value.foo) const cValue = computed(getter) // lazy @@ -77,8 +77,8 @@ describe('reactivity/computed', () => { it('should trigger effect when chained', () => { const value = reactive({ foo: 0 }) - const getter1 = jest.fn(() => value.foo) - const getter2 = jest.fn(() => { + const getter1 = vi.fn(() => value.foo) + const getter2 = vi.fn(() => { return c1.value + 1 }) const c1 = computed(getter1) @@ -103,8 +103,8 @@ describe('reactivity/computed', () => { it('should trigger effect when chained (mixed invocations)', async () => { const value = reactive({ foo: 0 }) - const getter1 = jest.fn(() => value.foo) - const getter2 = jest.fn(() => { + const getter1 = vi.fn(() => value.foo) + const getter2 = vi.fn(() => { return c1.value + 1 }) const c1 = computed(getter1) diff --git a/test/v3/reactivity/del.spec.ts b/test/v3/reactivity/del.spec.ts index f590034e..ef544569 100644 --- a/test/v3/reactivity/del.spec.ts +++ b/test/v3/reactivity/del.spec.ts @@ -6,7 +6,7 @@ describe('reactivity/del', () => { const obj = reactive<{ a?: object }>({ a: {}, }) - const spy = jest.fn() + const spy = vi.fn() watch(obj, spy, { deep: true, flush: 'sync' }) delete obj.a // Vue 2 limitation expect(spy).not.toHaveBeenCalled() @@ -17,7 +17,7 @@ describe('reactivity/del', () => { const obj = reactive<{ a?: object }>({ a: {}, }) - const spy = jest.fn() + const spy = vi.fn() watch(obj, spy, { deep: true, flush: 'sync' }) del(obj, 'a') expect(spy).toBeCalledTimes(1) @@ -26,7 +26,7 @@ describe('reactivity/del', () => { it('should not remove element on array index and should not trigger reactivity', () => { const arr = ref([1, 2, 3]) - const spy = jest.fn() + const spy = vi.fn() watch(arr, spy, { flush: 'sync' }) delete arr.value[1] // Vue 2 limitation; workaround with .splice() expect(spy).not.toHaveBeenCalled() @@ -35,7 +35,7 @@ describe('reactivity/del', () => { it('should trigger reactivity when using del on array', () => { const arr = ref([1, 2, 3]) - const spy = jest.fn() + const spy = vi.fn() watch(arr, spy, { flush: 'sync' }) del(arr.value, 1) expect(spy).toBeCalledTimes(1) @@ -47,7 +47,7 @@ describe('reactivity/del', () => { const MAX_VALID_ARRAY_LENGTH = Math.pow(2, 32) - 1 const NON_VALIDD_INDEX = MAX_VALID_ARRAY_LENGTH + 1 set(arr.value, NON_VALIDD_INDEX, 0) - const spy = jest.fn() + const spy = vi.fn() watchEffect( () => { spy(arr.value) diff --git a/test/v3/reactivity/effectScope.spec.ts b/test/v3/reactivity/effectScope.spec.ts index f50a4b3f..c231348c 100644 --- a/test/v3/reactivity/effectScope.spec.ts +++ b/test/v3/reactivity/effectScope.spec.ts @@ -17,7 +17,7 @@ describe('reactivity/effect/scope', () => { mockWarn(true) it('should run', () => { - const fnSpy = jest.fn(() => {}) + const fnSpy = vi.fn(() => {}) new EffectScope().run(fnSpy) expect(fnSpy).toHaveBeenCalledTimes(1) }) @@ -210,7 +210,7 @@ describe('reactivity/effect/scope', () => { }) it('should warn onScopeDispose() is called when there is no active effect scope', () => { - const spy = jest.fn() + const spy = vi.fn() const scope = new EffectScope() scope.run(() => { onScopeDispose(spy) @@ -231,9 +231,9 @@ describe('reactivity/effect/scope', () => { it('test with higher level APIs', async () => { const r = ref(1) - const computedSpy = jest.fn() - const watchSpy = jest.fn() - const watchEffectSpy = jest.fn() + const computedSpy = vi.fn() + const watchSpy = vi.fn() + const watchEffectSpy = vi.fn() let c: ComputedRef const scope = new EffectScope() diff --git a/test/v3/reactivity/reactive.spec.ts b/test/v3/reactivity/reactive.spec.ts index 19dbe534..af18d2d7 100644 --- a/test/v3/reactivity/reactive.spec.ts +++ b/test/v3/reactivity/reactive.spec.ts @@ -12,9 +12,9 @@ import { } from '../../../src' describe('reactivity/reactive', () => { - let warn: jest.SpyInstance + let warn: vi.SpyInstance beforeEach(() => { - warn = jest.spyOn(global.console, 'error').mockImplementation(() => null) + warn = vi.spyOn(global.console, 'error').mockImplementation(() => null) warn.mockReset() }) afterEach(() => { diff --git a/test/v3/reactivity/readonly.spec.ts b/test/v3/reactivity/readonly.spec.ts index 8aa29ba6..2f371884 100644 --- a/test/v3/reactivity/readonly.spec.ts +++ b/test/v3/reactivity/readonly.spec.ts @@ -424,7 +424,7 @@ describe('reactivity/readonly', () => { // #712 test('watch should work for ref with shallowReadonly', async () => { - const cb = jest.fn() + const cb = vi.fn() const vm = new Vue({ template: '
{{ countRef }}
', setup() { @@ -452,7 +452,7 @@ describe('reactivity/readonly', () => { // #712 test('watch should work for reactive with shallowReadonly', async () => { - const cb = jest.fn() + const cb = vi.fn() const vm = new Vue({ template: '
{{ count.number }}
', setup() { diff --git a/test/v3/reactivity/set.spec.ts b/test/v3/reactivity/set.spec.ts index d0a76072..c6522c08 100644 --- a/test/v3/reactivity/set.spec.ts +++ b/test/v3/reactivity/set.spec.ts @@ -3,7 +3,7 @@ import { set, reactive, ref, watch, watchEffect } from '../../../src' describe('reactivity/set', () => { it('should not trigger reactivity on native object member assignment', () => { const obj = reactive<{ a?: number }>({}) - const spy = jest.fn() + const spy = vi.fn() watch(obj, spy, { deep: true, flush: 'sync' }) obj.a = 1 expect(spy).not.toHaveBeenCalled() @@ -12,7 +12,7 @@ describe('reactivity/set', () => { it('should trigger reactivity when using set on reactive object', () => { const obj = reactive<{ a?: number }>({}) - const spy = jest.fn() + const spy = vi.fn() watch(obj, spy, { deep: true, flush: 'sync' }) set(obj, 'a', 1) expect(spy).toBeCalledTimes(1) @@ -21,7 +21,7 @@ describe('reactivity/set', () => { it('should trigger watchEffect when using set to change value of array length', () => { const arr = ref([1, 2, 3]) - const spy = jest.fn() + const spy = vi.fn() watchEffect( () => { spy(arr.value) diff --git a/test/v3/runtime-core/apiAsyncComponent.spec.ts b/test/v3/runtime-core/apiAsyncComponent.spec.ts index 97f2941d..dbc54d04 100644 --- a/test/v3/runtime-core/apiAsyncComponent.spec.ts +++ b/test/v3/runtime-core/apiAsyncComponent.spec.ts @@ -151,7 +151,7 @@ describe('api: defineAsyncComponent', () => { render: () => (toggle.value ? h(Foo) : null), }) - const handler = jest + const handler = vi .spyOn(global.console, 'error') .mockImplementation(() => null) @@ -200,7 +200,7 @@ describe('api: defineAsyncComponent', () => { render: () => (toggle.value ? h(Foo) : null), }) - const handler = jest + const handler = vi .spyOn(global.console, 'error') .mockImplementation(() => null) @@ -247,7 +247,7 @@ describe('api: defineAsyncComponent', () => { render: () => (toggle.value ? h(Foo) : null), }) - jest.spyOn(global.console, 'error').mockImplementation(() => null) + vi.spyOn(global.console, 'error').mockImplementation(() => null) const vm = app.mount() expect(vm.$el.textContent).toBe('') @@ -296,7 +296,7 @@ describe('api: defineAsyncComponent', () => { render: () => (toggle.value ? h(Foo) : null), }) - const handler = jest + const handler = vi .spyOn(global.console, 'error') .mockImplementation(() => null) @@ -349,7 +349,7 @@ describe('api: defineAsyncComponent', () => { render: () => h(Foo), }) - const handler = jest + const handler = vi .spyOn(global.console, 'error') .mockImplementation(() => null) @@ -384,7 +384,7 @@ describe('api: defineAsyncComponent', () => { render: () => h(Foo), }) - const handler = jest + const handler = vi .spyOn(global.console, 'error') .mockImplementation(() => null) @@ -418,7 +418,7 @@ describe('api: defineAsyncComponent', () => { const app = createApp({ render: () => h(Foo), }) - const handler = jest + const handler = vi .spyOn(global.console, 'error') .mockImplementation(() => null) const vm = app.mount() @@ -452,7 +452,7 @@ describe('api: defineAsyncComponent', () => { const app = createApp({ render: () => h(Foo), }) - const handler = jest + const handler = vi .spyOn(global.console, 'error') .mockImplementation(() => null) const vm = app.mount() @@ -499,7 +499,7 @@ describe('api: defineAsyncComponent', () => { render: () => h(Foo), }) - jest.spyOn(global.console, 'error').mockImplementation(() => null) + vi.spyOn(global.console, 'error').mockImplementation(() => null) const vm = app.mount() expect(vm.$el.textContent).toBe('') @@ -543,7 +543,7 @@ describe('api: defineAsyncComponent', () => { render: () => h(Foo), }) - const handler = jest + const handler = vi .spyOn(global.console, 'error') .mockImplementation(() => null) const vm = app.mount() @@ -584,7 +584,7 @@ describe('api: defineAsyncComponent', () => { render: () => h(Foo), }) - const handler = jest + const handler = vi .spyOn(global.console, 'error') .mockImplementation(() => null) const vm = app.mount() diff --git a/test/v3/runtime-core/apiLifecycle.spec.ts b/test/v3/runtime-core/apiLifecycle.spec.ts index b616d243..ac22a676 100644 --- a/test/v3/runtime-core/apiLifecycle.spec.ts +++ b/test/v3/runtime-core/apiLifecycle.spec.ts @@ -16,7 +16,7 @@ import { describe('api: lifecycle hooks', () => { it('onBeforeMount', () => { const root = document.createElement('div') - const fn = jest.fn(() => { + const fn = vi.fn(() => { // should be called before inner div is rendered expect(root.innerHTML).toBe(``) }) @@ -34,7 +34,7 @@ describe('api: lifecycle hooks', () => { it('onMounted', () => { const root = document.createElement('div') - const fn = jest.fn(() => { + const fn = vi.fn(() => { // should be called after inner div is rendered expect(root.outerHTML).toBe(`
`) }) @@ -53,7 +53,7 @@ describe('api: lifecycle hooks', () => { it('onBeforeUpdate', async () => { const count = ref(0) // const root = document.createElement('div'); - const fn = jest.fn(() => { + const fn = vi.fn(() => { // should be called before inner div is updated expect(vm.$el.outerHTML).toBe(`
0
`) }) @@ -75,7 +75,7 @@ describe('api: lifecycle hooks', () => { it('onUpdated', async () => { const count = ref(0) // const root = document.createElement('div'); - const fn = jest.fn(() => { + const fn = vi.fn(() => { // should be called after inner div is updated expect(vm.$el.outerHTML).toBe(`
1
`) }) @@ -97,7 +97,7 @@ describe('api: lifecycle hooks', () => { // it('onBeforeUnmount', async () => { // const toggle = ref(true); // const root = document.createElement('div'); - // const fn = jest.fn(() => { + // const fn = vi.fn(() => { // // should be called before inner div is removed // expect(root.outerHTML).toBe(`
`); // }); @@ -126,7 +126,7 @@ describe('api: lifecycle hooks', () => { // it('onUnmounted', async () => { // const toggle = ref(true); // const root = document.createElement('div'); - // const fn = jest.fn(() => { + // const fn = vi.fn(() => { // // should be called after inner div is removed // expect(root.outerHTML).toBe(``); // }); @@ -155,7 +155,7 @@ describe('api: lifecycle hooks', () => { it('onBeforeUnmount in onMounted', async () => { const toggle = ref(true) const root = document.createElement('div') - const fn = jest.fn(() => { + const fn = vi.fn(() => { // should be called before inner div is removed expect(root.outerHTML).toBe(`
`) }) @@ -274,7 +274,7 @@ describe('api: lifecycle hooks', () => { // it('onRenderTracked', () => { // const events: DebuggerEvent[] = []; - // const onTrack = jest.fn((e: DebuggerEvent) => { + // const onTrack = vi.fn((e: DebuggerEvent) => { // events.push(e); // }); // const obj = reactive({ foo: 1, bar: 2 }); @@ -309,7 +309,7 @@ describe('api: lifecycle hooks', () => { // it('onRenderTriggered', async () => { // const events: DebuggerEvent[] = []; - // const onTrigger = jest.fn((e: DebuggerEvent) => { + // const onTrigger = vi.fn((e: DebuggerEvent) => { // events.push(e); // }); // const obj = reactive({ foo: 1, bar: 2 }); diff --git a/test/v3/runtime-core/apiWatch.spec.ts b/test/v3/runtime-core/apiWatch.spec.ts index 57dc6335..cd28dcb5 100644 --- a/test/v3/runtime-core/apiWatch.spec.ts +++ b/test/v3/runtime-core/apiWatch.spec.ts @@ -14,8 +14,8 @@ import { getRegisteredVueOrDefault } from '../../../src/runtimeContext' describe('api: watch', () => { const Vue = getRegisteredVueOrDefault() - // const warnSpy = jest.spyOn(console, 'warn'); - const warnSpy = jest.spyOn((Vue as any).util, 'warn') + // const warnSpy = vi.spyOn(console, 'warn'); + const warnSpy = vi.spyOn((Vue as any).util, 'warn') beforeEach(() => { warnSpy.mockReset() @@ -208,7 +208,7 @@ describe('api: watch', () => { it('cleanup registration (effect)', async () => { const state = reactive({ count: 0 }) - const cleanup = jest.fn() + const cleanup = vi.fn() let dummy const stop = watchEffect((onCleanup) => { onCleanup(cleanup) @@ -227,7 +227,7 @@ describe('api: watch', () => { it('cleanup registration (with source)', async () => { const count = ref(0) - const cleanup = jest.fn() + const cleanup = vi.fn() let dummy const stop = watch(count, (count, prevCount, onCleanup) => { onCleanup(cleanup) @@ -251,7 +251,7 @@ describe('api: watch', () => { // it('flush timing: post (default)', async () => { // const count = ref(0); // let callCount = 0; - // const assertion = jest.fn(count => { + // const assertion = vi.fn(count => { // callCount++; // // on mount, the watcher callback should be called before DOM render // // on update, should be called after the count is updated @@ -281,7 +281,7 @@ describe('api: watch', () => { // const count2 = ref(0); // let callCount = 0; - // const assertion = jest.fn((count, count2Value) => { + // const assertion = vi.fn((count, count2Value) => { // callCount++; // // on mount, the watcher callback should be called before DOM render // // on update, should be called before the count is updated @@ -322,7 +322,7 @@ describe('api: watch', () => { // const count2 = ref(0); // let callCount = 0; - // const assertion = jest.fn(count => { + // const assertion = vi.fn(count => { // callCount++; // // on mount, the watcher callback should be called before DOM render // // on update, should be called before the count is updated @@ -408,7 +408,7 @@ describe('api: watch', () => { it('immediate', async () => { const count = ref(0) - const cb = jest.fn() + const cb = vi.fn() watch(count, cb, { immediate: true }) expect(cb).toHaveBeenCalledTimes(1) count.value++ @@ -418,14 +418,14 @@ describe('api: watch', () => { it('immediate: triggers when initial value is null', async () => { const state = ref(null) - const spy = jest.fn() + const spy = vi.fn() watch(() => state.value, spy, { immediate: true }) expect(spy).toHaveBeenCalled() }) it('immediate: triggers when initial value is undefined', async () => { const state = ref() - const spy = jest.fn() + const spy = vi.fn() watch(() => state.value, spy, { immediate: true }) expect(spy).toHaveBeenCalled() state.value = 3 @@ -500,7 +500,7 @@ describe('api: watch', () => { // it('warn and not respect deep option when using effect', async () => { // const arr = ref([1, [2]]); - // const spy = jest.fn(); + // const spy = vi.fn(); // watchEffect( // () => { // spy(); @@ -577,7 +577,7 @@ describe('api: watch', () => { // #805 #807 it('watching sources: [ref<[]>] w/ deep', async () => { const foo = ref([1]) - const cb = jest.fn() + const cb = vi.fn() watch([foo], cb, { deep: true }) foo.value.push(2) await nextTick() diff --git a/test/v3/runtime-core/h.spec.ts b/test/v3/runtime-core/h.spec.ts index d77d4577..a5d17454 100644 --- a/test/v3/runtime-core/h.spec.ts +++ b/test/v3/runtime-core/h.spec.ts @@ -11,7 +11,7 @@ describe('renderer: h', () => { }) it('should not warn with called outside of render function', async () => { - const spy = jest.fn() + const spy = vi.fn() const Comp = { setup() { const instance = getCurrentInstance() diff --git a/test/vitest.setup.js b/test/vitest.setup.js new file mode 100644 index 00000000..9c88c0b8 --- /dev/null +++ b/test/vitest.setup.js @@ -0,0 +1,14 @@ +import Vue from 'vue/dist/vue.common' +import FullVue from 'vue/dist/vue.runtime.common' +import plugin from '../src' +import { waitForUpdate } from './helpers/wait-for-update' + +FullVue.config.productionTip = false +FullVue.config.devtools = false +Vue.config.productionTip = false +Vue.config.devtools = false +Vue.use(plugin) + +if (!global.waitForUpdate) { + global.waitForUpdate = waitForUpdate +} diff --git a/tsconfig.json b/tsconfig.json index ac0f7f33..f79735fb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,6 +2,7 @@ "compilerOptions": { "target": "es5", "lib": ["dom", "esnext"], + "types": ["vitest/globals"], "module": "esnext", "moduleResolution": "node", "skipLibCheck": true, @@ -19,5 +20,5 @@ "downlevelIteration": true, "noUnusedLocals": true }, - "include": ["src"] + "include": ["src", "test", "test-dts"] } diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 00000000..84ebc53e --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,16 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + watch: false, + globals: true, + setupFiles: ['./test/vitest.setup.js'], + include: ['./test/**/*.spec.{js,ts}'], + environment: 'jsdom', + }, + define: { + __DEV__: true, + __VERSION__: true, + _refBrand: true, + }, +})