diff --git a/.eslintrc.js b/.eslintrc.js index a4f8a63baf2..f31091da517 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -128,6 +128,7 @@ module.exports = defineConfig({ ], 'vitest/expect-expect': 'off', + 'vitest/prefer-each': 'error', 'vitest/valid-expect': ['error', { maxArgs: 2 }], }, }, diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a9dd8ca4441..593c17f00a9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -252,7 +252,7 @@ jobs: run: pnpm vitest run --coverage - name: Upload coverage to Codecov - uses: codecov/codecov-action@v3.1.3 + uses: codecov/codecov-action@v3.1.4 with: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: true diff --git a/CHANGELOG.md b/CHANGELOG.md index adc0ab49a10..a8f0ee3ac51 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [8.0.1](https://github.com/faker-js/faker/compare/v8.0.0...v8.0.1) (2023-05-15) + + +* **docs:** switch doc links to stable ([#2152](https://github.com/faker-js/faker/pull/2152)) ([8f741bd](https://github.com/faker-js/faker/commit/8f741bd4bda455517fd048b83d76bd8e6d89d78e)) + ## [8.0.0](https://github.com/faker-js/faker/compare/v8.0.0-beta.1...v8.0.0) (2023-05-11) diff --git a/README.md b/README.md index 1d16c55090c..b6dbd6b89d6 100644 --- a/README.md +++ b/README.md @@ -24,11 +24,11 @@ Please proceed to the [Getting Started Guide](https://fakerjs.dev/guide/) for th For detailed API documentation, please select the version of the documentation you are looking for. -| Version | Website | -| :---------: | :------------------------ | -| v8 (next) | https://next.fakerjs.dev/ | -| v7 (stable) | https://fakerjs.dev/ | -| v6 (old) | https://v6.fakerjs.dev/ | +| Version | Website | +| :----------: | :------------------------ | +| v8.\* (next) | https://next.fakerjs.dev/ | +| v8 (stable) | https://fakerjs.dev/ | +| v7 (old) | https://v7.fakerjs.dev/ | --- @@ -87,7 +87,7 @@ Thus, limiting the import to a single locale can speed up startup times. ## 💎 Modules -An in-depth overview of the API methods is available in the documentation for [v7 (stable)](https://fakerjs.dev/api/) and [v8 (next)](https://next.fakerjs.dev/api/). +An in-depth overview of the API methods is available in the documentation for [v8 (stable)](https://fakerjs.dev/api/) and [v8.\* (next)](https://next.fakerjs.dev/api/). ### Templates diff --git a/docs/guide/upgrading.md b/docs/guide/upgrading.md index 8dc353d120c..d20a311362a 100644 --- a/docs/guide/upgrading.md +++ b/docs/guide/upgrading.md @@ -284,12 +284,14 @@ By default, `faker.number.float` no longer defaults to a precision of 0.01 ```js // OLD +faker.datatype.number(); // 88999 (NOTE: The default max was 99999) faker.datatype.number({ max: 100 }); // 35 faker.datatype.number({ max: 100, precision: 0.01 }); // 35.21 faker.datatype.float({ max: 100 }); // 35.21 faker.datatype.float({ max: 100, precision: 0.001 }); // 35.211 // NEW +faker.number.int({ max: 99999 }); // 88999 (NOTE: the default max is now Number.MAX_SAFE_INTEGER) faker.number.int({ max: 100 }); // 35 faker.number.float({ max: 100 }); // 35.21092065742612 faker.number.float({ max: 100, precision: 0.01 }); // 35.21 diff --git a/package.json b/package.json index 2076e3149b8..8297362cd92 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@faker-js/faker", - "version": "8.0.0", + "version": "8.0.1", "description": "Generate massive amounts of fake contextual data", "keywords": [ "faker", @@ -93,53 +93,52 @@ }, "devDependencies": { "@actions/github": "~5.1.1", - "@algolia/client-search": "~4.17.0", - "@types/glob": "~8.1.0", + "@algolia/client-search": "~4.17.1", "@types/markdown-it": "~12.2.3", "@types/node": "~20.1.2", "@types/prettier": "~2.7.2", - "@types/react": "~18.2.6", + "@types/react": "~18.2.7", "@types/sanitize-html": "~2.9.0", "@types/semver": "~7.5.0", "@types/validator": "~13.7.17", - "@typescript-eslint/eslint-plugin": "~5.59.5", - "@typescript-eslint/parser": "~5.59.5", - "@vitest/coverage-c8": "~0.31.0", - "@vitest/ui": "~0.31.0", + "@typescript-eslint/eslint-plugin": "~5.59.7", + "@typescript-eslint/parser": "~5.59.7", + "@vitest/coverage-c8": "~0.31.1", + "@vitest/ui": "~0.31.1", "@vueuse/core": "~10.1.2", "c8": "~7.13.0", "conventional-changelog-cli": "~2.2.2", - "cypress": "~12.12.0", - "esbuild": "~0.17.18", - "eslint": "~8.40.0", + "cypress": "~12.13.0", + "esbuild": "~0.17.19", + "eslint": "~8.41.0", "eslint-config-prettier": "~8.8.0", "eslint-define-config": "~1.20.0", "eslint-gitignore": "~0.1.0", "eslint-plugin-deprecation": "~1.4.1", - "eslint-plugin-jsdoc": "~44.1.0", + "eslint-plugin-jsdoc": "~44.2.5", "eslint-plugin-prettier": "~4.2.1", - "eslint-plugin-vitest": "~0.2.2", - "glob": "~10.2.3", + "eslint-plugin-vitest": "~0.2.3", + "glob": "~10.2.4", "npm-run-all": "~4.1.5", "picocolors": "~1.0.0", "prettier": "2.8.8", "prettier-plugin-organize-imports": "~3.2.2", "react": "~18.2.0", "react-dom": "~18.2.0", - "rimraf": "~5.0.0", + "rimraf": "~5.0.1", "sanitize-html": "~2.10.0", - "semver": "~7.5.0", + "semver": "~7.5.1", "standard-version": "~9.5.0", "tsx": "~3.12.7", "typedoc": "~0.24.7", "typescript": "~4.9.5", "validator": "~13.9.0", - "vite": "~4.3.5", - "vitepress": "1.0.0-alpha.75", - "vitest": "~0.31.0", - "vue": "~3.2.47" + "vite": "~4.3.8", + "vitepress": "1.0.0-beta.1", + "vitest": "~0.31.1", + "vue": "~3.3.4" }, - "packageManager": "pnpm@8.5.0", + "packageManager": "pnpm@8.5.1", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0", "npm": ">=6.14.13" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e012aaa1ee3..7bd63e89157 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,11 +5,8 @@ devDependencies: specifier: ~5.1.1 version: 5.1.1 '@algolia/client-search': - specifier: ~4.17.0 - version: 4.17.0 - '@types/glob': - specifier: ~8.1.0 - version: 8.1.0 + specifier: ~4.17.1 + version: 4.17.1 '@types/markdown-it': specifier: ~12.2.3 version: 12.2.3 @@ -20,8 +17,8 @@ devDependencies: specifier: ~2.7.2 version: 2.7.2 '@types/react': - specifier: ~18.2.6 - version: 18.2.6 + specifier: ~18.2.7 + version: 18.2.7 '@types/sanitize-html': specifier: ~2.9.0 version: 2.9.0 @@ -32,20 +29,20 @@ devDependencies: specifier: ~13.7.17 version: 13.7.17 '@typescript-eslint/eslint-plugin': - specifier: ~5.59.5 - version: 5.59.5(@typescript-eslint/parser@5.59.5)(eslint@8.40.0)(typescript@4.9.5) + specifier: ~5.59.7 + version: 5.59.7(@typescript-eslint/parser@5.59.7)(eslint@8.41.0)(typescript@4.9.5) '@typescript-eslint/parser': - specifier: ~5.59.5 - version: 5.59.5(eslint@8.40.0)(typescript@4.9.5) + specifier: ~5.59.7 + version: 5.59.7(eslint@8.41.0)(typescript@4.9.5) '@vitest/coverage-c8': - specifier: ~0.31.0 - version: 0.31.0(vitest@0.31.0) + specifier: ~0.31.1 + version: 0.31.1(vitest@0.31.1) '@vitest/ui': - specifier: ~0.31.0 - version: 0.31.0(vitest@0.31.0) + specifier: ~0.31.1 + version: 0.31.1(vitest@0.31.1) '@vueuse/core': specifier: ~10.1.2 - version: 10.1.2(vue@3.2.47) + version: 10.1.2(vue@3.3.4) c8: specifier: ~7.13.0 version: 7.13.0 @@ -53,38 +50,38 @@ devDependencies: specifier: ~2.2.2 version: 2.2.2 cypress: - specifier: ~12.12.0 - version: 12.12.0 + specifier: ~12.13.0 + version: 12.13.0 esbuild: - specifier: ~0.17.18 - version: 0.17.18 + specifier: ~0.17.19 + version: 0.17.19 eslint: - specifier: ~8.40.0 - version: 8.40.0 + specifier: ~8.41.0 + version: 8.41.0 eslint-config-prettier: specifier: ~8.8.0 - version: 8.8.0(eslint@8.40.0) + version: 8.8.0(eslint@8.41.0) eslint-define-config: specifier: ~1.20.0 version: 1.20.0 eslint-gitignore: specifier: ~0.1.0 - version: 0.1.0(eslint@8.40.0) + version: 0.1.0(eslint@8.41.0) eslint-plugin-deprecation: specifier: ~1.4.1 - version: 1.4.1(eslint@8.40.0)(typescript@4.9.5) + version: 1.4.1(eslint@8.41.0)(typescript@4.9.5) eslint-plugin-jsdoc: - specifier: ~44.1.0 - version: 44.1.0(eslint@8.40.0) + specifier: ~44.2.5 + version: 44.2.5(eslint@8.41.0) eslint-plugin-prettier: specifier: ~4.2.1 - version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.40.0)(prettier@2.8.8) + version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.41.0)(prettier@2.8.8) eslint-plugin-vitest: - specifier: ~0.2.2 - version: 0.2.2(eslint@8.40.0)(typescript@4.9.5) + specifier: ~0.2.3 + version: 0.2.3(eslint@8.41.0)(typescript@4.9.5) glob: - specifier: ~10.2.3 - version: 10.2.3 + specifier: ~10.2.4 + version: 10.2.4 npm-run-all: specifier: ~4.1.5 version: 4.1.5 @@ -104,14 +101,14 @@ devDependencies: specifier: ~18.2.0 version: 18.2.0(react@18.2.0) rimraf: - specifier: ~5.0.0 - version: 5.0.0 + specifier: ~5.0.1 + version: 5.0.1 sanitize-html: specifier: ~2.10.0 version: 2.10.0 semver: - specifier: ~7.5.0 - version: 7.5.0 + specifier: ~7.5.1 + version: 7.5.1 standard-version: specifier: ~9.5.0 version: 9.5.0 @@ -128,17 +125,17 @@ devDependencies: specifier: ~13.9.0 version: 13.9.0 vite: - specifier: ~4.3.5 - version: 4.3.5(@types/node@20.1.2) + specifier: ~4.3.8 + version: 4.3.8(@types/node@20.1.2) vitepress: - specifier: 1.0.0-alpha.75 - version: 1.0.0-alpha.75(@algolia/client-search@4.17.0)(@types/node@20.1.2)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) + specifier: 1.0.0-beta.1 + version: 1.0.0-beta.1(@algolia/client-search@4.17.1)(@types/node@20.1.2)(@types/react@18.2.7)(react-dom@18.2.0)(react@18.2.0) vitest: - specifier: ~0.31.0 - version: 0.31.0(@vitest/ui@0.31.0) + specifier: ~0.31.1 + version: 0.31.1(@vitest/ui@0.31.1) vue: - specifier: ~3.2.47 - version: 3.2.47 + specifier: ~3.3.4 + version: 3.3.4 packages: @@ -165,14 +162,14 @@ packages: '@algolia/autocomplete-shared': 1.8.2 dev: true - /@algolia/autocomplete-preset-algolia@1.8.2(@algolia/client-search@4.17.0)(algoliasearch@4.17.0): + /@algolia/autocomplete-preset-algolia@1.8.2(@algolia/client-search@4.17.1)(algoliasearch@4.17.0): resolution: {integrity: sha512-J0oTx4me6ZM9kIKPuL3lyU3aB8DEvpVvR6xWmHVROx5rOYJGQcZsdG4ozxwcOyiiu3qxMkIbzntnV1S1VWD8yA==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: '@algolia/autocomplete-shared': 1.8.2 - '@algolia/client-search': 4.17.0 + '@algolia/client-search': 4.17.1 algoliasearch: 4.17.0 dev: true @@ -190,6 +187,10 @@ packages: resolution: {integrity: sha512-g8mXzkrcUBIPZaulAuqE7xyHhLAYAcF2xSch7d9dABheybaU3U91LjBX6eJTEB7XVhEsgK4Smi27vWtAJRhIKQ==} dev: true + /@algolia/cache-common@4.17.1: + resolution: {integrity: sha512-fvi1WT8aSiGAKrcTw8Qg3RYgcwW8GZMHcqEm4AyDBEy72JZlFBSY80cTQ75MslINjCHXLDT+9EN8AGI9WVY7uA==} + dev: true + /@algolia/cache-in-memory@4.17.0: resolution: {integrity: sha512-PT32ciC/xI8z919d0oknWVu3kMfTlhQn3MKxDln3pkn+yA7F7xrxSALysxquv+MhFfNAcrtQ/oVvQVBAQSHtdw==} dependencies: @@ -220,6 +221,13 @@ packages: '@algolia/transporter': 4.17.0 dev: true + /@algolia/client-common@4.17.1: + resolution: {integrity: sha512-+r7kg4EgbFnGsDnoGSVNtXZO8xvZ0vzf1WAOV7sqV9PMf1bp6cpJP/3IuPrSk4t5w2KVl+pC8jfTM7HcFlfBEQ==} + dependencies: + '@algolia/requester-common': 4.17.1 + '@algolia/transporter': 4.17.1 + dev: true + /@algolia/client-personalization@4.17.0: resolution: {integrity: sha512-RMzN4dZLIta1YuwT7QC9o+OeGz2cU6eTOlGNE/6RcUBLOU3l9tkCOdln5dPE2jp8GZXPl2yk54b2nSs1+pAjqw==} dependencies: @@ -236,10 +244,22 @@ packages: '@algolia/transporter': 4.17.0 dev: true + /@algolia/client-search@4.17.1: + resolution: {integrity: sha512-Q5YfT5gVkx60PZDQBqp/zH9aUbBdC7HVvxupiHUgnCKqRQsRZjOhLest7AI6FahepuZLBZS62COrO7v+JvKY7w==} + dependencies: + '@algolia/client-common': 4.17.1 + '@algolia/requester-common': 4.17.1 + '@algolia/transporter': 4.17.1 + dev: true + /@algolia/logger-common@4.17.0: resolution: {integrity: sha512-DGuoZqpTmIKJFDeyAJ7M8E/LOenIjWiOsg1XJ1OqAU/eofp49JfqXxbfgctlVZVmDABIyOz8LqEoJ6ZP4DTyvw==} dev: true + /@algolia/logger-common@4.17.1: + resolution: {integrity: sha512-Us28Ot+fLEmX9M96sa65VZ8EyEEzhYPxfhV9aQyKDjfXbUdJlJxKt6wZpoEg9RAPSdO8IjK9nmuW2P8au3rRsg==} + dev: true + /@algolia/logger-console@4.17.0: resolution: {integrity: sha512-zMPvugQV/gbXUvWBCzihw6m7oxIKp48w37QBIUu/XqQQfxhjoOE9xyfJr1KldUt5FrYOKZJVsJaEjTsu+bIgQg==} dependencies: @@ -256,6 +276,10 @@ packages: resolution: {integrity: sha512-XJjmWFEUlHu0ijvcHBoixuXfEoiRUdyzQM6YwTuB8usJNIgShua8ouFlRWF8iCeag0vZZiUm4S2WCVBPkdxFgg==} dev: true + /@algolia/requester-common@4.17.1: + resolution: {integrity: sha512-HggXdjvVFQR0I5l7hM5WdHgQ1tqcRWeyXZz8apQ7zPWZhirmY2E9D6LVhDh/UnWQNEm7nBtM+eMFONJ3bZccIQ==} + dev: true + /@algolia/requester-node-http@4.17.0: resolution: {integrity: sha512-bpb/wDA1aC6WxxM8v7TsFspB7yBN3nqCGs2H1OADolQR/hiAIjAxusbuMxVbRFOdaUvAIqioIIkWvZdpYNIn8w==} dependencies: @@ -270,6 +294,14 @@ packages: '@algolia/requester-common': 4.17.0 dev: true + /@algolia/transporter@4.17.1: + resolution: {integrity: sha512-ZM+qhX47Vh46mWH8/U9ihvy98HdTYpYQDSlqBD7IbiUbbyoCMke+qmdSX2MGhR2FCcXBSxejsJKKVAfbpaLVgg==} + dependencies: + '@algolia/cache-common': 4.17.1 + '@algolia/logger-common': 4.17.1 + '@algolia/requester-common': 4.17.1 + dev: true + /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} @@ -365,15 +397,15 @@ packages: - supports-color dev: true - /@docsearch/css@3.3.4: - resolution: {integrity: sha512-vDwCDoVXDgopw/hvr0zEADew2wWaGP8Qq0Bxhgii1Ewz2t4fQeyJwIRN/mWADeLFYPVkpz8TpEbxya/i6Tm0WA==} + /@docsearch/css@3.4.0: + resolution: {integrity: sha512-Hg8Xfma+rFwRi6Y/pfei4FJoQ1hdVURmmNs/XPoMTCPAImU+d5yxj+M+qdLtNjWRpfWziU4dQcqY94xgFBn2dg==} dev: true - /@docsearch/js@3.3.4(@algolia/client-search@4.17.0)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Xd2saBziXJ1UuVpcDz94zAFEFAM6ap993agh0za2e3LDZLhaW993b1f9gyUL4e1CZLsR076tztG2un2gVncvpA==} + /@docsearch/js@3.4.0(@algolia/client-search@4.17.1)(@types/react@18.2.7)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-uOtOHZJv+5PQmL68+srVzlGhLejnEBJgZl1bR87Zh/uK5RUI7p6el1R8hGTl2F8K2tCloNRxTMtXyYUNbMV+qw==} dependencies: - '@docsearch/react': 3.3.4(@algolia/client-search@4.17.0)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) - preact: 10.13.2 + '@docsearch/react': 3.4.0(@algolia/client-search@4.17.1)(@types/react@18.2.7)(react-dom@18.2.0)(react@18.2.0) + preact: 10.14.0 transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -381,8 +413,8 @@ packages: - react-dom dev: true - /@docsearch/react@3.3.4(@algolia/client-search@4.17.0)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-aeOf1WC5zMzBEi2SI6WWznOmIo9rnpN4p7a3zHXxowVciqlI4HsZGtOR9nFOufLeolv7HibwLlaM0oyUqJxasw==} + /@docsearch/react@3.4.0(@algolia/client-search@4.17.1)(@types/react@18.2.7)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ufrp5879XYGojgS30ZAp8H4qIMbahRHB9M85VDBP36Xgz5QjYM54i1URKj5e219F7gqTtOivfztFTij6itc0MQ==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' react: '>= 16.8.0 < 19.0.0' @@ -396,9 +428,9 @@ packages: optional: true dependencies: '@algolia/autocomplete-core': 1.8.2 - '@algolia/autocomplete-preset-algolia': 1.8.2(@algolia/client-search@4.17.0)(algoliasearch@4.17.0) - '@docsearch/css': 3.3.4 - '@types/react': 18.2.6 + '@algolia/autocomplete-preset-algolia': 1.8.2(@algolia/client-search@4.17.1)(algoliasearch@4.17.0) + '@docsearch/css': 3.4.0 + '@types/react': 18.2.7 algoliasearch: 4.17.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -406,8 +438,8 @@ packages: - '@algolia/client-search' dev: true - /@es-joy/jsdoccomment@0.38.0: - resolution: {integrity: sha512-TFac4Bnv0ZYNkEeDnOWHQhaS1elWlvOCQxH06iHeu5iffs+hCaLVIZJwF+FqksQi68R4i66Pu+4DfFGvble+Uw==} + /@es-joy/jsdoccomment@0.39.4: + resolution: {integrity: sha512-Jvw915fjqQct445+yron7Dufix9A+m9j1fCJYlCo1FWlRvTxa3pjJelxdSTdaLWcTwRU6vbL+NYjO4YuNIS5Qg==} engines: {node: '>=16'} dependencies: comment-parser: 1.3.1 @@ -425,7 +457,7 @@ packages: /@esbuild-kit/core-utils@3.1.0: resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} dependencies: - esbuild: 0.17.18 + esbuild: 0.17.19 source-map-support: 0.5.21 dev: true @@ -436,8 +468,8 @@ packages: get-tsconfig: 4.5.0 dev: true - /@esbuild/android-arm64@0.17.18: - resolution: {integrity: sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==} + /@esbuild/android-arm64@0.17.19: + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -445,8 +477,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.17.18: - resolution: {integrity: sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==} + /@esbuild/android-arm@0.17.19: + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -454,8 +486,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.17.18: - resolution: {integrity: sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==} + /@esbuild/android-x64@0.17.19: + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -463,8 +495,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.17.18: - resolution: {integrity: sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==} + /@esbuild/darwin-arm64@0.17.19: + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -472,8 +504,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.17.18: - resolution: {integrity: sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==} + /@esbuild/darwin-x64@0.17.19: + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -481,8 +513,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.17.18: - resolution: {integrity: sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==} + /@esbuild/freebsd-arm64@0.17.19: + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -490,8 +522,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.17.18: - resolution: {integrity: sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==} + /@esbuild/freebsd-x64@0.17.19: + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -499,8 +531,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.17.18: - resolution: {integrity: sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==} + /@esbuild/linux-arm64@0.17.19: + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -508,8 +540,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.17.18: - resolution: {integrity: sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==} + /@esbuild/linux-arm@0.17.19: + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -517,8 +549,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.17.18: - resolution: {integrity: sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==} + /@esbuild/linux-ia32@0.17.19: + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -526,8 +558,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.17.18: - resolution: {integrity: sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==} + /@esbuild/linux-loong64@0.17.19: + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -535,8 +567,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.17.18: - resolution: {integrity: sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==} + /@esbuild/linux-mips64el@0.17.19: + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -544,8 +576,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.17.18: - resolution: {integrity: sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==} + /@esbuild/linux-ppc64@0.17.19: + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -553,8 +585,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.17.18: - resolution: {integrity: sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==} + /@esbuild/linux-riscv64@0.17.19: + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -562,8 +594,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.17.18: - resolution: {integrity: sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==} + /@esbuild/linux-s390x@0.17.19: + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -571,8 +603,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.17.18: - resolution: {integrity: sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==} + /@esbuild/linux-x64@0.17.19: + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -580,8 +612,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.17.18: - resolution: {integrity: sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==} + /@esbuild/netbsd-x64@0.17.19: + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -589,8 +621,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.17.18: - resolution: {integrity: sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==} + /@esbuild/openbsd-x64@0.17.19: + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -598,8 +630,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.17.18: - resolution: {integrity: sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==} + /@esbuild/sunos-x64@0.17.19: + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -607,8 +639,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.17.18: - resolution: {integrity: sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==} + /@esbuild/win32-arm64@0.17.19: + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -616,8 +648,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.17.18: - resolution: {integrity: sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==} + /@esbuild/win32-ia32@0.17.19: + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -625,8 +657,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.17.18: - resolution: {integrity: sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==} + /@esbuild/win32-x64@0.17.19: + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -634,13 +666,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.40.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.41.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.40.0 + eslint: 8.41.0 eslint-visitor-keys: 3.4.1 dev: true @@ -666,8 +698,8 @@ packages: - supports-color dev: true - /@eslint/js@8.40.0: - resolution: {integrity: sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==} + /@eslint/js@8.41.0: + resolution: {integrity: sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -877,13 +909,6 @@ packages: resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} dev: true - /@types/glob@8.1.0: - resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 20.1.2 - dev: true - /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true @@ -907,16 +932,12 @@ packages: resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} dev: true - /@types/minimatch@5.1.2: - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - dev: true - /@types/minimist@1.2.2: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node@14.18.46: - resolution: {integrity: sha512-n4yVT5FuY5NCcGHCosQSGvvCT74HhowymPN2OEcsHPw6U1NuxV9dvxWbrM2dnBukWjdMYzig1WfIkWdTTQJqng==} + /@types/node@14.18.47: + resolution: {integrity: sha512-OuJi8bIng4wYHHA3YpKauL58dZrPxro3d0tabPHyiNF8rKfGKuVfr83oFlPLmKri1cX+Z3cJP39GXmnqkP11Gw==} dev: true /@types/node@20.1.2: @@ -935,8 +956,8 @@ packages: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: true - /@types/react@18.2.6: - resolution: {integrity: sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==} + /@types/react@18.2.7: + resolution: {integrity: sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 @@ -981,8 +1002,8 @@ packages: dev: true optional: true - /@typescript-eslint/eslint-plugin@5.59.5(@typescript-eslint/parser@5.59.5)(eslint@8.40.0)(typescript@4.9.5): - resolution: {integrity: sha512-feA9xbVRWJZor+AnLNAr7A8JRWeZqHUf4T9tlP+TN04b05pFVhO5eN7/O93Y/1OUlLMHKbnJisgDURs/qvtqdg==} + /@typescript-eslint/eslint-plugin@5.59.7(@typescript-eslint/parser@5.59.7)(eslint@8.41.0)(typescript@4.9.5): + resolution: {integrity: sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -993,24 +1014,24 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.59.5(eslint@8.40.0)(typescript@4.9.5) - '@typescript-eslint/scope-manager': 5.59.5 - '@typescript-eslint/type-utils': 5.59.5(eslint@8.40.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.5(eslint@8.40.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.7(eslint@8.41.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.59.7 + '@typescript-eslint/type-utils': 5.59.7(eslint@8.41.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.7(eslint@8.41.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.40.0 + eslint: 8.41.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 - semver: 7.5.0 + semver: 7.5.1 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.59.5(eslint@8.40.0)(typescript@4.9.5): - resolution: {integrity: sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==} + /@typescript-eslint/parser@5.59.7(eslint@8.41.0)(typescript@4.9.5): + resolution: {integrity: sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1019,11 +1040,11 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.59.5 - '@typescript-eslint/types': 5.59.5 - '@typescript-eslint/typescript-estree': 5.59.5(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.59.7 + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.40.0 + eslint: 8.41.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -1037,8 +1058,16 @@ packages: '@typescript-eslint/visitor-keys': 5.59.5 dev: true - /@typescript-eslint/type-utils@5.59.5(eslint@8.40.0)(typescript@4.9.5): - resolution: {integrity: sha512-4eyhS7oGym67/pSxA2mmNq7X164oqDYNnZCUayBwJZIRVvKpBCMBzFnFxjeoDeShjtO6RQBHBuwybuX3POnDqg==} + /@typescript-eslint/scope-manager@5.59.7: + resolution: {integrity: sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/visitor-keys': 5.59.7 + dev: true + + /@typescript-eslint/type-utils@5.59.7(eslint@8.41.0)(typescript@4.9.5): + resolution: {integrity: sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -1047,10 +1076,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.5(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.5(eslint@8.40.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.7(eslint@8.41.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.40.0 + eslint: 8.41.0 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: @@ -1062,6 +1091,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@typescript-eslint/types@5.59.7: + resolution: {integrity: sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@typescript-eslint/typescript-estree@5.59.5(typescript@4.9.5): resolution: {integrity: sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1076,28 +1110,69 @@ packages: debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.0 + semver: 7.5.1 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.59.5(eslint@8.40.0)(typescript@4.9.5): + /@typescript-eslint/typescript-estree@5.59.7(typescript@4.9.5): + resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/visitor-keys': 5.59.7 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.1 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@5.59.5(eslint@8.41.0)(typescript@4.9.5): resolution: {integrity: sha512-sCEHOiw+RbyTii9c3/qN74hYDPNORb8yWCoPLmB7BIflhplJ65u2PBpdRla12e3SSTJ2erRkPjz7ngLHhUegxA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.40.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) '@types/json-schema': 7.0.11 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.5 '@typescript-eslint/types': 5.59.5 '@typescript-eslint/typescript-estree': 5.59.5(typescript@4.9.5) - eslint: 8.40.0 + eslint: 8.41.0 + eslint-scope: 5.1.1 + semver: 7.5.1 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@5.59.7(eslint@8.41.0)(typescript@4.9.5): + resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) + '@types/json-schema': 7.0.11 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.59.7 + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) + eslint: 8.41.0 eslint-scope: 5.1.1 - semver: 7.5.0 + semver: 7.5.1 transitivePeerDependencies: - supports-color - typescript @@ -1111,19 +1186,27 @@ packages: eslint-visitor-keys: 3.4.1 dev: true - /@vitejs/plugin-vue@4.2.2(vite@4.3.5)(vue@3.2.47): - resolution: {integrity: sha512-kNH4wMAqs13UiZe/2If1ioO0Mjz71rr2oALTl2c5ajBIox9Vz/UGW/wGkr7GA3SC6Eb29c1HtzAtxdGfbXAkfQ==} + /@typescript-eslint/visitor-keys@5.59.7: + resolution: {integrity: sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.7 + eslint-visitor-keys: 3.4.1 + dev: true + + /@vitejs/plugin-vue@4.2.3(vite@4.3.8)(vue@3.3.4): + resolution: {integrity: sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.3.5(@types/node@20.1.2) - vue: 3.2.47 + vite: 4.3.8(@types/node@20.1.2) + vue: 3.3.4 dev: true - /@vitest/coverage-c8@0.31.0(vitest@0.31.0): - resolution: {integrity: sha512-h72qN1D962AO7UefQVulm9JFP5ACS7OfhCdBHioXU8f7ohH/+NTZCgAqmgcfRNHHO/8wLFxx+93YVxhodkEJVA==} + /@vitest/coverage-c8@0.31.1(vitest@0.31.1): + resolution: {integrity: sha512-6TkjQpmgYez7e3dbAUoYdRXxWN81BojCmUILJwgCy39uZFG33DsQ0rSRSZC9beAEdCZTpxR63nOvd9hxDQcJ0g==} peerDependencies: vitest: '>=0.30.0 <1' dependencies: @@ -1132,157 +1215,207 @@ packages: magic-string: 0.30.0 picocolors: 1.0.0 std-env: 3.3.3 - vitest: 0.31.0(@vitest/ui@0.31.0) + vitest: 0.31.1(@vitest/ui@0.31.1) dev: true - /@vitest/expect@0.31.0: - resolution: {integrity: sha512-Jlm8ZTyp6vMY9iz9Ny9a0BHnCG4fqBa8neCF6Pk/c/6vkUk49Ls6UBlgGAU82QnzzoaUs9E/mUhq/eq9uMOv/g==} + /@vitest/expect@0.31.1: + resolution: {integrity: sha512-BV1LyNvhnX+eNYzJxlHIGPWZpwJFZaCcOIzp2CNG0P+bbetenTupk6EO0LANm4QFt0TTit+yqx7Rxd1qxi/SQA==} dependencies: - '@vitest/spy': 0.31.0 - '@vitest/utils': 0.31.0 + '@vitest/spy': 0.31.1 + '@vitest/utils': 0.31.1 chai: 4.3.7 dev: true - /@vitest/runner@0.31.0: - resolution: {integrity: sha512-H1OE+Ly7JFeBwnpHTrKyCNm/oZgr+16N4qIlzzqSG/YRQDATBYmJb/KUn3GrZaiQQyL7GwpNHVZxSQd6juLCgw==} + /@vitest/runner@0.31.1: + resolution: {integrity: sha512-imWuc82ngOtxdCUpXwtEzZIuc1KMr+VlQ3Ondph45VhWoQWit5yvG/fFcldbnCi8DUuFi+NmNx5ehMUw/cGLUw==} dependencies: - '@vitest/utils': 0.31.0 + '@vitest/utils': 0.31.1 concordance: 5.0.4 p-limit: 4.0.0 pathe: 1.1.0 dev: true - /@vitest/snapshot@0.31.0: - resolution: {integrity: sha512-5dTXhbHnyUMTMOujZPB0wjFjQ6q5x9c8TvAsSPUNKjp1tVU7i9pbqcKPqntyu2oXtmVxKbuHCqrOd+Ft60r4tg==} + /@vitest/snapshot@0.31.1: + resolution: {integrity: sha512-L3w5uU9bMe6asrNzJ8WZzN+jUTX4KSgCinEJPXyny0o90fG4FPQMV0OWsq7vrCWfQlAilMjDnOF9nP8lidsJ+g==} dependencies: magic-string: 0.30.0 pathe: 1.1.0 pretty-format: 27.5.1 dev: true - /@vitest/spy@0.31.0: - resolution: {integrity: sha512-IzCEQ85RN26GqjQNkYahgVLLkULOxOm5H/t364LG0JYb3Apg0PsYCHLBYGA006+SVRMWhQvHlBBCyuByAMFmkg==} + /@vitest/spy@0.31.1: + resolution: {integrity: sha512-1cTpt2m9mdo3hRLDyCG2hDQvRrePTDgEJBFQQNz1ydHHZy03EiA6EpFxY+7ODaY7vMRCie+WlFZBZ0/dQWyssQ==} dependencies: tinyspy: 2.1.0 dev: true - /@vitest/ui@0.31.0(vitest@0.31.0): - resolution: {integrity: sha512-Dy86l6r3/dbJposgm7w+oqb/15UWJ0lDBbEQaS1ived3+0CTaMbT8OMkUf9vNBkSL47kvBHEBnZLa5fw5i9gUQ==} + /@vitest/ui@0.31.1(vitest@0.31.1): + resolution: {integrity: sha512-+JJ2+rvRPAVxFLNE+WJOMzOjxqYPn7V2hl00uNwid6kquD+UHTa716Z7szfNeZMLnHOHv+fxq1UgLCymvVpE5w==} peerDependencies: vitest: '>=0.30.1 <1' dependencies: - '@vitest/utils': 0.31.0 + '@vitest/utils': 0.31.1 fast-glob: 3.2.12 fflate: 0.7.4 flatted: 3.2.7 pathe: 1.1.0 picocolors: 1.0.0 sirv: 2.0.3 - vitest: 0.31.0(@vitest/ui@0.31.0) + vitest: 0.31.1(@vitest/ui@0.31.1) dev: true - /@vitest/utils@0.31.0: - resolution: {integrity: sha512-kahaRyLX7GS1urekRXN2752X4gIgOGVX4Wo8eDUGUkTWlGpXzf5ZS6N9RUUS+Re3XEE8nVGqNyxkSxF5HXlGhQ==} + /@vitest/utils@0.31.1: + resolution: {integrity: sha512-yFyRD5ilwojsZfo3E0BnH72pSVSuLg2356cN1tCEe/0RtDzxTPYwOomIC+eQbot7m6DRy4tPZw+09mB7NkbMmA==} dependencies: concordance: 5.0.4 loupe: 2.3.6 pretty-format: 27.5.1 dev: true - /@vue/compiler-core@3.2.47: - resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==} + /@vue/compiler-core@3.3.4: + resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} dependencies: '@babel/parser': 7.21.8 - '@vue/shared': 3.2.47 + '@vue/shared': 3.3.4 estree-walker: 2.0.2 - source-map: 0.6.1 + source-map-js: 1.0.2 dev: true - /@vue/compiler-dom@3.2.47: - resolution: {integrity: sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==} + /@vue/compiler-dom@3.3.4: + resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==} dependencies: - '@vue/compiler-core': 3.2.47 - '@vue/shared': 3.2.47 + '@vue/compiler-core': 3.3.4 + '@vue/shared': 3.3.4 dev: true - /@vue/compiler-sfc@3.2.47: - resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==} + /@vue/compiler-sfc@3.3.4: + resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==} dependencies: '@babel/parser': 7.21.8 - '@vue/compiler-core': 3.2.47 - '@vue/compiler-dom': 3.2.47 - '@vue/compiler-ssr': 3.2.47 - '@vue/reactivity-transform': 3.2.47 - '@vue/shared': 3.2.47 + '@vue/compiler-core': 3.3.4 + '@vue/compiler-dom': 3.3.4 + '@vue/compiler-ssr': 3.3.4 + '@vue/reactivity-transform': 3.3.4 + '@vue/shared': 3.3.4 estree-walker: 2.0.2 - magic-string: 0.25.9 + magic-string: 0.30.0 postcss: 8.4.23 - source-map: 0.6.1 + source-map-js: 1.0.2 dev: true - /@vue/compiler-ssr@3.2.47: - resolution: {integrity: sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==} + /@vue/compiler-ssr@3.3.4: + resolution: {integrity: sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==} dependencies: - '@vue/compiler-dom': 3.2.47 - '@vue/shared': 3.2.47 + '@vue/compiler-dom': 3.3.4 + '@vue/shared': 3.3.4 dev: true /@vue/devtools-api@6.5.0: resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} dev: true - /@vue/reactivity-transform@3.2.47: - resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} + /@vue/reactivity-transform@3.3.4: + resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==} dependencies: '@babel/parser': 7.21.8 - '@vue/compiler-core': 3.2.47 - '@vue/shared': 3.2.47 + '@vue/compiler-core': 3.3.4 + '@vue/shared': 3.3.4 estree-walker: 2.0.2 - magic-string: 0.25.9 + magic-string: 0.30.0 dev: true - /@vue/reactivity@3.2.47: - resolution: {integrity: sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==} + /@vue/reactivity@3.3.4: + resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==} dependencies: - '@vue/shared': 3.2.47 + '@vue/shared': 3.3.4 dev: true - /@vue/runtime-core@3.2.47: - resolution: {integrity: sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==} + /@vue/runtime-core@3.3.4: + resolution: {integrity: sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==} dependencies: - '@vue/reactivity': 3.2.47 - '@vue/shared': 3.2.47 + '@vue/reactivity': 3.3.4 + '@vue/shared': 3.3.4 dev: true - /@vue/runtime-dom@3.2.47: - resolution: {integrity: sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==} + /@vue/runtime-dom@3.3.4: + resolution: {integrity: sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==} dependencies: - '@vue/runtime-core': 3.2.47 - '@vue/shared': 3.2.47 - csstype: 2.6.21 + '@vue/runtime-core': 3.3.4 + '@vue/shared': 3.3.4 + csstype: 3.1.2 dev: true - /@vue/server-renderer@3.2.47(vue@3.2.47): - resolution: {integrity: sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==} + /@vue/server-renderer@3.3.4(vue@3.3.4): + resolution: {integrity: sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==} peerDependencies: - vue: 3.2.47 + vue: 3.3.4 dependencies: - '@vue/compiler-ssr': 3.2.47 - '@vue/shared': 3.2.47 - vue: 3.2.47 + '@vue/compiler-ssr': 3.3.4 + '@vue/shared': 3.3.4 + vue: 3.3.4 dev: true - /@vue/shared@3.2.47: - resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==} + /@vue/shared@3.3.4: + resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} dev: true - /@vueuse/core@10.1.2(vue@3.2.47): + /@vueuse/core@10.1.2(vue@3.3.4): resolution: {integrity: sha512-roNn8WuerI56A5uiTyF/TEYX0Y+VKlhZAF94unUfdhbDUI+NfwQMn4FUnUscIRUhv3344qvAghopU4bzLPNFlA==} dependencies: '@types/web-bluetooth': 0.0.17 '@vueuse/metadata': 10.1.2 - '@vueuse/shared': 10.1.2(vue@3.2.47) - vue-demi: 0.14.1(vue@3.2.47) + '@vueuse/shared': 10.1.2(vue@3.3.4) + vue-demi: 0.14.1(vue@3.3.4) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: true + + /@vueuse/integrations@10.1.2(focus-trap@7.4.3)(vue@3.3.4): + resolution: {integrity: sha512-wUpG3Wv6LiWerOwCzOAM0iGhNQ4vfFUTkhj/xQy7TLXduh2M3D8N08aS0KqlxsejY6R8NLxydDIM+68QfHZZ8Q==} + peerDependencies: + async-validator: '*' + axios: '*' + change-case: '*' + drauu: '*' + focus-trap: '*' + fuse.js: '*' + idb-keyval: '*' + jwt-decode: '*' + nprogress: '*' + qrcode: '*' + sortablejs: '*' + universal-cookie: '*' + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true + dependencies: + '@vueuse/core': 10.1.2(vue@3.3.4) + '@vueuse/shared': 10.1.2(vue@3.3.4) + focus-trap: 7.4.3 + vue-demi: 0.14.1(vue@3.3.4) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -1292,10 +1425,10 @@ packages: resolution: {integrity: sha512-3mc5BqN9aU2SqBeBuWE7ne4OtXHoHKggNgxZR2K+zIW4YLsy6xoZ4/9vErQs6tvoKDX6QAqm3lvsrv0mczAwIQ==} dev: true - /@vueuse/shared@10.1.2(vue@3.2.47): + /@vueuse/shared@10.1.2(vue@3.3.4): resolution: {integrity: sha512-1uoUTPBlgyscK9v6ScGeVYDDzlPSFXBlxuK7SfrDGyUTBiznb3mNceqhwvZHjtDRELZEN79V5uWPTF1VDV8svA==} dependencies: - vue-demi: 0.14.1(vue@3.2.47) + vue-demi: 0.14.1(vue@3.3.4) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -1610,7 +1743,7 @@ packages: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 dev: true /callsites@3.1.0: @@ -1772,7 +1905,7 @@ packages: dev: true /concat-map@0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true /concat-stream@2.0.0: @@ -1795,7 +1928,7 @@ packages: js-string-escape: 1.0.1 lodash: 4.17.21 md5-hex: 3.0.1 - semver: 7.5.0 + semver: 7.5.1 well-known-symbols: 2.0.0 dev: true @@ -2008,23 +2141,19 @@ packages: which: 2.0.2 dev: true - /csstype@2.6.21: - resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} - dev: true - /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} dev: true - /cypress@12.12.0: - resolution: {integrity: sha512-UU5wFQ7SMVCR/hyKok/KmzG6fpZgBHHfrXcHzDmPHWrT+UUetxFzQgt7cxCszlwfozckzwkd22dxMwl/vNkWRw==} + /cypress@12.13.0: + resolution: {integrity: sha512-QJlSmdPk+53Zhy69woJMySZQJoWfEWun3X5OOenGsXjRPVfByVTHorxNehbzhZrEzH9RDUDqVcck0ahtlS+N/Q==} engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0} hasBin: true requiresBuild: true dependencies: '@cypress/request': 2.88.11 '@cypress/xvfb': 1.2.4(supports-color@8.1.1) - '@types/node': 14.18.46 + '@types/node': 14.18.47 '@types/sinonjs__fake-timers': 8.1.1 '@types/sizzle': 2.3.3 arch: 2.2.0 @@ -2059,7 +2188,7 @@ packages: pretty-bytes: 5.6.0 proxy-from-env: 1.0.0 request-progress: 3.0.0 - semver: 7.5.0 + semver: 7.5.1 supports-color: 8.1.1 tmp: 0.2.1 untildify: 4.0.0 @@ -2283,7 +2412,7 @@ packages: es-set-tostringtag: 2.0.1 es-to-primitive: 1.2.1 function.prototype.name: 1.1.5 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 get-symbol-description: 1.0.0 globalthis: 1.0.3 gopd: 1.0.1 @@ -2317,7 +2446,7 @@ packages: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 has: 1.0.3 has-tostringtag: 1.0.0 dev: true @@ -2337,34 +2466,34 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild@0.17.18: - resolution: {integrity: sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==} + /esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.18 - '@esbuild/android-arm64': 0.17.18 - '@esbuild/android-x64': 0.17.18 - '@esbuild/darwin-arm64': 0.17.18 - '@esbuild/darwin-x64': 0.17.18 - '@esbuild/freebsd-arm64': 0.17.18 - '@esbuild/freebsd-x64': 0.17.18 - '@esbuild/linux-arm': 0.17.18 - '@esbuild/linux-arm64': 0.17.18 - '@esbuild/linux-ia32': 0.17.18 - '@esbuild/linux-loong64': 0.17.18 - '@esbuild/linux-mips64el': 0.17.18 - '@esbuild/linux-ppc64': 0.17.18 - '@esbuild/linux-riscv64': 0.17.18 - '@esbuild/linux-s390x': 0.17.18 - '@esbuild/linux-x64': 0.17.18 - '@esbuild/netbsd-x64': 0.17.18 - '@esbuild/openbsd-x64': 0.17.18 - '@esbuild/sunos-x64': 0.17.18 - '@esbuild/win32-arm64': 0.17.18 - '@esbuild/win32-ia32': 0.17.18 - '@esbuild/win32-x64': 0.17.18 + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 dev: true /escalade@3.1.1: @@ -2382,13 +2511,13 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@8.8.0(eslint@8.40.0): + /eslint-config-prettier@8.8.0(eslint@8.41.0): resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.40.0 + eslint: 8.41.0 dev: true /eslint-define-config@1.20.0: @@ -2396,7 +2525,7 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13', pnpm: '>= 7.0.0'} dev: true - /eslint-gitignore@0.1.0(eslint@8.40.0): + /eslint-gitignore@0.1.0(eslint@8.41.0): resolution: {integrity: sha512-VFvY5Wyjuz5xXDC/NeONHzsh4YQNok2Gzg4SftAAuhkbrdHv5CChjfiFyLKhRlgOdCJr5kBquaLXHtuDBTW2/Q==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -2404,20 +2533,20 @@ packages: dependencies: array.prototype.flatmap: 1.3.1 debug: 4.3.4(supports-color@8.1.1) - eslint: 8.40.0 + eslint: 8.41.0 fast-glob: 3.2.12 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-deprecation@1.4.1(eslint@8.40.0)(typescript@4.9.5): + /eslint-plugin-deprecation@1.4.1(eslint@8.41.0)(typescript@4.9.5): resolution: {integrity: sha512-4vxTghWzxsBukPJVQupi6xlTuDc8Pyi1QlRCrFiLgwLPMJQW3cJCNaehJUKQqQFvuue5m4W27e179Y3Qjzeghg==} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 typescript: ^3.7.5 || ^4.0.0 || ^5.0.0 dependencies: - '@typescript-eslint/utils': 5.59.5(eslint@8.40.0)(typescript@4.9.5) - eslint: 8.40.0 + '@typescript-eslint/utils': 5.59.5(eslint@8.41.0)(typescript@4.9.5) + eslint: 8.41.0 tslib: 2.5.0 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 @@ -2425,26 +2554,26 @@ packages: - supports-color dev: true - /eslint-plugin-jsdoc@44.1.0(eslint@8.40.0): - resolution: {integrity: sha512-tMIdZXChUhjK7YUsilrQjUOerLxxq4RgmHcN+Q1Hk+SroG0OHjZMGRcLkqE0+82/qtwCay+S195vllpUduP7UA==} + /eslint-plugin-jsdoc@44.2.5(eslint@8.41.0): + resolution: {integrity: sha512-KtuhaYy2GmdY2IQE5t+1lup8O4P05c+V4gKcj45PCxFM0OxmRq2uQlfOS1AgYVgPYIBKGE86DxrbKP24HKpORA==} engines: {node: '>=16'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@es-joy/jsdoccomment': 0.38.0 + '@es-joy/jsdoccomment': 0.39.4 are-docs-informative: 0.0.2 comment-parser: 1.3.1 debug: 4.3.4(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint: 8.40.0 + eslint: 8.41.0 esquery: 1.5.0 - semver: 7.5.0 + semver: 7.5.1 spdx-expression-parse: 3.0.1 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.40.0)(prettier@2.8.8): + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.41.0)(prettier@2.8.8): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2455,20 +2584,20 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.40.0 - eslint-config-prettier: 8.8.0(eslint@8.40.0) + eslint: 8.41.0 + eslint-config-prettier: 8.8.0(eslint@8.41.0) prettier: 2.8.8 prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-vitest@0.2.2(eslint@8.40.0)(typescript@4.9.5): - resolution: {integrity: sha512-f6E90twgtAAuIE8P2YOy4f1RBVbZ0NB9yoyeHSpwYL6xiNxT4fmq6UHZoR4tHN+NMkbtAoZtiTr1EmqSpB2C4A==} + /eslint-plugin-vitest@0.2.3(eslint@8.41.0)(typescript@4.9.5): + resolution: {integrity: sha512-eqyiIY0Hhyp/2+AgNDDFrVhVT0hSXMbAyjFLB87E5CCHxelH9eNrJZe9qVElPPVpuJ201nQ/wmUupaO5EguxKQ==} engines: {node: 14.x || >= 16} peerDependencies: eslint: '>=8.0.0' dependencies: - '@typescript-eslint/utils': 5.59.5(eslint@8.40.0)(typescript@4.9.5) - eslint: 8.40.0 + '@typescript-eslint/utils': 5.59.7(eslint@8.41.0)(typescript@4.9.5) + eslint: 8.41.0 transitivePeerDependencies: - supports-color - typescript @@ -2495,15 +2624,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.40.0: - resolution: {integrity: sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==} + /eslint@8.41.0: + resolution: {integrity: sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.40.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) '@eslint-community/regexpp': 4.5.1 '@eslint/eslintrc': 2.0.3 - '@eslint/js': 8.40.0 + '@eslint/js': 8.41.0 '@humanwhocodes/config-array': 0.11.8 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -2523,13 +2652,12 @@ packages: find-up: 5.0.0 glob-parent: 6.0.2 globals: 13.20.0 - grapheme-splitter: 1.0.4 + graphemer: 1.4.0 ignore: 5.2.4 import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-sdsl: 4.4.0 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 @@ -2741,6 +2869,12 @@ packages: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true + /focus-trap@7.4.3: + resolution: {integrity: sha512-BgSSbK4GPnS2VbtZ50VtOv1Sti6DIkj3+LkVjiWMNjLeAp1SH1UlLx3ULu/DCu4vq5R4/uvTm+zrvsMsuYmGLg==} + dependencies: + tabbable: 6.1.2 + dev: true + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: @@ -2825,11 +2959,12 @@ packages: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true - /get-intrinsic@1.2.0: - resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} + /get-intrinsic@1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: function-bind: 1.1.1 has: 1.0.3 + has-proto: 1.0.1 has-symbols: 1.0.3 dev: true @@ -2856,7 +2991,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 dev: true /get-tsconfig@4.5.0: @@ -2924,16 +3059,28 @@ packages: is-glob: 4.0.3 dev: true - /glob@10.2.3: - resolution: {integrity: sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==} + /glob@10.2.4: + resolution: {integrity: sha512-fDboBse/sl1oXSLhIp0FcCJgzW9KmhC/q8ULTKC82zc+DL3TL7FNb8qlt5qqXN53MsKEUSIcb+7DLmEygOE5Yw==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: foreground-child: 3.1.1 jackspeak: 2.2.0 minimatch: 9.0.0 - minipass: 5.0.0 - path-scurry: 1.8.0 + minipass: 6.0.0 + path-scurry: 1.9.1 + dev: true + + /glob@10.2.6: + resolution: {integrity: sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.2.0 + minimatch: 9.0.1 + minipass: 6.0.2 + path-scurry: 1.9.1 dev: true /glob@7.2.3: @@ -2983,7 +3130,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 dev: true /graceful-fs@4.2.11: @@ -2994,6 +3141,10 @@ packages: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + /handlebars@4.7.7: resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} engines: {node: '>=0.4.7'} @@ -3029,7 +3180,7 @@ packages: /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 dev: true /has-proto@1.0.1: @@ -3145,7 +3296,7 @@ packages: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 has: 1.0.3 side-channel: 1.0.4 dev: true @@ -3154,7 +3305,7 @@ packages: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 is-typed-array: 1.1.10 dev: true @@ -3372,10 +3523,6 @@ packages: '@pkgjs/parseargs': 0.11.0 dev: true - /js-sdsl@4.4.0: - resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} - dev: true - /js-string-escape@1.0.1: resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} engines: {node: '>= 0.8'} @@ -3602,12 +3749,6 @@ packages: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} dev: true - /magic-string@0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - dependencies: - sourcemap-codec: 1.4.8 - dev: true - /magic-string@0.30.0: resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} engines: {node: '>=12'} @@ -3723,6 +3864,13 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch@9.0.1: + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -3736,17 +3884,22 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} + /minipass@6.0.0: + resolution: {integrity: sha512-mvD5U4pUen1aWcjTxUgdoMg6PB98dcV0obc/OiPzls79++IpgNoO+MCbOHRlKfWIOvjIjmjUygjZmSStP7B0Og==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /minipass@6.0.2: + resolution: {integrity: sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==} + engines: {node: '>=16 || 14 >=14.17'} dev: true - /minisearch@6.0.1: - resolution: {integrity: sha512-Ly1w0nHKnlhAAh6/BF/+9NgzXfoJxaJ8nhopFhQ3NcvFJrFIL+iCg9gw9e9UMBD+XIsp/RyznJ/o5UIe5Kw+kg==} + /minisearch@6.1.0: + resolution: {integrity: sha512-PNxA/X8pWk+TiqPbsoIYH0GQ5Di7m6326/lwU/S4mlo4wGQddIcf/V//1f9TB0V4j59b57b+HZxt8h3iMROGvg==} dev: true - /mlly@1.2.0: - resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==} + /mlly@1.2.1: + resolution: {integrity: sha512-1aMEByaWgBPEbWV2BOPEMySRrzl7rIHXmQxam4DM8jVjalTQDjpN2ZKOLUrwyhfZQO7IXHml2StcHMhooDeEEQ==} dependencies: acorn: 8.8.2 pathe: 1.1.0 @@ -3821,7 +3974,7 @@ packages: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.12.0 - semver: 7.5.0 + semver: 7.5.1 validate-npm-package-license: 3.0.4 dev: true @@ -4027,12 +4180,12 @@ packages: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true - /path-scurry@1.8.0: - resolution: {integrity: sha512-IjTrKseM404/UAWA8bBbL3Qp6O2wXkanuIE3seCxBH7ctRuvH1QRawy1N3nVDHGkdeZsjOsSe/8AQBL/VQCy2g==} + /path-scurry@1.9.1: + resolution: {integrity: sha512-UgmoiySyjFxP6tscZDgWGEAgsW5ok8W3F5CJDnnH2pozwSTGE6eH7vwTotMwATWA2r5xqdkKdxYPkwlJjAI/3g==} engines: {node: '>=16 || 14 >=14.17'} dependencies: lru-cache: 9.1.1 - minipass: 5.0.0 + minipass: 6.0.2 dev: true /path-type@3.0.0: @@ -4092,7 +4245,7 @@ packages: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: jsonc-parser: 3.2.0 - mlly: 1.2.0 + mlly: 1.2.1 pathe: 1.1.0 dev: true @@ -4105,8 +4258,8 @@ packages: source-map-js: 1.0.2 dev: true - /preact@10.13.2: - resolution: {integrity: sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw==} + /preact@10.14.0: + resolution: {integrity: sha512-4oh2sf208mKAdL5AQtzXxE387iSGNWMX/YjwMjH6m/XROILKAmx5Pbs2FsXrW7ixoVGGjpfYSBB833vOwYxNxw==} dev: true /prelude-ls@1.2.1: @@ -4347,16 +4500,16 @@ packages: glob: 7.2.3 dev: true - /rimraf@5.0.0: - resolution: {integrity: sha512-Jf9llaP+RvaEVS5nPShYFhtXIrb3LRKP281ib3So0KkeZKo2wIKyq0Re7TOSwanasA423PSr6CCIL4bP6T040g==} + /rimraf@5.0.1: + resolution: {integrity: sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==} engines: {node: '>=14'} hasBin: true dependencies: - glob: 10.2.3 + glob: 10.2.6 dev: true - /rollup@3.21.6: - resolution: {integrity: sha512-SXIICxvxQxR3D4dp/3LDHZIJPC8a4anKMHd4E3Jiz2/JnY+2bEjqrOokAauc5ShGVNFHlEFjBXAXlaxkJqIqSg==} + /rollup@3.21.7: + resolution: {integrity: sha512-KXPaEuR8FfUoK2uHwNjxTmJ18ApyvD6zJpYv9FOJSqLStmt6xOY84l1IjK2dSolQmoXknrhEFRaPRgOPdqCT5w==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -4387,7 +4540,7 @@ packages: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 is-regex: 1.1.4 dev: true @@ -4422,8 +4575,8 @@ packages: hasBin: true dev: true - /semver@7.5.0: - resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} + /semver@7.5.1: + resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} engines: {node: '>=10'} hasBin: true dependencies: @@ -4471,7 +4624,7 @@ packages: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 object-inspect: 1.12.3 dev: true @@ -4537,11 +4690,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /sourcemap-codec@1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - dev: true - /spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: @@ -4612,7 +4760,7 @@ packages: figures: 3.2.0 find-up: 5.0.0 git-semver-tags: 4.1.1 - semver: 7.5.0 + semver: 7.5.1 stringify-package: 1.0.1 yargs: 16.2.0 dev: true @@ -4758,6 +4906,10 @@ packages: engines: {node: '>= 0.4'} dev: true + /tabbable@6.1.2: + resolution: {integrity: sha512-qCN98uP7i9z0fIS4amQ5zbGBOq+OSigYeGvPy7NDk8Y9yncqDZ9pRPgfsc2PJIVM9RrJj7GIfuRgmjoUU9zTHQ==} + dev: true + /temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} @@ -5061,7 +5213,7 @@ packages: dev: true /verror@1.10.0: - resolution: {integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=} + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} dependencies: assert-plus: 1.0.0 @@ -5069,17 +5221,17 @@ packages: extsprintf: 1.3.0 dev: true - /vite-node@0.31.0(@types/node@20.1.2): - resolution: {integrity: sha512-8x1x1LNuPvE2vIvkSB7c1mApX5oqlgsxzHQesYF7l5n1gKrEmrClIiZuOFbFDQcjLsmcWSwwmrWrcGWm9Fxc/g==} + /vite-node@0.31.1(@types/node@20.1.2): + resolution: {integrity: sha512-BajE/IsNQ6JyizPzu9zRgHrBwczkAs0erQf/JRpgTIESpKvNj9/Gd0vxX905klLkb0I0SJVCKbdrl5c6FnqYKA==} engines: {node: '>=v14.18.0'} hasBin: true dependencies: cac: 6.7.14 debug: 4.3.4(supports-color@8.1.1) - mlly: 1.2.0 + mlly: 1.2.1 pathe: 1.1.0 picocolors: 1.0.0 - vite: 4.3.5(@types/node@20.1.2) + vite: 4.3.8(@types/node@20.1.2) transitivePeerDependencies: - '@types/node' - less @@ -5090,8 +5242,8 @@ packages: - terser dev: true - /vite@4.3.5(@types/node@20.1.2): - resolution: {integrity: sha512-0gEnL9wiRFxgz40o/i/eTBwm+NEbpUeTWhzKrZDSdKm6nplj+z4lKz8ANDgildxHm47Vg8EUia0aicKbawUVVA==} + /vite@4.3.8(@types/node@20.1.2): + resolution: {integrity: sha512-uYB8PwN7hbMrf4j1xzGDk/lqjsZvCDbt/JC5dyfxc19Pg8kRm14LinK/uq+HSLNswZEoKmweGdtpbnxRtrAXiQ==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -5116,44 +5268,57 @@ packages: optional: true dependencies: '@types/node': 20.1.2 - esbuild: 0.17.18 + esbuild: 0.17.19 postcss: 8.4.23 - rollup: 3.21.6 + rollup: 3.21.7 optionalDependencies: fsevents: 2.3.2 dev: true - /vitepress@1.0.0-alpha.75(@algolia/client-search@4.17.0)(@types/node@20.1.2)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-twpPZ/6UnDR8X0Nmj767KwKhXlTQQM9V/J1i2BP9ryO29/w4hpxBfEum6nvfpNhJ4H3h+cIhwzAK/e9crZ6HEQ==} + /vitepress@1.0.0-beta.1(@algolia/client-search@4.17.1)(@types/node@20.1.2)(@types/react@18.2.7)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-V2yyCwQ+v9fh7rbnGDLp8M7vHa9sLElexXf/JHtBOsOwv7ed9wt1QI4WUagYgKR3TeoJT9v2s6f0UaQSne0EvQ==} hasBin: true dependencies: - '@docsearch/css': 3.3.4 - '@docsearch/js': 3.3.4(@algolia/client-search@4.17.0)(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0) - '@vitejs/plugin-vue': 4.2.2(vite@4.3.5)(vue@3.2.47) + '@docsearch/css': 3.4.0 + '@docsearch/js': 3.4.0(@algolia/client-search@4.17.1)(@types/react@18.2.7)(react-dom@18.2.0)(react@18.2.0) + '@vitejs/plugin-vue': 4.2.3(vite@4.3.8)(vue@3.3.4) '@vue/devtools-api': 6.5.0 - '@vueuse/core': 10.1.2(vue@3.2.47) + '@vueuse/core': 10.1.2(vue@3.3.4) + '@vueuse/integrations': 10.1.2(focus-trap@7.4.3)(vue@3.3.4) body-scroll-lock: 4.0.0-beta.0 + focus-trap: 7.4.3 mark.js: 8.11.1 - minisearch: 6.0.1 + minisearch: 6.1.0 shiki: 0.14.2 - vite: 4.3.5(@types/node@20.1.2) - vue: 3.2.47 + vite: 4.3.8(@types/node@20.1.2) + vue: 3.3.4 transitivePeerDependencies: - '@algolia/client-search' - '@types/node' - '@types/react' - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode - less + - nprogress + - qrcode - react - react-dom - sass + - sortablejs - stylus - sugarss - terser + - universal-cookie dev: true - /vitest@0.31.0(@vitest/ui@0.31.0): - resolution: {integrity: sha512-JwWJS9p3GU9GxkG7eBSmr4Q4x4bvVBSswaCFf1PBNHiPx00obfhHRJfgHcnI0ffn+NMlIh9QGvG75FlaIBdKGA==} + /vitest@0.31.1(@vitest/ui@0.31.1): + resolution: {integrity: sha512-/dOoOgzoFk/5pTvg1E65WVaobknWREN15+HF+0ucudo3dDG/vCZoXTQrjIfEaWvQXmqScwkRodrTbM/ScMpRcQ==} engines: {node: '>=v14.18.0'} hasBin: true peerDependencies: @@ -5186,12 +5351,12 @@ packages: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 '@types/node': 20.1.2 - '@vitest/expect': 0.31.0 - '@vitest/runner': 0.31.0 - '@vitest/snapshot': 0.31.0 - '@vitest/spy': 0.31.0 - '@vitest/ui': 0.31.0(vitest@0.31.0) - '@vitest/utils': 0.31.0 + '@vitest/expect': 0.31.1 + '@vitest/runner': 0.31.1 + '@vitest/snapshot': 0.31.1 + '@vitest/spy': 0.31.1 + '@vitest/ui': 0.31.1(vitest@0.31.1) + '@vitest/utils': 0.31.1 acorn: 8.8.2 acorn-walk: 8.2.0 cac: 6.7.14 @@ -5206,8 +5371,8 @@ packages: strip-literal: 1.0.1 tinybench: 2.5.0 tinypool: 0.5.0 - vite: 4.3.5(@types/node@20.1.2) - vite-node: 0.31.0(@types/node@20.1.2) + vite: 4.3.8(@types/node@20.1.2) + vite-node: 0.31.1(@types/node@20.1.2) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -5226,7 +5391,7 @@ packages: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} dev: true - /vue-demi@0.14.1(vue@3.2.47): + /vue-demi@0.14.1(vue@3.3.4): resolution: {integrity: sha512-rt+yuCtXvscYot9SQQj3WKZJVSriPNqVkpVBNEHPzSgBv7QIYzsS410VqVgvx8f9AAPgjg+XPKvmV3vOqqkJQQ==} engines: {node: '>=12'} hasBin: true @@ -5238,17 +5403,17 @@ packages: '@vue/composition-api': optional: true dependencies: - vue: 3.2.47 + vue: 3.3.4 dev: true - /vue@3.2.47: - resolution: {integrity: sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==} + /vue@3.3.4: + resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==} dependencies: - '@vue/compiler-dom': 3.2.47 - '@vue/compiler-sfc': 3.2.47 - '@vue/runtime-dom': 3.2.47 - '@vue/server-renderer': 3.2.47(vue@3.2.47) - '@vue/shared': 3.2.47 + '@vue/compiler-dom': 3.3.4 + '@vue/compiler-sfc': 3.3.4 + '@vue/runtime-dom': 3.3.4 + '@vue/server-renderer': 3.3.4(vue@3.3.4) + '@vue/shared': 3.3.4 dev: true /webidl-conversions@3.0.1: diff --git a/src/faker.ts b/src/faker.ts index e715234d0ec..45ae98162e2 100644 --- a/src/faker.ts +++ b/src/faker.ts @@ -79,7 +79,7 @@ export class Faker { * The function must return a new valid `Date` instance for every call. * Defaults to `() => new Date()`. * - * @see [Reproducible Results](https://next.fakerjs.dev/guide/usage.html#reproducible-results) + * @see [Reproducible Results](https://fakerjs.dev/guide/usage.html#reproducible-results) * @see faker.seed() for reproducible results. * * @example @@ -180,7 +180,7 @@ export class Faker { * * You only need to use the constructor if you need custom fallback logic or a custom locale. * - * For more information see our [Localization Guide](https://next.fakerjs.dev/guide/localization.html). + * For more information see our [Localization Guide](https://fakerjs.dev/guide/localization.html). * * @param options The options to use. * @param options.locale The locale data to use. @@ -213,7 +213,7 @@ export class Faker { * * You only need to use the constructor if you need custom fallback logic or a custom locale. * - * For more information see our [Localization Guide](https://next.fakerjs.dev/guide/localization.html). + * For more information see our [Localization Guide](https://fakerjs.dev/guide/localization.html). * * @param options The options to use. * @param options.locales The locale data to use. @@ -235,7 +235,7 @@ export class Faker { * * You only need to use the constructor if you need custom fallback logic or a custom locale. * - * For more information see our [Localization Guide](https://next.fakerjs.dev/guide/localization.html). + * For more information see our [Localization Guide](https://fakerjs.dev/guide/localization.html). * * @param options The options to use. * @param options.locale The locale data to use or the name of the main locale. @@ -353,7 +353,7 @@ export class Faker { * * @returns The seed that was set. * - * @see [Reproducible Results](https://next.fakerjs.dev/guide/usage.html#reproducible-results) + * @see [Reproducible Results](https://fakerjs.dev/guide/usage.html#reproducible-results) * @see faker.setDefaultRefDate() when generating relative dates. * * @example @@ -388,7 +388,7 @@ export class Faker { * * @returns The seed array that was set. * - * @see [Reproducible Results](https://next.fakerjs.dev/guide/usage.html#reproducible-results) + * @see [Reproducible Results](https://fakerjs.dev/guide/usage.html#reproducible-results) * @see faker.setDefaultRefDate() when generating relative dates. * * @example @@ -423,7 +423,7 @@ export class Faker { * * @returns The seed that was set. * - * @see [Reproducible Results](https://next.fakerjs.dev/guide/usage.html#reproducible-results) + * @see [Reproducible Results](https://fakerjs.dev/guide/usage.html#reproducible-results) * @see faker.setDefaultRefDate() when generating relative dates. * * @example diff --git a/src/locale-proxy.ts b/src/locale-proxy.ts index 47b371d66c8..fb51fe818db 100644 --- a/src/locale-proxy.ts +++ b/src/locale-proxy.ts @@ -88,7 +88,7 @@ function createCategoryProxy< throw new FakerError( `The locale data for '${categoryName}.${entryName.toString()}' are missing in this locale. Please contribute the missing data to the project or use a locale/Faker instance that has these data. - For more information see https://next.fakerjs.dev/guide/localization.html` + For more information see https://fakerjs.dev/guide/localization.html` ); } else { return value; diff --git a/src/locales/en_HK/person/index.ts b/src/locales/en_HK/person/index.ts index abc640f9432..ac0d963cacc 100644 --- a/src/locales/en_HK/person/index.ts +++ b/src/locales/en_HK/person/index.ts @@ -4,12 +4,12 @@ */ import type { PersonDefinition } from '../../..'; import last_name from './last_name'; -import last_name_patterns from './last_name_patterns'; +import last_name_pattern from './last_name_pattern'; import name_ from './name'; const person: PersonDefinition = { last_name, - last_name_patterns, + last_name_pattern, name: name_, }; diff --git a/src/locales/en_HK/person/last_name_patterns.ts b/src/locales/en_HK/person/last_name_pattern.ts similarity index 100% rename from src/locales/en_HK/person/last_name_patterns.ts rename to src/locales/en_HK/person/last_name_pattern.ts diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index a9432dc6736..e387cecf0b3 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -67,15 +67,15 @@ const aircraftTypeSeats: Record = { * * Several methods in this module return objects rather than strings. For example, you can use `faker.airline.airport().iataCode` to pick out the specific property you need. * - * For a random airport, use [`airport()`](https://next.fakerjs.dev/api/airline.html#airport). + * For a random airport, use [`airport()`](https://fakerjs.dev/api/airline.html#airport). * - * For a random airline, use [`airline()`](https://next.fakerjs.dev/api/airline.html#airline). + * For a random airline, use [`airline()`](https://fakerjs.dev/api/airline.html#airline). * - * For a dummy booking, a passenger will generally book a flight on a specific [`flightNumber()`](https://next.fakerjs.dev/api/airline.html#flightnumber), [`airplane()`](https://next.fakerjs.dev/api/airline.html#airplane), be allocated a [`seat()`](https://next.fakerjs.dev/api/airline.html#seat), and [`recordLocator()`](https://next.fakerjs.dev/api/airline.html#recordlocator). + * For a dummy booking, a passenger will generally book a flight on a specific [`flightNumber()`](https://fakerjs.dev/api/airline.html#flightnumber), [`airplane()`](https://fakerjs.dev/api/airline.html#airplane), be allocated a [`seat()`](https://fakerjs.dev/api/airline.html#seat), and [`recordLocator()`](https://fakerjs.dev/api/airline.html#recordlocator). * * ### Related Modules * - * - To generate sample passenger data, you can use the methods of the [`faker.person`](https://next.fakerjs.dev/api/person.html) module. + * - To generate sample passenger data, you can use the methods of the [`faker.person`](https://fakerjs.dev/api/person.html) module. */ export class AirlineModule { constructor(private readonly faker: Faker) { diff --git a/src/modules/animal/index.ts b/src/modules/animal/index.ts index 9442839febe..f4d69bbd3a9 100644 --- a/src/modules/animal/index.ts +++ b/src/modules/animal/index.ts @@ -5,9 +5,9 @@ import type { Faker } from '../..'; * * ### Overview * - * For a general type of animal (e.g. `'dog'`), use [`type()`](https://next.fakerjs.dev/api/animal.html#type). + * For a general type of animal (e.g. `'dog'`), use [`type()`](https://fakerjs.dev/api/animal.html#type). * - * Otherwise, use one of the more specific methods, such as [`cat()`](https://next.fakerjs.dev/api/animal.html#cat) for a specific breed of cat. + * Otherwise, use one of the more specific methods, such as [`cat()`](https://fakerjs.dev/api/animal.html#cat) for a specific breed of cat. * * All values may be localized. */ diff --git a/src/modules/color/index.ts b/src/modules/color/index.ts index 5e4582dfae4..a3519225eee 100644 --- a/src/modules/color/index.ts +++ b/src/modules/color/index.ts @@ -166,9 +166,9 @@ function toColorFormat( * * ### Overview * - * For a human-readable color like `'red'`, use [`human()`](https://next.fakerjs.dev/api/color.html#human). + * For a human-readable color like `'red'`, use [`human()`](https://fakerjs.dev/api/color.html#human). * - * For a hex color like `#ff0000` used in HTML/CSS, use [`rgb()`](https://next.fakerjs.dev/api/color.html#rgb). There are also methods for other color formats such as [`hsl()`](https://next.fakerjs.dev/api/color.html#hsl), [`cmyk()`](https://next.fakerjs.dev/api/color.html#cmyk), [`hwb()`](https://next.fakerjs.dev/api/color.html#hwb), [`lab()`](https://next.fakerjs.dev/api/color.html#lab), and [`lch()`](https://next.fakerjs.dev/api/color.html#lch). + * For a hex color like `#ff0000` used in HTML/CSS, use [`rgb()`](https://fakerjs.dev/api/color.html#rgb). There are also methods for other color formats such as [`hsl()`](https://fakerjs.dev/api/color.html#hsl), [`cmyk()`](https://fakerjs.dev/api/color.html#cmyk), [`hwb()`](https://fakerjs.dev/api/color.html#hwb), [`lab()`](https://fakerjs.dev/api/color.html#lab), and [`lch()`](https://fakerjs.dev/api/color.html#lch). */ export class ColorModule { constructor(private readonly faker: Faker) { diff --git a/src/modules/commerce/index.ts b/src/modules/commerce/index.ts index ffb602b0150..89f4771134b 100644 --- a/src/modules/commerce/index.ts +++ b/src/modules/commerce/index.ts @@ -6,11 +6,11 @@ import { deprecated } from '../../internal/deprecated'; * * ### Overview * - * For a long product name like `'Incredible Soft Gloves'`, use [`productName()`](https://next.fakerjs.dev/api/commerce.html#productname). The product names are generated from a list of adjectives, materials, and products, which can each be accessed separately using [`productAdjective()`](https://next.fakerjs.dev/api/commerce.html#productadjective), [`productMaterial()`](https://next.fakerjs.dev/api/commerce.html#productmaterial), and [`product()`](https://next.fakerjs.dev/api/commerce.html#product). You can also create a description using [`productDescription()`](https://next.fakerjs.dev/api/commerce.html#productdescription). + * For a long product name like `'Incredible Soft Gloves'`, use [`productName()`](https://fakerjs.dev/api/commerce.html#productname). The product names are generated from a list of adjectives, materials, and products, which can each be accessed separately using [`productAdjective()`](https://fakerjs.dev/api/commerce.html#productadjective), [`productMaterial()`](https://fakerjs.dev/api/commerce.html#productmaterial), and [`product()`](https://fakerjs.dev/api/commerce.html#product). You can also create a description using [`productDescription()`](https://fakerjs.dev/api/commerce.html#productdescription). * - * For a department in a shop or product category, use [`department()`](https://next.fakerjs.dev/api/commerce.html#department). + * For a department in a shop or product category, use [`department()`](https://fakerjs.dev/api/commerce.html#department). * - * You can also create a price using [`price()`](https://next.fakerjs.dev/api/commerce.html#price). + * You can also create a price using [`price()`](https://fakerjs.dev/api/commerce.html#price). */ export class CommerceModule { constructor(private readonly faker: Faker) { diff --git a/src/modules/company/index.ts b/src/modules/company/index.ts index 40177ec0f82..a199c591a54 100644 --- a/src/modules/company/index.ts +++ b/src/modules/company/index.ts @@ -6,14 +6,14 @@ import { deprecated } from '../../internal/deprecated'; * * ### Overview * - * To generate a random company name, use [`name()`](https://next.fakerjs.dev/api/company.html#name). This is localized in many locales. + * To generate a random company name, use [`name()`](https://fakerjs.dev/api/company.html#name). This is localized in many locales. * - * To generate jargon-filled company catchphrases and buzzwords, use [`catchPhrase()`](https://next.fakerjs.dev/api/company.html#catchphrase) or [`buzzPhrase()`](https://next.fakerjs.dev/api/company.html#buzzphrase). + * To generate jargon-filled company catchphrases and buzzwords, use [`catchPhrase()`](https://fakerjs.dev/api/company.html#catchphrase) or [`buzzPhrase()`](https://fakerjs.dev/api/company.html#buzzphrase). * * ### Related Modules * - * - For products and commerce, use [`faker.commerce`](https://next.fakerjs.dev/api/commerce.html). - * - For finance-related entries, use [`faker.finance`](https://next.fakerjs.dev/api/finance.html). + * - For products and commerce, use [`faker.commerce`](https://fakerjs.dev/api/commerce.html). + * - For finance-related entries, use [`faker.finance`](https://fakerjs.dev/api/finance.html). */ export class CompanyModule { constructor(private readonly faker: Faker) { diff --git a/src/modules/database/index.ts b/src/modules/database/index.ts index 5f4977211a6..ced5a3ef465 100644 --- a/src/modules/database/index.ts +++ b/src/modules/database/index.ts @@ -5,9 +5,9 @@ import type { Faker } from '../..'; * * ### Overview * - * Traditional relational database tables have data organized in columns with specific types - [`column()`](https://next.fakerjs.dev/api/database.html#column), [`type()`](https://next.fakerjs.dev/api/database.html#type). The database usually has an [`engine()`](https://next.fakerjs.dev/api/database.html#engine) and a default [`collation()`](https://next.fakerjs.dev/api/database.html#collation) for sorting. + * Traditional relational database tables have data organized in columns with specific types - [`column()`](https://fakerjs.dev/api/database.html#column), [`type()`](https://fakerjs.dev/api/database.html#type). The database usually has an [`engine()`](https://fakerjs.dev/api/database.html#engine) and a default [`collation()`](https://fakerjs.dev/api/database.html#collation) for sorting. * - * For the NoSQL database MongoDB, [`mongodbObjectId()`](https://next.fakerjs.dev/api/database.html#mongodbobjectid) provides a random ID. + * For the NoSQL database MongoDB, [`mongodbObjectId()`](https://fakerjs.dev/api/database.html#mongodbobjectid) provides a random ID. */ export class DatabaseModule { constructor(private readonly faker: Faker) { diff --git a/src/modules/datatype/index.ts b/src/modules/datatype/index.ts index 0c5fddc8d10..5fee2c0efcf 100644 --- a/src/modules/datatype/index.ts +++ b/src/modules/datatype/index.ts @@ -6,9 +6,9 @@ import { deprecated } from '../../internal/deprecated'; * * ### Overview * - * Most of the methods in this module are deprecated and have been moved to other modules like [`faker.number`](https://next.fakerjs.dev/api/number.html) and [`faker.string`](https://next.fakerjs.dev/api/string.html), see individual entries for replacements. + * Most of the methods in this module are deprecated and have been moved to other modules like [`faker.number`](https://fakerjs.dev/api/number.html) and [`faker.string`](https://fakerjs.dev/api/string.html), see individual entries for replacements. * - * For a simple random true or false value, use [`boolean()`](https://next.fakerjs.dev/api/datatype.html#boolean). + * For a simple random true or false value, use [`boolean()`](https://fakerjs.dev/api/datatype.html#boolean). */ export class DatatypeModule { constructor(private readonly faker: Faker) { diff --git a/src/modules/date/index.ts b/src/modules/date/index.ts index feac3692215..b50a548ad4c 100644 --- a/src/modules/date/index.ts +++ b/src/modules/date/index.ts @@ -27,15 +27,15 @@ function toDate( * * ### Overview * - * To quickly generate a date in the past, use [`recent()`](https://next.fakerjs.dev/api/date.html#recent) (last day) or [`past()`](https://next.fakerjs.dev/api/date.html#past) (last year). - * To quickly generate a date in the future, use [`soon()`](https://next.fakerjs.dev/api/date.html#soon) (next day) or [`future()`](https://next.fakerjs.dev/api/date.html#future) (next year). - * For a realistic birthdate for an adult, use [`birthdate()`](https://next.fakerjs.dev/api/date.html#birthdate). + * To quickly generate a date in the past, use [`recent()`](https://fakerjs.dev/api/date.html#recent) (last day) or [`past()`](https://fakerjs.dev/api/date.html#past) (last year). + * To quickly generate a date in the future, use [`soon()`](https://fakerjs.dev/api/date.html#soon) (next day) or [`future()`](https://fakerjs.dev/api/date.html#future) (next year). + * For a realistic birthdate for an adult, use [`birthdate()`](https://fakerjs.dev/api/date.html#birthdate). * - * For more control, any of these methods can be customized with further options, or use [`between()`](https://next.fakerjs.dev/api/date.html#between) to generate a single date between two dates, or [`betweens()`](https://next.fakerjs.dev/api/date.html#betweens) for multiple dates. + * For more control, any of these methods can be customized with further options, or use [`between()`](https://fakerjs.dev/api/date.html#between) to generate a single date between two dates, or [`betweens()`](https://fakerjs.dev/api/date.html#betweens) for multiple dates. * - * You can generate random localized month and weekday names using [`month()`](https://next.fakerjs.dev/api/date.html#month) and [`weekday()`](https://next.fakerjs.dev/api/date.html#weekday). + * You can generate random localized month and weekday names using [`month()`](https://fakerjs.dev/api/date.html#month) and [`weekday()`](https://fakerjs.dev/api/date.html#weekday). * - * These methods have additional concerns about reproducibility, see [Reproducible Results](https://next.fakerjs.dev/guide/usage.html#reproducible-results). + * These methods have additional concerns about reproducibility, see [Reproducible Results](https://fakerjs.dev/guide/usage.html#reproducible-results). */ export class DateModule { constructor(private readonly faker: Faker) { diff --git a/src/modules/finance/index.ts b/src/modules/finance/index.ts index 4add0243138..0e00c933645 100644 --- a/src/modules/finance/index.ts +++ b/src/modules/finance/index.ts @@ -28,13 +28,13 @@ export interface Currency { * * ### Overview * - * For a random amount, use [`amount()`](https://next.fakerjs.dev/api/finance.html#amount). + * For a random amount, use [`amount()`](https://fakerjs.dev/api/finance.html#amount). * - * For traditional bank accounts, use: [`accountNumber()`](https://next.fakerjs.dev/api/finance.html#accountnumber), [`accountName()`](https://next.fakerjs.dev/api/finance.html#accountname), [`bic()`](https://next.fakerjs.dev/api/finance.html#bic), [`iban()`](https://next.fakerjs.dev/api/finance.html#iban), [`pin()`](https://next.fakerjs.dev/api/finance.html#pin) and [`routingNumber()`](https://next.fakerjs.dev/api/finance.html#routingnumber). + * For traditional bank accounts, use: [`accountNumber()`](https://fakerjs.dev/api/finance.html#accountnumber), [`accountName()`](https://fakerjs.dev/api/finance.html#accountname), [`bic()`](https://fakerjs.dev/api/finance.html#bic), [`iban()`](https://fakerjs.dev/api/finance.html#iban), [`pin()`](https://fakerjs.dev/api/finance.html#pin) and [`routingNumber()`](https://fakerjs.dev/api/finance.html#routingnumber). * - * For credit card related methods, use: [`creditCardNumber()`](https://next.fakerjs.dev/api/finance.html#creditcardnumber), [`creditCardCVV()`](https://next.fakerjs.dev/api/finance.html#creditcardcvv), [`creditCardIssuer()`](https://next.fakerjs.dev/api/finance.html#creditcardissuer), [`transactionDescription()`](https://next.fakerjs.dev/api/finance.html#transactiondescription) and [`transactionType()`](https://next.fakerjs.dev/api/finance.html#transactiontype). + * For credit card related methods, use: [`creditCardNumber()`](https://fakerjs.dev/api/finance.html#creditcardnumber), [`creditCardCVV()`](https://fakerjs.dev/api/finance.html#creditcardcvv), [`creditCardIssuer()`](https://fakerjs.dev/api/finance.html#creditcardissuer), [`transactionDescription()`](https://fakerjs.dev/api/finance.html#transactiondescription) and [`transactionType()`](https://fakerjs.dev/api/finance.html#transactiontype). * - * For blockchain related methods, use: [`bitcoinAddress()`](https://next.fakerjs.dev/api/finance.html#bitcoinaddress), [`ethereumAddress()`](https://next.fakerjs.dev/api/finance.html#ethereumaddress) and [`litecoinAddress()`](https://next.fakerjs.dev/api/finance.html#litecoinaddress). + * For blockchain related methods, use: [`bitcoinAddress()`](https://fakerjs.dev/api/finance.html#bitcoinaddress), [`ethereumAddress()`](https://fakerjs.dev/api/finance.html#ethereumaddress) and [`litecoinAddress()`](https://fakerjs.dev/api/finance.html#litecoinaddress). */ export class FinanceModule { constructor(private readonly faker: Faker) { diff --git a/src/modules/git/index.ts b/src/modules/git/index.ts index 791ea06b22d..05a8008102c 100644 --- a/src/modules/git/index.ts +++ b/src/modules/git/index.ts @@ -24,7 +24,7 @@ const GIT_TIMEZONE_FORMAT = new Intl.NumberFormat('en', { * * ### Overview * - * [`commitEntry()`](https://next.fakerjs.dev/api/git.html#commitentry) generates a random commit entry as printed by `git log`. This includes a commit hash [`commitSha()`](https://next.fakerjs.dev/api/git.html#commitsha), author, date [`commitDate()`](https://next.fakerjs.dev/api/git.html#commitdate), and commit message [`commitMessage()`](https://next.fakerjs.dev/api/git.html#commitmessage). You can also generate a random branch name with [`branch()`](https://next.fakerjs.dev/api/git.html#branch). + * [`commitEntry()`](https://fakerjs.dev/api/git.html#commitentry) generates a random commit entry as printed by `git log`. This includes a commit hash [`commitSha()`](https://fakerjs.dev/api/git.html#commitsha), author, date [`commitDate()`](https://fakerjs.dev/api/git.html#commitdate), and commit message [`commitMessage()`](https://fakerjs.dev/api/git.html#commitmessage). You can also generate a random branch name with [`branch()`](https://fakerjs.dev/api/git.html#branch). */ export class GitModule { constructor(private readonly faker: Faker) { diff --git a/src/modules/hacker/index.ts b/src/modules/hacker/index.ts index ef0aa013904..950848329c9 100644 --- a/src/modules/hacker/index.ts +++ b/src/modules/hacker/index.ts @@ -5,15 +5,15 @@ import type { Faker } from '../..'; * * ### Overview * - * There are methods for different parts of speech, such as [`abbreviation()`](https://next.fakerjs.dev/api/hacker.html#abbreviation), [`adjective()`](https://next.fakerjs.dev/api/hacker.html#adjective), [`noun()`](https://next.fakerjs.dev/api/hacker.html#noun), [`verb()`](https://next.fakerjs.dev/api/hacker.html#verb), and [`ingverb()`](https://next.fakerjs.dev/api/hacker.html#ingverb). Alternatively, [`phrase()`](https://next.fakerjs.dev/api/hacker.html#phrase) creates a longer phrase combining these words. + * There are methods for different parts of speech, such as [`abbreviation()`](https://fakerjs.dev/api/hacker.html#abbreviation), [`adjective()`](https://fakerjs.dev/api/hacker.html#adjective), [`noun()`](https://fakerjs.dev/api/hacker.html#noun), [`verb()`](https://fakerjs.dev/api/hacker.html#verb), and [`ingverb()`](https://fakerjs.dev/api/hacker.html#ingverb). Alternatively, [`phrase()`](https://fakerjs.dev/api/hacker.html#phrase) creates a longer phrase combining these words. * * ### Related modules * * Various modules allow for generating other types of words and phrases: * - * - [faker.word](https://next.fakerjs.dev/api/word.html) uses general vocabulary rather than hacker-specific terms. - * - [faker.lorem](https://next.fakerjs.dev/api/lorem.html) uses faux-Latin "lorem ipsum" text. - * - [faker.company](https://next.fakerjs.dev/api/company.html) includes corporate catchphrases and buzzwords. + * - [faker.word](https://fakerjs.dev/api/word.html) uses general vocabulary rather than hacker-specific terms. + * - [faker.lorem](https://fakerjs.dev/api/lorem.html) uses faux-Latin "lorem ipsum" text. + * - [faker.company](https://fakerjs.dev/api/company.html) includes corporate catchphrases and buzzwords. */ export class HackerModule { constructor(private readonly faker: Faker) { diff --git a/src/modules/helpers/index.ts b/src/modules/helpers/index.ts index 3db15ca4141..228e410da96 100644 --- a/src/modules/helpers/index.ts +++ b/src/modules/helpers/index.ts @@ -76,11 +76,11 @@ function getRepetitionsBasedOnQuantifierParameters( * * ### Overview * - * A particularly helpful method is [`arrayElement()`](https://next.fakerjs.dev/api/helpers.html#arrayelement) which returns a random element from an array. This is useful when adding custom data that Faker doesn't contain. + * A particularly helpful method is [`arrayElement()`](https://fakerjs.dev/api/helpers.html#arrayelement) which returns a random element from an array. This is useful when adding custom data that Faker doesn't contain. * - * There are alternatives of this method for objects ([`objectKey()`](https://next.fakerjs.dev/api/helpers.html#objectkey) and [`objectValue()`](https://next.fakerjs.dev/api/helpers.html#objectvalue)) and enums ([`enumValue()`](https://next.fakerjs.dev/api/helpers.html#enumvalue)). You can also return multiple elements ([`arrayElements()`](https://next.fakerjs.dev/api/helpers.html#arrayelements)) or elements according to a weighting ([`weightedArrayElement()`](https://next.fakerjs.dev/api/helpers.html#weightedarrayelement)). + * There are alternatives of this method for objects ([`objectKey()`](https://fakerjs.dev/api/helpers.html#objectkey) and [`objectValue()`](https://fakerjs.dev/api/helpers.html#objectvalue)) and enums ([`enumValue()`](https://fakerjs.dev/api/helpers.html#enumvalue)). You can also return multiple elements ([`arrayElements()`](https://fakerjs.dev/api/helpers.html#arrayelements)) or elements according to a weighting ([`weightedArrayElement()`](https://fakerjs.dev/api/helpers.html#weightedarrayelement)). * - * A number of methods can generate strings according to various patterns: [`replaceSymbols()`](https://next.fakerjs.dev/api/helpers.html#replacesymbols), [`replaceSymbolWithNumber()`](https://next.fakerjs.dev/api/helpers.html#replacesymbolwithnumber), and [`fromRegExp()`](https://next.fakerjs.dev/api/helpers.html#fromregexp). + * A number of methods can generate strings according to various patterns: [`replaceSymbols()`](https://fakerjs.dev/api/helpers.html#replacesymbols), [`replaceSymbolWithNumber()`](https://fakerjs.dev/api/helpers.html#replacesymbolwithnumber), and [`fromRegExp()`](https://fakerjs.dev/api/helpers.html#fromregexp). */ export class HelpersModule { /** diff --git a/src/modules/image/index.ts b/src/modules/image/index.ts index 2e7806ff3b0..a44c2efb1ac 100644 --- a/src/modules/image/index.ts +++ b/src/modules/image/index.ts @@ -10,13 +10,13 @@ import { Unsplash } from './providers/unsplash'; * * ### Overview * - * For a random image, use [`url()`](https://next.fakerjs.dev/api/image.html#url). This will not return the image directly but a URL pointing to an image from one of two demo image providers "Picsum" and "LoremFlickr". You can request an image specifically from one of two providers using [`urlLoremFlickr()`](https://next.fakerjs.dev/api/image.html#urlloremflickr) or [`urlPicsumPhotos()`](https://next.fakerjs.dev/api/image.html#urlpicsumphotos). + * For a random image, use [`url()`](https://fakerjs.dev/api/image.html#url). This will not return the image directly but a URL pointing to an image from one of two demo image providers "Picsum" and "LoremFlickr". You can request an image specifically from one of two providers using [`urlLoremFlickr()`](https://fakerjs.dev/api/image.html#urlloremflickr) or [`urlPicsumPhotos()`](https://fakerjs.dev/api/image.html#urlpicsumphotos). * - * For a random placeholder image containing only solid color and text, use [`urlPlaceholder()`](https://next.fakerjs.dev/api/image.html#urlplaceholder) (uses a third-party service) or [`dataUri()`](https://next.fakerjs.dev/api/image.html#datauri) (returns a SVG string). + * For a random placeholder image containing only solid color and text, use [`urlPlaceholder()`](https://fakerjs.dev/api/image.html#urlplaceholder) (uses a third-party service) or [`dataUri()`](https://fakerjs.dev/api/image.html#datauri) (returns a SVG string). * - * For a random user avatar image, use [`avatar()`](https://next.fakerjs.dev/api/image.html#avatar). + * For a random user avatar image, use [`avatar()`](https://fakerjs.dev/api/image.html#avatar). * - * This module previously also contained methods for specifically themed images like "fashion" or "food", but these are now deprecated. If you need more control over image type, you can request categorized images using [`urlLoremFlickr()`](https://next.fakerjs.dev/api/image.html#urlloremflickr), use an image provider directly or provide your own set of placeholder images. + * This module previously also contained methods for specifically themed images like "fashion" or "food", but these are now deprecated. If you need more control over image type, you can request categorized images using [`urlLoremFlickr()`](https://fakerjs.dev/api/image.html#urlloremflickr), use an image provider directly or provide your own set of placeholder images. */ export class ImageModule { /** diff --git a/src/modules/internet/index.ts b/src/modules/internet/index.ts index 37ada74aa0d..d57627ac5b1 100644 --- a/src/modules/internet/index.ts +++ b/src/modules/internet/index.ts @@ -29,13 +29,13 @@ export type HTTPProtocolType = 'http' | 'https'; * * ### Overview * - * For user accounts, you may need an [`email()`](https://next.fakerjs.dev/api/internet.html#email) and a [`password()`](https://next.fakerjs.dev/api/internet.html#password), as well as a ASCII [`userName()`](https://next.fakerjs.dev/api/internet.html#username) or Unicode [`displayName()`](https://next.fakerjs.dev/api/internet.html#displayname), and an image [`avatar()`](https://next.fakerjs.dev/api/internet.html#avatar). Since the emails generated could coincidentally be real email addresses, you should not use these for sending real email addresses. If this is a concern, use [`exampleEmail()`](https://next.fakerjs.dev/api/internet.html#exampleemail) instead. + * For user accounts, you may need an [`email()`](https://fakerjs.dev/api/internet.html#email) and a [`password()`](https://fakerjs.dev/api/internet.html#password), as well as a ASCII [`userName()`](https://fakerjs.dev/api/internet.html#username) or Unicode [`displayName()`](https://fakerjs.dev/api/internet.html#displayname), and an image [`avatar()`](https://fakerjs.dev/api/internet.html#avatar). Since the emails generated could coincidentally be real email addresses, you should not use these for sending real email addresses. If this is a concern, use [`exampleEmail()`](https://fakerjs.dev/api/internet.html#exampleemail) instead. * - * For websites, you can generate a [`domainName()`](https://next.fakerjs.dev/api/internet.html#domainname) or a full [`url()`](https://next.fakerjs.dev/api/internet.html#url). + * For websites, you can generate a [`domainName()`](https://fakerjs.dev/api/internet.html#domainname) or a full [`url()`](https://fakerjs.dev/api/internet.html#url). * - * To make your data more 🔥, you can use [`emoji()`](https://next.fakerjs.dev/api/internet.html#emoji). + * To make your data more 🔥, you can use [`emoji()`](https://fakerjs.dev/api/internet.html#emoji). * - * You also have access to a number of the more technical elements of web requests, such as [`httpMethod`](https://next.fakerjs.dev/api/internet.html#httpmethod), [`httpStatusCode`](https://next.fakerjs.dev/api/internet.html#httpstatuscode), [`ip`](https://next.fakerjs.dev/api/internet.html#ip), [`mac`](https://next.fakerjs.dev/api/internet.html#mac), [`userAgent`](https://next.fakerjs.dev/api/internet.html#useragent), and [`port`](https://next.fakerjs.dev/api/internet.html#port). + * You also have access to a number of the more technical elements of web requests, such as [`httpMethod`](https://fakerjs.dev/api/internet.html#httpmethod), [`httpStatusCode`](https://fakerjs.dev/api/internet.html#httpstatuscode), [`ip`](https://fakerjs.dev/api/internet.html#ip), [`mac`](https://fakerjs.dev/api/internet.html#mac), [`userAgent`](https://fakerjs.dev/api/internet.html#useragent), and [`port`](https://fakerjs.dev/api/internet.html#port). */ export class InternetModule { constructor(private readonly faker: Faker) { diff --git a/src/modules/location/index.ts b/src/modules/location/index.ts index 1b8455d0e80..7feb96ee536 100644 --- a/src/modules/location/index.ts +++ b/src/modules/location/index.ts @@ -7,11 +7,11 @@ import { deprecated } from '../../internal/deprecated'; * * ### Overview * - * For a typical street address for a locale, use [`streetAddress()`](https://next.fakerjs.dev/api/location.html#streetaddress), [`city()`](https://next.fakerjs.dev/api/location.html#city), [`state()`](https://next.fakerjs.dev/api/location.html#state) (or [`stateAbbr()`](https://next.fakerjs.dev/api/location.html#stateabbr)), and [`zipCode()`](https://next.fakerjs.dev/api/location.html#zipcode). Most locales provide localized versions for a specific country. + * For a typical street address for a locale, use [`streetAddress()`](https://fakerjs.dev/api/location.html#streetaddress), [`city()`](https://fakerjs.dev/api/location.html#city), [`state()`](https://fakerjs.dev/api/location.html#state) (or [`stateAbbr()`](https://fakerjs.dev/api/location.html#stateabbr)), and [`zipCode()`](https://fakerjs.dev/api/location.html#zipcode). Most locales provide localized versions for a specific country. * - * If you need latitude and longitude coordinates, use [`latitude()`](https://next.fakerjs.dev/api/location.html#latitude) and [`longitude()`](https://next.fakerjs.dev/api/location.html#longitude), or [`nearbyGPSCoordinate()`](https://next.fakerjs.dev/api/location.html#nearbygpscoordinate) for a latitude/longitude near a given location. + * If you need latitude and longitude coordinates, use [`latitude()`](https://fakerjs.dev/api/location.html#latitude) and [`longitude()`](https://fakerjs.dev/api/location.html#longitude), or [`nearbyGPSCoordinate()`](https://fakerjs.dev/api/location.html#nearbygpscoordinate) for a latitude/longitude near a given location. * - * For a random country, you can use [`country()`](https://next.fakerjs.dev/api/location.html#country) or [`countryCode()`](https://next.fakerjs.dev/api/location.html#countrycode). + * For a random country, you can use [`country()`](https://fakerjs.dev/api/location.html#country) or [`countryCode()`](https://fakerjs.dev/api/location.html#countrycode). */ export class LocationModule { constructor(private readonly faker: Faker) { diff --git a/src/modules/lorem/index.ts b/src/modules/lorem/index.ts index fb633a0dbde..0f94a18770f 100644 --- a/src/modules/lorem/index.ts +++ b/src/modules/lorem/index.ts @@ -8,9 +8,9 @@ import { filterWordListByLength } from '../word/filterWordListByLength'; * * Generate dummy content using traditional faux-Latin [lorem ipsum](https://en.wikipedia.org/wiki/Lorem_ipsum) (in other locales to `en`, alternative words may be used). * - * In order of increasing size you can generate a single [`word()`](https://next.fakerjs.dev/api/lorem.html#word), multiple [`words()`](https://next.fakerjs.dev/api/lorem.html#words), a [`sentence()`](https://next.fakerjs.dev/api/lorem.html#sentence), multiple [`sentences()`](https://next.fakerjs.dev/api/lorem.html#sentences), [`lines()`](https://next.fakerjs.dev/api/lorem.html#lines) separated by newlines, one [`paragraph()`](https://next.fakerjs.dev/api/lorem.html#paragraph), or multiple [`paragraphs()`](https://next.fakerjs.dev/api/lorem.html#paragraphs). + * In order of increasing size you can generate a single [`word()`](https://fakerjs.dev/api/lorem.html#word), multiple [`words()`](https://fakerjs.dev/api/lorem.html#words), a [`sentence()`](https://fakerjs.dev/api/lorem.html#sentence), multiple [`sentences()`](https://fakerjs.dev/api/lorem.html#sentences), [`lines()`](https://fakerjs.dev/api/lorem.html#lines) separated by newlines, one [`paragraph()`](https://fakerjs.dev/api/lorem.html#paragraph), or multiple [`paragraphs()`](https://fakerjs.dev/api/lorem.html#paragraphs). * - * The generic [`text()`](https://next.fakerjs.dev/api/lorem.html#text) method can be used to generate some text between one sentence and multiple paragraphs, while [`slug()`](https://next.fakerjs.dev/api/lorem.html#slug) generates an URL-friendly hyphenated string. + * The generic [`text()`](https://fakerjs.dev/api/lorem.html#text) method can be used to generate some text between one sentence and multiple paragraphs, while [`slug()`](https://fakerjs.dev/api/lorem.html#slug) generates an URL-friendly hyphenated string. */ export class LoremModule { constructor(private readonly faker: Faker) { diff --git a/src/modules/music/index.ts b/src/modules/music/index.ts index 65faf452cd9..6972387eba7 100644 --- a/src/modules/music/index.ts +++ b/src/modules/music/index.ts @@ -5,7 +5,7 @@ import type { Faker } from '../..'; * * ### Overview * - * Generate a random music genre with [`genre()`](https://next.fakerjs.dev/api/music.html#genre) or song name with [`songName()`](https://next.fakerjs.dev/api/music.html#songname). Both may be localized. + * Generate a random music genre with [`genre()`](https://fakerjs.dev/api/music.html#genre) or song name with [`songName()`](https://fakerjs.dev/api/music.html#songname). Both may be localized. */ export class MusicModule { constructor(private readonly faker: Faker) { diff --git a/src/modules/number/index.ts b/src/modules/number/index.ts index 92751fe627c..fce3829a72e 100644 --- a/src/modules/number/index.ts +++ b/src/modules/number/index.ts @@ -7,14 +7,14 @@ import type { Mersenne } from '../../internal/mersenne/mersenne'; * * ### Overview * - * For simple integers, use [`int()`](https://next.fakerjs.dev/api/number.html#int). For decimal/floating-point numbers, use [`float()`](https://next.fakerjs.dev/api/number.html#float). + * For simple integers, use [`int()`](https://fakerjs.dev/api/number.html#int). For decimal/floating-point numbers, use [`float()`](https://fakerjs.dev/api/number.html#float). * - * For numbers not in base-10, you can use [`hex()`](https://next.fakerjs.dev/api/number.html#hex), [`octal()`](https://next.fakerjs.dev/api/number.html#octal) and [`binary()`](https://next.fakerjs.dev/api/number.html#binary)`. + * For numbers not in base-10, you can use [`hex()`](https://fakerjs.dev/api/number.html#hex), [`octal()`](https://fakerjs.dev/api/number.html#octal) and [`binary()`](https://fakerjs.dev/api/number.html#binary)`. * * ### Related modules * - * - For numeric strings of a given length, use [`faker.string.numeric()`](https://next.fakerjs.dev/api/string.html#numeric). - * - For credit card numbers, use [`faker.finance.creditCardNumber()`](https://next.fakerjs.dev/api/finance.html#creditcardnumber). + * - For numeric strings of a given length, use [`faker.string.numeric()`](https://fakerjs.dev/api/string.html#numeric). + * - For credit card numbers, use [`faker.finance.creditCardNumber()`](https://fakerjs.dev/api/finance.html#creditcardnumber). */ export class NumberModule { constructor(private readonly faker: Faker) { @@ -43,9 +43,9 @@ export class NumberModule { * @see faker.string.numeric() If you would like to generate a `string` of digits with a given length (range). * * @example - * faker.number.int() // 55422 + * faker.number.int() // 2900970162509863 * faker.number.int(100) // 52 - * faker.number.int({ min: 1000000 }) // 1031433 + * faker.number.int({ min: 1000000 }) // 2900970162509863 * faker.number.int({ max: 100 }) // 42 * faker.number.int({ min: 10, max: 100 }) // 57 * @@ -64,7 +64,7 @@ export class NumberModule { /** * Upper bound for generated number. * - * @default min + 99999 + * @default Number.MAX_SAFE_INTEGER */ max?: number; } = {} diff --git a/src/modules/person/index.ts b/src/modules/person/index.ts index 428b1373446..817f261c854 100644 --- a/src/modules/person/index.ts +++ b/src/modules/person/index.ts @@ -59,19 +59,19 @@ function selectDefinition( * * ### Overview * - * To generate a full name, use [`fullName`](https://next.fakerjs.dev/api/person.html#fullname). Note that this is not the same as simply concatenating [`firstName`](https://next.fakerjs.dev/api/person.html#firstname) and [`lastName`](https://next.fakerjs.dev/api/person.html#lastname), as the full name may contain a prefix, suffix, or both. Additionally, different supported locales will have differing name patterns. For example, the last name may appear before the first name, or there may be a double or hyphenated first or last name. + * To generate a full name, use [`fullName`](https://fakerjs.dev/api/person.html#fullname). Note that this is not the same as simply concatenating [`firstName`](https://fakerjs.dev/api/person.html#firstname) and [`lastName`](https://fakerjs.dev/api/person.html#lastname), as the full name may contain a prefix, suffix, or both. Additionally, different supported locales will have differing name patterns. For example, the last name may appear before the first name, or there may be a double or hyphenated first or last name. * - * You can also generate the parts of a name separately, using [`prefix`](https://next.fakerjs.dev/api/person.html#prefix), [`firstName`](https://next.fakerjs.dev/api/person.html#firstname), [`middleName`](https://next.fakerjs.dev/api/person.html#middlename), [`lastName`](https://next.fakerjs.dev/api/person.html#lastname), and [`suffix`](https://next.fakerjs.dev/api/person.html#suffix). Not all locales support all of these parts. + * You can also generate the parts of a name separately, using [`prefix`](https://fakerjs.dev/api/person.html#prefix), [`firstName`](https://fakerjs.dev/api/person.html#firstname), [`middleName`](https://fakerjs.dev/api/person.html#middlename), [`lastName`](https://fakerjs.dev/api/person.html#lastname), and [`suffix`](https://fakerjs.dev/api/person.html#suffix). Not all locales support all of these parts. * * Many of the methods in this module can optionally choose either female, male or mixed names. * - * Job-related data is also available. To generate a job title, use [`jobTitle`](https://next.fakerjs.dev/api/person.html#jobtitle). + * Job-related data is also available. To generate a job title, use [`jobTitle`](https://fakerjs.dev/api/person.html#jobtitle). * - * This module can also generate other personal information which might appear in user profiles, such as [`gender`](https://next.fakerjs.dev/api/person.html#gender), [`zodiacSign`](https://next.fakerjs.dev/api/person.html#zodiacsign), and [`bio`](https://next.fakerjs.dev/api/person.html#bio). + * This module can also generate other personal information which might appear in user profiles, such as [`gender`](https://fakerjs.dev/api/person.html#gender), [`zodiacSign`](https://fakerjs.dev/api/person.html#zodiacsign), and [`bio`](https://fakerjs.dev/api/person.html#bio). * * ### Related modules * - * For personal contact information like phone numbers and email addresses, see the [`faker.phone`](https://next.fakerjs.dev/api/phone.html) and [`faker.internet`](https://next.fakerjs.dev/api/internet.html) modules. + * For personal contact information like phone numbers and email addresses, see the [`faker.phone`](https://fakerjs.dev/api/phone.html) and [`faker.internet`](https://fakerjs.dev/api/internet.html) modules. */ export class PersonModule { constructor(private readonly faker: Faker) { diff --git a/src/modules/phone/index.ts b/src/modules/phone/index.ts index a9254650c9b..96b434a5a91 100644 --- a/src/modules/phone/index.ts +++ b/src/modules/phone/index.ts @@ -5,7 +5,7 @@ import type { Faker } from '../..'; * * ### Overview * - * For a phone number, use [`number()`](https://next.fakerjs.dev/api/phone.html#number). Many locales provide country-specific formats. + * For a phone number, use [`number()`](https://fakerjs.dev/api/phone.html#number). Many locales provide country-specific formats. */ export class PhoneModule { constructor(private readonly faker: Faker) { diff --git a/src/modules/string/index.ts b/src/modules/string/index.ts index 4c5a7dc32f8..aec6b91f17a 100644 --- a/src/modules/string/index.ts +++ b/src/modules/string/index.ts @@ -90,16 +90,16 @@ const SAMPLE_MAX_LENGTH = 2 ** 20; * * ### Overview * - * For a string containing just A-Z characters, use [`alpha()`](https://next.fakerjs.dev/api/string.html#alpha). To add digits too, use [`alphanumeric()`](https://next.fakerjs.dev/api/string.html#alphanumeric). If you only want punctuation marks/symbols, use [`symbol()`](https://next.fakerjs.dev/api/string.html). For a full set of ASCII characters, use [`sample()`](https://next.fakerjs.dev/api/string.html#sample). For a custom set of characters, use [`fromCharacters()`](https://next.fakerjs.dev/api/string.html#fromcharacters). + * For a string containing just A-Z characters, use [`alpha()`](https://fakerjs.dev/api/string.html#alpha). To add digits too, use [`alphanumeric()`](https://fakerjs.dev/api/string.html#alphanumeric). If you only want punctuation marks/symbols, use [`symbol()`](https://fakerjs.dev/api/string.html). For a full set of ASCII characters, use [`sample()`](https://fakerjs.dev/api/string.html#sample). For a custom set of characters, use [`fromCharacters()`](https://fakerjs.dev/api/string.html#fromcharacters). * - * For strings of base-ten digits, use [`numeric()`](https://next.fakerjs.dev/api/string.html#numeric). For other bases, use [`binary()`](https://next.fakerjs.dev/api/string.html#binary), [`octal()`](https://next.fakerjs.dev/api/string.html#octal), or [`hexadecimal()`](https://next.fakerjs.dev/api/string.html#hexadecimal)). + * For strings of base-ten digits, use [`numeric()`](https://fakerjs.dev/api/string.html#numeric). For other bases, use [`binary()`](https://fakerjs.dev/api/string.html#binary), [`octal()`](https://fakerjs.dev/api/string.html#octal), or [`hexadecimal()`](https://fakerjs.dev/api/string.html#hexadecimal)). * - * You can generate standard ID strings using [`uuid()`](https://next.fakerjs.dev/api/string.html#uuid) or [`nanoid()`](https://next.fakerjs.dev/api/string.html#nanoid). + * You can generate standard ID strings using [`uuid()`](https://fakerjs.dev/api/string.html#uuid) or [`nanoid()`](https://fakerjs.dev/api/string.html#nanoid). * * ### Related modules * - * - Emoji can be found at [`faker.internet.emoji()`](https://next.fakerjs.dev/api/internet.html#emoji). - * - The [`faker.helpers`](https://next.fakerjs.dev/api/helpers.html) module includes a number of string related methods. + * - Emoji can be found at [`faker.internet.emoji()`](https://fakerjs.dev/api/internet.html#emoji). + * - The [`faker.helpers`](https://fakerjs.dev/api/helpers.html) module includes a number of string related methods. */ export class StringModule { constructor(private readonly faker: Faker) { diff --git a/src/modules/vehicle/index.ts b/src/modules/vehicle/index.ts index 25308dcb117..836d92901c2 100644 --- a/src/modules/vehicle/index.ts +++ b/src/modules/vehicle/index.ts @@ -5,9 +5,9 @@ import type { Faker } from '../..'; * * ### Overview * - * Most methods are related to cars/automobiles: a [`vehicle()`](https://next.fakerjs.dev/api/vehicle.html#vehicle) name is comprised of a car [`manufacturer()`](https://next.fakerjs.dev/api/vehicle.html#manufacturer) and [`model()`](https://next.fakerjs.dev/api/vehicle.html#model). You can also generate [`fuel()`](https://next.fakerjs.dev/api/vehicle.html#fuel), [`type()`](https://next.fakerjs.dev/api/vehicle.html#type), and [`color()`](https://next.fakerjs.dev/api/vehicle.html#color), as well as typical car registration IDs [`vin()`](https://next.fakerjs.dev/api/vehicle.html#vin) and [`vrm()`](https://next.fakerjs.dev/api/vehicle.html#vrm). + * Most methods are related to cars/automobiles: a [`vehicle()`](https://fakerjs.dev/api/vehicle.html#vehicle) name is comprised of a car [`manufacturer()`](https://fakerjs.dev/api/vehicle.html#manufacturer) and [`model()`](https://fakerjs.dev/api/vehicle.html#model). You can also generate [`fuel()`](https://fakerjs.dev/api/vehicle.html#fuel), [`type()`](https://fakerjs.dev/api/vehicle.html#type), and [`color()`](https://fakerjs.dev/api/vehicle.html#color), as well as typical car registration IDs [`vin()`](https://fakerjs.dev/api/vehicle.html#vin) and [`vrm()`](https://fakerjs.dev/api/vehicle.html#vrm). * - * If you prefer two wheels, you can generate a [`bicycle()`](https://next.fakerjs.dev/api/vehicle.html#bicycle) type instead. + * If you prefer two wheels, you can generate a [`bicycle()`](https://fakerjs.dev/api/vehicle.html#bicycle) type instead. */ export class VehicleModule { constructor(private readonly faker: Faker) { diff --git a/test/airline.spec.ts b/test/airline.spec.ts index 95e4bef0c61..3f17d1a6814 100644 --- a/test/airline.spec.ts +++ b/test/airline.spec.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from 'vitest'; import { Aircraft, faker } from '../src'; import { seededTests } from './support/seededRuns'; +import { times } from './support/times'; const NON_SEEDED_BASED_RUN = 5; @@ -40,8 +41,9 @@ describe('airline', () => { }); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe(`airport()`, () => { it('should return a random value from airport array', () => { const airport = faker.airline.airport(); @@ -175,5 +177,5 @@ describe('airline', () => { }); }); } - }); + ); }); diff --git a/test/all_functional.spec.ts b/test/all_functional.spec.ts index 524862343e6..c706a0ce794 100644 --- a/test/all_functional.spec.ts +++ b/test/all_functional.spec.ts @@ -137,94 +137,84 @@ describe('BROKEN_LOCALE_METHODS test', () => { expect(obsoleteModules, 'No obsolete configuration').toEqual([]); }); - Object.keys(modules).forEach((module) => { - describe(`${module}`, () => { - it('should not contain obsolete configuration (methods)', () => { - const existingMethods = modules[module]; - const configuredMethods = Object.keys( - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument - BROKEN_LOCALE_METHODS[module] ?? {} - ); - const obsoleteMethods = configuredMethods.filter( - (method) => !existingMethods.includes(method) - ); - - expect(obsoleteMethods, 'No obsolete configuration').toEqual([]); - }); + describe.each(Object.keys(modules))('%s', (module) => { + it('should not contain obsolete configuration (methods)', () => { + const existingMethods = modules[module]; + const configuredMethods = Object.keys( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + BROKEN_LOCALE_METHODS[module] ?? {} + ); + const obsoleteMethods = configuredMethods.filter( + (method) => !existingMethods.includes(method) + ); + + expect(obsoleteMethods, 'No obsolete configuration').toEqual([]); }); }); }); describe('functional tests', () => { - for (const [locale, faker] of Object.entries(allFakers)) { - describe(`${locale}`, () => { - if (locale === 'base') { - it.skip('base locale is checked by other tests'); - return; - } - - Object.keys(modules).forEach((module) => { - describe(`${module}`, () => { - modules[module].forEach((meth) => { - const testAssertion = () => { - // TODO @ST-DDT 2022-03-28: Use random seed once there are no more failures - faker.seed(1); - const result = faker[module][meth](); - - if (meth === 'boolean') { - expect(result).toBeTypeOf('boolean'); - } else { - expect(result).toBeTruthy(); - expect(result).not.toEqual([]); - } - }; - - if (isWorkingLocaleForMethod(module, meth, locale)) { - it(`${meth}()`, testAssertion); - } else { - // TODO @ST-DDT 2022-03-28: Remove once there are no more failures - // We expect a failure here to ensure we remove the exclusions when fixed - it.fails(`${meth}()`, testAssertion); - } - }); - }); + describe.each(Object.entries(allFakers))('%s', (locale, faker) => { + if (locale === 'base') { + it.skip('base locale is checked by other tests'); + return; + } + + describe.each(Object.entries(modules))('%s', (module, methods) => { + methods.forEach((meth) => { + const testAssertion = () => { + // TODO @ST-DDT 2022-03-28: Use random seed once there are no more failures + faker.seed(1); + const result = faker[module][meth](); + + if (meth === 'boolean') { + expect(result).toBeTypeOf('boolean'); + } else { + expect(result).toBeTruthy(); + expect(result).not.toEqual([]); + } + }; + + if (isWorkingLocaleForMethod(module, meth, locale)) { + it(`${meth}()`, testAssertion); + } else { + // TODO @ST-DDT 2022-03-28: Remove once there are no more failures + // We expect a failure here to ensure we remove the exclusions when fixed + it.fails(`${meth}()`, testAssertion); + } }); }); - } + }); }); describe('faker.helpers.fake functional tests', () => { - for (const [locale, faker] of Object.entries(allFakers)) { - describe(`${locale}`, () => { - if (locale === 'base') { - it.skip('base locale is checked by other tests'); - return; - } - - Object.keys(modules).forEach((module) => { - describe(`${module}`, () => { - modules[module].forEach((meth) => { - const testAssertion = () => { - // TODO @ST-DDT 2022-03-28: Use random seed once there are no more failures - faker.seed(1); - const result = faker.helpers.fake(`{{${module}.${meth}}}`); - - expect(result).toBeTypeOf('string'); - expect(result).not.toBe(''); - expect(result).not.toBe('null'); - expect(result).not.toBe('undefined'); - }; - - if (isWorkingLocaleForMethod(module, meth, locale)) { - it(`${meth}()`, testAssertion); - } else { - // TODO @ST-DDT 2022-03-28: Remove once there are no more failures - // We expect a failure here to ensure we remove the exclusions when fixed - it.fails(`${meth}()`, testAssertion); - } - }); - }); + describe.each(Object.entries(allFakers))('%s', (locale, faker) => { + if (locale === 'base') { + it.skip('base locale is checked by other tests'); + return; + } + + describe.each(Object.entries(modules))('%s', (module, methods) => { + methods.forEach((meth) => { + const testAssertion = () => { + // TODO @ST-DDT 2022-03-28: Use random seed once there are no more failures + faker.seed(1); + const result = faker.helpers.fake(`{{${module}.${meth}}}`); + + expect(result).toBeTypeOf('string'); + expect(result).not.toBe(''); + expect(result).not.toBe('null'); + expect(result).not.toBe('undefined'); + }; + + if (isWorkingLocaleForMethod(module, meth, locale)) { + it(`${meth}()`, testAssertion); + } else { + // TODO @ST-DDT 2022-03-28: Remove once there are no more failures + // We expect a failure here to ensure we remove the exclusions when fixed + it.fails(`${meth}()`, testAssertion); + } }); }); - } + }); }); diff --git a/test/animal.spec.ts b/test/animal.spec.ts index 11532b89cc8..210fc5fb324 100644 --- a/test/animal.spec.ts +++ b/test/animal.spec.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from 'vitest'; import { faker } from '../src'; import { seededTests } from './support/seededRuns'; +import { times } from './support/times'; const NON_SEEDED_BASED_RUN = 5; @@ -27,16 +28,15 @@ describe('animal', () => { t.itEach(...functionNames); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { - for (const functionName of functionNames) { - describe(`${functionName}()`, () => { - it(`should return random value from ${functionName} array`, () => { - const actual = faker.animal[functionName](); - expect(faker.definitions.animal[functionName]).toContain(actual); - }); + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { + describe.each(functionNames)('%s()', (functionName) => { + it(`should return random value from ${functionName} array`, () => { + const actual = faker.animal[functionName](); + expect(faker.definitions.animal[functionName]).toContain(actual); }); - } + }); } - }); + ); }); diff --git a/test/color.spec.ts b/test/color.spec.ts index 3f4f04ddf11..30c81f9419d 100644 --- a/test/color.spec.ts +++ b/test/color.spec.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from 'vitest'; import { CssFunction, CssSpace, faker } from '../src'; import { seededTests } from './support/seededRuns'; +import { times } from './support/times'; const NON_SEEDED_BASED_RUN = 5; @@ -24,8 +25,9 @@ describe('color', () => { // Create and log-back the seed for debug purposes faker.seed(Math.ceil(Math.random() * 1_000_000_000)); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe(`human()`, () => { it('should return random human readable color from human color array', () => { const color = faker.color.human(); @@ -403,5 +405,5 @@ describe('color', () => { }); }); } - }); + ); }); diff --git a/test/commerce.spec.ts b/test/commerce.spec.ts index 89abd4bbc7a..743aa58b38d 100644 --- a/test/commerce.spec.ts +++ b/test/commerce.spec.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from 'vitest'; import { faker } from '../src'; import { seededTests } from './support/seededRuns'; +import { times } from './support/times'; const NON_SEEDED_BASED_RUN = 5; @@ -39,8 +40,9 @@ describe('commerce', () => { }); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe(`department()`, () => { it('should return random value from department array', () => { const department = faker.commerce.department(); @@ -157,5 +159,5 @@ describe('commerce', () => { }); }); } - }); + ); }); diff --git a/test/company.spec.ts b/test/company.spec.ts index 703eb960171..9811710d3ce 100644 --- a/test/company.spec.ts +++ b/test/company.spec.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from 'vitest'; import { faker } from '../src'; import { seededTests } from './support/seededRuns'; +import { times } from './support/times'; const NON_SEEDED_BASED_RUN = 5; @@ -23,8 +24,9 @@ describe('company', () => { t.skip('bs').skip('bsAdjective').skip('bsBuzz').skip('bsNoun'); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe('suffixes()', () => { it('should return all suffixes', () => { const actual = faker.company.suffixes(); @@ -139,5 +141,5 @@ describe('company', () => { }); }); } - }); + ); }); diff --git a/test/database.spec.ts b/test/database.spec.ts index dacaa5cfd7e..2d58930d3c9 100644 --- a/test/database.spec.ts +++ b/test/database.spec.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from 'vitest'; import { faker } from '../src'; import { seededTests } from './support/seededRuns'; +import { times } from './support/times'; const NON_SEEDED_BASED_RUN = 5; @@ -9,8 +10,9 @@ describe('database', () => { t.itEach('column', 'type', 'collation', 'engine', 'mongodbObjectId'); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe('column()', () => { it('should return a column name from array', () => { const column = faker.database.column(); @@ -54,5 +56,5 @@ describe('database', () => { }); }); } - }); + ); }); diff --git a/test/datatype.spec.ts b/test/datatype.spec.ts index ae306b1a583..55e81412e37 100644 --- a/test/datatype.spec.ts +++ b/test/datatype.spec.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from 'vitest'; import { faker, FakerError } from '../src'; import { seededTests } from './support/seededRuns'; +import { times } from './support/times'; const NON_SEEDED_BASED_RUN = 25; @@ -89,8 +90,9 @@ describe('datatype', () => { }); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe('number', () => { it('should return a random number given a maximum value as Number', () => { const max = 10; @@ -548,5 +550,5 @@ describe('datatype', () => { }); }); } - }); + ); }); diff --git a/test/date.spec.ts b/test/date.spec.ts index d456b53ca24..2e48e632145 100644 --- a/test/date.spec.ts +++ b/test/date.spec.ts @@ -1,6 +1,7 @@ import { afterEach, describe, expect, it } from 'vitest'; import { faker, fakerAZ, FakerError } from '../src'; import { seededTests } from './support/seededRuns'; +import { times } from './support/times'; const converterMap = [ (d: Date) => d, @@ -200,8 +201,9 @@ describe('date', () => { }); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe('anytime()', () => { it('should return a date', () => { const actual = faker.date.anytime(); @@ -788,7 +790,7 @@ describe('date', () => { }); }); } - }); + ); describe('refDateSource', () => { afterEach(() => { diff --git a/test/finance.spec.ts b/test/finance.spec.ts index da0f7df3d9f..8437e748713 100644 --- a/test/finance.spec.ts +++ b/test/finance.spec.ts @@ -5,6 +5,7 @@ import { FakerError } from '../src/errors/faker-error'; import ibanLib from '../src/modules/finance/iban'; import { luhnCheck } from '../src/modules/helpers/luhn-check'; import { seededTests } from './support/seededRuns'; +import { times } from './support/times'; const NON_SEEDED_BASED_RUN = 5; @@ -114,8 +115,9 @@ describe('finance', () => { }); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe('account()', () => { it('should supply a default length', () => { const accountNumber = faker.finance.account(); @@ -613,5 +615,5 @@ describe('finance', () => { }); }); } - }); + ); }); diff --git a/test/finance_iban.spec.ts b/test/finance_iban.spec.ts index 1194a73a48a..c8462cbe031 100644 --- a/test/finance_iban.spec.ts +++ b/test/finance_iban.spec.ts @@ -2,6 +2,7 @@ import validator from 'validator'; import { describe, expect, it } from 'vitest'; import { faker } from '../src'; import ibanLib from '../src/modules/finance/iban'; +import { times } from './support/times'; const NON_SEEDED_BASED_RUN = 25; @@ -16,8 +17,9 @@ describe('finance_iban', () => { }); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe('specific IBAN country checks', () => { it('IBAN for Georgia is correct', () => { // Georgia @@ -355,5 +357,5 @@ describe('finance_iban', () => { }); }); } - }); + ); }); diff --git a/test/git.spec.ts b/test/git.spec.ts index c5042ad203a..4000e71d413 100644 --- a/test/git.spec.ts +++ b/test/git.spec.ts @@ -2,6 +2,7 @@ import validator from 'validator'; import { describe, expect, it } from 'vitest'; import { faker } from '../src'; import { seededTests } from './support/seededRuns'; +import { times } from './support/times'; const NON_SEEDED_BASED_RUN = 5; @@ -31,8 +32,9 @@ describe('git', () => { }); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe('branch()', () => { it('should return a random branch', () => { const branch = faker.git.branch(); @@ -164,5 +166,5 @@ describe('git', () => { ); }); } - }); + ); }); diff --git a/test/hacker.spec.ts b/test/hacker.spec.ts index 02316fdf0e0..e6bbcb25968 100644 --- a/test/hacker.spec.ts +++ b/test/hacker.spec.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from 'vitest'; import { faker } from '../src'; import { seededTests } from './support/seededRuns'; +import { times } from './support/times'; const NON_SEEDED_BASED_RUN = 5; @@ -9,8 +10,9 @@ describe('hacker', () => { t.itEach('abbreviation', 'adjective', 'noun', 'verb', 'ingverb', 'phrase'); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe('abbreviation()', () => { it('should return a random abbreviation from array', () => { const abbreviation = faker.hacker.abbreviation(); @@ -70,5 +72,5 @@ describe('hacker', () => { }); }); } - }); + ); }); diff --git a/test/helpers.spec.ts b/test/helpers.spec.ts index e77435df175..67a2de3d1fa 100644 --- a/test/helpers.spec.ts +++ b/test/helpers.spec.ts @@ -2,6 +2,7 @@ import { describe, expect, it } from 'vitest'; import { faker, FakerError } from '../src'; import { luhnCheck } from '../src/modules/helpers/luhn-check'; import { seededTests } from './support/seededRuns'; +import { times } from './support/times'; import './vitest-extensions'; const NON_SEEDED_BASED_RUN = 5; @@ -193,8 +194,9 @@ describe('helpers', () => { }); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe('arrayElement', () => { it('should return a random element in the array', () => { const testArray = ['hello', 'to', 'you', 'my', 'friend']; @@ -1214,118 +1216,118 @@ Try adjusting maxTime or maxRetries parameters for faker.helpers.unique().`) ); }); }); - } - // This test can be only executed once, because the unique function has a global state. - // See: https://github.com/faker-js/faker/issues/371 - describe('global unique()', () => { - it('should be possible to exclude results as array', () => { - const internetProtocol = () => - faker.helpers.arrayElement(['https', 'http']); - const result = faker.helpers.unique(internetProtocol, [], { - exclude: ['https'], + describe('multiple()', () => { + it('should generate values from the function with a default length of 3', () => { + const result = faker.helpers.multiple(faker.person.firstName); + expect(result).toBeTypeOf('object'); + expect(Array.isArray(result)).toBe(true); + expect(result.length).toBe(3); }); - expect(result).toBe('http'); - }); - it('no conflict', () => { - let i = 0; - const method = () => `no conflict: ${i++}`; - expect(faker.helpers.unique(method)).toBe('no conflict: 0'); - expect(faker.helpers.unique(method)).toBe('no conflict: 1'); - }); - - it('with conflict', () => { - const method = () => 'with conflict: 0'; - expect(faker.helpers.unique(method)).toBe('with conflict: 0'); - expect(() => - faker.helpers.unique(method, [], { - maxRetries: 1, - }) - ).toThrow( - new FakerError(`Exceeded maxRetries: 1 for uniqueness check. + it('should generate the given amount of values from the function', () => { + const result = faker.helpers.multiple(faker.person.firstName, { + count: 5, + }); + expect(result).toBeTypeOf('object'); + expect(Array.isArray(result)).toBe(true); + expect(result.length).toBe(5); + }); -May not be able to generate any more unique values with current settings. -Try adjusting maxTime or maxRetries parameters for faker.helpers.unique().`) - ); + it('should generate a ranged number of values from the function', () => { + const result = faker.helpers.multiple(faker.person.firstName, { + count: { min: 1, max: 10 }, + }); + expect(result).toBeTypeOf('object'); + expect(Array.isArray(result)).toBe(true); + expect(result.length).toBeGreaterThanOrEqual(1); + expect(result.length).toBeLessThanOrEqual(10); + }); }); + } + ); - it('should not mutate most of the input option properties', () => { - const method = () => 'options-mutate-test'; - - const startTime = new Date().getTime(); - const maxTime = 49; - const maxRetries = 49; - const currentIterations = 0; - const exclude = []; - const compare = (obj, key) => (obj[key] === undefined ? -1 : 0); - - const options = { - startTime, - maxTime, - maxRetries, - currentIterations, - exclude, - compare, - }; - - faker.helpers.unique(method, [], options); - - expect(options.startTime).toBe(startTime); - expect(options.maxTime).toBe(maxTime); - expect(options.maxRetries).toBe(maxRetries); - // `options.currentIterations` is incremented in the `faker.helpers.unique` function. - expect(options.exclude).toBe(exclude); - expect(options.compare).toBe(compare); + // This test can be only executed once, because the unique function has a global state. + // See: https://github.com/faker-js/faker/issues/371 + describe('global unique()', () => { + it('should be possible to exclude results as array', () => { + const internetProtocol = () => + faker.helpers.arrayElement(['https', 'http']); + const result = faker.helpers.unique(internetProtocol, [], { + exclude: ['https'], }); + expect(result).toBe('http'); + }); - it('should be possible to pass a user-specific store', () => { - const store = {}; + it('no conflict', () => { + let i = 0; + const method = () => `no conflict: ${i++}`; + expect(faker.helpers.unique(method)).toBe('no conflict: 0'); + expect(faker.helpers.unique(method)).toBe('no conflict: 1'); + }); - const method = () => 'with conflict: 0'; + it('with conflict', () => { + const method = () => 'with conflict: 0'; + expect(faker.helpers.unique(method)).toBe('with conflict: 0'); + expect(() => + faker.helpers.unique(method, [], { + maxRetries: 1, + }) + ).toThrow( + new FakerError(`Exceeded maxRetries: 1 for uniqueness check. - expect(faker.helpers.unique(method, [], { store })).toBe( - 'with conflict: 0' - ); - expect(store).toEqual({ 'with conflict: 0': 'with conflict: 0' }); +May not be able to generate any more unique values with current settings. +Try adjusting maxTime or maxRetries parameters for faker.helpers.unique().`) + ); + }); - expect(() => faker.helpers.unique(method, [], { store })).toThrow(); + it('should not mutate most of the input option properties', () => { + const method = () => 'options-mutate-test'; + + const startTime = new Date().getTime(); + const maxTime = 49; + const maxRetries = 49; + const currentIterations = 0; + const exclude = []; + const compare = (obj, key) => (obj[key] === undefined ? -1 : 0); + + const options = { + startTime, + maxTime, + maxRetries, + currentIterations, + exclude, + compare, + }; + + faker.helpers.unique(method, [], options); + + expect(options.startTime).toBe(startTime); + expect(options.maxTime).toBe(maxTime); + expect(options.maxRetries).toBe(maxRetries); + // `options.currentIterations` is incremented in the `faker.helpers.unique` function. + expect(options.exclude).toBe(exclude); + expect(options.compare).toBe(compare); + }); - delete store['with conflict: 0']; + it('should be possible to pass a user-specific store', () => { + const store = {}; - expect(faker.helpers.unique(method, [], { store })).toBe( - 'with conflict: 0' - ); - expect(store).toEqual({ 'with conflict: 0': 'with conflict: 0' }); - }); - }); + const method = () => 'with conflict: 0'; - describe('multiple()', () => { - it('should generate values from the function with a default length of 3', () => { - const result = faker.helpers.multiple(faker.person.firstName); - expect(result).toBeTypeOf('object'); - expect(Array.isArray(result)).toBe(true); - expect(result.length).toBe(3); - }); + expect(faker.helpers.unique(method, [], { store })).toBe( + 'with conflict: 0' + ); + expect(store).toEqual({ 'with conflict: 0': 'with conflict: 0' }); - it('should generate the given amount of values from the function', () => { - const result = faker.helpers.multiple(faker.person.firstName, { - count: 5, - }); - expect(result).toBeTypeOf('object'); - expect(Array.isArray(result)).toBe(true); - expect(result.length).toBe(5); - }); + expect(() => faker.helpers.unique(method, [], { store })).toThrow(); - it('should generate a ranged number of values from the function', () => { - const result = faker.helpers.multiple(faker.person.firstName, { - count: { min: 1, max: 10 }, - }); - expect(result).toBeTypeOf('object'); - expect(Array.isArray(result)).toBe(true); - expect(result.length).toBeGreaterThanOrEqual(1); - expect(result.length).toBeLessThanOrEqual(10); - }); + delete store['with conflict: 0']; + + expect(faker.helpers.unique(method, [], { store })).toBe( + 'with conflict: 0' + ); + expect(store).toEqual({ 'with conflict: 0': 'with conflict: 0' }); }); }); }); diff --git a/test/image.spec.ts b/test/image.spec.ts index 612766914b2..2201e4fdb7e 100644 --- a/test/image.spec.ts +++ b/test/image.spec.ts @@ -238,16 +238,14 @@ describe('image', () => { 'technology', ]; - for (const category of categories) { - describe(`${category}()`, () => { - it(`should return a random ${category} image url`, () => { - const actual = faker.image.unsplash[category](); - expect(actual).toBe( - `https://source.unsplash.com/category/${category}/640x480` - ); - }); + describe.each(categories)(`%s()`, (category) => { + it(`should return a random ${category} image url`, () => { + const actual = faker.image.unsplash[category](); + expect(actual).toBe( + `https://source.unsplash.com/category/${category}/640x480` + ); }); - } + }); }); describe('placeholder', () => { diff --git a/test/internet.spec.ts b/test/internet.spec.ts index 204234c6a80..54b92075698 100644 --- a/test/internet.spec.ts +++ b/test/internet.spec.ts @@ -156,8 +156,9 @@ describe('internet', () => { }); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe('avatar', () => { it('should return a random avatar url', () => { const avatar = faker.internet.avatar(); @@ -808,5 +809,5 @@ describe('internet', () => { }); }); } - }); + ); }); diff --git a/test/locale-data.spec.ts b/test/locale-data.spec.ts index 8698125e742..f3332f0f80b 100644 --- a/test/locale-data.spec.ts +++ b/test/locale-data.spec.ts @@ -8,11 +8,9 @@ function checkLocaleData(data: unknown) { expect(data).not.toContainDuplicates(); }); } else if (typeof data === 'object' && data != null) { - for (const [nestedKey, nestedData] of Object.entries(data)) { - describe(`${nestedKey}`, () => { - checkLocaleData(nestedData); - }); - } + describe.each(Object.entries(data))('%s', (_, nestedData) => { + checkLocaleData(nestedData); + }); } else { it.skip('primitives cannot be tested'); } diff --git a/test/locale-imports.spec.ts b/test/locale-imports.spec.ts index 5d12ded5525..3cbe38aabce 100644 --- a/test/locale-imports.spec.ts +++ b/test/locale-imports.spec.ts @@ -2,13 +2,71 @@ import { describe, expect, it } from 'vitest'; import type { Faker } from '../src'; import { allLocales } from '../src'; -describe('locale imports', () => { - for (const locale in allLocales) { - it(`should be possible to directly require('@faker-js/faker/locale/${locale}')`, () => { +describe.each(Object.keys(allLocales))('locale imports', (locale) => { + it(`should be possible to directly require('@faker-js/faker/locale/${locale}')`, () => { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const { faker } = require(`../dist/cjs/locale/${locale}`) as { + faker: Faker; + }; + + expect(faker).toBeDefined(); + expect(faker.string.alpha()).toBeTypeOf('string'); + expect(faker.definitions.metadata.title).toBe( + allLocales[locale].metadata.title + ); + }); + + it(`should be possible to directly import('@faker-js/faker/locale/${locale}')`, async () => { + const { faker } = (await import(`../dist/esm/locale/${locale}`)) as { + faker: Faker; + }; + + expect(faker).toBeDefined(); + expect(faker.string.alpha()).toBeTypeOf('string'); + expect(faker.definitions.metadata.title).toBe( + allLocales[locale].metadata.title + ); + }); + + it('should have complete metadata values', () => { + const metadata = allLocales[locale].metadata; + expect(metadata.title).toBeTypeOf('string'); + expect(metadata.code).toBeTypeOf('string'); + expect(metadata.code).toEqual(locale); + if (locale !== 'base') { + expect(metadata.language).toBeTypeOf('string'); + expect(metadata.language).toMatch(/^[a-z]{2}$/); + expect(metadata.script).toBeTypeOf('string'); + expect([ + 'Arab', + 'Armn', + 'Cyrl', + 'Deva', + 'Geor', + 'Grek', + 'Hans', + 'Hant', + 'Hebr', + 'Jpan', + 'Kore', + 'Latn', + 'Thaa', + 'Thai', + ]).toContain(metadata.script); + expect(metadata.endonym).toBeTypeOf('string'); + expect(metadata.dir).toBeTypeOf('string'); + expect(['ltr', 'rtl']).toContain(metadata.dir); + if (metadata.country) { + expect(metadata.country).toBeTypeOf('string'); + expect(metadata.country).toMatch(/^[A-Z]{2}$/); + } + } + }); + + describe('Internal tests to cover `src/locale/*.ts`', () => { + it(`should be possible to directly require('../locale/${locale}')`, () => { // eslint-disable-next-line @typescript-eslint/no-var-requires - const { faker } = require(`../dist/cjs/locale/${locale}`) as { - faker: Faker; - }; + const { faker } = require(`../locale/${locale}`); expect(faker).toBeDefined(); expect(faker.string.alpha()).toBeTypeOf('string'); @@ -17,10 +75,8 @@ describe('locale imports', () => { ); }); - it(`should be possible to directly import('@faker-js/faker/locale/${locale}')`, async () => { - const { faker } = (await import(`../dist/esm/locale/${locale}`)) as { - faker: Faker; - }; + it(`should be possible to directly import('../src/locale/${locale}')`, async () => { + const { faker } = await import(`../src/locale/${locale}`); expect(faker).toBeDefined(); expect(faker.string.alpha()).toBeTypeOf('string'); @@ -28,63 +84,5 @@ describe('locale imports', () => { allLocales[locale].metadata.title ); }); - - it('should have complete metadata values', () => { - const metadata = allLocales[locale].metadata; - expect(metadata.title).toBeTypeOf('string'); - expect(metadata.code).toBeTypeOf('string'); - expect(metadata.code).toEqual(locale); - if (locale !== 'base') { - expect(metadata.language).toBeTypeOf('string'); - expect(metadata.language).toMatch(/^[a-z]{2}$/); - expect(metadata.script).toBeTypeOf('string'); - expect([ - 'Arab', - 'Armn', - 'Cyrl', - 'Deva', - 'Geor', - 'Grek', - 'Hans', - 'Hant', - 'Hebr', - 'Jpan', - 'Kore', - 'Latn', - 'Thaa', - 'Thai', - ]).toContain(metadata.script); - expect(metadata.endonym).toBeTypeOf('string'); - expect(metadata.dir).toBeTypeOf('string'); - expect(['ltr', 'rtl']).toContain(metadata.dir); - if (metadata.country) { - expect(metadata.country).toBeTypeOf('string'); - expect(metadata.country).toMatch(/^[A-Z]{2}$/); - } - } - }); - - describe('Internal tests to cover `src/locale/*.ts`', () => { - it(`should be possible to directly require('../locale/${locale}')`, () => { - // eslint-disable-next-line @typescript-eslint/no-var-requires - const { faker } = require(`../locale/${locale}`); - - expect(faker).toBeDefined(); - expect(faker.string.alpha()).toBeTypeOf('string'); - expect(faker.definitions.metadata.title).toBe( - allLocales[locale].metadata.title - ); - }); - - it(`should be possible to directly import('../src/locale/${locale}')`, async () => { - const { faker } = await import(`../src/locale/${locale}`); - - expect(faker).toBeDefined(); - expect(faker.string.alpha()).toBeTypeOf('string'); - expect(faker.definitions.metadata.title).toBe( - allLocales[locale].metadata.title - ); - }); - }); - } + }); }); diff --git a/test/locale-proxy.spec.ts b/test/locale-proxy.spec.ts index ce82744adfa..d16714853c2 100644 --- a/test/locale-proxy.spec.ts +++ b/test/locale-proxy.spec.ts @@ -98,7 +98,7 @@ describe('LocaleProxy', () => { new FakerError( `The locale data for 'category.missing' are missing in this locale. Please contribute the missing data to the project or use a locale/Faker instance that has these data. - For more information see https://next.fakerjs.dev/guide/localization.html` + For more information see https://fakerjs.dev/guide/localization.html` ) ); }); @@ -108,7 +108,7 @@ describe('LocaleProxy', () => { new FakerError( `The locale data for 'airline.missing' are missing in this locale. Please contribute the missing data to the project or use a locale/Faker instance that has these data. - For more information see https://next.fakerjs.dev/guide/localization.html` + For more information see https://fakerjs.dev/guide/localization.html` ) ); }); diff --git a/test/location.spec.ts b/test/location.spec.ts index 22b5b21495d..578b91d4cfc 100644 --- a/test/location.spec.ts +++ b/test/location.spec.ts @@ -148,8 +148,9 @@ describe('location', () => { }); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe('countryCode()', () => { it('returns random alpha-3 countryCode', () => { const countryCode = faker.location.countryCode('alpha-3'); @@ -196,7 +197,7 @@ describe('location', () => { new FakerError( `The locale data for 'location.postcode_by_state' are missing in this locale. Please contribute the missing data to the project or use a locale/Faker instance that has these data. - For more information see https://next.fakerjs.dev/guide/localization.html` + For more information see https://fakerjs.dev/guide/localization.html` ) ); }); @@ -363,44 +364,46 @@ describe('location', () => { }); describe('nearbyGPSCoordinate()', () => { - for (const isMetric of [true, false]) { - for (const radius of times(100)) { - it(`should return random gps coordinate within a distance of another one (${JSON.stringify( - { isMetric, radius } - )})`, () => { - const latitude1 = +faker.location.latitude(); - const longitude1 = +faker.location.longitude(); - - const coordinate = faker.location.nearbyGPSCoordinate({ - origin: [latitude1, longitude1], - radius, - isMetric, - }); - - expect(coordinate.length).toBe(2); - expect(coordinate[0]).toBeTypeOf('number'); - expect(coordinate[1]).toBeTypeOf('number'); - - const latitude2 = coordinate[0]; - expect(latitude2).toBeGreaterThanOrEqual(-90.0); - expect(latitude2).toBeLessThanOrEqual(90.0); - - const longitude2 = coordinate[1]; - expect(longitude2).toBeGreaterThanOrEqual(-180.0); - expect(longitude2).toBeLessThanOrEqual(180.0); - - const actualDistance = haversine( - latitude1, - longitude1, - latitude2, - longitude2, - isMetric - ); - expect(actualDistance).toBeLessThanOrEqual(radius); + it.each( + times(100).flatMap((radius) => [ + [{ isMetric: true, radius }], + [{ isMetric: false, radius }], + ]) + )( + 'should return random gps coordinate within a distance of another one (%j)', + ({ isMetric, radius }) => { + const latitude1 = +faker.location.latitude(); + const longitude1 = +faker.location.longitude(); + + const coordinate = faker.location.nearbyGPSCoordinate({ + origin: [latitude1, longitude1], + radius, + isMetric, }); + + expect(coordinate.length).toBe(2); + expect(coordinate[0]).toBeTypeOf('number'); + expect(coordinate[1]).toBeTypeOf('number'); + + const latitude2 = coordinate[0]; + expect(latitude2).toBeGreaterThanOrEqual(-90.0); + expect(latitude2).toBeLessThanOrEqual(90.0); + + const longitude2 = coordinate[1]; + expect(longitude2).toBeGreaterThanOrEqual(-180.0); + expect(longitude2).toBeLessThanOrEqual(180.0); + + const actualDistance = haversine( + latitude1, + longitude1, + latitude2, + longitude2, + isMetric + ); + expect(actualDistance).toBeLessThanOrEqual(radius); } - } + ); }); } - }); + ); }); diff --git a/test/lorem.spec.ts b/test/lorem.spec.ts index f22cf72f40e..ecb2bc34750 100644 --- a/test/lorem.spec.ts +++ b/test/lorem.spec.ts @@ -34,8 +34,9 @@ describe('lorem', () => { }); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe('word()', () => { it('should return random value from word array', () => { const actual = faker.lorem.word(); @@ -358,5 +359,5 @@ describe('lorem', () => { }); }); } - }); + ); }); diff --git a/test/mersenne.spec.ts b/test/mersenne.spec.ts index 35fd445a04f..11b174f4705 100644 --- a/test/mersenne.spec.ts +++ b/test/mersenne.spec.ts @@ -2,51 +2,49 @@ import { beforeAll, beforeEach, describe, expect, it } from 'vitest'; import type { Mersenne } from '../src/internal/mersenne/mersenne'; import mersenneFn from '../src/internal/mersenne/mersenne'; import { seededRuns } from './support/seededRuns'; +import { times } from './support/times'; const NON_SEEDED_BASED_RUN = 25; describe('mersenne twister', () => { const mersenne: Mersenne = mersenneFn(); - for (const seed of [...seededRuns, [42, 1, 2], [1337, 1, 2], [1211, 1, 2]]) { - describe(`seed: ${JSON.stringify(seed)}`, () => { - beforeEach(() => { - mersenne.seed(seed); - }); + describe.each( + [...seededRuns, ...seededRuns.map((v) => [v, 1, 2])].map((v) => [v]) + )('seed: %j', (seed) => { + beforeEach(() => { + mersenne.seed(seed); + }); - it(`should return deterministic value for next()`, () => { - const actual = mersenne.next(); + it('should return deterministic value for next()', () => { + const actual = mersenne.next(); - expect(actual).toMatchSnapshot(); - }); + expect(actual).toMatchSnapshot(); }); + }); + + function randomSeed(): number { + return Math.ceil(Math.random() * 1_000_000_000); } // Create and log-back the seed for debug purposes - const seeds = [ - Math.ceil(Math.random() * 1_000_000_000), - [ - Math.ceil(Math.random() * 1_000_000_000), - Math.ceil(Math.random() * 1_000_000_000), - ], - ]; - - for (const seed of seeds) { - describe(`random seeded tests ${JSON.stringify(seed)}`, () => { - beforeAll(() => { - mersenne.seed(seed); - }); + describe.each( + times(NON_SEEDED_BASED_RUN).flatMap(() => [ + [randomSeed()], + [[randomSeed(), randomSeed()]], + ]) + )('random seeded tests %j', (seed) => { + beforeAll(() => { + mersenne.seed(seed); + }); - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { - describe('next', () => { - it('should return random number from interval [0, 1)', () => { - const actual = mersenne.next(); + describe('next', () => { + it('should return random number from interval [0, 1)', () => { + const actual = mersenne.next(); - expect(actual).toBeGreaterThanOrEqual(0); - expect(actual).toBeLessThan(1); - }); - }); - } + expect(actual).toBeGreaterThanOrEqual(0); + expect(actual).toBeLessThan(1); + }); }); - } + }); }); diff --git a/test/music.spec.ts b/test/music.spec.ts index aff8af856fc..f2600b4b423 100644 --- a/test/music.spec.ts +++ b/test/music.spec.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from 'vitest'; import { faker } from '../src'; import { seededTests } from './support/seededRuns'; +import { times } from './support/times'; const NON_SEEDED_BASED_RUN = 5; @@ -9,8 +10,9 @@ describe('music', () => { t.itEach('genre', 'songName'); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe('genre()', () => { it('should return a genre', () => { const genre = faker.music.genre(); @@ -31,5 +33,5 @@ describe('music', () => { }); }); } - }); + ); }); diff --git a/test/person.spec.ts b/test/person.spec.ts index 7465efbdd12..1d4b2ffeac4 100644 --- a/test/person.spec.ts +++ b/test/person.spec.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from 'vitest'; import { faker, fakerAZ, fakerMK, fakerUK, Sex } from '../src'; import { seededTests } from './support/seededRuns'; +import { times } from './support/times'; const NON_SEEDED_BASED_RUN = 5; @@ -40,8 +41,9 @@ describe('person', () => { t.it('zodiacSign'); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe('firstName()', () => { it('should return a random first name', () => { const first_name = faker.person.firstName(); @@ -310,5 +312,5 @@ describe('person', () => { }); }); } - }); + ); }); diff --git a/test/phone.spec.ts b/test/phone.spec.ts index 11b809ff2f8..884cb17804a 100644 --- a/test/phone.spec.ts +++ b/test/phone.spec.ts @@ -2,6 +2,7 @@ import { describe, expect, it } from 'vitest'; import { faker } from '../src'; import { luhnCheck } from '../src/modules/helpers/luhn-check'; import { seededTests } from './support/seededRuns'; +import { times } from './support/times'; const NON_SEEDED_BASED_RUN = 25; @@ -14,8 +15,9 @@ describe('phone', () => { }); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe('number()', () => { it('should return a random phoneNumber with a random format', () => { const phoneNumber = faker.phone.number(); @@ -41,5 +43,5 @@ describe('phone', () => { }); }); } - }); + ); }); diff --git a/test/random.spec.ts b/test/random.spec.ts index 354490a1da3..dbdb724d460 100644 --- a/test/random.spec.ts +++ b/test/random.spec.ts @@ -25,8 +25,9 @@ describe('random', () => { }); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - describe.each(times(NON_SEEDED_BASED_RUN))('%s', () => { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe('word', () => { const bannedChars = [ '!', @@ -454,6 +455,6 @@ describe('random', () => { expect(actual).toMatch(/^[0235679]{1000}$/); }); }); - }); - }); + } + ); }); diff --git a/test/science.spec.ts b/test/science.spec.ts index 6ee1585c445..bd32e67615c 100644 --- a/test/science.spec.ts +++ b/test/science.spec.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from 'vitest'; import { faker } from '../src'; import { seededTests } from './support/seededRuns'; +import { times } from './support/times'; const NON_SEEDED_BASED_RUN = 5; @@ -12,8 +13,9 @@ describe('science', () => { // Create and log-back the seed for debug purposes faker.seed(Math.ceil(Math.random() * 1_000_000_000)); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe(`chemicalElement()`, () => { it('should return an object', () => { const name = faker.science.chemicalElement(); @@ -83,5 +85,5 @@ describe('science', () => { }); }); } - }); + ); }); diff --git a/test/string.spec.ts b/test/string.spec.ts index aabcd6be057..f9e7b6c75ac 100644 --- a/test/string.spec.ts +++ b/test/string.spec.ts @@ -126,8 +126,9 @@ describe('string', () => { }); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe('fromCharacters', () => { it('should return single character when no length provided', () => { const actual = faker.string.fromCharacters('foobar'); @@ -812,5 +813,5 @@ describe('string', () => { }); }); } - }); + ); }); diff --git a/test/system.spec.ts b/test/system.spec.ts index 67d7acf4deb..fe67dcae7ce 100644 --- a/test/system.spec.ts +++ b/test/system.spec.ts @@ -61,8 +61,9 @@ describe('system', () => { }); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe('commonFileExt()', () => { it('should return common file types', () => { const fileExt = faker.system.commonFileExt(); @@ -414,7 +415,7 @@ describe('system', () => { }); }); } - }); + ); describe('extra tests', () => { describe('commonFileName()', () => { diff --git a/test/vehicle.spec.ts b/test/vehicle.spec.ts index d6718426441..5136978b609 100644 --- a/test/vehicle.spec.ts +++ b/test/vehicle.spec.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from 'vitest'; import { faker } from '../src'; import { seededTests } from './support/seededRuns'; +import { times } from './support/times'; const NON_SEEDED_BASED_RUN = 5; @@ -19,8 +20,9 @@ describe('vehicle', () => { ); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe('vehicle()', () => { it('should return a random vehicle', () => { const vehicle = faker.vehicle.vehicle(); @@ -122,5 +124,5 @@ describe('vehicle', () => { }); }); } - }); + ); }); diff --git a/test/word.spec.ts b/test/word.spec.ts index adf7f5309aa..58123a09c62 100644 --- a/test/word.spec.ts +++ b/test/word.spec.ts @@ -2,6 +2,7 @@ import { describe, expect, it } from 'vitest'; import { faker } from '../src'; import { filterWordListByLength } from '../src/modules/word/filterWordListByLength'; import { seededTests } from './support/seededRuns'; +import { times } from './support/times'; const NON_SEEDED_BASED_RUN = 5; @@ -118,8 +119,9 @@ describe('word', () => { }); }); - describe(`random seeded tests for seed ${faker.seed()}`, () => { - for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( + 'random seeded tests for seed %i', + () => { describe(`adjective`, () => { it('should return adjective from adjective array', () => { const actual = faker.word.adjective(); @@ -190,5 +192,5 @@ describe('word', () => { }); }); } - }); + ); });