diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 445baf8ab82..957f9084d3f 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -2,7 +2,7 @@ // README at: https://github.com/devcontainers/templates/tree/main/src/typescript-node { "name": "FakerJs", - "image": "mcr.microsoft.com/devcontainers/typescript-node:22@sha256:9791f4aa527774bc370c6bd2f6705ce5a686f1e6f204badd8dfaacce28c631ae", + "image": "mcr.microsoft.com/devcontainers/typescript-node:24@sha256:ec6af70f1f6561d4f566439d07e1ece38345ed47b6578b4b0793da6422c5e78d", // Features to add to the dev container. More info: https://containers.dev/features. // "features": {}, diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 301307e11aa..7874e42df64 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -58,12 +58,6 @@ { "groupName": "doc-dependencies", "matchPackageNames": ["ts-morph", "vitepress"] - }, - { - // Disable updates for rimraf until Node 18 support is dropped - "groupName": "disabled", - "matchPackageNames": ["rimraf"], - "enabled": false } ], "stopUpdatingLabel": "s: on hold", diff --git a/.github/workflows/check-release-pr.yml b/.github/workflows/check-release-pr.yml index 0ba3fb637cc..3adb9117f46 100644 --- a/.github/workflows/check-release-pr.yml +++ b/.github/workflows/check-release-pr.yml @@ -17,25 +17,25 @@ jobs: steps: - name: Checkout faker - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: path: faker - name: Checkout playground - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: repository: faker-js/playground path: playground - name: Install pnpm - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 + uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 with: package_json_file: faker/package.json - - name: Set node version to 22 - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + - name: Set node version to 24 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: - node-version: 22 + node-version: 24.12.0 cache: 'pnpm' cache-dependency-path: | faker/pnpm-lock.yaml @@ -45,8 +45,6 @@ jobs: run: | cd faker pnpm install - env: - CYPRESS_INSTALL_BINARY: 0 - name: Build - faker run: | diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 835a0eb2f56..a7484e6997f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,31 +16,29 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] - node_version: [18, 20, 22] + node_version: [20, 22, 24] fail-fast: false timeout-minutes: 10 name: 'Build & Unit Test: node-${{ matrix.node_version }}, ${{ matrix.os }}' steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: # Required for docs/versions tests fetch-depth: 0 - name: Install pnpm - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 + uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 - name: Set node version to ${{ matrix.node_version }} - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: ${{ matrix.node_version }} cache: 'pnpm' - name: Install deps run: pnpm install - env: - CYPRESS_INSTALL_BINARY: 0 - name: Build run: pnpm run build @@ -53,7 +51,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] - node_version: [20] + node_version: [24] fail-fast: false env: LANG: zh_SG.UTF-8 @@ -71,24 +69,22 @@ jobs: run: date - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: # Required for docs/versions tests fetch-depth: 0 - name: Install pnpm - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 + uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 - name: Set node version to ${{ matrix.node_version }} - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: ${{ matrix.node_version }} cache: 'pnpm' - name: Install deps run: pnpm install - env: - CYPRESS_INSTALL_BINARY: 0 - name: Build run: pnpm run build @@ -99,16 +95,16 @@ jobs: e2e-test: runs-on: ubuntu-latest container: - image: cypress/browsers:node-22.0.0-chrome-124.0.6367.60-1-ff-125.0.2-edge-124.0.2478.51-1@sha256:02eaae11b7d3dc9f408a5f64c3990faea75943d612ea86b8b218d95b48f22ce8 + image: cypress/browsers:25.0.0@sha256:008da4da0a285b9695d3bfdd1c5c5acb540ada14080d5b90269b34fdf4b9ec6a options: --user 1001 timeout-minutes: 10 - name: 'E2E Doc Test: node-22, ubuntu-latest' + name: 'E2E Doc Test: node-24, ubuntu-latest' steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Install pnpm - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 + uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 - name: Install deps run: pnpm install @@ -116,6 +112,9 @@ jobs: - name: Build docs run: pnpm run docs:build:ci + - name: Download Cypress + run: pnpm run docs:test:e2e:install + - id: e2e name: Run e2e run: pnpm run docs:test:e2e:run @@ -123,26 +122,24 @@ jobs: lint: runs-on: ubuntu-latest timeout-minutes: 10 - name: 'Lint: node-22, ubuntu-latest' + name: 'Lint: node-24, ubuntu-latest' steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: fetch-depth: 0 - name: Install pnpm - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 + uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 - - name: Set node version to 22 - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + - name: Set node version to 24 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: - node-version: 22 + node-version: 24.12.0 cache: 'pnpm' - name: Install deps run: pnpm install - env: - CYPRESS_INSTALL_BINARY: 0 - name: Lint run: pnpm run lint @@ -153,26 +150,24 @@ jobs: ts-check: runs-on: ubuntu-latest timeout-minutes: 10 - name: 'TS-Check: node-22, ubuntu-latest' + name: 'TS-Check: node-24, ubuntu-latest' steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: fetch-depth: 0 - name: Install pnpm - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 + uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 - - name: Set node version to 22 - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + - name: Set node version to 24 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: - node-version: 22 + node-version: 24.12.0 cache: 'pnpm' - name: Install deps run: pnpm install - env: - CYPRESS_INSTALL_BINARY: 0 - name: Build types run: pnpm run build @@ -183,26 +178,24 @@ jobs: codecov: runs-on: ubuntu-latest timeout-minutes: 10 - name: 'Codecov: node-22, ubuntu-latest' + name: 'Codecov: node-24, ubuntu-latest' steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: fetch-depth: 0 - name: Install pnpm - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 + uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 - - name: Set node version to 22 - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + - name: Set node version to 24 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: - node-version: 22 + node-version: 24.12.0 cache: 'pnpm' - name: Install deps run: pnpm install - env: - CYPRESS_INSTALL_BINARY: 0 - name: Build run: pnpm run build @@ -211,7 +204,7 @@ jobs: run: pnpm vitest run --coverage - name: Upload coverage to Codecov - uses: codecov/codecov-action@13ce06bfc6bbe3ecf90edbbf1bc32fe5978ca1d3 # v5.3.1 + uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2 with: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: true diff --git a/.github/workflows/comment-issue.yml b/.github/workflows/comment-issue.yml index 045b377a2f0..3ea0e0cd318 100644 --- a/.github/workflows/comment-issue.yml +++ b/.github/workflows/comment-issue.yml @@ -13,7 +13,7 @@ jobs: issues: write steps: - name: Add Comment For User Interest - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 with: script: | github.rest.issues.createComment({ @@ -31,7 +31,7 @@ jobs: We will start the implementation based on: - - the number of votes (:+1:) and comments + - the number of votes ( :+1: ) and comments - the relevance for the ecosystem - availability of alternatives and workarounds - and the complexity of the requested feature @@ -49,7 +49,7 @@ jobs: }) - name: React to Issue - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 with: script: | github.rest.reactions.createForIssue({ diff --git a/.github/workflows/draft-release.yml b/.github/workflows/draft-release.yml index 42a1a7157b2..09fdf3dafa4 100644 --- a/.github/workflows/draft-release.yml +++ b/.github/workflows/draft-release.yml @@ -21,7 +21,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: fetch-depth: 0 # we need the tags and the commit history for the gh release create command ref: ${{ github.event.pull_request.base.ref }} diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml index 4d17a59900b..dac3cbeb166 100644 --- a/.github/workflows/integration-test.yml +++ b/.github/workflows/integration-test.yml @@ -16,23 +16,21 @@ jobs: steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: fetch-depth: 0 - name: Install pnpm - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 + uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 - - name: Set node version to 22 - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + - name: Set node version to 24 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: - node-version: 22 + node-version: 24.12.0 cache: 'pnpm' - name: Install deps run: pnpm install - env: - CYPRESS_INSTALL_BINARY: 0 - name: Build run: pnpm run build diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 2fa55637697..c2e793d10b1 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -12,26 +12,24 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 10 - name: 'Check Code Generation: node-22, ubuntu-latest' + name: 'Check Code Generation: node-24, ubuntu-latest' steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: fetch-depth: 0 - name: Install pnpm - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 + uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 - - name: Set node version to 22 - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + - name: Set node version to 24 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: - node-version: 22 + node-version: 24.12.0 cache: 'pnpm' - name: Install deps run: pnpm install - env: - CYPRESS_INSTALL_BINARY: 0 - name: Generate code id: generate diff --git a/.github/workflows/prepare-release-pr.yml b/.github/workflows/prepare-release-pr.yml index e9b773f2a16..83c88ed2897 100644 --- a/.github/workflows/prepare-release-pr.yml +++ b/.github/workflows/prepare-release-pr.yml @@ -24,24 +24,22 @@ jobs: steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: fetch-depth: 0 token: ${{ secrets.GH_TOKEN }} - name: Install pnpm - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 + uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 - - name: Set node version to 22 - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + - name: Set node version to 24 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: - node-version: 22 + node-version: 24.12.0 cache: 'pnpm' - name: Install deps run: pnpm install - env: - CYPRESS_INSTALL_BINARY: 0 - name: Run release run: | diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 7e58cba798b..0276cd40a66 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -15,24 +15,22 @@ jobs: steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: fetch-depth: 0 # we want to push the release branch later token: ${{ secrets.GH_TOKEN }} - name: Install pnpm - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 + uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 - - name: Set node version to 22 - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + - name: Set node version to 24 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: - node-version: 22 + node-version: 24.12.0 cache: 'pnpm' - name: Install deps run: pnpm install --frozen-lockfile - env: - CYPRESS_INSTALL_BINARY: 0 - name: Gather release information run: | @@ -57,7 +55,6 @@ jobs: run: | pnpm publish --tag next --no-git-checks env: - CYPRESS_INSTALL_BINARY: 0 NPM_CONFIG_PROVENANCE: true - name: Set latest/next dist-tag diff --git a/.github/workflows/semantic-pull-request.yml b/.github/workflows/semantic-pull-request.yml index 182b02fc2bb..5f791e3e755 100644 --- a/.github/workflows/semantic-pull-request.yml +++ b/.github/workflows/semantic-pull-request.yml @@ -22,7 +22,7 @@ jobs: if: ${{ github.event_name != 'merge_group' }} steps: - name: Validate PR title - uses: amannn/action-semantic-pull-request@0723387faaf9b38adef4775cd42cfd5155ed6017 # v5.5.3 + uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6.1.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: diff --git a/.gitignore b/.gitignore index 1c78c463148..b6466587516 100644 --- a/.gitignore +++ b/.gitignore @@ -87,6 +87,7 @@ versions.json /docs/api/api-search-index.json /docs/public/api-diff-index.json /docs/public/faker.js +/docs/locales/*.md # Faker TAGS @@ -107,3 +108,5 @@ yarn.lock cypress/screenshots cypress/videos + +_local/ diff --git a/.nvmrc b/.nvmrc index 9de2256827a..deed13c0169 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -lts/iron +lts/jod diff --git a/.prettierrc.js b/.prettierrc.js index 01a3645a417..4e9bb3ff2d1 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -4,7 +4,7 @@ * @type {import('prettier').Config} */ export default { - plugins: ['prettier-plugin-organize-imports', 'prettier-plugin-packagejson'], + plugins: ['prettier-plugin-organize-imports', 'prettier-plugin-pkg'], singleQuote: true, trailingComma: 'es5', overrides: [ @@ -27,7 +27,9 @@ export default { { files: 'package.json', options: { + packageSortOrderPreset: 'npm-plus', packageSortOrder: ['name', 'version', 'description', 'scripts'], + packageIgnoreSort: ['scripts'], }, }, ], diff --git a/CHANGELOG.md b/CHANGELOG.md index 455e48865f1..3b906bc1c22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,162 @@ All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. +## [10.2.0](https://github.com/faker-js/faker/compare/v10.1.0...v10.2.0) (2025-12-27) + + +### New Locales + +* **locale:** add bn_BD location module ([#3614](https://github.com/faker-js/faker/issues/3614)) ([99a448c](https://github.com/faker-js/faker/commit/99a448c0d723c1c4c94d0289dd73cb19c963a19c)) +* **locale:** add counties & states to nb_NO location ([#3617](https://github.com/faker-js/faker/issues/3617)) ([3dbcbe1](https://github.com/faker-js/faker/commit/3dbcbe1465ae886551b179bb084953aed197d690)) +* **locale:** add da states (regions) ([#3656](https://github.com/faker-js/faker/issues/3656)) ([78c892b](https://github.com/faker-js/faker/commit/78c892b66de7237009964898eb6f874cb1be202c)) +* **locale:** add id_ID translation for animal, color, commerce, and word also add country to location id_ID translation. ([#3608](https://github.com/faker-js/faker/issues/3608)) ([02c2c3e](https://github.com/faker-js/faker/commit/02c2c3ea5e14ec180b436e83c21459d99be282cf)) +* **locale:** add ku_kmr_latin locale ([#3629](https://github.com/faker-js/faker/issues/3629)) ([247f42d](https://github.com/faker-js/faker/commit/247f42dd72b7afbf968a5c87a0f54160abf82ac3)) +* **locale:** add person module data to ku_ckb ([#3630](https://github.com/faker-js/faker/issues/3630)) ([6be2c20](https://github.com/faker-js/faker/commit/6be2c2064f5ddc5d13877b61c428c016c29a174a)) + + +### Features + +* Add support for UPC ([#3648](https://github.com/faker-js/faker/issues/3648)) ([57b2d78](https://github.com/faker-js/faker/commit/57b2d78f7d21e618c7c4abbc3570bc1436a7d453)) +* **commerce:** allow for locale-specific product name patterns ([#3657](https://github.com/faker-js/faker/issues/3657)) ([1cf3991](https://github.com/faker-js/faker/commit/1cf3991c180ddeb75253d1850f085147a04ee3bf)) +* **finance:** add IR iban ([#3678](https://github.com/faker-js/faker/issues/3678)) ([101a74a](https://github.com/faker-js/faker/commit/101a74af5172d23704a4b50e0b2022e048d714f2)) +* **locales:** add sl_SI locale, person module ([#3564](https://github.com/faker-js/faker/issues/3564)) ([e7c9945](https://github.com/faker-js/faker/commit/e7c99457ed07ba5e05951db1e709c64fd3d79b44)) +* **location:** Hungarian support for city name, full street address, continents, countries and directions (hu) ([#3618](https://github.com/faker-js/faker/issues/3618)) ([2c9aefd](https://github.com/faker-js/faker/commit/2c9aefdf6c59eab86ae2042b211aba6d4ff5f304)) + + +### Bug Fixes + +* **food:** move raspberry from vegetable to fruit ([#3650](https://github.com/faker-js/faker/issues/3650)) ([6a4f01f](https://github.com/faker-js/faker/commit/6a4f01f43bbfcbfe70c87c9aff261d1006d4fd46)) +* **locale:** endonym should be in Latin script ([#3660](https://github.com/faker-js/faker/issues/3660)) ([4cda07f](https://github.com/faker-js/faker/commit/4cda07f207d84892245c065a99592b350870fcc8)) +* **locale:** remove additional inappropriate words from ja locale ([#3665](https://github.com/faker-js/faker/issues/3665)) ([18a1554](https://github.com/faker-js/faker/commit/18a15542d66b6d8c7477ed98cc2cfb4ab0a1614f)) +* **locale:** remove offensive and inappropriate words from ja locale ([#3661](https://github.com/faker-js/faker/issues/3661)) ([8310c8c](https://github.com/faker-js/faker/commit/8310c8c2c466cfbad992ea8eadc78649ff4606df)) +* **locale:** remove some negative hu words ([#3664](https://github.com/faker-js/faker/issues/3664)) ([bd36bae](https://github.com/faker-js/faker/commit/bd36bae6517c181a6a187dee5c4634a402be4c54)) +* **location:** Use accents in en country names ([#3637](https://github.com/faker-js/faker/issues/3637)) ([24aa11f](https://github.com/faker-js/faker/commit/24aa11f55a86bed8417187ca881ab80c1c305ee2)) +* **vehicle:** Updated spelling Mercielago to Murcielago ([#3636](https://github.com/faker-js/faker/issues/3636)) ([bfb1bdb](https://github.com/faker-js/faker/commit/bfb1bdba63e7972d23d00b52dfa78478084949ee)) + +## [10.1.0](https://github.com/faker-js/faker/compare/v10.0.0...v10.1.0) (2025-10-14) + + +### New Locales + +* **locale:** Add ku_ckb locale ([#3441](https://github.com/faker-js/faker/issues/3441)) ([9de894a](https://github.com/faker-js/faker/commit/9de894a638e040ec7d9511a8ca0d2db44def6ed5)) +* **locale:** add Russian localization for book module ([#3628](https://github.com/faker-js/faker/issues/3628)) ([428ff33](https://github.com/faker-js/faker/commit/428ff3328b4c4b13ec29d646eea7c4ea98522323)) + + +### Bug Fixes + +* **locale:** fix the Spring Airlines IATA Code ([#3612](https://github.com/faker-js/faker/issues/3612)) ([b547045](https://github.com/faker-js/faker/commit/b547045a55a86f327940852ce8b8df3c3a656109)) + +## [10.0.0](https://github.com/faker-js/faker/compare/v10.0.0-beta.0...v10.0.0) (2025-08-21) + + +### New Locales + +* **locale:** extended list of colors in Polish ([#3586](https://github.com/faker-js/faker/issues/3586)) ([9940d54](https://github.com/faker-js/faker/commit/9940d54f75205b65a74d11484cb385c85656a43f)) + + +### Features + +* **locales:** add animal vocabulary(bear, bird, cat, rabbit, pet_name) in Korean ([#3535](https://github.com/faker-js/faker/issues/3535)) ([0d2143c](https://github.com/faker-js/faker/commit/0d2143c75d804d1dc53c17078eb59bc1970a07d1)) + + +### Changed Locales + +* **locale:** remove invalid credit card issuer patterns ([#3568](https://github.com/faker-js/faker/issues/3568)) ([9783d95](https://github.com/faker-js/faker/commit/9783d95a8e43c45bc44c5c0c546b250b6c2ae140)) + +## [10.0.0-beta.0](https://github.com/faker-js/faker/compare/v9.9.0...v10.0.0-beta.0) (2025-07-09) + + +### ⚠ BREAKING CHANGES + +* **word:** change default error strategy to 'fail' (#3560) +* remove deprecations (#3553) +* esm only (#3540) + +* remove deprecations ([#3553](https://github.com/faker-js/faker/issues/3553)) ([623d274](https://github.com/faker-js/faker/commit/623d2741a4ca165596fad7fede2f850b6c08aa3a)) +* **word:** change default error strategy to 'fail' ([#3560](https://github.com/faker-js/faker/issues/3560)) ([93416f7](https://github.com/faker-js/faker/commit/93416f71cf0ddf32dd12c181c862a1b59ef4fd86)) + + +### Features + +* esm only ([#3540](https://github.com/faker-js/faker/issues/3540)) ([160960b](https://github.com/faker-js/faker/commit/160960b79719e1298668a7ebba390b30b8de1080)) + +## [9.9.0](https://github.com/faker-js/faker/compare/v9.8.0...v9.9.0) (2025-07-01) + + +### New Locales + +* **locale:** add word data to pt_br and pt_pt locales ([#3531](https://github.com/faker-js/faker/issues/3531)) ([a405ac8](https://github.com/faker-js/faker/commit/a405ac8740bcfb2ec5f84c06752484a2b332a90a)) + + +### Features + +* **location:** simple coordinate methods ([#3528](https://github.com/faker-js/faker/issues/3528)) ([d07d96d](https://github.com/faker-js/faker/commit/d07d96d01833085f2d3c5f9c851a572ebf8c47df)) + +## [9.8.0](https://github.com/faker-js/faker/compare/v9.7.0...v9.8.0) (2025-05-13) + + +### New Locales + +* **locale:** Add additional Japanese last names to the locale data ([#3484](https://github.com/faker-js/faker/issues/3484)) ([72e66c3](https://github.com/faker-js/faker/commit/72e66c3a3a22738ce163b26dc5315c82f49032e7)) +* **locale:** add Japanese date and month definitions ([#3492](https://github.com/faker-js/faker/issues/3492)) ([b70e793](https://github.com/faker-js/faker/commit/b70e7934b7b3181d8f3fbe98627985cd71fbfe26)) +* **locale:** add Japanese science locale data including elements and units ([#3491](https://github.com/faker-js/faker/issues/3491)) ([54fd551](https://github.com/faker-js/faker/commit/54fd5519e92270926e75a914ccf98b4699fbb4f2)) +* **locale:** add Japanese sex definitions for person locale ([#3495](https://github.com/faker-js/faker/issues/3495)) ([1dbd8fa](https://github.com/faker-js/faker/commit/1dbd8fa511e0c69ed73324a330f16f9aa1a6670a)) +* **locale:** add vehicle locale data for Japanese ([#3490](https://github.com/faker-js/faker/issues/3490)) ([dfadb1d](https://github.com/faker-js/faker/commit/dfadb1da746e7bf82b59dc5314bb9f0735b0f37d)) +* **locale:** add zh_CN book ([#3477](https://github.com/faker-js/faker/issues/3477)) ([786a3d0](https://github.com/faker-js/faker/commit/786a3d0bd8d72d2bf2cfc38358c45d2960848654)) +* **locale:** add zh_CN food ([#3479](https://github.com/faker-js/faker/issues/3479)) ([6c883e7](https://github.com/faker-js/faker/commit/6c883e74b894f1b777291e67d5b2b7bc63e38a80)) +* **locale:** update Japanese company categories ([#3489](https://github.com/faker-js/faker/issues/3489)) ([8c0953a](https://github.com/faker-js/faker/commit/8c0953a2617f3c8ddd95320af46063d83d115ddb)) +* **locale:** update zh_CN animal ([#3480](https://github.com/faker-js/faker/issues/3480)) ([38ee7b8](https://github.com/faker-js/faker/commit/38ee7b81a82c466710586091e7046d7bfcbed337)) +* **locale:** update zh_CN location ([#3481](https://github.com/faker-js/faker/issues/3481)) ([456f102](https://github.com/faker-js/faker/commit/456f10276bfbc1a654162e94e5815ca01ffa7fdd)) +* **locale:** update zh_CN word ([#3478](https://github.com/faker-js/faker/issues/3478)) ([aa98867](https://github.com/faker-js/faker/commit/aa98867765093588ea2fbda2daa6cbce40b20d5f)) + + +### Changed Locales + +* **locale:** ko state data update ([#3487](https://github.com/faker-js/faker/issues/3487)) ([b611ec2](https://github.com/faker-js/faker/commit/b611ec2e519bc0be6d53e81fb333fcb15c3964f1)) +* **locale:** normalize internet data ([#3502](https://github.com/faker-js/faker/issues/3502)) ([e6151e4](https://github.com/faker-js/faker/commit/e6151e4efd29f360b82ff25c4ddb2ffae8e30e86)) +* **locale:** rename pt-BR streetSuffix to streetPrefix ([#3493](https://github.com/faker-js/faker/issues/3493)) ([7c23db3](https://github.com/faker-js/faker/commit/7c23db316e794aab2a9181e0f960e094bea71054)) + + +### Bug Fixes + +* **locale:** correct Japanese country names ([#3510](https://github.com/faker-js/faker/issues/3510)) ([046bb81](https://github.com/faker-js/faker/commit/046bb8155850b9fee0c22a0177e695c3ba0d3a1a)) +* **locale:** correct the name of element Lv in Japanese ([#3509](https://github.com/faker-js/faker/issues/3509)) ([6a7ef4c](https://github.com/faker-js/faker/commit/6a7ef4c2ad97f50e9a47efd0fa7c22804fc9d4f1)) +* **locale:** ko modified street_name to street_name_part ([#3485](https://github.com/faker-js/faker/issues/3485)) ([c15da8e](https://github.com/faker-js/faker/commit/c15da8efec3fc05d089bdf2dc1513183b614e04b)) + +## [9.7.0](https://github.com/faker-js/faker/compare/v9.6.0...v9.7.0) (2025-04-13) + + +### New Locales + +* **locale:** Add bn_BD locale ([#3439](https://github.com/faker-js/faker/issues/3439)) ([fef0ad7](https://github.com/faker-js/faker/commit/fef0ad7859ff5994947c2c02afd6bdf13dffd234)) +* **locale:** add cy locale, start with date ([#3462](https://github.com/faker-js/faker/issues/3462)) ([f70a6f7](https://github.com/faker-js/faker/commit/f70a6f7a656090ed900ea18b39961d0d5ff78be0)) +* **locale:** add finance support for ja locale ([#3449](https://github.com/faker-js/faker/issues/3449)) ([b2c5298](https://github.com/faker-js/faker/commit/b2c5298c94f632681937fc6d62da2f84252b5c66)) +* **locale:** add localize sex support for zh_CN & zh_TW ([#3450](https://github.com/faker-js/faker/issues/3450)) ([048c325](https://github.com/faker-js/faker/commit/048c32581bd5d15f333ef63e4ca968e02793373d)) +* **locale:** add Tamil language support ([#3468](https://github.com/faker-js/faker/issues/3468)) ([cdf6dc4](https://github.com/faker-js/faker/commit/cdf6dc4a973b8e64069f8b8d98e6921188f08575)) + + +### Bug Fixes + +* **airline:** Air France and KLM Royal Dutch Airlines ([#3440](https://github.com/faker-js/faker/issues/3440)) ([8a2d168](https://github.com/faker-js/faker/commit/8a2d168f62307af8c4b04ab8ab4624786009671b)) +* **iban:** more strict pattern for IE and PS ([#3464](https://github.com/faker-js/faker/issues/3464)) ([7b12056](https://github.com/faker-js/faker/commit/7b120567139b2ac84d052f42f1f352c6697f2aa2)) +* **locale:** rename ja and zh_CN company affix files ([#3448](https://github.com/faker-js/faker/issues/3448)) ([1e551c5](https://github.com/faker-js/faker/commit/1e551c5f47e292d3dc6bbefae9eaf75664a052a1)) +* **number:** don't ignore multipleOf in float when min=max ([#3417](https://github.com/faker-js/faker/issues/3417)) ([e4cc4e5](https://github.com/faker-js/faker/commit/e4cc4e50d1d4103c26f06fd2db0ca187dbb537cd)) + +## [9.6.0](https://github.com/faker-js/faker/compare/v9.5.1...v9.6.0) (2025-03-06) + + +### Features + +* **finance:** add ISO 4217 numerical codes to Currency ([#3404](https://github.com/faker-js/faker/issues/3404)) ([ae9aec6](https://github.com/faker-js/faker/commit/ae9aec67b19f779e818be5550a8edc44f20d91d4)) +* **number:** bigint multipleOf ([#3402](https://github.com/faker-js/faker/issues/3402)) ([7b4f85a](https://github.com/faker-js/faker/commit/7b4f85a2c00bf2adff2b88957bd6322100e6e541)) + +## [9.5.1](https://github.com/faker-js/faker/compare/v9.5.0...v9.5.1) (2025-02-28) + + +### Bug Fixes + +* test before using Buffers ([#3400](https://github.com/faker-js/faker/issues/3400)) ([ec7c9a8](https://github.com/faker-js/faker/commit/ec7c9a8e607d63a008d06747f89c9512f5b3171e)) + ## [9.5.0](https://github.com/faker-js/faker/compare/v9.4.0...v9.5.0) (2025-02-10) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c3982b27215..4b4aa143511 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -23,7 +23,7 @@ This is a shorthand for running the following scripts in order: - `pnpm run format` - runs [prettify](https://github.com/prettier/prettier) to format code - `pnpm run lint` - runs [ESLint](https://github.com/eslint/eslint) to enforce project code standards - `pnpm run build:clean` - removes artifacts from previous builds -- `pnpm run build:code` - builds the code, both CommonJS and ESM versions +- `pnpm run build:code` - builds the code - `pnpm run test:update-snapshots` - runs all tests, and updates any snapshots if needed - `pnpm run ts-check` - checks that there are no TypeScript errors in any files @@ -296,6 +296,11 @@ function foo(options: { test: string }) { +> Other JSDoc tags are in use for specific cases. + +- `@internal` - If the method is not intended to be used by the end user, e.g. a helper function. +- `@remark` - If the method depends on external data not being controlled by Faker, e.g. a third-party image provider. + > We use eslint-plugin-jsdoc to test for basic styling and sorting of doc-tags. This is in place so all JSDoc tags will get sorted automatically, so you don't have to bother with it. This also means that most rules in this section can get auto fixed by the eslint formatter. @@ -360,7 +365,7 @@ function foo(bar: number = 0) { * * @param bar this is a parameter description. Defaults to `0`. * - * @throws If bar is negative. + * @throws {FakerError} If bar is negative. */ function foo(bar: number = 0) { // implementation @@ -446,104 +451,4 @@ See the [netlify.toml](netlify.toml) for configuration. ## Committing -Pull Request titles need to follow our semantic convention. - -PR titles are written in following convention: `type(scope): subject` - -**type** is required and indicates the intent of the PR - -> The types `feat` and `fix` will be shown in the changelog as `### Features` or `### Bug Fixes` -> All other types wont show up except for breaking changes marked with the `!` in front of `:` - -Allowed types are: - -| type | description | -| -------- | ------------------------------------------------------------------------- | -| feat | A new feature is introduced | -| fix | A bug was fixed | -| chore | No user affected code changes were made | -| refactor | A refactoring that affected also user (e.g. log a deprecation warning) | -| docs | Docs were changed | -| test | Test were changed | -| ci | CI were changed | -| build | Build scripts were changed | -| infra | Infrastructure related things were made (e.g. issue-template was updated) | -| revert | A revert was triggered via git | - -**scope** is optional and indicates the scope of the PR - -> The scope will be shown in the changelog in front of the _subject_ in bold text -> Also as the commits are sorted alphabetically, the scope will group the commits indirectly into categories - -Allowed scopes are: - -| scope | description | -| --------------- | ---------------------------------------------------------------------------- | -| \ | The specific module name that was affected by the PR | -| locale | When only locale(s) are added/updated/removed | -| module | When some modules where updates or something related to modules were changed | -| revert | When a revert was made via git | -| deps | Will mostly be used by Renovate | -| release | Will be set by release process | - -> The scope is not checkable via `Semantic Pull Request` action as this would limit the scopes to only existing modules, -> but if we add a new module like `color`, then the PR author couldn't use the new module name as scope. -> As such, we (the Faker team) must be mindful of valid scopes and we reserve the right to edit titles as we see fit. - -**subject** is required and describes what the PR does - -> Please note that the PR title should not include a suffix of e.g. `(#123)` as this will be done automatically by GitHub while merging - -Some examples of valid pull request titles: - -```shell -feat: add casing option -feat(locale): extend Hebrew (he) -fix: lower target to support Webpack 4 -chore: add naming convention rule -refactor(location): deprecate streetPrefix and streetSuffix -docs: remove unused playground -test: validate @see contents -ci: allow breaking change commits -build: add node v18 support -infra: rework bug-report template -revert: add more arabic names dataset (#362) - -# Breaking changes -refactor!: remove faker default export -build!: remove node v12 support - -# A release PR will look like this -chore(release): 7.4.0 - -# Renovate automatically generates these -chore(deps): update devdependencies -chore(deps): update typescript-eslint to ~5.33.0 -``` - -Previous pull request titles that could have been written in a better way: - -```diff -- feat: `datatype.hexadecimal` signature change -+ feat(datatype): hexadecimal signature change - datatype is one of our modules and can be used as scope - -- feat(image): add image via.placeholder provider -+ feat(image): add via.placeholder provider - image was redundant in the subject - -- feat(system.networkInterface): add networkInterface faker -+ feat(system): add networkInterface method - networkInterface was redundant in the scope and made the whole commit message long - also method in the subject explains a bit better what it is - -- chore(bug-report-template): new design -+ infra: rework bug-report template - the type infra tells that no actual code-changes were made - the subject contains what the PR does - -- chore: rename Gender to Sex -+ refactor(name): rename Gender to Sex - this was not a chore as it touched runtime code that affected the end-user - scope name can be used here to tell that the change affects only the name module -``` +Read a detailed documentation at [fakerjs.dev](https://fakerjs.dev/contributing/submit-a-pull-request#the-pull-request-title) diff --git a/LICENSE b/LICENSE index 3e954766f2d..b5dc0a665ec 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,45 @@ -MIT License +Faker - Copyright (c) 2022-2025 -Copyright 2022-2025 FakerJS Contributors +This software consists of voluntary contributions made by many individuals. +For exact contribution history, see the revision history +available at https://github.com/faker-js/faker + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +=== + +From: https://github.com/faker-js/faker/commit/a9f98046c7d5eeaabe12fc587024c06d683800b8 +To: https://github.com/faker-js/faker/commit/29234378807c4141588861f69421bf20b5ac635e + +Based on faker.js, copyright Marak Squires and contributor, what follows below is the original license. + +=== + +faker.js - Copyright (c) 2011-2020 +Marak Squires +http://github.com/marak/faker.js/ + +faker.js was inspired by and has used data definitions from: + + * https://github.com/stympy/faker/ - Copyright (c) 2007-2010 Benjamin Curtis + * http://search.cpan.org/~jasonk/Data-Faker-0.07/ - Copyright 2004-2005 by Jason Kohles Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/README.md b/README.md index 541bf87d319..ba66cc8fc05 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@

Generate massive amounts of fake (but realistic) data for testing and development.

[![npm version](https://badgen.net/npm/v/@faker-js/faker)](https://www.npmjs.com/package/@faker-js/faker) - [![npm downloads](https://badgen.net/npm/dm/@faker-js/faker)](https://npm-compare.com/@faker-js/faker/#timeRange=ALL) + [![npm downloads](https://badgen.net/npm/dm/@faker-js/faker)](https://www.npmjs.com/package/@faker-js/faker) [![Continuous Integration](https://github.com/faker-js/faker/actions/workflows/ci.yml/badge.svg)](https://github.com/faker-js/faker/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/faker-js/faker/branch/next/graph/badge.svg?token=N61U168G08)](https://codecov.io/gh/faker-js/faker) [![Chat on Discord](https://img.shields.io/badge/chat-discord-blue?style=flat&logo=discord)](https://chat.fakerjs.dev) @@ -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 | -| :---------: | :------------------------ | -| v9 (next) | https://next.fakerjs.dev/ | -| v9 (stable) | https://fakerjs.dev/ | -| v8 (old) | https://v8.fakerjs.dev/ | +| Version | Website | +| :----------: | :------------------------ | +| v10 (next) | https://next.fakerjs.dev/ | +| v10 (stable) | https://fakerjs.dev/ | +| v9 (old) | https://v9.fakerjs.dev/ | --- @@ -41,7 +41,7 @@ For detailed API documentation, please select the version of the documentation y - 👠 Commerce - Generate Prices, Product Names, Adjectives, and Descriptions. - 👾 Hacker - “Try to reboot the SQL bus, maybe it will bypass the virtual application!” - 🔢 Number and String - Of course, we can also generate random numbers and strings. -- 🌏 Localization - Pick from over 60 locales to generate realistic looking Names, Addresses, and Phone Numbers. +- 🌏 Localization - Pick from over 70 locales to generate realistic looking Names, Addresses, and Phone Numbers. > **Note**: Faker tries to generate realistic data and not obvious fake data. > The generated names, addresses, emails, phone numbers, and/or other data might be coincidentally valid information. @@ -65,7 +65,7 @@ const { faker } = require('@faker-js/faker'); export function createRandomUser() { return { userId: faker.string.uuid(), - username: faker.internet.username(), // before version 9.1.0, use userName() + username: faker.internet.username(), email: faker.internet.email(), avatar: faker.image.avatar(), password: faker.internet.password(), @@ -81,7 +81,7 @@ export const users = faker.helpers.multiple(createRandomUser, { ## 💎 Modules -An in-depth overview of the API methods is available in the documentation for [v9 (stable)](https://fakerjs.dev/api/) and [v9.\* (next)](https://next.fakerjs.dev/api/). +An in-depth overview of the API methods is available in the documentation for [v10 (stable)](https://fakerjs.dev/api/) and [v10.\* (next)](https://next.fakerjs.dev/api/). ### Templates @@ -126,7 +126,7 @@ export const faker = new Faker({ ## ⚙️ Setting a randomness seed -If you want consistent results, you can set your own seed: +If you want consistent results, you can set your own seed. If you are using `faker.date` methods, there are additional considerations. See [Reproducible Results](https://fakerjs.dev/guide/usage.html#reproducible-results). ```ts faker.seed(123); diff --git a/docs/.vitepress/components/api-docs/locale.vue b/docs/.vitepress/components/api-docs/locale.vue new file mode 100644 index 00000000000..8d1c2a9d0a1 --- /dev/null +++ b/docs/.vitepress/components/api-docs/locale.vue @@ -0,0 +1,229 @@ + + + diff --git a/docs/.vitepress/components/api-docs/method.ts b/docs/.vitepress/components/api-docs/method.ts index 91f99d4ee8f..9ae154ca093 100644 --- a/docs/.vitepress/components/api-docs/method.ts +++ b/docs/.vitepress/components/api-docs/method.ts @@ -2,6 +2,7 @@ export interface ApiDocsMethod { readonly name: string; readonly deprecated: string | undefined; // HTML readonly description: string; // HTML + readonly remark: string | undefined; // HTML readonly since: string; readonly parameters: ApiDocsMethodParameter[]; readonly returns: string; @@ -9,7 +10,7 @@ export interface ApiDocsMethod { readonly signature: string; // HTML readonly examples: string; // HTML readonly refresh: (() => Promise) | undefined; - readonly seeAlsos: string[]; + readonly seeAlsos: string[]; // HTML readonly sourcePath: string; // URL-Suffix } diff --git a/docs/.vitepress/components/api-docs/method.vue b/docs/.vitepress/components/api-docs/method.vue index 37b447482c7..4ab876ca515 100644 --- a/docs/.vitepress/components/api-docs/method.vue +++ b/docs/.vitepress/components/api-docs/method.vue @@ -11,6 +11,7 @@ const { method } = defineProps<{ method: ApiDocsMethod }>(); const { deprecated, description, + remark, since, parameters, returns, @@ -145,6 +146,11 @@ function seeAlsoToUrl(see: string): string {
+
+

Note

+
+
+

Available since v{{ since }}

diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 7f45a3c7cf6..68779669255 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -1,4 +1,4 @@ -import type { UserConfig } from 'vitepress'; +import { defineConfig } from 'vitepress'; import type { DefaultTheme } from 'vitepress/theme'; import { apiPages } from './api-pages'; import { @@ -53,7 +53,7 @@ function getSideBarWithExpandedEntry(entryToExpand: string): SidebarItem[] { link: '/guide/unique', }, { - text: 'Upgrading to v9', + text: 'Upgrading to v10', link: '/guide/upgrading', }, ], @@ -62,6 +62,31 @@ function getSideBarWithExpandedEntry(entryToExpand: string): SidebarItem[] { text: 'API', items: apiPages, }, + { + text: 'Contributing', + items: [ + { + text: 'Code of Conduct', + link: '/contributing/code-of-conduct', + }, + { + text: 'Report Bugs', + link: '/contributing/report-bugs', + }, + { + text: 'Propose a Feature', + link: '/contributing/propose-a-feature', + }, + { + text: 'Set up a Development Environment', + link: '/contributing/set-up-a-development-environment', + }, + { + text: 'Submit a Pull Request', + link: '/contributing/submit-a-pull-request', + }, + ], + }, { text: 'About', items: [ @@ -94,10 +119,6 @@ function getSideBarWithExpandedEntry(entryToExpand: string): SidebarItem[] { text: 'Team', link: '/about/team', }, - { - text: 'Contributing', - link: '/about/contributing', - }, ], }, ]; @@ -109,8 +130,7 @@ function getSideBarWithExpandedEntry(entryToExpand: string): SidebarItem[] { return links; } -// TODO @Shinigami92 2023-12-28: reuse `defineConfig` from vitepress, when we can go esm-only -const config: UserConfig = { +const config = defineConfig({ title: 'Faker', description, @@ -131,7 +151,7 @@ const config: UserConfig = { 'script', { id: 'browser-console-faker' }, ` -const logStyle = 'background: rgba(16, 183, 127, 0.14); color: rgba(255, 255, 245, 0.86); padding: 0.5rem; display: inline-block;'; +const logStyle = 'background: rgba(16, 183, 127, 0.14); padding: 0.5rem; display: inline-block;'; console.log(\`%cIf you would like to test Faker in the browser console, you can do so using 'await enableFaker()'. If you would like to test Faker in a playground, visit https://new.fakerjs.dev.\`, logStyle); async function enableFaker() { @@ -148,6 +168,10 @@ For a full list of all methods please refer to https://fakerjs.dev/api/\`, logSt ], ], + sitemap: { + hostname: 'https://fakerjs.dev', + }, + themeConfig: { logo: '/logo.svg', @@ -215,10 +239,6 @@ For a full list of all methods please refer to https://fakerjs.dev/api/\`, logSt text: 'Team', link: '/about/team', }, - { - text: 'Contributing', - link: '/about/contributing', - }, ], }, { @@ -238,7 +258,9 @@ For a full list of all methods please refer to https://fakerjs.dev/api/\`, logSt sidebar: { '/guide/': getSideBarWithExpandedEntry('Guide'), + '/locales/': getSideBarWithExpandedEntry('Guide'), '/api/': getSideBarWithExpandedEntry('API'), + '/contributing/': getSideBarWithExpandedEntry('Contributing'), '/about/': getSideBarWithExpandedEntry('About'), }, }, @@ -248,7 +270,7 @@ For a full list of all methods please refer to https://fakerjs.dev/api/\`, logSt __BANNER__: versionBannerInfix ?? false, }, }, -}; +}); if (versionBannerInfix) { config.head?.push([ diff --git a/docs/.vitepress/versions.ts b/docs/.vitepress/versions.ts index 5fd95923617..6efb522a3e6 100644 --- a/docs/.vitepress/versions.ts +++ b/docs/.vitepress/versions.ts @@ -31,7 +31,7 @@ function readOtherLatestReleaseTagNames(): string[] { } } - return Object.values(latestTagByMajor).sort(semver.rcompare); + return Object.values(latestTagByMajor).toSorted(semver.rcompare); } // Set by netlify diff --git a/docs/about/contributing.md b/docs/about/contributing.md deleted file mode 100644 index a648f93a1cc..00000000000 --- a/docs/about/contributing.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -editLink: false ---- - -# Contributing - -We welcome new contributors! For more information see the [Contributing](https://github.com/faker-js/faker/blob/next/CONTRIBUTING.md) file on Github. All contributors are expected to follow the [Code of Conduct](https://github.com/faker-js/faker/blob/next/CODE_OF_CONDUCT.md) diff --git a/docs/about/team/members.json b/docs/about/team/members.json index b9895029d4c..7132d8c4db8 100644 --- a/docs/about/team/members.json +++ b/docs/about/team/members.json @@ -35,20 +35,20 @@ ], "contributors": [ { - "avatar": "https://github.com/import-brain.png", + "avatar": "https://github.com/ejcheng.png", "name": "Eric Cheng", "title": "Contributor", "org": "", "orgLink": "", "desc": "", "links": [ - { "icon": "github", "link": "https://github.com/import-brain" }, + { "icon": "github", "link": "https://github.com/ejcheng" }, { "icon": "linkedin", "link": "https://www.linkedin.com/in/ericcheng-software/" } ], - "sponsor": "https://github.com/sponsors/import-brain" + "sponsor": "https://github.com/sponsors/ejcheng" }, { "avatar": "https://github.com/matthewmayer.png", diff --git a/docs/api/ApiIndex.vue b/docs/api/ApiIndex.vue index 94085371ad1..7b1be7bf174 100644 --- a/docs/api/ApiIndex.vue +++ b/docs/api/ApiIndex.vue @@ -69,13 +69,8 @@ const filtered = computed(() => {
  • - {{ h.text }} diff --git a/docs/contributing/code-of-conduct.md b/docs/contributing/code-of-conduct.md new file mode 100644 index 00000000000..bd5b1c5a4d4 --- /dev/null +++ b/docs/contributing/code-of-conduct.md @@ -0,0 +1,9 @@ +--- +editLink: false +--- + +# Code of Conduct + +We welcome new contributors! +We appreciate your interest in making Faker a better library. +Please note that all contributors are expected to follow the [Code of Conduct](https://github.com/faker-js/faker/blob/next/CODE_OF_CONDUCT.md). diff --git a/docs/contributing/propose-a-feature.md b/docs/contributing/propose-a-feature.md new file mode 100644 index 00000000000..cfb20197140 --- /dev/null +++ b/docs/contributing/propose-a-feature.md @@ -0,0 +1,50 @@ +# Propose a Feature + +If you want to propose a new feature in Faker, please create a new issue using the [Feature Request Template](https://github.com/faker-js/faker/issues/new?labels=s%3A+pending+triage%2Cc%3A+feature%2Cs%3A+waiting+for+user+interest&projects=&template=feature_request.yml). + +`@faker-js/faker` is all about enhancing the developer experience with realistic fake data. +As our library grows, we welcome contributions that introduce new features and maintain the cohesive functionality of our existing codebase. +To ensure quality and consistency, we have established guidelines for contributing new features. + +## General Feature Guidelines + +General criteria for new features are as follows: + +- **Relevance**: Must be widely applicable and not specific to a particular niche. +- **Deterministic**: Functions must be based on Faker's internal [Randomizer](/api/randomizer). +- **Conflict-Free**: Should not conflict with or duplicate existing features. +- **Utility**: Provides significant value to a broad user base. +- **Library-Agnostic**: Implementations must be based solely on JavaScript runtime environments and not on specific libraries or frameworks. + +## Accepting a Feature + +In order for a feature to be accepted in Faker, it must fulfill all the criteria listed in [General Feature Guideline](#general-feature-guideline). +Additionally, depending on the type of feature, there might be additional requirements. + +::: tip Note +Using thumb-up emojis ( :+1: ) on issues helps the Faker estimate the community interest in a feature. +If you see a feature request that you like, leave an up vote to increase interest. +Feel free to upvote your own feature requests as well. +::: + +## Criteria for New Locales + +Faker already contains [over 70 different locales](/guide/localization#available-locales). + +If you want to propose a new locale that does not already exist, make sure to read our guide on [locale code names](/guide/localization#locale-codes). +You should be able to name your locale using the provided naming standards. +Ideally, you should also use this name in the issue's title and description. + +## Considerations + +Our goal is to maintain the library efficiently, ensuring that new features are indispensable. +Each addition to Faker comes with associated costs. +This encompasses initial expenses like design, implementation, review, and documentation of the feature. +Ideally, these tasks can be delegated to the requester or another member of the community. + +Moreover, ongoing maintenance of Faker incurs further costs, including awareness of the feature, a more intricate module structure, increased bundle size, and additional effort during refactoring. + +If your feature isn't accepted into the library, you can still create it using Faker's Helper methods. +Our goal is to empower developers, not limit possibilities. + +For more details on creating custom features, refer to our documentation on [Create Complex Objects](/guide/usage#create-complex-objects). diff --git a/docs/contributing/report-bugs.md b/docs/contributing/report-bugs.md new file mode 100644 index 00000000000..3f11ee129e9 --- /dev/null +++ b/docs/contributing/report-bugs.md @@ -0,0 +1,16 @@ +# Report Bugs + +Thank you for taking the time to help improve Faker! +Your contributions are invaluable in keeping the project reliable and useful for everyone. +We kindly ask that you follow the guidelines below when reporting a bug. +Providing clear and detailed information allows us to verify problems quickly and work toward effective solutions. + +If you believe you've discovered a bug in Faker, please submit a new issue using the [Bug Report Template](https://github.com/faker-js/faker/issues/new?labels=s%3A+pending+triage%2Cc%3A+bug&template=bug_report.yml). +This will help you provide clear reproduction steps and allow other users to verify that the issue is indeed a bug. + +To facilitate a swift resolution, please include as much relevant detail as possible. +Providing comprehensive information upfront reduces the need for follow-up questions, enabling us to focus on resolving the issue efficiently. + +::: info Note +If you have a general question that doesn't require a change to Faker - such as understanding how something works or learning how to contribute - please start a [discussion](https://github.com/faker-js/faker/discussions) or join our [Discord server](https://chat.fakerjs.dev) instead of opening an issue. +::: diff --git a/docs/contributing/set-up-a-development-environment.md b/docs/contributing/set-up-a-development-environment.md new file mode 100644 index 00000000000..53b63c7d793 --- /dev/null +++ b/docs/contributing/set-up-a-development-environment.md @@ -0,0 +1,62 @@ +--- +outline: [2, 3] +--- + +# Set Up a Development Environment + +Setting up a local development environment for Faker allows you to contribute effectively to the project. +Whether you prefer working directly on your machine or using a containerized setup, the following steps will guide you through the process. + +## Step 1: Fork and Clone the Repository + +Before you begin, you need to fork the Faker repository and clone it to your local machine. + +::: tip Note +If you are unfamiliar with Forks, check out [GitHub Forking Guide](https://docs.github.com/en/get-started/quickstart/fork-a-repo). +::: + +1. Go to the [Faker GitHub repository](https://github.com/faker-js/faker) and click the **Fork** button. +1. Open a terminal and clone your fork: + ```sh + git clone https://github.com//faker + ``` +1. Navigate into the cloned directory: + ```sh + cd faker + ``` +1. Add the upstream source to keep your fork updated: + ```sh + git remote add upstream https://github.com/faker-js/faker.git + ``` + +## Step 2: Choose Your Development Setup + +Faker can be developed using two different methods: + +- [On your machine](#option-1-native-nodejs-environment) +- [In a development container](#option-2-vscode-devcontainer-integration) + +### Option 1: Native Node.js Environment + +If you prefer working directly on your machine, follow these steps: + +1. Ensure you have [the current LTS version of Node.js](https://nodejs.org/en/download) installed. +1. Ensure you have the package manager [`pnpm`](https://pnpm.io/installation) installed. +1. Run the preflight command to verify your setup: + ```sh + pnpm run preflight + ``` + +### Option 2: VSCode Devcontainer Integration + +For a streamlined development experience, Faker supports VSCode Devcontainers. + +1. Open the Faker repository in VSCode. +1. Install the [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) if you haven't already. +1. Open the command palette (`Ctrl+Shift+P` or `Cmd+Shift+P` on macOS) and select "**Dev Containers: Reopen in Container**". +1. Wait for the container to build and start. + +## Step 3: Submit a Pull Request + +Your development environment has successfully been set up. +You are now ready to [Submit a Pull Request](./submit-a-pull-request.md). diff --git a/docs/contributing/submit-a-pull-request.md b/docs/contributing/submit-a-pull-request.md new file mode 100644 index 00000000000..949151e5396 --- /dev/null +++ b/docs/contributing/submit-a-pull-request.md @@ -0,0 +1,215 @@ +# Submit a Pull Request + +A lot of effort has been put into `Faker` to create a useful and handy library. +There are still a lot of things to be done! +If you want to make `Faker` a better place, please follow the steps below when submitting a pull request. + +## Step 1: Ensure Your Branch is Up-to-Date + +Before making changes, ensure your fork is synchronized with Faker’s latest updates: + +```sh +git fetch upstream +git merge upstream/next origin/next +``` + +## Step 2: Create a New Branch + +Create a new branch for your changes: + +```sh +git switch -c my-branch-name +``` + +Using descriptive branch names makes reviewing easier, but also helps you identify the reason for a branch if you contribute multiple PR to Faker. + +## Step 3: Make Your Changes + +Now, modify the necessary files, ensuring they align with Faker’s coding standards. +If your PR introduces new functionality, update documentation accordingly. + +## Step 4: Run Preflight Checks + +Before committing, verify your changes meet Faker’s quality standards: + +```sh +pnpm run preflight +``` + +The command is a useful all-in-one command provided by the Faker team, to make development as easy as possible. +It is a shorthand for running the following scripts in order: + +- `pnpm install` - installs npm packages defined in package.json +- `pnpm run generate:locales` - generates locale files +- `pnpm run generate:api-docs` - generates API documentation +- `pnpm run format` - runs [prettier](https://github.com/prettier/prettier) to format code +- `pnpm run lint` - runs [ESLint](https://github.com/eslint/eslint) to enforce project code standards +- `pnpm run build:clean` - removes artifacts from previous builds +- `pnpm run build:code` - builds the code +- `pnpm run test:update-snapshots` - runs all tests with [vitest](https://github.com/vitest-dev/vitest), and updates any snapshots if needed +- `pnpm run ts-check` - checks that there are no TypeScript errors in any files + +::: tip Note +The `preflight` command is very helpful when switching between different branches, +to get your local environment synced up with the branch's state. +::: + +## Step 5: Commit and Push Your Changes + +Once everything looks good, commit your changes: + +```sh +git commit -m "feat: Add support for XYZ functionality" +git push origin my-branch-name +``` + +Faker does not enforce a specific commit convention. +Instead, all commits are squashed into a single commit when you PR is merged. +Writing meaningful commit messages might still be advantageous. +This way you get to reflect on the changes you have done and reviewers can get an easier, higher level understanding from your submission. + +## Step 6: Open a Pull Request + +Navigate to your forked repository on GitHub and open a pull request against Faker’s next branch. + +PR Guidelines: + +- Clearly explain your changes and why they are needed. +- Reference related issues when applicable. +- Keep your PR focused—avoid bundling multiple unrelated changes. +- If applicable, add tests to cover new functionality. + +### The Pull Request Title + +A Pull Request title needs to follow the semantic of a [conventional commit](https://www.conventionalcommits.org), since it is used as commit message when merging your PR. +These commit messages are then used to automatically update the [CHANGELOG](https://github.com/faker-js/faker/blob/next/CHANGELOG.md) file for each release version. + +PR titles are written in following convention: `type(scope): subject` + +**type** is required and indicates the intent of the PR. + +::: tip Note +The types `feat` and `fix` will be shown in the CHANGELOG as `### Features` or `### Bug Fixes`. +The type `refactor` will also show up as `### Changed Locales` if it has the `locale` scope. +All other types wont show up except for breaking changes marked with the `!` in front of `:` +::: + +Allowed types are: + +| type | description | Shows Up In CHANGELOG | +| -------- | ------------------------------------------------------------------------- | -------------------------------------------- | +| feat | A new feature is introduced | :white_check_mark: | +| fix | A bug was fixed | :white_check_mark: | +| chore | No user affected code changes were made | :x: | +| refactor | A refactoring that affected also user (e.g. log a deprecation warning) | :white_check_mark: (with the `locale` scope) | +| docs | Docs were added or changed | :x: | +| test | Test were added or changed | :x: | +| ci | CI were added or changed | :x: | +| build | Build scripts were added or changed | :x: | +| infra | Infrastructure related things were made (e.g. issue-template was updated) | :x: | +| revert | A revert was triggered via git | :x: | + +**scope** is optional and indicates the scope of the PR. + +::: tip Note +The scope will be shown in the changelog in front of the _subject_ in bold text. +Commits are sorted alphabetically. +This way, the scope will group commits indirectly into categories. +::: + +Allowed scopes are: + +| scope | description | +| --------------- | ---------------------------------------------------------------------------- | +| \ | The specific module name that was affected by the PR | +| locale | When only locale(s) are added/updated/removed | +| module | When some modules where updates or something related to modules were changed | +| revert | When a revert was made via git | +| deps | Will mostly be used by Renovate | +| release | Will be set by release process | + +::: tip Note +The scope is not checkable via `Semantic Pull Request` action as this would limit the scopes to only existing modules, +but if we add a new module like `color`, then the PR author couldn't use the new module name as scope. +As such, we (the Faker team) must be mindful of valid scopes and we reserve the right to edit titles as we see fit. +::: + +**subject** is required and describes what the PR does. + +Please note that the PR title should not include a suffix of e.g. `(#123)`. +This will be done automatically by GitHub while merging. + +Some examples of valid pull request titles: + +```shell +feat: add casing option +feat(locale): extend Hebrew (he) +fix: lower target to support Webpack 4 +chore: add naming convention rule +refactor(location): deprecate streetPrefix and streetSuffix +docs: remove unused playground +test: validate @see contents +ci: allow breaking change commits +build: add node v18 support +infra: rework bug-report template +revert: add more arabic names dataset (#362) + +# Breaking changes +refactor!: remove faker default export +build!: remove node v12 support + +# A release PR will look like this +chore(release): 7.4.0 + +# Renovate automatically generates these +chore(deps): update devdependencies +chore(deps): update typescript-eslint to ~5.33.0 +``` + +Previous pull request titles that could have been written in a better way: + +```diff +- feat: `datatype.hexadecimal` signature change ++ feat(datatype): hexadecimal signature change + datatype was one of our modules and can be used as scope + +- feat(image): add image via.placeholder provider ++ feat(image): add via.placeholder provider + image was redundant in the subject + +- feat(system.networkInterface): add networkInterface faker ++ feat(system): add networkInterface method + networkInterface was redundant in the scope and made the whole commit message long + also method in the subject explains a bit better what it is + +- chore(bug-report-template): new design ++ infra: rework bug-report template + the type infra tells that no actual code-changes were made + the subject contains what the PR does + +- chore: rename Gender to Sex ++ refactor(name): rename Gender to Sex + this was not a chore as it touched runtime code that affected the end-user + scope name can be used here to tell that the change affects only the name module +``` + +## Step 7: Address Feedback and Iterate + +Faker maintainers may request modifications. +Be open to suggestions and update your PR as needed. + +::: info Note +The [Faker Team](/about/team) is made up of volunteers contributing in their free time. +Please understand if you Pull Request is not getting an immediate review. +::: + +## Step 8: Celebrate Your Contribution! 🎉 + +Your changes will generally be merged after: + +1. One member of the Faker team has approved your submission and no additional requests have been issued by another team member for 7 days. +1. Two members of the Faker team have approved your submission and no additional requests have been issued by another team member for 24 hours. +1. At least three members of the Faker team have approved your submission. + +Afterwards, your changes will be merged into Faker's codebase, helping thousands of developers! +Thank you for contributing. 🚀 diff --git a/docs/guide/frameworks.md b/docs/guide/frameworks.md index 1733b4e1f70..ded22f9c722 100644 --- a/docs/guide/frameworks.md +++ b/docs/guide/frameworks.md @@ -71,7 +71,7 @@ import { faker } from '@faker-js/faker/locale/en'; describe('Testing the application', () => { it('should create an account with username and password', () => { - let username = faker.internet.username(); // before version 9.1.0, use userName() + let username = faker.internet.username(); let password = faker.internet.password(); let email = faker.internet.exampleEmail(); @@ -111,7 +111,7 @@ test.describe('Testing the application', () => { test('should create an account with username and password', async ({ page, }) => { - const username = faker.internet.username(); // before version 9.1.0, use userName() + const username = faker.internet.username(); const password = faker.internet.password(); const email = faker.internet.exampleEmail(); diff --git a/docs/guide/index.md b/docs/guide/index.md index ef0d6117ba6..46b41fbcfdb 100644 --- a/docs/guide/index.md +++ b/docs/guide/index.md @@ -15,7 +15,11 @@ This documentation only covers the JavaScript implementation of Faker. ## Environments -You can run Faker in the browser, or in Node.js. Faker v9.0 requires Node.js version 18 or above. Both ESM and CommonJS imports are available. +You can run Faker in the browser, or in Node.js. Faker v10.0 requires Node.js version 20 or above. + +::: tip Note +When using CJS, you need to use at least Node.js v20.19. See https://nodejs.org/api/modules.html#loading-ecmascript-modules-using-require +::: ## Installation diff --git a/docs/guide/localization.md b/docs/guide/localization.md index f40a2f48a03..454a3a3e1a8 100644 --- a/docs/guide/localization.md +++ b/docs/guide/localization.md @@ -4,7 +4,7 @@ Did you know Faker supports many different locales? When using our default instance `import { faker } from '@faker-js/faker'` you get English data. -However, we also provide pre-built instances for [more than 60 available locales](#available-locales). +However, we also provide pre-built instances for [more than 70 available locales](#available-locales). For example, you can import the German locale: @@ -48,77 +48,83 @@ In this example there are 5 locales. Each of these is checked in order, and the -| Locale | Name | Faker | -| :------------ | :------------------------ | :----------------- | -| `af_ZA` | Afrikaans (South Africa) | `fakerAF_ZA` | -| `ar` | Arabic | `fakerAR` | -| `az` | Azerbaijani | `fakerAZ` | -| `base` | Base | `fakerBASE` | -| `cs_CZ` | Czech (Czechia) | `fakerCS_CZ` | -| `da` | Danish | `fakerDA` | -| `de` | German | `fakerDE` | -| `de_AT` | German (Austria) | `fakerDE_AT` | -| `de_CH` | German (Switzerland) | `fakerDE_CH` | -| `dv` | Maldivian | `fakerDV` | -| `el` | Greek | `fakerEL` | -| `en` | English | `fakerEN` | -| `en_AU` | English (Australia) | `fakerEN_AU` | -| `en_AU_ocker` | English (Australia Ocker) | `fakerEN_AU_ocker` | -| `en_BORK` | English (Bork) | `fakerEN_BORK` | -| `en_CA` | English (Canada) | `fakerEN_CA` | -| `en_GB` | English (Great Britain) | `fakerEN_GB` | -| `en_GH` | English (Ghana) | `fakerEN_GH` | -| `en_HK` | English (Hong Kong) | `fakerEN_HK` | -| `en_IE` | English (Ireland) | `fakerEN_IE` | -| `en_IN` | English (India) | `fakerEN_IN` | -| `en_NG` | English (Nigeria) | `fakerEN_NG` | -| `en_US` | English (United States) | `fakerEN_US` | -| `en_ZA` | English (South Africa) | `fakerEN_ZA` | -| `eo` | Esperanto | `fakerEO` | -| `es` | Spanish | `fakerES` | -| `es_MX` | Spanish (Mexico) | `fakerES_MX` | -| `fa` | Farsi/Persian | `fakerFA` | -| `fi` | Finnish | `fakerFI` | -| `fr` | French | `fakerFR` | -| `fr_BE` | French (Belgium) | `fakerFR_BE` | -| `fr_CA` | French (Canada) | `fakerFR_CA` | -| `fr_CH` | French (Switzerland) | `fakerFR_CH` | -| `fr_LU` | French (Luxembourg) | `fakerFR_LU` | -| `fr_SN` | French (Senegal) | `fakerFR_SN` | -| `he` | Hebrew | `fakerHE` | -| `hr` | Croatian | `fakerHR` | -| `hu` | Hungarian | `fakerHU` | -| `hy` | Armenian | `fakerHY` | -| `id_ID` | Indonesian (Indonesia) | `fakerID_ID` | -| `it` | Italian | `fakerIT` | -| `ja` | Japanese | `fakerJA` | -| `ka_GE` | Georgian (Georgia) | `fakerKA_GE` | -| `ko` | Korean | `fakerKO` | -| `lv` | Latvian | `fakerLV` | -| `mk` | Macedonian | `fakerMK` | -| `nb_NO` | Norwegian (Norway) | `fakerNB_NO` | -| `ne` | Nepali | `fakerNE` | -| `nl` | Dutch | `fakerNL` | -| `nl_BE` | Dutch (Belgium) | `fakerNL_BE` | -| `pl` | Polish | `fakerPL` | -| `pt_BR` | Portuguese (Brazil) | `fakerPT_BR` | -| `pt_PT` | Portuguese (Portugal) | `fakerPT_PT` | -| `ro` | Romanian | `fakerRO` | -| `ro_MD` | Romanian (Moldova) | `fakerRO_MD` | -| `ru` | Russian | `fakerRU` | -| `sk` | Slovak | `fakerSK` | -| `sr_RS_latin` | Serbian (Serbia, Latin) | `fakerSR_RS_latin` | -| `sv` | Swedish | `fakerSV` | -| `th` | Thai | `fakerTH` | -| `tr` | Turkish | `fakerTR` | -| `uk` | Ukrainian | `fakerUK` | -| `ur` | Urdu | `fakerUR` | -| `uz_UZ_latin` | Uzbek (Uzbekistan, Latin) | `fakerUZ_UZ_latin` | -| `vi` | Vietnamese | `fakerVI` | -| `yo_NG` | Yoruba (Nigeria) | `fakerYO_NG` | -| `zh_CN` | Chinese (China) | `fakerZH_CN` | -| `zh_TW` | Chinese (Taiwan) | `fakerZH_TW` | -| `zu_ZA` | Zulu (South Africa) | `fakerZU_ZA` | +| Locale | Name | Faker | +| :----------------------------------------- | :------------------------ | :------------------ | +| [`af_ZA`](/locales/af_ZA.md) | Afrikaans (South Africa) | `fakerAF_ZA` | +| [`ar`](/locales/ar.md) | Arabic | `fakerAR` | +| [`az`](/locales/az.md) | Azerbaijani | `fakerAZ` | +| `base` | Base | `fakerBASE` | +| [`bn_BD`](/locales/bn_BD.md) | Bengali (Bangladesh) | `fakerBN_BD` | +| [`cs_CZ`](/locales/cs_CZ.md) | Czech (Czechia) | `fakerCS_CZ` | +| [`cy`](/locales/cy.md) | Welsh | `fakerCY` | +| [`da`](/locales/da.md) | Danish | `fakerDA` | +| [`de`](/locales/de.md) | German | `fakerDE` | +| [`de_AT`](/locales/de_AT.md) | German (Austria) | `fakerDE_AT` | +| [`de_CH`](/locales/de_CH.md) | German (Switzerland) | `fakerDE_CH` | +| [`dv`](/locales/dv.md) | Maldivian | `fakerDV` | +| [`el`](/locales/el.md) | Greek | `fakerEL` | +| [`en`](/locales/en.md) | English | `fakerEN` | +| [`en_AU`](/locales/en_AU.md) | English (Australia) | `fakerEN_AU` | +| [`en_AU_ocker`](/locales/en_AU_ocker.md) | English (Australia Ocker) | `fakerEN_AU_ocker` | +| [`en_BORK`](/locales/en_BORK.md) | English (Bork) | `fakerEN_BORK` | +| [`en_CA`](/locales/en_CA.md) | English (Canada) | `fakerEN_CA` | +| [`en_GB`](/locales/en_GB.md) | English (Great Britain) | `fakerEN_GB` | +| [`en_GH`](/locales/en_GH.md) | English (Ghana) | `fakerEN_GH` | +| [`en_HK`](/locales/en_HK.md) | English (Hong Kong) | `fakerEN_HK` | +| [`en_IE`](/locales/en_IE.md) | English (Ireland) | `fakerEN_IE` | +| [`en_IN`](/locales/en_IN.md) | English (India) | `fakerEN_IN` | +| [`en_NG`](/locales/en_NG.md) | English (Nigeria) | `fakerEN_NG` | +| [`en_US`](/locales/en_US.md) | English (United States) | `fakerEN_US` | +| [`en_ZA`](/locales/en_ZA.md) | English (South Africa) | `fakerEN_ZA` | +| [`eo`](/locales/eo.md) | Esperanto | `fakerEO` | +| [`es`](/locales/es.md) | Spanish | `fakerES` | +| [`es_MX`](/locales/es_MX.md) | Spanish (Mexico) | `fakerES_MX` | +| [`fa`](/locales/fa.md) | Farsi/Persian | `fakerFA` | +| [`fi`](/locales/fi.md) | Finnish | `fakerFI` | +| [`fr`](/locales/fr.md) | French | `fakerFR` | +| [`fr_BE`](/locales/fr_BE.md) | French (Belgium) | `fakerFR_BE` | +| [`fr_CA`](/locales/fr_CA.md) | French (Canada) | `fakerFR_CA` | +| [`fr_CH`](/locales/fr_CH.md) | French (Switzerland) | `fakerFR_CH` | +| [`fr_LU`](/locales/fr_LU.md) | French (Luxembourg) | `fakerFR_LU` | +| [`fr_SN`](/locales/fr_SN.md) | French (Senegal) | `fakerFR_SN` | +| [`he`](/locales/he.md) | Hebrew | `fakerHE` | +| [`hr`](/locales/hr.md) | Croatian | `fakerHR` | +| [`hu`](/locales/hu.md) | Hungarian | `fakerHU` | +| [`hy`](/locales/hy.md) | Armenian | `fakerHY` | +| [`id_ID`](/locales/id_ID.md) | Indonesian (Indonesia) | `fakerID_ID` | +| [`it`](/locales/it.md) | Italian | `fakerIT` | +| [`ja`](/locales/ja.md) | Japanese | `fakerJA` | +| [`ka_GE`](/locales/ka_GE.md) | Georgian (Georgia) | `fakerKA_GE` | +| [`ko`](/locales/ko.md) | Korean | `fakerKO` | +| [`ku_ckb`](/locales/ku_ckb.md) | Kurdish (Sorani) | `fakerKU_ckb` | +| [`ku_kmr_latin`](/locales/ku_kmr_latin.md) | Kurdish (Kurmanji, Latin) | `fakerKU_kmr_latin` | +| [`lv`](/locales/lv.md) | Latvian | `fakerLV` | +| [`mk`](/locales/mk.md) | Macedonian | `fakerMK` | +| [`nb_NO`](/locales/nb_NO.md) | Norwegian (Norway) | `fakerNB_NO` | +| [`ne`](/locales/ne.md) | Nepali | `fakerNE` | +| [`nl`](/locales/nl.md) | Dutch | `fakerNL` | +| [`nl_BE`](/locales/nl_BE.md) | Dutch (Belgium) | `fakerNL_BE` | +| [`pl`](/locales/pl.md) | Polish | `fakerPL` | +| [`pt_BR`](/locales/pt_BR.md) | Portuguese (Brazil) | `fakerPT_BR` | +| [`pt_PT`](/locales/pt_PT.md) | Portuguese (Portugal) | `fakerPT_PT` | +| [`ro`](/locales/ro.md) | Romanian | `fakerRO` | +| [`ro_MD`](/locales/ro_MD.md) | Romanian (Moldova) | `fakerRO_MD` | +| [`ru`](/locales/ru.md) | Russian | `fakerRU` | +| [`sk`](/locales/sk.md) | Slovak | `fakerSK` | +| [`sl_SI`](/locales/sl_SI.md) | Slovenian (Slovenia) | `fakerSL_SI` | +| [`sr_RS_latin`](/locales/sr_RS_latin.md) | Serbian (Serbia, Latin) | `fakerSR_RS_latin` | +| [`sv`](/locales/sv.md) | Swedish | `fakerSV` | +| [`ta_IN`](/locales/ta_IN.md) | Tamil (India) | `fakerTA_IN` | +| [`th`](/locales/th.md) | Thai | `fakerTH` | +| [`tr`](/locales/tr.md) | Turkish | `fakerTR` | +| [`uk`](/locales/uk.md) | Ukrainian | `fakerUK` | +| [`ur`](/locales/ur.md) | Urdu | `fakerUR` | +| [`uz_UZ_latin`](/locales/uz_UZ_latin.md) | Uzbek (Uzbekistan, Latin) | `fakerUZ_UZ_latin` | +| [`vi`](/locales/vi.md) | Vietnamese | `fakerVI` | +| [`yo_NG`](/locales/yo_NG.md) | Yoruba (Nigeria) | `fakerYO_NG` | +| [`zh_CN`](/locales/zh_CN.md) | Chinese (China) | `fakerZH_CN` | +| [`zh_TW`](/locales/zh_TW.md) | Chinese (Taiwan) | `fakerZH_TW` | +| [`zu_ZA`](/locales/zu_ZA.md) | Zulu (South Africa) | `fakerZU_ZA` | @@ -181,11 +187,11 @@ As a workaround, you can provide additional fallbacks to your `Faker` instance: ```ts import { Faker, el } from '@faker-js/faker'; // [!code --] -import { Faker, el, en } from '@faker-js/faker'; // [!code ++] +import { Faker, base, el, en } from '@faker-js/faker'; // [!code ++] const faker = new Faker({ locale: [el], // [!code --] - locale: [el, en], // [!code ++] + locale: [el, en, base], // [!code ++] }); console.log(faker.location.country()); // 'Belgium' ``` diff --git a/docs/guide/upgrading.md b/docs/guide/upgrading.md index 83474ebf9fb..2bd367726da 100644 --- a/docs/guide/upgrading.md +++ b/docs/guide/upgrading.md @@ -2,681 +2,98 @@ outline: [2, 3] --- -# Upgrading to v9 +# Upgrading to v10 -This is the migration guide for upgrading from v8 to v9. +This is the migration guide for upgrading from v9 to v10. ::: info Not the version you are looking for? +- [Upgrading to v9](https://v9.fakerjs.dev/guide/upgrading.html) - [Upgrading to v8](https://v8.fakerjs.dev/guide/upgrading.html) - [Upgrading to v7](https://v7.fakerjs.dev/guide/upgrading.html) - [Upgrading to v6](https://v6.fakerjs.dev/migration-guide-v5/) ::: -::: info Want to learn more about new features in v9? -Read our [release announcements](/about/announcements/2024-10-26.md) -::: - ## General Breaking Changes -### Requires Node v18+ +### Node v18 No Longer Supported -Support for Node.js v14 and v16 has been discontinued as these versions have reached their [end-of-life](https://github.com/nodejs/Release). Faker.js v9 requires a minimum of Node.js v18. +Support for Node.js v18 has been discontinued, as this version has reached its [end-of-life](https://github.com/nodejs/Release). Faker.js v10 requires a minimum of Node.js v20.19.0, v22.13.0, or v24.0.0. -### Upgrade to TypeScript v5 +### CommonJS Still Supported, but Check Your Versions -Support for TypeScript v4 has been discontinued. Faker v9 requires a minimum of TypeScript v5. -You can see this in action in the helpers module which now uses the [const generic type parameters](https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/#const-type-parameters) feature. +#### Node -```ts -// v8 -faker.helpers.arrayElement([1, 2, 3]); // number -faker.helpers.arrayElement([1, 2, 3] as const); // 1 | 2 | 3 +Technically, Faker v10 is now an ESM-only package. However, the good news is that you can still use it from your CommonJS projects without code changes, thanks to the [ESM Modules require feature](https://nodejs.org/api/modules.html#loading-ecmascript-modules-using-require) in recent versions of Node.js. -// v9 -faker.helpers.arrayElement([1, 2, 3]); // 1 | 2 | 3 -``` - -### Fix Tree Shaking - -Prior to this version, there was an issue where all locales would be bundled even if only one was used. Users had to resort to a workaround by importing specific faker instances from dedicated paths. +If you are using Node 20 or Node 22, ensure you are using a sufficiently recent minor version—Node v20.19+ or Node v22.13+ is required. ```ts -import { faker } from '@faker-js/faker/locale/de'; +const { faker, fakerES } = require('@faker-js/faker'); // this still works ``` -With this fix, the workaround should no longer be necessary. You will be able to import different localized faker instances from the root of your package with the bundle only including those specific locales. +If your version of Node.js is too old, you may see an error like: -```ts -import { fakerDE, fakerES, fakerFR } from '@faker-js/faker'; ``` - -The dedicated import paths are kept in v9, to allow a gradual migration for our users. - -While this is not a breaking change according to semantic versioning guidelines, it does impact the behavior of users' bundlers. - -### Use High Precision RNG by Default - -In v9 we switch from a 32 bit random value to a 53 bit random value. -We don't change the underlying algorithm much, but we now consume two seed values each step instead of one. - -You can read more in out Blog Post: [What's New In v9.0](/about/announcements/2024-10-26#use-high-precision-rng-by-default) - -#### Adoption - -- If you don't have any seeded tests and just want some random values, then you don't have to change anything. -- If you have seeded tests, you have to update most test snapshots or similar comparisons to new values. -- For updating snapshots or similar comparisons in different testing frameworks, you can use the following commands: - - **Vitest**: `vitest run --update` - - **Jest**: `jest --updateSnapshot` - -#### Keeping the Old Behavior - -You can keep the old behavior, if you create your own `Faker` instance -and pass a `Randomizer` instance from the `generateMersenne32Randomizer()` function to it. - -```ts{8} -import { - Faker, - generateMersenne32Randomizer, // < v9 default - generateMersenne53Randomizer, // > v9 default -} from '@faker-js/faker'; - -const faker = new Faker({ - randomizer: generateMersenne32Randomizer(), - ... -}); +Uncaught: +Error [ERR_REQUIRE_ESM]: require() of ES Module /faker/dist/index.js not supported. +Instead, change the require of index.js in null to a dynamic import(), which is available in all CommonJS modules. ``` -### Restructured dist folder - -The `dist` folder now contains minified and chunked files for CJS, because we switched to [tsup](https://tsup.egoist.dev) for the bundling process. -So it is no longer possible to use `@faker-js/faker/dist/cjs/...`. -However, as we officially support only `exports` defined via `package.json`, this should not affect your code. - -## Removals of Deprecated Code - -A large number of methods which were deprecated in v8 are completely removed in v9. To prepare for the upgrade, it is recommended to first upgrade to the latest version of v8 (e.g. `npm install --save-dev faker@8`) and fix any deprecation warnings issued by your code. - -The following sections contain more information about these changes. - -### Constructor and JS Backwards-Compatibility Methods - -Removed deprecated faker constructor, so you can no longer just pass a locale string identifier. - -Also removed the accessors and method that were only for JS backwards compatibility. - -- `get/set locales` -- `get/set locale` -- `get/set localeFallback` -- `setLocale` - -To use the new constructor, you need to pass a locale object like: - -```ts -import { Faker, es, base } from '@faker-js/faker'; - -// A custom faker instance that does not have any fallbacks -const customEsFakerWithoutFallback = new Faker({ locale: es }); - -// A custom faker instance that has only base-data as fallback, but not english data -const customEsFakerWithFallback = new Faker({ locale: [es, base] }); -``` - -### Commerce Module - -Removed deprecated commerce methods - -| removed | replacement | -| --------------------------------------------- | ------------------------------------------------- | -| `faker.commerce.price(min, max, dec, symbol)` | `faker.commerce.price({ min, max, dec, symbol })` | - -### Company Module - -Removed deprecated company methods - -| removed | replacement | -| ----------------------------- | ----------------------------- | -| `faker.company.suffixes` | Part of `faker.company.name` | -| `faker.company.companySuffix` | Part of `faker.company.name` | -| `faker.company.bs` | `faker.company.buzzPhrase` | -| `faker.company.bsAdjective` | `faker.company.buzzAdjective` | -| `faker.company.bsBuzz` | `faker.company.buzzVerb` | -| `faker.company.bsNoun` | `faker.company.buzzNoun` | - -#### Company Name Affix files reorganized - -The company name affix files have been used inconsistently. -Sometimes `suffix`es were used as prefixes in the patterns, because they contained legal entity types (and in English these were defined as `suffix`es). -We renamed the files to match their actual content instead of their hypothetical position. -If you are using the public methods, no changes are required. -You only need to change your code if you are accessing the raw definitions e.g. in `faker.helpers.fake()`. - -| Before | After | -| ---------------- | --------------------------- | -| `company.prefix` | `company.category` | -| `company.suffix` | `company.legal_entity_type` | - -::: info Note -In some locales `prefix`es and `suffix`es might have been swapped, so the mapping might be wrong for those. -::: - -### Datatype Module - -Removed deprecated datatype methods - -| removed | replacement | -| --------------------------------------- | ------------------------------------------------------------ | -| `faker.datatype.number()` | `faker.number.int()` or `faker.number.float()` | -| `faker.datatype.float()` | `faker.number.float()` | -| `faker.datatype.datetime({ min, max })` | `faker.date.between({ from, to })` or `faker.date.anytime()` | -| `faker.datatype.string()` | `faker.string.sample()` | -| `faker.datatype.uuid()` | `faker.string.uuid()` | -| `faker.datatype.hexadecimal()` | `faker.string.hexadecimal()` or `faker.number.hex()` | -| `faker.datatype.json()` | your own function to generate complex objects | -| `faker.datatype.array()` | your own function to build complex arrays | -| `faker.datatype.bigInt()` | `faker.number.bigInt()` | - -### Date Module - -Removed deprecated date methods - -| removed | replacement | -| -------------------------------------- | ------------------------------------------ | -| `faker.date.past(years, refDate)` | `faker.date.past({ years, refDate })` | -| `faker.date.future(years, refDate)` | `faker.date.future({ years, refDate })` | -| `faker.date.between(from, to)` | `faker.date.between({ from, to })` | -| `faker.date.betweens(from, to, count)` | `faker.date.betweens({ from, to, count })` | -| `faker.date.recent(days, refDate)` | `faker.date.recent({ days, refDate })` | -| `faker.date.soon(days, refDate)` | `faker.date.soon({ days, refDate })` | -| `faker.date.month({ abbr })` | `faker.date.month({ abbreviated })` | -| `faker.date.weekday({ abbr })` | `faker.date.weekday({ abbreviated })` | +#### TypeScript -### Finance Module +As mentioned in the previous section, CJS can still be used if you use a modern module resolution strategy. This directly impacts your `tsconfig.json` setup. -Removed deprecated finance methods +Previously, you were able to provide the values `"Bundler"`, `"Node10"`, `"Node16"` or `"NodeNext"` for the configuration `"moduleResulution"`. Starting in v10 of Faker, only the values `"Bundler"`, `"Node20"` or `"NodeNext"` are supported for your CJS codebase. [To use `"Node20"` your **`typescript` version must be at least `5.9.0`**](https://devblogs.microsoft.com/typescript/announcing-typescript-5-9/#support-for---module-node20). -| removed | replacement | -| --------------------------------------------------------- | ------------------------------------------------------------- | -| `faker.finance.account` | `faker.finance.accountNumber` | -| `faker.finance.mask` | `faker.finance.maskedNumber` | -| `faker.finance.amount(min, max, dec, symbol, autoFormat)` | `faker.finance.amount({ min, max, dec, symbol, autoFormat })` | -| `faker.finance.iban(formatted, countryCode)` | `faker.finance.iban({ formatted, countryCode })` | +#### Incompatibility with Jest -### Git Module +Because the [Jest](https://www.npmjs.com/package/jest) testing library uses its own module resolution system, there are known compatibility issues with Faker v10 in combination with CJS in Jest tests. -Removed deprecated git methods +For now, keep using Faker v9, or see possible workarounds in [issue #3606](https://github.com/faker-js/faker/issues/3606). -| removed | replacement | -| ---------------------- | ------------------------------------ | -| `faker.git.shortSha()` | `faker.git.commitSha({ length: 7 })` | +### Removal of Deprecated Code -### Helpers Module +A number of methods that were deprecated in v9 have been completely removed in v10. To prepare for the upgrade, it is recommended to first upgrade to the latest version of v9 (e.g., `npm install --save-dev faker@9`) and fix any deprecation warnings issued by your code. -Removed deprecated helpers methods +| Removed Method | Replacement | +| ------------------------- | ------------------------- | +| `faker.address.*` | `faker.location.*` | +| `faker.name.*` | `faker.person.*` | +| `faker.internet.userName` | `faker.internet.username` | -| removed | replacement | -| --------------------------------------- | -------------------------------------------------------------- | -| `faker.helpers.replaceSymbolWithNumber` | `string.replace(/#+/g, (m) => faker.string.numeric(m.length))` | -| `faker.helpers.regexpStyleStringParse` | `faker.helpers.fromRegExp` | -| `faker.helpers.unique` | `import { UniqueEnforcer } from 'enforce-unique';` | - -Note these are not exact replacements: - -#### `faker.helpers.replaceSymbolWithNumber` - -The `replaceSymbolWithNumber` method was deprecated in Faker v8.4 and removed in v9.0. The method parsed the given string symbol by symbol and replaces the `#` symbol with digits (`0` - `9`) and the `!` symbol with digits >=2 (`2` - `9`). This was primarily used internally by Faker for generating phone numbers. If needed, you can use a simple string replace combined with `faker.string.numeric` to replace this - -```ts -// old -faker.helpers.replaceSymbolWithNumber('#####-##'); // '04812-67' - -// new -'#####-##'.replace(/#+/g, (m) => faker.string.numeric(m.length)); - -// old -faker.helpers.replaceSymbolWithNumber('!#####'); // '123152' - -// new -'!#####' - .replace(/#+/g, (m) => faker.string.numeric(m.length)) - .replace(/!+/g, (m) => - faker.string.numeric({ length: m.length, exclude: ['0', '1'] }) - ); -``` - -#### `faker.helpers.regexpStyleStringParse` - -The `regexpStyleStringParse` method in `faker.helpers` was deprecated in Faker v8.1 and removed in v9.0. A likely replacement is the more powerful `faker.helpers.fromRegExp`. - -```ts -faker.helpers.regexpStyleStringParse('a{3,6}'); // aaaaa -faker.helpers.fromRegExp('a{3,6}'); // aaaaa -``` - -However, please note that `faker.helpers.fromRegExp` is not an exact replacement for `faker.helpers.regexpStyleStringParse` as `fromRegExp` cannot handle numeric ranges. This now needs to be handled separately. - -```ts -faker.helpers.regexpStyleStringParse('a{3,6}[1-100]'); // "aaaa53", etc. -faker.helpers.fromRegExp('a{3,6}') + faker.number.int({ min: 1, max: 100 }); -``` - -#### `faker.helpers.unique` - -Prior to v9, Faker provided a [`faker.helpers.unique()`](https://v8.fakerjs.dev/api/helpers.html#unique) method which had a global store to keep track of duplicates. This was removed in v9. - -Please see the [unique values guide](/guide/unique) for alternatives. - -For example, many simple use cases can use [`faker.helpers.uniqueArray`](https://v8.fakerjs.dev/api/helpers.html#uniqueArray). Or you can migrate to a recommended third party package such as [`enforce-unique`](https://www.npmjs.com/package/enforce-unique): - -Basic example: - -```ts -// OLD -const name = faker.helpers.unique(faker.person.firstName); - -// NEW -import { UniqueEnforcer } from 'enforce-unique'; -//const { UniqueEnforcer } = require("enforce-unique") // CJS - -const enforcerName = new UniqueEnforcer(); -const name = enforcerName.enforce(faker.person.firstName); -``` - -With parameters: - -```ts -// OLD -const stateCode = faker.helpers.unique(faker.location.state, [ - { - abbreviated: true, - }, -]); - -// NEW -import { UniqueEnforcer } from 'enforce-unique'; - -const enforcerState = new UniqueEnforcer(); -const stateCode = enforcerState.enforce(() => - faker.location.state({ - abbreviated: true, - }) -); -``` - -With options: - -```ts -// OLD -const city = faker.helpers.unique(faker.location.city, [], { - maxRetries: 100, - maxTime: 1000, -}); - -// NEW -import { UniqueEnforcer } from 'enforce-unique'; - -const enforcer = new UniqueEnforcer(); -const city = enforcer.enforce(faker.location.city, { - maxRetries: 100, - maxTime: 1000, -}); -``` - -::: tip Note -`enforce-unique` does not directly support the `store` option previously available in `faker.helpers.unique`. If you were previously using this parameter, check the [documentation](https://www.npmjs.com/package/enforce-unique). If you need to reset the store, you can call the `reset()` method on the `UniqueEnforcer` instance. -::: - -#### `faker.helpers.arrayElement` and `faker.helpers.arrayElements` - -The following only affects usage in Javascript, as in Typescript this usage would already throw a compile-time error. - -Previously, the `arrayElement` and `arrayElements` methods would throw a dedicated error, when called without arguments. - -```ts -faker.helpers.arrayElement(undefined); // FakerError: Calling `faker.helpers.arrayElement()` without arguments is no longer supported. -``` - -Now, it throws a JS native error: - -```ts -faker.helpers.arrayElement(undefined); // TypeError: Cannot read properties of undefined (reading 'length') -``` - -Calling the methods with an empty array instead still behaves as before. - -### Image Module - -Removed deprecated image methods - -| removed | replacement | -| ------------------------- | ------------------------------------------------------------------------------ | -| `faker.image.image()` | `faker.image.url()` | -| `faker.image.imageUrl()` | `faker.image.url()` | -| `faker.image.abstract()` | `faker.image.urlLoremFlickr({ category: 'abstract' })` or `faker.image.url()` | -| `faker.image.animals()` | `faker.image.urlLoremFlickr({ category: 'animals' })` or `faker.image.url()` | -| `faker.image.business()` | `faker.image.urlLoremFlickr({ category: 'business' })` or `faker.image.url()` | -| `faker.image.cats()` | `faker.image.urlLoremFlickr({ category: 'cats' })` or `faker.image.url()` | -| `faker.image.city()` | `faker.image.urlLoremFlickr({ category: 'city' })` or `faker.image.url()` | -| `faker.image.food()` | `faker.image.urlLoremFlickr({ category: 'food' })` or `faker.image.url()` | -| `faker.image.nightlife()` | `faker.image.urlLoremFlickr({ category: 'nightlife' })` or `faker.image.url()` | -| `faker.image.fashion()` | `faker.image.urlLoremFlickr({ category: 'fashion' })` or `faker.image.url()` | -| `faker.image.people()` | `faker.image.urlLoremFlickr({ category: 'people' })` or `faker.image.url()` | -| `faker.image.nature()` | `faker.image.urlLoremFlickr({ category: 'nature' })` or `faker.image.url()` | -| `faker.image.sports()` | `faker.image.urlLoremFlickr({ category: 'sports' })` or `faker.image.url()` | -| `faker.image.technics()` | `faker.image.urlLoremFlickr({ category: 'technics' })` or `faker.image.url()` | -| `faker.image.transport()` | `faker.image.urlLoremFlickr({ category: 'transport' })` or `faker.image.url()` | - -#### Image Providers - -Removed deprecated image providers from `faker.image`. They already returned broken image URLs anyway. - -| removed | replacement | -| ------------------------------------------- | -------------------------------------------------------- | -| `faker.image.lorempicsum.image` | `faker.image.urlPicsumPhotos` | -| `faker.image.lorempicsum.imageGrayscale` | `faker.image.urlPicsumPhotos({ grayscale: true })` | -| `faker.image.lorempicsum.imageBlurred` | `faker.image.urlPicsumPhotos({ blur: 4 })` | -| `faker.image.lorempicsum.imageRandomSeeded` | `faker.image.urlPicsumPhotos` | -| `faker.image.lorempicsum.imageUrl` | `faker.image.urlPicsumPhotos` | -| `faker.image.placeholder.imageUrl` | `faker.image.urlPlaceholder` | -| `faker.image.placeholder.randomUrl` | `faker.image.urlPlaceholder` | -| `faker.image.unsplash.image` | `faker.image.url` | -| `faker.image.unsplash.imageUrl` | `faker.image.url` | -| `faker.image.unsplash.food` | `faker.image.urlLoremFlickr({ category: 'food' })` | -| `faker.image.unsplash.people` | `faker.image.urlLoremFlickr({ category: 'people' })` | -| `faker.image.unsplash.nature` | `faker.image.urlLoremFlickr({ category: 'nature' })` | -| `faker.image.unsplash.technology` | `faker.image.urlLoremFlickr({ category: 'technology' })` | -| `faker.image.unsplash.objects` | `faker.image.urlLoremFlickr({ category: 'objects' })` | -| `faker.image.unsplash.buildings` | `faker.image.urlLoremFlickr({ category: 'buildings' })` | - -### Internet Module - -Removed deprecated internet methods - -| removed | replacement | -| -------------------------------------------------------------- | ----------------------------------------------------------------- | -| `faker.internet.avatar()` | `faker.image.avatarLegacy()` or `faker.image.avatar()` | -| `faker.internet.email(firstName, lastName, provider, options)` | `faker.internet.email({ firstName, lastName, provider, ... })` | -| `faker.internet.exampleEmail(firstName, lastName, options)` | `faker.internet.exampleEmail({ firstName, lastName, ... })` | -| `faker.internet.userName(firstName, lastName)` | `faker.internet.userName({ firstName, lastName })` | -| `faker.internet.displayName(firstName, lastName)` | `faker.internet.displayName({ firstName, lastName })` | -| `faker.internet.color(redBase, greenBase, blueBase)` | `faker.internet.color({ redBase, greenBase, blueBase })` | -| `faker.internet.password(length, memorable, pattern, prefix)` | `faker.internet.password({ length, memorable, pattern, prefix })` | - -### Location Module - -Removed deprecated location methods - -| removed | replacement | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `faker.location.zipCodeByState` | `faker.location.zipCode({ state })` | -| `faker.location.cityName` | `faker.location.city` | -| `faker.location.streetName` | `faker.location.street` | -| `faker.location.stateAbbr()` | `faker.location.state({ abbreviated: true })` | -| `faker.location.latitude(max, min, precision)` | `faker.location.latitude({ max, min, precision })` | -| `faker.location.longitude(max, min, precision)` | `faker.location.longitude({ max, min, precision })` | -| `faker.location.direction(abbreviated)` | `faker.location.direction({ abbreviated })` | -| `faker.location.cardinalDirection(abbreviated)` | `faker.location.cardinalDirection({ abbreviated })` | -| `faker.location.ordinalDirection(abbreviated)` | `faker.location.ordinalDirection({ abbreviated })` | -| `faker.location.nearbyGPSCoordinate(coordinate, radius, isMetric)` | `faker.location.nearbyGPSCoordinate({ origin, radius, isMetric })` | - -#### Direction definitions reorganized - -The locale definitions used by `faker.location.direction()`, `faker.location.cardinalDirection()` and `faker.location.ordinalDirection()` have been reorganized. -Previously, they were located under `definitions.location.direction` and `definitions.location.direction_abbr` and their values were required to be in a specific order. -Now, all values are nested under `definitions.location.direction` with descriptive property names. -If you are using the public methods, no changes are required. -You only need to change your code if you are accessing the raw definitions e.g. in `faker.helpers.fake()`. - -| Before | After | -| ------------------------- | ----------------------------------------------------------------------- | -| `location.direction` | `location.direction.cardinal` or `location.direction.ordinal` | -| `location.direction_abbr` | `location.direction.cardinal_abbr` or `location.direction.ordinal_abbr` | - -#### Default country definitions removed - -The `faker.definitions.location.default_country` definition has been removed, as they were not used by any public method, and were not useful for locales which don't correspond directly to a single country, like `ar`. - -### Number Module - -Removed deprecated number parameter - -| removed | replacement | -| ----------------------------------- | ------------------------------------ | -| `faker.number.float({ precision })` | `faker.number.float({ multipleOf })` | - -### Person Module - -#### Changed Definitions - -The locale definitions used by `faker.person.jobTitle()`, `faker.person.jobDescriptor()`, `faker.person.jobArea()` and `faker.person.jobType()` have been reorganized and are no longer nested under `definitions.person.title`. Conversely, the gendered locale definitions used by `faker.person.firstName()`, `faker.person.lastName()`, `faker.person.middleName()` and `faker.person.prefix()` are now consolidated under a single definition property. If you are using the public methods, no changes are required. You only need to change your code if you are accessing the raw definitions e.g. in `faker.helpers.fake()`. - -| Before | After | -| --------------------------------- | ---------------------------------- | -| `person.female_first_name` | `person.first_name.female` | -| `person.female_last_name_pattern` | `person.last_name_pattern.female` | -| `person.female_last_name` | `person.last_name.female` | -| `person.female_middle_name` | `person.middle_name.female` | -| `person.female_prefix` | `person.prefix.female` | -| `person.first_name` | `person.first_name.generic` | -| `person.last_name_pattern` | `person.last_name_pattern.generic` | -| `person.last_name` | `person.last_name.generic` | -| `person.male_first_name` | `person.first_name.male` | -| `person.male_last_name_pattern` | `person.last_name_pattern.male` | -| `person.male_last_name` | `person.last_name.male` | -| `person.male_middle_name` | `person.middle_name.male` | -| `person.male_prefix` | `person.prefix.male` | -| `person.middle_name` | `person.middle_name.generic` | -| `person.prefix` | `person.prefix.generic` | -| `person.title.descriptor` | `person.job_descriptor` | -| `person.title.job` | `person.job_type` | -| `person.title.level` | `person.job_area` | - -### Phone Module - -Removed deprecated phone methods - -| removed | replacement | -| ---------------------------- | ------------------------------------------------------------------------------------- | -| `faker.phone.number(format)` | `faker.phone.number(style)`, `faker.string.numeric()` or `faker.helpers.fromRegExp()` | - -### Random Module - -Removed deprecated random module - -| removed | replacement | -| ----------------------------- | ----------------------------------------------- | -| `faker.random.alpha()` | `faker.string.alpha()` | -| `faker.random.alphaNumeric()` | `faker.string.alphanumeric()` | -| `faker.random.locale()` | `faker.helpers.objectKey(allLocales/allFakers)` | -| `faker.random.numeric()` | `faker.string.numeric()` | -| `faker.random.word()` | `faker.lorem.word()` or `faker.word.sample()` | -| `faker.random.words()` | `faker.lorem.words()` or `faker.word.words()` | - -### Locale Aliases - -Renamed deprecated locale aliases `cz`, `en_IND`, `ge` and removed `global`. - -| removed | replacement | -| ------------------------------------------------------- | ------------------------------------------------------ | -| `import { faker } from '@faker-js/faker/locale/cz'` | `import { faker } from '@faker-js/faker/locale/cs_CZ'` | -| `import { faker } from '@faker-js/faker/locale/en_IND'` | `import { faker } from '@faker-js/faker/locale/en_IN'` | -| `import { faker } from '@faker-js/faker/locale/ge'` | `import { faker } from '@faker-js/faker/locale/ka_GE'` | -| `import { faker } from '@faker-js/faker/locale/global'` | `import { faker } from '@faker-js/faker/locale/base'` | - -### Renamed Locale Definitions - -The following locale definitions have been adjusted to align with Faker's locale definition naming standard: - -| removed | replacement | -| ------------------------------------------- | -------------------------------------------- | -| `faker.definitions.science.chemicalElement` | `faker.definitions.science.chemical_element` | -| `faker.definitions.system.directoryPaths` | `faker.definitions.system.directory_path` | -| `faker.definitions.system.mimeTypes` | `faker.definitions.system.mime_type` | -| `faker.definitions.lorem.words` | `faker.definitions.lorem.word` | - -With that now all our locale data use the following naming scheme: - -```txt -faker.definitions.category_name.entry_name -``` - -Please keep in mind that property keys of complex objects remain in camel-case. - -```txt -faker.definitions.science.chemical_element.atomicNumber -``` - -### Type Aliases - -Removed deprecated type aliases - -| removed | replacement | -| -------------------------------- | ------------------------------- | -| `AddressDefinitions` | `LocationDefinition` | -| `AirlineDefinitions` | `AirlineDefinition` | -| `AnimalDefinitions` | `AnimalDefinition` | -| `ColorDefinitions` | `ColorDefinition` | -| `CommerceDefinitions` | `CommerceDefinition` | -| `CommerceProductNameDefinitions` | `CommerceProductNameDefinition` | -| `CompanyDefinitions` | `CompanyDefinition` | -| `DatabaseDefinitions` | `DatabaseDefinition` | -| `DateDefinitions` | `DateDefinition` | -| `FinanceDefinitions` | `FinanceDefinition` | -| `HackerDefinitions` | `HackerDefinition` | -| `InternetDefinitions` | `InternetDefinition` | -| `LoremDefinitions` | `LoremDefinition` | -| `MusicDefinitions` | `MusicDefinition` | -| `NameDefinitions` | `PersonDefinition` | -| `PhoneNumberDefinitions` | `PhoneNumberDefinition` | -| `ScienceDefinitions` | `ScienceDefinition` | -| `SystemDefinitions` | `SystemDefinition` | -| `SystemMimeTypeEntryDefinitions` | `SystemMimeTypeEntryDefinition` | -| `VehicleDefinitions` | `VehicleDefinition` | -| `WordDefinitions` | `WordDefinition` | -| `CSSFunction` | `CssFunctionType` | -| `CSSSpace` | `CssSpaceType` | -| `AddressModule` | `LocationModule` | -| `NameModule` | `PersonModule` | - -## Breaking Changes to Specific Methods - -### Birthdate New Default Mode - -Previously, the `faker.date.birthdate()` method had defaults that were unclear in their specific impact. -Now, the method requires either none or all of the `min`, `max` and `mode` options. - -We also improved the error messages to clearly indicate when the `min`, `max`, and `mode` options must be set together. - -### Fail on Invalid Dates - -Various methods in the `faker.date` module allow you to pass a `Date`-ish value: -that is, either a Javascript Date, or a timestamp number or string that can be converted to a `Date` via the `new Date()` constructor. - -Previously, if you passed something which could not be parsed to a `Date`, it would fall back to the current reference date. -Now, this throws an error raising awareness of that bad value. - -This affects the `refDate` parameter of the `anytime()`, `birthdate()`, `past()`, `future()`, `recent()` and `soon()`, methods as well as the `from` and `to` parameters of `between()` and `betweens()`. - -### Separate Timezone Methods - -The `timeZone` functionality has been divided to enhance specificity: - -- Use `faker.date.timeZone()` to generate a random global time zone. -- Use `faker.location.timeZone()` to obtain time zone specific to the current locale. - -We haven't updated all locale dependent time zone data yet, so if you encounter unexpected values, please [create a new issue](https://github.com/faker-js/faker/issues/new?template=bug_report.yml). - -### Prices Now Return More Price-Like Values - -The `faker.commerce.price()` method now produces values that also return fractional values. - -Old price: 828.00 -New price: 828.59 - -The last digit of the price is adjusted to be more price-like: - -- 50% of the time: `9` -- 30% of the time: `5` -- 10% of the time: `0` -- 10% of the time: a random digit from `0` to `9` - -We plan to rethink this method some more in the future: [#2579](https://github.com/faker-js/faker/issues/2579) - -### Images Have Random Options by Default - -Some of image methods had static default parameters, previously. -These have been changed to return more divers urls. -Following you can find a table with snippets to obtain the previous behavior: - -| Method | Old Defaults | -| ------------------------------- | ----------------------------------------------------- | -| `faker.image.url()` | `{width: 640, height: 480}` | -| `faker.image.urlLoremFlickr()` | `{width: 640, height: 480}` | -| `faker.image.urlPicsumPhotos()` | `{width: 640,height: 480, blur: 0, grayscale: false}` | -| `faker.image.dataUri()` | `{width: 640, height: 480, type: 'svg-uri'}` | - -### Require `from` and `to` in `faker.date.between` and `betweens` - -Previously, in `faker.date.between()` and `faker.date.betweens()` if the `from` or `to` parameter was omitted (in Javascript) or an invalid date (in Javascript or Typescript), they would default to the current date or reference date. Now, both boundaries must be given explicitly. If you still need the old behavior, you can pass `Date.now()` or the reference date for `from` or `to`. - -### Stricter Checking for Function Signature Passed to `faker.helpers.multiple` Method - -The `faker.helpers.multiple` method takes a function reference as its first parameter. Previously you may have written code like this to generate multiple values. - -```ts -faker.helpers.multiple(faker.date.past, { count: 2 }); -``` - -However this code has a bug - `faker.helpers.multiple` passes the loop index as the second parameter to the method, which in this case would set the `refDate` of the `faker.date.past()` call to 0, making all dates before 1970. - -Instead you should generally use a lambda function like - -```ts -faker.helpers.multiple(() => faker.date.past(), { count: 2 }); -``` - -to get the desired behavior. In v9.0, we use stricter type-checking in Typescript to detect when a function is called which is not compatible with `(v: unknown, index: number)` which can cause compile-time errors in places where previously there were potential runtime errors. - -**Bad** - -```ts -faker.helpers.multiple(faker.person.firstName, ...); // ❗ -// In Typescript, this is now a compile time error -// Argument of type '(sex?: "female" | "male" | undefined) => string' -// is not assignable to parameter of type '(v: unknown, index: number) => unknown'. -``` - -**Good** - -```ts -faker.helpers.multiple(() => faker.person.firstName(), ...); // ✔ -``` - -The new types also allow for easier use-cases where the index is part of the generated data e.g. as id. - -```ts -faker.helpers.multiple((_, index) => ({ id: index, ...}), ...); // [{id: 0, ...}, ...] -``` +Some methods do not have exact replacements, so check your code carefully. -### Stricter Enum Value Usage +| Removed Method | Replacement / Notes | +| ---------------------------- | -------------------------------------------------------- | +| `faker.internet.color` | `faker.color.rgb` | +| `faker.image.urlPlaceholder` | `faker.image.dataUri` | +| `faker.finance.maskedNumber` | See [#3201](https://github.com/faker-js/faker/pull/3201) | +| `faker.image.avatarLegacy` | `faker.image.avatar` | -Some methods would previously fallback to a default value for an option when an unknown value was passed for a enum parameter. -Now, these methods return undefined instead. -This only affects usage in Javascript, as in Typescript this usage would already throw a compile-time error. +### Word Methods Default Resolution Strategy -For example: +The default resolution strategy for the methods in the word module changed to 'fail'. +This means that methods in the word module will throw an error if no words for your input criteria exist. ```ts -faker.color.rgb({ format: 'unexpectedvalue' }); -// in Faker v8, is [110, 82, 190] like { format: "decimal" } -// in Faker v9, is undefined +// There are no nouns between 20-25 characters long in the word list +faker.word.noun({ length: { min: 20, max: 25 } }); +// In v9, this would return a random noun of any length, like 'plastic' +// In v10, this throws an error `FakerError: No words found that match the given length.` ``` -This affects: +Previously, the methods would return a random word, completely ignoring the the length requirements you specified. +If you want to restore this behavior, you can provide the 'any-length' strategy to the word methods. -- The `format` property of `faker.color.rgb()` must be one of `'binary' | 'css' | 'decimal' | 'hex'` if provided -- The `format` property of `faker.color.cmyk()`, `faker.color.hsl()`, `faker.color.hwb()`, `faker.color.lab()`, `faker.color.lch()` must be one of `'binary' | 'css' | 'decimal'` if provided -- The `variant` property of `faker.location.countryCode()` must be one of `alpha-2`, `alpha-3`, `numeric` if provided -- The `casing` property of `faker.string.alpha()` and `faker.string.alphanumeric()` must be one of `'upper' | 'lower' | 'mixed'` if provided +| Method in v9 | Method in v10 with v9 behavior | +| --------------------------- | ----------------------------------------------------- | +| `faker.word.adjective()` | `faker.word.adjective({ strategy: 'any-length' })` | +| `faker.word.adverb()` | `faker.word.adverb({ strategy: 'any-length' })` | +| `faker.word.conjunction()` | `faker.word.conjunction({ strategy: 'any-length' })` | +| `faker.word.interjection()` | `faker.word.interjection({ strategy: 'any-length' })` | +| `faker.word.noun()` | `faker.word.noun({ strategy: 'any-length' })` | +| `faker.word.preposition()` | `faker.word.preposition({ strategy: 'any-length' })` | +| `faker.word.sample()` | `faker.word.sample({ strategy: 'any-length' })` | +| `faker.word.verb()` | `faker.word.verb({ strategy: 'any-length' })` | diff --git a/docs/guide/usage.md b/docs/guide/usage.md index 5dadb2ff2bd..0260b4acf58 100644 --- a/docs/guide/usage.md +++ b/docs/guide/usage.md @@ -79,7 +79,7 @@ const randomEmail = faker.internet.email(); // Tomasa_Ferry14@hotmail.com ``` ::: info Note -It is highly recommended to use version tags when importing libraries in Deno, e.g: `import { faker } from "https://esm.sh/@faker-js/faker@v9.5.0"`. +It is highly recommended to use version tags when importing libraries in Deno, e.g: `import { faker } from "https://esm.sh/@faker-js/faker@v10.2.0"`. ::: ### Alternative CDN links @@ -99,15 +99,28 @@ You can use Faker without it, but we don't have dedicated error messages for wro In order to have Faker working properly, you need to check if these `compilerOptions` are set correctly in your `tsconfig` file: -```json +::: code-group + +```json [esm] { "compilerOptions": { - "moduleResolution": "Bundler", // "Node10", "Node16" or "NodeNext" + "moduleResolution": "Bundler", // or "Node10", "Node16", "Node20", "NodeNext" "strict": true // Optional, but recommended } } ``` +```json [cjs] +{ + "compilerOptions": { + "moduleResolution": "Bundler", // or "Node20" or "NodeNext" + "strict": true // Optional, but recommended + } +} +``` + +::: + ## Reproducible results Normally Faker will give you different random values each time it is used. @@ -136,7 +149,7 @@ console.log(firstRandom === secondRandom); When upgrading to a new version of Faker, you may get different values for the same seed, as the underlying data (lists of names, words etc) may have changed. ::: -There are a few methods which use relative dates for which setting a random seed is not sufficient to have reproducible results, for example: `faker.date.past`, `faker.date.future`, `faker.date.birthdate`, `faker.date.recent`, `faker.date.soon` and `faker.git.commitEntry`. This is because these methods default to creating a date before or after "today", and "today" depends on when the code is run. To fix this, you can specify a fixed reference date as a Date or string, for example: +There are a few methods which use relative dates for which setting a random seed is not sufficient to have reproducible results, for example: `faker.date.past`, `faker.date.future`, `faker.date.recent`, `faker.date.soon`, `faker.git.commitEntry` and `faker.string.uuid({ version: 7 })`. This is because these methods default to creating a date before or after "today", and "today" depends on when the code is run. To fix this, you can specify a fixed reference date as a Date or string, for example: ```ts // creates a date soon after 2023-01-01 diff --git a/docs/index.md b/docs/index.md index 0a923ce4838..5db9e99ae1a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -37,7 +37,7 @@ features: details: Generate Prices, Product Names, Adjectives, and Descriptions. - icon: 🌏 title: Localization - details: Pick from over 60 locales to generate realistic looking Names, Addresses, and Phone Numbers. + details: Pick from over 70 locales to generate realistic looking Names, Addresses, and Phone Numbers. ---
    diff --git a/docs/public/robots.txt b/docs/public/robots.txt new file mode 100644 index 00000000000..2608f02c69a --- /dev/null +++ b/docs/public/robots.txt @@ -0,0 +1,3 @@ +User-Agent: * + +Sitemap: https://fakerjs.dev/sitemap.xml diff --git a/eslint.config.ts b/eslint.config.ts index 55020443640..3126fa1662d 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -1,20 +1,18 @@ import { includeIgnoreFile } from '@eslint/compat'; import eslint from '@eslint/js'; -import stylistic from '@stylistic/eslint-plugin'; +import eslintPluginStylistic from '@stylistic/eslint-plugin'; import eslintPluginVitest from '@vitest/eslint-plugin'; import eslintPluginFileProgress from 'eslint-plugin-file-progress'; import eslintPluginJsdoc from 'eslint-plugin-jsdoc'; import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; import eslintPluginUnicorn from 'eslint-plugin-unicorn'; -import { dirname, resolve } from 'node:path'; -import { fileURLToPath } from 'node:url'; +import { defineConfig } from 'eslint/config'; +import { resolve } from 'node:path'; import tseslint from 'typescript-eslint'; -const __filename = fileURLToPath(import.meta.url); -const __dirname = dirname(__filename); -const gitignorePath = resolve(__dirname, '.gitignore'); +const gitignorePath = resolve(import.meta.dirname, '.gitignore'); -const config: ReturnType = tseslint.config( +export default defineConfig( //#region global includeIgnoreFile(gitignorePath), { @@ -54,7 +52,7 @@ const config: ReturnType = tseslint.config( //#endregion //#region typescript-eslint - ...tseslint.configs.strictTypeChecked, + tseslint.configs.strictTypeChecked, { name: 'typescript-eslint overrides', languageOptions: { @@ -135,7 +133,7 @@ const config: ReturnType = tseslint.config( { name: 'stylistic overrides', plugins: { - '@stylistic': stylistic, + '@stylistic': eslintPluginStylistic, }, rules: { '@stylistic/padding-line-between-statements': [ @@ -147,18 +145,19 @@ const config: ReturnType = tseslint.config( //#endregion //#region unicorn - eslintPluginUnicorn.configs['flat/recommended'], + eslintPluginUnicorn.configs.recommended, { name: 'unicorn overrides', rules: { 'unicorn/import-style': 'off', // subjective & doesn't do anything for us 'unicorn/no-array-callback-reference': 'off', // reduces readability 'unicorn/no-nested-ternary': 'off', // incompatible with prettier - 'unicorn/no-object-as-default-parameter': 'off', // https://github.com/sindresorhus/eslint-plugin-unicorn/issues/2199 'unicorn/no-null': 'off', // incompatible with TypeScript + 'unicorn/no-object-as-default-parameter': 'off', // https://github.com/sindresorhus/eslint-plugin-unicorn/issues/2199 'unicorn/no-zero-fractions': 'off', // deactivated to raise awareness of floating operations 'unicorn/number-literal-case': 'off', // incompatible with prettier 'unicorn/numeric-separators-style': 'off', // "magic numbers" may carry specific meaning + 'unicorn/prefer-bigint-literals': 'off', // currently there is no clear argument on why literal would be better 'unicorn/prefer-string-raw': 'off', // The additional prefix doesn't help readability 'unicorn/prefer-string-slice': 'off', // string.substring is sometimes easier to use 'unicorn/prefer-ternary': 'off', // ternaries aren't always better @@ -172,6 +171,12 @@ const config: ReturnType = tseslint.config( { name: 'jsdoc overrides', rules: { + 'jsdoc/check-tag-names': [ + 'error', + { + definedTags: ['remark'], + }, + ], 'jsdoc/require-jsdoc': 'off', // Enabled only for src/**/*.ts 'jsdoc/require-returns': 'off', 'jsdoc/sort-tags': [ @@ -180,6 +185,7 @@ const config: ReturnType = tseslint.config( tagSequence: [ { tags: ['template'] }, { tags: ['internal'] }, + { tags: ['remark'] }, { tags: ['param'] }, { tags: ['returns'] }, { tags: ['throws'] }, @@ -203,6 +209,11 @@ const config: ReturnType = tseslint.config( //#region prettier eslintPluginPrettierRecommended, + { + rules: { + curly: ['error', 'all'], // https://github.com/prettier/eslint-config-prettier#curly + }, + }, //#endregion //#region file-progress @@ -244,12 +255,10 @@ const config: ReturnType = tseslint.config( }, { name: 'test/**/*.ts overrides', - files: ['test/**/*.spec.ts', 'test/**/*.spec.d.ts'], - plugins: { - vitest: eslintPluginVitest, - }, + files: ['test/**/*.spec.ts', 'test/**/*.spec.cts', 'test/**/*.spec.d.ts'], + extends: [eslintPluginVitest.configs.recommended], rules: { - 'deprecation/deprecation': 'off', + '@typescript-eslint/no-deprecated': 'off', '@typescript-eslint/restrict-template-expressions': [ 'error', @@ -260,10 +269,9 @@ const config: ReturnType = tseslint.config( }, ], - ...eslintPluginVitest.configs.recommended.rules, - 'vitest/expect-expect': 'off', 'vitest/no-alias-methods': 'error', + 'vitest/no-conditional-expect': 'off', // we require conditional logic when iterating over faker instances or instances in diffent versions (for the docs) 'vitest/prefer-each': 'error', 'vitest/prefer-to-have-length': 'error', 'vitest/valid-expect': ['error', { maxArgs: 2 }], @@ -273,8 +281,13 @@ const config: ReturnType = tseslint.config( typecheck: true, }, }, + }, + { + files: ['test/**/*.spec.cts'], + rules: { + '@typescript-eslint/no-require-imports': 'off', + 'unicorn/prefer-module': 'off', + }, } //#endregion ); - -export default config; diff --git a/netlify.toml b/netlify.toml index c3c4205887f..a2083e07ab7 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,5 +1,5 @@ [build.environment] - NODE_VERSION = "18" + NODE_VERSION = "24" # Documentation [build] @@ -8,7 +8,7 @@ # Alias for the next page [[redirects]] - from = "https://v10.fakerjs.dev/*" + from = "https://v11.fakerjs.dev/*" to = "https://next.fakerjs.dev/:splat" status = 302 force = true diff --git a/package.json b/package.json index 0247572ee27..6327cac1912 100644 --- a/package.json +++ b/package.json @@ -1,24 +1,25 @@ { "name": "@faker-js/faker", - "version": "9.5.0", + "version": "10.2.0", "description": "Generate massive amounts of fake contextual data", "scripts": { - "clean": "rimraf coverage .eslintcache dist docs/.vitepress/cache docs/.vitepress/dist node_modules", - "build:clean": "rimraf dist", + "clean": "git clean -fdx --exclude _local", + "build:clean": "git clean -fX dist", "build:code": "tsup-node", "build": "run-s build:clean build:code", "generate": "run-s generate:locales generate:api-docs", "generate:api-docs": "tsx ./scripts/apidocs.ts", "generate:locales": "tsx ./scripts/generate-locales.ts", - "docs:build": "run-s generate:api-docs docs:build:embedded docs:build:run", + "docs:build": "run-s generate:api-docs generate:locales docs:build:embedded docs:build:run", "docs:build:embedded": "tsup-node --entry.faker src/index.ts --format esm --outDir docs/public --no-dts --no-clean", "docs:build:run": "vitepress build docs", "docs:build:ci": "run-s build docs:build", - "docs:dev": "run-s generate:api-docs docs:build:embedded docs:dev:run", + "docs:dev": "run-s generate:api-docs generate:locales docs:build:embedded docs:dev:run", "docs:dev:run": "vitepress dev docs", "docs:serve": "vitepress serve docs --port 5173", "docs:diff": "tsx ./scripts/diff.ts", - "docs:test:e2e:ci": "run-s docs:build:ci docs:test:e2e:run", + "docs:test:e2e:ci": "run-s docs:build:ci docs:test:e2e:install docs:test:e2e:run", + "docs:test:e2e:install": "cypress install", "docs:test:e2e:run": "run-p --race docs:serve \"cypress run\"", "docs:test:e2e:open": "run-p --race docs:serve \"cypress open\"", "format": "prettier --cache --write .", @@ -66,20 +67,12 @@ "type": "module", "exports": { ".": { - "require": { - "types": "./dist/index.d.cts", - "default": "./dist/index.cjs" - }, "default": { "types": "./dist/index.d.ts", "default": "./dist/index.js" } }, "./locale/*": { - "require": { - "types": "./dist/locale/*.d.cts", - "default": "./dist/locale/*.cjs" - }, "default": { "types": "./dist/locale/*.d.ts", "default": "./dist/locale/*.js" @@ -87,7 +80,7 @@ }, "./package.json": "./package.json" }, - "main": "dist/index.cjs", + "main": "dist/index.js", "module": "dist/index.js", "types": "dist/index.d.ts", "typesVersions": { @@ -105,48 +98,52 @@ "dist" ], "devDependencies": { - "@eslint/compat": "1.2.6", - "@eslint/js": "9.19.0", - "@stylistic/eslint-plugin": "3.0.1", - "@types/eslint__js": "8.42.3", - "@types/node": "22.13.0", - "@types/sanitize-html": "2.13.0", - "@types/semver": "7.5.8", - "@types/validator": "13.12.2", - "@vitest/coverage-v8": "3.0.5", - "@vitest/eslint-plugin": "1.1.25", - "@vitest/ui": "3.0.5", - "@vueuse/core": "12.5.0", - "commit-and-tag-version": "12.5.0", - "cypress": "14.0.1", - "eslint": "9.19.0", - "eslint-config-prettier": "10.0.1", - "eslint-plugin-file-progress": "3.0.1", - "eslint-plugin-jsdoc": "50.6.3", - "eslint-plugin-prettier": "5.2.3", - "eslint-plugin-unicorn": "56.0.1", - "jiti": "2.4.2", - "npm-run-all2": "7.0.2", - "prettier": "3.4.2", - "prettier-plugin-organize-imports": "4.1.0", - "prettier-plugin-packagejson": "2.5.8", - "rimraf": "5.0.10", - "sanitize-html": "2.14.0", - "semver": "7.7.0", - "ts-morph": "25.0.0", - "tsup": "8.3.6", - "tsx": "4.19.2", - "typescript": "5.7.3", - "typescript-eslint": "8.23.0", - "validator": "13.12.0", - "vitepress": "1.6.3", - "vitest": "3.0.5", - "vue": "3.5.13", - "vue-tsc": "2.2.0" + "@eslint/compat": "2.0.0", + "@eslint/js": "9.39.2", + "@stylistic/eslint-plugin": "5.6.1", + "@types/node": "22.19.3", + "@types/sanitize-html": "2.16.0", + "@types/semver": "7.7.1", + "@types/validator": "13.15.10", + "@vitest/coverage-v8": "3.2.4", + "@vitest/eslint-plugin": "1.6.3", + "@vitest/ui": "3.2.4", + "@vueuse/core": "13.9.0", + "commit-and-tag-version": "12.6.1", + "cypress": "15.8.1", + "eslint": "9.39.2", + "eslint-config-prettier": "10.1.8", + "eslint-plugin-file-progress": "3.0.2", + "eslint-plugin-jsdoc": "61.5.0", + "eslint-plugin-prettier": "5.5.4", + "eslint-plugin-unicorn": "62.0.0", + "jiti": "2.6.1", + "npm-run-all2": "8.0.4", + "prettier": "3.7.4", + "prettier-plugin-organize-imports": "4.3.0", + "prettier-plugin-pkg": "0.21.2", + "sanitize-html": "2.17.0", + "semver": "7.7.3", + "ts-morph": "27.0.2", + "tsup": "8.5.1", + "tsx": "4.21.0", + "typescript": "5.9.3", + "typescript-eslint": "8.50.1", + "validator": "13.15.26", + "vitepress": "1.6.4", + "vitest": "3.2.4", + "vue": "3.5.26", + "vue-tsc": "3.2.1" }, - "packageManager": "pnpm@9.15.4", + "packageManager": "pnpm@10.26.2", "engines": { - "node": ">=18.0.0", - "npm": ">=9.0.0" + "node": "^20.19.0 || ^22.13.0 || ^23.5.0 || >=24.0.0", + "npm": ">=10" + }, + "pnpm": { + "ignoredBuiltDependencies": [ + "cypress", + "esbuild" + ] } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c2e389af449..b87a8d5e3a6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,122 +9,120 @@ importers: .: devDependencies: '@eslint/compat': - specifier: 1.2.6 - version: 1.2.6(eslint@9.19.0(jiti@2.4.2)) + specifier: 2.0.0 + version: 2.0.0(eslint@9.39.2(jiti@2.6.1)) '@eslint/js': - specifier: 9.19.0 - version: 9.19.0 + specifier: 9.39.2 + version: 9.39.2 '@stylistic/eslint-plugin': - specifier: 3.0.1 - version: 3.0.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@types/eslint__js': - specifier: 8.42.3 - version: 8.42.3 + specifier: 5.6.1 + version: 5.6.1(eslint@9.39.2(jiti@2.6.1)) '@types/node': - specifier: 22.13.0 - version: 22.13.0 + specifier: 22.19.3 + version: 22.19.3 '@types/sanitize-html': - specifier: 2.13.0 - version: 2.13.0 + specifier: 2.16.0 + version: 2.16.0 '@types/semver': - specifier: 7.5.8 - version: 7.5.8 + specifier: 7.7.1 + version: 7.7.1 '@types/validator': - specifier: 13.12.2 - version: 13.12.2 + specifier: 13.15.10 + version: 13.15.10 '@vitest/coverage-v8': - specifier: 3.0.5 - version: 3.0.5(vitest@3.0.5) + specifier: 3.2.4 + version: 3.2.4(vitest@3.2.4) '@vitest/eslint-plugin': - specifier: 1.1.25 - version: 1.1.25(@typescript-eslint/utils@8.24.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)(vitest@3.0.5) + specifier: 1.6.3 + version: 1.6.3(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(vitest@3.2.4) '@vitest/ui': - specifier: 3.0.5 - version: 3.0.5(vitest@3.0.5) + specifier: 3.2.4 + version: 3.2.4(vitest@3.2.4) '@vueuse/core': - specifier: 12.5.0 - version: 12.5.0(typescript@5.7.3) + specifier: 13.9.0 + version: 13.9.0(vue@3.5.26(typescript@5.9.3)) commit-and-tag-version: - specifier: 12.5.0 - version: 12.5.0 + specifier: 12.6.1 + version: 12.6.1 cypress: - specifier: 14.0.1 - version: 14.0.1 + specifier: 15.8.1 + version: 15.8.1 eslint: - specifier: 9.19.0 - version: 9.19.0(jiti@2.4.2) + specifier: 9.39.2 + version: 9.39.2(jiti@2.6.1) eslint-config-prettier: - specifier: 10.0.1 - version: 10.0.1(eslint@9.19.0(jiti@2.4.2)) + specifier: 10.1.8 + version: 10.1.8(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-file-progress: - specifier: 3.0.1 - version: 3.0.1(eslint@9.19.0(jiti@2.4.2)) + specifier: 3.0.2 + version: 3.0.2(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-jsdoc: - specifier: 50.6.3 - version: 50.6.3(eslint@9.19.0(jiti@2.4.2)) + specifier: 61.5.0 + version: 61.5.0(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-prettier: - specifier: 5.2.3 - version: 5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@10.0.1(eslint@9.19.0(jiti@2.4.2)))(eslint@9.19.0(jiti@2.4.2))(prettier@3.4.2) + specifier: 5.5.4 + version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))(prettier@3.7.4) eslint-plugin-unicorn: - specifier: 56.0.1 - version: 56.0.1(eslint@9.19.0(jiti@2.4.2)) + specifier: 62.0.0 + version: 62.0.0(eslint@9.39.2(jiti@2.6.1)) jiti: - specifier: 2.4.2 - version: 2.4.2 + specifier: 2.6.1 + version: 2.6.1 npm-run-all2: - specifier: 7.0.2 - version: 7.0.2 + specifier: 8.0.4 + version: 8.0.4 prettier: - specifier: 3.4.2 - version: 3.4.2 + specifier: 3.7.4 + version: 3.7.4 prettier-plugin-organize-imports: - specifier: 4.1.0 - version: 4.1.0(prettier@3.4.2)(typescript@5.7.3)(vue-tsc@2.2.0(typescript@5.7.3)) - prettier-plugin-packagejson: - specifier: 2.5.8 - version: 2.5.8(prettier@3.4.2) - rimraf: - specifier: 5.0.10 - version: 5.0.10 + specifier: 4.3.0 + version: 4.3.0(prettier@3.7.4)(typescript@5.9.3)(vue-tsc@3.2.1(typescript@5.9.3)) + prettier-plugin-pkg: + specifier: 0.21.2 + version: 0.21.2(prettier@3.7.4) sanitize-html: - specifier: 2.14.0 - version: 2.14.0 + specifier: 2.17.0 + version: 2.17.0 semver: - specifier: 7.7.0 - version: 7.7.0 + specifier: 7.7.3 + version: 7.7.3 ts-morph: - specifier: 25.0.0 - version: 25.0.0 + specifier: 27.0.2 + version: 27.0.2 tsup: - specifier: 8.3.6 - version: 8.3.6(jiti@2.4.2)(postcss@8.5.2)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0) + specifier: 8.5.1 + version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) tsx: - specifier: 4.19.2 - version: 4.19.2 + specifier: 4.21.0 + version: 4.21.0 typescript: - specifier: 5.7.3 - version: 5.7.3 + specifier: 5.9.3 + version: 5.9.3 typescript-eslint: - specifier: 8.23.0 - version: 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + specifier: 8.50.1 + version: 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) validator: - specifier: 13.12.0 - version: 13.12.0 + specifier: 13.15.26 + version: 13.15.26 vitepress: - specifier: 1.6.3 - version: 1.6.3(@algolia/client-search@5.20.2)(@types/node@22.13.0)(postcss@8.5.2)(search-insights@2.17.3)(typescript@5.7.3) + specifier: 1.6.4 + version: 1.6.4(@algolia/client-search@5.46.2)(@types/node@22.19.3)(change-case@5.4.4)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.3) vitest: - specifier: 3.0.5 - version: 3.0.5(@types/node@22.13.0)(@vitest/ui@3.0.5)(jiti@2.4.2)(jsdom@25.0.1)(tsx@4.19.2)(yaml@2.7.0) + specifier: 3.2.4 + version: 3.2.4(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) vue: - specifier: 3.5.13 - version: 3.5.13(typescript@5.7.3) + specifier: 3.5.26 + version: 3.5.26(typescript@5.9.3) vue-tsc: - specifier: 2.2.0 - version: 2.2.0(typescript@5.7.3) + specifier: 3.2.1 + version: 3.2.1(typescript@5.9.3) packages: + '@algolia/abtesting@1.12.2': + resolution: {integrity: sha512-oWknd6wpfNrmRcH0vzed3UPX0i17o4kYLM5OMITyMVM2xLgaRbIafoxL0e8mcrNNb0iORCJA0evnNDKRYth5WQ==} + engines: {node: '>= 14.0.0'} + '@algolia/autocomplete-core@1.17.7': resolution: {integrity: sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==} @@ -145,124 +143,89 @@ packages: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/client-abtesting@5.20.2': - resolution: {integrity: sha512-IS8JSFsDD33haaKIIFaL7qj3bEIG9GldZfb3ILW0QF3at7TcrIJYy58hrDvFee5T3p3E2aH/+wqIr0eha8jB/w==} + '@algolia/client-abtesting@5.46.2': + resolution: {integrity: sha512-oRSUHbylGIuxrlzdPA8FPJuwrLLRavOhAmFGgdAvMcX47XsyM+IOGa9tc7/K5SPvBqn4nhppOCEz7BrzOPWc4A==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.20.2': - resolution: {integrity: sha512-k0KxCfcX/HZySqPasKy6GkiiDuebaMh2v/nE0HHg1PbsyeyagLapDi6Ktjkxhz8NlUq6eTJR+ddGJegippKQtQ==} + '@algolia/client-analytics@5.46.2': + resolution: {integrity: sha512-EPBN2Oruw0maWOF4OgGPfioTvd+gmiNwx0HmD9IgmlS+l75DatcBkKOPNJN+0z3wBQWUO5oq602ATxIfmTQ8bA==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.20.2': - resolution: {integrity: sha512-xoZcL/Uu49KYDb3feu2n06gALD17p5CslO8Zk3mZ7+uTurK3lgjLws7LNetZ172Ap/GpzPCRXI83d2iDoYQD6Q==} + '@algolia/client-common@5.46.2': + resolution: {integrity: sha512-Hj8gswSJNKZ0oyd0wWissqyasm+wTz1oIsv5ZmLarzOZAp3vFEda8bpDQ8PUhO+DfkbiLyVnAxsPe4cGzWtqkg==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.20.2': - resolution: {integrity: sha512-fy7aCbo9y7WHt/9G03EYc471Dd5kIaM8PNP4z6AEQYr9a9X8c4inwNs6tePxAEfRHwVQi0CZ7kuVdn6/MjWx1A==} + '@algolia/client-insights@5.46.2': + resolution: {integrity: sha512-6dBZko2jt8FmQcHCbmNLB0kCV079Mx/DJcySTL3wirgDBUH7xhY1pOuUTLMiGkqM5D8moVZTvTdRKZUJRkrwBA==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.20.2': - resolution: {integrity: sha512-ocL1ZXulfuXzJAwsKw2kMscKMD0rs/f4CFYu6Gjh4mK4um6rGfa1a6u1MSc4swFqRQer0wNP9Pi+kVfKhuKt5A==} + '@algolia/client-personalization@5.46.2': + resolution: {integrity: sha512-1waE2Uqh/PHNeDXGn/PM/WrmYOBiUGSVxAWqiJIj73jqPqvfzZgzdakHscIVaDl6Cp+j5dwjsZ5LCgaUr6DtmA==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.20.2': - resolution: {integrity: sha512-Xjs4Tj1zkLCnmq1ys8RRhLQPy002I6GuT/nbHVdSQmQu4yKCI0gOFbwxHdM6yYPEuE3cJx7A4wSQjCH21mUKsg==} + '@algolia/client-query-suggestions@5.46.2': + resolution: {integrity: sha512-EgOzTZkyDcNL6DV0V/24+oBJ+hKo0wNgyrOX/mePBM9bc9huHxIY2352sXmoZ648JXXY2x//V1kropF/Spx83w==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.20.2': - resolution: {integrity: sha512-2cD3RGB5byusLS0DAX1Nvl5MLiv7OoGgQrRs+94dTalqjvK8lGKzxxJhXoVojgx2qcROyIUAIDXFdTqv6NIHaA==} + '@algolia/client-search@5.46.2': + resolution: {integrity: sha512-ZsOJqu4HOG5BlvIFnMU0YKjQ9ZI6r3C31dg2jk5kMWPSdhJpYL9xa5hEe7aieE+707dXeMI4ej3diy6mXdZpgA==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.20.2': - resolution: {integrity: sha512-S593Kmhc98+5zdzGet4GrZEBEBGl4vVtqg/MPfW8dCRf9qDRNYSkhBsIzlhQe9JWiohe9oB9LW5meibwOgRmww==} + '@algolia/ingestion@1.46.2': + resolution: {integrity: sha512-1Uw2OslTWiOFDtt83y0bGiErJYy5MizadV0nHnOoHFWMoDqWW0kQoMFI65pXqRSkVvit5zjXSLik2xMiyQJDWQ==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.20.2': - resolution: {integrity: sha512-bW41aWLYgBv/coJUIT85mkN3kk1VBKsM8tlwB5S/s446Mgc7r8t5TX7kA8kCR2UbwDedOK51i/85/x/rM0ZXbg==} + '@algolia/monitoring@1.46.2': + resolution: {integrity: sha512-xk9f+DPtNcddWN6E7n1hyNNsATBCHIqAvVGG2EAGHJc4AFYL18uM/kMTiOKXE/LKDPyy1JhIerrh9oYb7RBrgw==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.20.2': - resolution: {integrity: sha512-wBMf3J1L5ogvU8p8ifHkknDXWn1zdZ2epkqpt2MkUaZynE3G77rrFU9frcO+Pu1FQJQ5xCDTKcYUUcJCDD00rg==} + '@algolia/recommend@5.46.2': + resolution: {integrity: sha512-NApbTPj9LxGzNw4dYnZmj2BoXiAc8NmbbH6qBNzQgXklGklt/xldTvu+FACN6ltFsTzoNU6j2mWNlHQTKGC5+Q==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.20.2': - resolution: {integrity: sha512-w+VMzOkIq2XDGg6Ybzr74RlBZvJQnuIdKpVusQSXCXknvxwAwbO457LmoavhZWl06Lcsk9YDx1X2k0zb+iJQmw==} + '@algolia/requester-browser-xhr@5.46.2': + resolution: {integrity: sha512-ekotpCwpSp033DIIrsTpYlGUCF6momkgupRV/FA3m62SreTSZUKjgK6VTNyG7TtYfq9YFm/pnh65bATP/ZWJEg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.20.2': - resolution: {integrity: sha512-wpjnbvbi3A13b0DvijE45DRYDvwcP5Ttz7RTMkPWTkF1s6AHuo6O2UcwGyaogMAGa1QOOzFYfp5u4YQwMOQx5g==} + '@algolia/requester-fetch@5.46.2': + resolution: {integrity: sha512-gKE+ZFi/6y7saTr34wS0SqYFDcjHW4Wminv8PDZEi0/mE99+hSrbKgJWxo2ztb5eqGirQTgIh1AMVacGGWM1iw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.20.2': - resolution: {integrity: sha512-YuSSdtgUt1dFBTNYUb+2TA5j0Hd0eDXE0bVISjUvTCqmoaGsGLwW+rKI7p1eLQ1r7RESwBAvUwcY1qP2Wl3Lyw==} + '@algolia/requester-node-http@5.46.2': + resolution: {integrity: sha512-ciPihkletp7ttweJ8Zt+GukSVLp2ANJHU+9ttiSxsJZThXc4Y2yJ8HGVWesW5jN1zrsZsezN71KrMx/iZsOYpg==} engines: {node: '>= 14.0.0'} '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@asamuzakjp/css-color@2.8.3': - resolution: {integrity: sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==} - - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.9': - resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==} + '@babel/parser@7.28.5': + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/types@7.26.9': - resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==} + '@babel/types@7.28.5': + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@1.0.2': resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} - '@colors/colors@1.5.0': - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} - - '@csstools/color-helpers@5.0.1': - resolution: {integrity: sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==} - engines: {node: '>=18'} - - '@csstools/css-calc@2.1.1': - resolution: {integrity: sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==} - engines: {node: '>=18'} - peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 - - '@csstools/css-color-parser@3.0.7': - resolution: {integrity: sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==} - engines: {node: '>=18'} - peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 - - '@csstools/css-parser-algorithms@3.0.4': - resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} - engines: {node: '>=18'} - peerDependencies: - '@csstools/css-tokenizer': ^3.0.3 - - '@csstools/css-tokenizer@3.0.3': - resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} - engines: {node: '>=18'} - - '@cypress/request@3.0.7': - resolution: {integrity: sha512-LzxlLEMbBOPYB85uXrDqvD4MgcenjRBLIns3zyhx7vTPj/0u2eQhzXvPiGcaJrV38Q9dbkExWp6cOHPJ+EtFYg==} + '@cypress/request@3.0.10': + resolution: {integrity: sha512-hauBrOdvu08vOsagkZ/Aju5XuiZx6ldsLfByg1htFeldhex+PeMrYauANzFsMJeAA0+dyPLbDoX2OYuvVoLDkQ==} engines: {node: '>= 6'} '@cypress/xvfb@1.2.4': @@ -291,9 +254,13 @@ packages: search-insights: optional: true - '@es-joy/jsdoccomment@0.49.0': - resolution: {integrity: sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==} - engines: {node: '>=16'} + '@es-joy/jsdoccomment@0.76.0': + resolution: {integrity: sha512-g+RihtzFgGTx2WYCuTHbdOXJeAlGnROws0TeALx9ow/ZmOROOZkVg5wp/B44n0WJgI4SQFP1eWM2iRPlU2Y14w==} + engines: {node: '>=20.11.0'} + + '@es-joy/resolve.exports@1.2.0': + resolution: {integrity: sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==} + engines: {node: '>=10'} '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} @@ -301,14 +268,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.23.1': - resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/aix-ppc64@0.24.2': - resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} + '@esbuild/aix-ppc64@0.27.2': + resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -319,14 +280,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.23.1': - resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.24.2': - resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} + '@esbuild/android-arm64@0.27.2': + resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -337,14 +292,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.23.1': - resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.24.2': - resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} + '@esbuild/android-arm@0.27.2': + resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -355,14 +304,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.23.1': - resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.24.2': - resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} + '@esbuild/android-x64@0.27.2': + resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -373,14 +316,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.23.1': - resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.24.2': - resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} + '@esbuild/darwin-arm64@0.27.2': + resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -391,14 +328,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.23.1': - resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.24.2': - resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} + '@esbuild/darwin-x64@0.27.2': + resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -409,14 +340,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.23.1': - resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.24.2': - resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} + '@esbuild/freebsd-arm64@0.27.2': + resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -427,14 +352,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.23.1': - resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.24.2': - resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} + '@esbuild/freebsd-x64@0.27.2': + resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -445,14 +364,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.23.1': - resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.24.2': - resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} + '@esbuild/linux-arm64@0.27.2': + resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -463,14 +376,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.23.1': - resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.24.2': - resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} + '@esbuild/linux-arm@0.27.2': + resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -481,14 +388,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.23.1': - resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.24.2': - resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} + '@esbuild/linux-ia32@0.27.2': + resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -499,14 +400,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.23.1': - resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.24.2': - resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} + '@esbuild/linux-loong64@0.27.2': + resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -517,14 +412,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.23.1': - resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.24.2': - resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} + '@esbuild/linux-mips64el@0.27.2': + resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -535,14 +424,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.23.1': - resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.24.2': - resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} + '@esbuild/linux-ppc64@0.27.2': + resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -553,14 +436,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.23.1': - resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.24.2': - resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} + '@esbuild/linux-riscv64@0.27.2': + resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -571,14 +448,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.23.1': - resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.24.2': - resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} + '@esbuild/linux-s390x@0.27.2': + resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -589,20 +460,14 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.23.1': - resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + '@esbuild/linux-x64@0.27.2': + resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.24.2': - resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.24.2': - resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} + '@esbuild/netbsd-arm64@0.27.2': + resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -613,26 +478,14 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.23.1': - resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + '@esbuild/netbsd-x64@0.27.2': + resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.24.2': - resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.23.1': - resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-arm64@0.24.2': - resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} + '@esbuild/openbsd-arm64@0.27.2': + resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -643,17 +496,17 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.23.1': - resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + '@esbuild/openbsd-x64@0.27.2': + resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.24.2': - resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} + '@esbuild/openharmony-arm64@0.27.2': + resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] + cpu: [arm64] + os: [openharmony] '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} @@ -661,14 +514,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.23.1': - resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.24.2': - resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} + '@esbuild/sunos-x64@0.27.2': + resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -679,14 +526,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.23.1': - resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.24.2': - resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} + '@esbuild/win32-arm64@0.27.2': + resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -697,14 +538,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.23.1': - resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.24.2': - resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} + '@esbuild/win32-ia32@0.27.2': + resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -715,91 +550,97 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.23.1': - resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.24.2': - resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} + '@esbuild/win32-x64@0.27.2': + resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.4.1': - resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/compat@1.2.6': - resolution: {integrity: sha512-k7HNCqApoDHM6XzT30zGoETj+D+uUcZUb+IVAJmar3u6bvHf7hhHJcWx09QHj4/a2qrKZMWU0E16tvkiAdv06Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/compat@2.0.0': + resolution: {integrity: sha512-T9AfE1G1uv4wwq94ozgTGio5EUQBqAVe1X9qsQtSNVEYW6j3hvtZVm8Smr4qL1qDPFg+lOB2cL5RxTRMzq4CTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: - eslint: ^9.10.0 + eslint: ^8.40 || 9 peerDependenciesMeta: eslint: optional: true - '@eslint/config-array@0.19.2': - resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} + '@eslint/config-array@0.21.1': + resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.10.0': - resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.2.0': - resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.19.0': - resolution: {integrity: sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==} + '@eslint/core@1.0.0': + resolution: {integrity: sha512-PRfWP+8FOldvbApr6xL7mNCw4cJcSTq4GA7tYbgq15mRb0kWKO/wEB2jr+uwjFH3sZvEZneZyCUGTxsv4Sahyw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/eslintrc@3.3.3': + resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/object-schema@2.1.6': - resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + '@eslint/js@9.39.2': + resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.2.5': - resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - - '@humanwhocodes/retry@0.4.1': - resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} '@hutson/parse-repository-url@3.0.2': resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} engines: {node: '>=6.9.0'} - '@iconify-json/simple-icons@1.2.24': - resolution: {integrity: sha512-06ZWXZx3PHCE+02zn+iIGOKKNgE3kyPd0Yh7IUEIa0bCYI6UmGlsYYghRx8As9TnTNYMCEiy5V0zI4Jb6EY6XA==} + '@iconify-json/simple-icons@1.2.65': + resolution: {integrity: sha512-v/O0UeqrDz6ASuRVE5g2Puo5aWyej4M/CxX6WYDBARgswwxK0mp3VQbGgPFEAAUU9QN02IjTgjMuO021gpWf2w==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + '@isaacs/balanced-match@4.0.1': + resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + engines: {node: 20 || >=22} + + '@isaacs/brace-expansion@5.0.0': + resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} + engines: {node: 20 || >=22} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -808,183 +649,200 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@pkgr/core@0.1.1': - resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + '@pkgr/core@0.2.9': + resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@polka/url@1.0.0-next.28': - resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - '@rollup/rollup-android-arm-eabi@4.34.7': - resolution: {integrity: sha512-l6CtzHYo8D2TQ3J7qJNpp3Q1Iye56ssIAtqbM2H8axxCEEwvN7o8Ze9PuIapbxFL3OHrJU2JBX6FIIVnP/rYyw==} + '@rollup/rollup-android-arm-eabi@4.55.1': + resolution: {integrity: sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.34.7': - resolution: {integrity: sha512-KvyJpFUueUnSp53zhAa293QBYqwm94TgYTIfXyOTtidhm5V0LbLCJQRGkQClYiX3FXDQGSvPxOTD/6rPStMMDg==} + '@rollup/rollup-android-arm64@4.55.1': + resolution: {integrity: sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.34.7': - resolution: {integrity: sha512-jq87CjmgL9YIKvs8ybtIC98s/M3HdbqXhllcy9EdLV0yMg1DpxES2gr65nNy7ObNo/vZ/MrOTxt0bE5LinL6mA==} + '@rollup/rollup-darwin-arm64@4.55.1': + resolution: {integrity: sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.34.7': - resolution: {integrity: sha512-rSI/m8OxBjsdnMMg0WEetu/w+LhLAcCDEiL66lmMX4R3oaml3eXz3Dxfvrxs1FbzPbJMaItQiksyMfv1hoIxnA==} + '@rollup/rollup-darwin-x64@4.55.1': + resolution: {integrity: sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.34.7': - resolution: {integrity: sha512-oIoJRy3ZrdsXpFuWDtzsOOa/E/RbRWXVokpVrNnkS7npz8GEG++E1gYbzhYxhxHbO2om1T26BZjVmdIoyN2WtA==} + '@rollup/rollup-freebsd-arm64@4.55.1': + resolution: {integrity: sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.34.7': - resolution: {integrity: sha512-X++QSLm4NZfZ3VXGVwyHdRf58IBbCu9ammgJxuWZYLX0du6kZvdNqPwrjvDfwmi6wFdvfZ/s6K7ia0E5kI7m8Q==} + '@rollup/rollup-freebsd-x64@4.55.1': + resolution: {integrity: sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.34.7': - resolution: {integrity: sha512-Z0TzhrsNqukTz3ISzrvyshQpFnFRfLunYiXxlCRvcrb3nvC5rVKI+ZXPFG/Aa4jhQa1gHgH3A0exHaRRN4VmdQ==} + '@rollup/rollup-linux-arm-gnueabihf@4.55.1': + resolution: {integrity: sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.34.7': - resolution: {integrity: sha512-nkznpyXekFAbvFBKBy4nNppSgneB1wwG1yx/hujN3wRnhnkrYVugMTCBXED4+Ni6thoWfQuHNYbFjgGH0MBXtw==} + '@rollup/rollup-linux-arm-musleabihf@4.55.1': + resolution: {integrity: sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.34.7': - resolution: {integrity: sha512-KCjlUkcKs6PjOcxolqrXglBDcfCuUCTVlX5BgzgoJHw+1rWH1MCkETLkLe5iLLS9dP5gKC7mp3y6x8c1oGBUtA==} + '@rollup/rollup-linux-arm64-gnu@4.55.1': + resolution: {integrity: sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.34.7': - resolution: {integrity: sha512-uFLJFz6+utmpbR313TTx+NpPuAXbPz4BhTQzgaP0tozlLnGnQ6rCo6tLwaSa6b7l6gRErjLicXQ1iPiXzYotjw==} + '@rollup/rollup-linux-arm64-musl@4.55.1': + resolution: {integrity: sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.34.7': - resolution: {integrity: sha512-ws8pc68UcJJqCpneDFepnwlsMUFoWvPbWXT/XUrJ7rWUL9vLoIN3GAasgG+nCvq8xrE3pIrd+qLX/jotcLy0Qw==} + '@rollup/rollup-linux-loong64-gnu@4.55.1': + resolution: {integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.55.1': + resolution: {integrity: sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.34.7': - resolution: {integrity: sha512-vrDk9JDa/BFkxcS2PbWpr0C/LiiSLxFbNOBgfbW6P8TBe9PPHx9Wqbvx2xgNi1TOAyQHQJ7RZFqBiEohm79r0w==} + '@rollup/rollup-linux-ppc64-gnu@4.55.1': + resolution: {integrity: sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.34.7': - resolution: {integrity: sha512-rB+ejFyjtmSo+g/a4eovDD1lHWHVqizN8P0Hm0RElkINpS0XOdpaXloqM4FBkF9ZWEzg6bezymbpLmeMldfLTw==} + '@rollup/rollup-linux-ppc64-musl@4.55.1': + resolution: {integrity: sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.55.1': + resolution: {integrity: sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.55.1': + resolution: {integrity: sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.34.7': - resolution: {integrity: sha512-nNXNjo4As6dNqRn7OrsnHzwTgtypfRA3u3AKr0B3sOOo+HkedIbn8ZtFnB+4XyKJojIfqDKmbIzO1QydQ8c+Pw==} + '@rollup/rollup-linux-s390x-gnu@4.55.1': + resolution: {integrity: sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.34.7': - resolution: {integrity: sha512-9kPVf9ahnpOMSGlCxXGv980wXD0zRR3wyk8+33/MXQIpQEOpaNe7dEHm5LMfyRZRNt9lMEQuH0jUKj15MkM7QA==} + '@rollup/rollup-linux-x64-gnu@4.55.1': + resolution: {integrity: sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.34.7': - resolution: {integrity: sha512-7wJPXRWTTPtTFDFezA8sle/1sdgxDjuMoRXEKtx97ViRxGGkVQYovem+Q8Pr/2HxiHp74SSRG+o6R0Yq0shPwQ==} + '@rollup/rollup-linux-x64-musl@4.55.1': + resolution: {integrity: sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.34.7': - resolution: {integrity: sha512-MN7aaBC7mAjsiMEZcsJvwNsQVNZShgES/9SzWp1HC9Yjqb5OpexYnRjF7RmE4itbeesHMYYQiAtUAQaSKs2Rfw==} + '@rollup/rollup-openbsd-x64@4.55.1': + resolution: {integrity: sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.55.1': + resolution: {integrity: sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.55.1': + resolution: {integrity: sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.34.7': - resolution: {integrity: sha512-aeawEKYswsFu1LhDM9RIgToobquzdtSc4jSVqHV8uApz4FVvhFl/mKh92wc8WpFc6aYCothV/03UjY6y7yLgbg==} + '@rollup/rollup-win32-ia32-msvc@4.55.1': + resolution: {integrity: sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.34.7': - resolution: {integrity: sha512-4ZedScpxxIrVO7otcZ8kCX1mZArtH2Wfj3uFCxRJ9NO80gg1XV0U/b2f/MKaGwj2X3QopHfoWiDQ917FRpwY3w==} + '@rollup/rollup-win32-x64-gnu@4.55.1': + resolution: {integrity: sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==} cpu: [x64] os: [win32] - '@shikijs/core@2.4.1': - resolution: {integrity: sha512-c7AkRsCpSVjKHsTwuvRVMEAdADq4Z1KoodcS4LaIqMzBTM0+Q572VRk1PIxtzaMtdiHlRPO6mH5iPdJoTV59mQ==} + '@rollup/rollup-win32-x64-msvc@4.55.1': + resolution: {integrity: sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==} + cpu: [x64] + os: [win32] - '@shikijs/engine-javascript@2.4.1': - resolution: {integrity: sha512-2DnVilsUCgA81lnxt67dEZf2C6hdRzDYIs7yG33yWQIjljAxlXi3MKt7n0BXKr6uT5sZ0JdtX/+Pq2FN31YVdQ==} + '@shikijs/core@2.5.0': + resolution: {integrity: sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==} - '@shikijs/engine-oniguruma@2.4.1': - resolution: {integrity: sha512-PvN76WM2HjmSbNQmLl8Jzm3h8Hsf/g9kKs3jPWKD6uMpCfk+M3HalWONz85zQF4lqrI3lamMTV5pHcOVSswpqg==} + '@shikijs/engine-javascript@2.5.0': + resolution: {integrity: sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==} - '@shikijs/langs@2.4.1': - resolution: {integrity: sha512-MLpCfw8gqWAgYvkV4Qsh/yjJirGhqwBQqtNgNrYOES7IoMTsthQ2x/8+JEO1hIDyS3qJPSooxCGQpX7EXsiFpQ==} + '@shikijs/engine-oniguruma@2.5.0': + resolution: {integrity: sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==} - '@shikijs/themes@2.4.1': - resolution: {integrity: sha512-U+Yt03Qfy9251BjQkPf9IkbiRypCqLcxfeCkk9cjqAuAhgM6G+v8GRHB+7VR1OQu92sWkhmk+zdbJAhgAnnL8g==} + '@shikijs/langs@2.5.0': + resolution: {integrity: sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==} - '@shikijs/transformers@2.4.1': - resolution: {integrity: sha512-vTvV4+Fv9LJDWVgB/3o/q7EyYZFiJIEEOsS9KQ/8wyL6jKE+9m0fvuPmpx3SGjmj/MQcqnRBwKaXBW29M5XmLA==} + '@shikijs/themes@2.5.0': + resolution: {integrity: sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==} - '@shikijs/types@2.4.1': - resolution: {integrity: sha512-fE73tqCjiHIDUq7SYU8i4d9TyOcJh2u2J8aQGqQs0KkFg6FbBEQoDiBASMM5Vxqag1VS58y+MHLBuSQmwtB4Og==} + '@shikijs/transformers@2.5.0': + resolution: {integrity: sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==} + + '@shikijs/types@2.5.0': + resolution: {integrity: sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - '@stylistic/eslint-plugin@3.0.1': - resolution: {integrity: sha512-rQ3tcT5N2cynofJfbjUsnL4seoewTaOVBLyUEwtNldo7iNMPo3h/GUQk+Cl3iHEWwRxjq2wuH6q0FufQrbVL1A==} + '@sindresorhus/base62@1.0.0': + resolution: {integrity: sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==} + engines: {node: '>=18'} + + '@stylistic/eslint-plugin@5.6.1': + resolution: {integrity: sha512-JCs+MqoXfXrRPGbGmho/zGS/jMcn3ieKl/A8YImqib76C8kjgZwq5uUFzc30lJkMvcchuRn6/v8IApLxli3Jyw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: '>=8.40.0' + eslint: '>=9.0.0' - '@ts-morph/common@0.26.1': - resolution: {integrity: sha512-Sn28TGl/4cFpcM+jwsH1wLncYq3FtN/BIpem+HOygfBWPT5pAeS5dB4VFVzV8FbnOKHpDLZmvAl4AjPEev5idA==} + '@ts-morph/common@0.28.1': + resolution: {integrity: sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g==} - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} - '@types/eslint__js@8.42.3': - resolution: {integrity: sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==} + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -1007,133 +865,160 @@ packages: '@types/minimist@1.2.5': resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} - '@types/node@22.13.0': - resolution: {integrity: sha512-ClIbNe36lawluuvq3+YYhnIN2CELi+6q8NpnM7PYp4hBn/TatfboPgVSm2rwKRfnV2M+Ty9GWDFI64KEe+kysA==} + '@types/node@22.19.3': + resolution: {integrity: sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/sanitize-html@2.13.0': - resolution: {integrity: sha512-X31WxbvW9TjIhZZNyNBZ/p5ax4ti7qsNDBDEnH4zAgmEh35YnFD1UiS6z9Cd34kKm0LslFW0KPmTQzu/oGtsqQ==} + '@types/sanitize-html@2.16.0': + resolution: {integrity: sha512-l6rX1MUXje5ztPT0cAFtUayXF06DqPhRyfVXareEN5gGCFaP/iwsxIyKODr9XDhfxPpN6vXUFNfo5kZMXCxBtw==} - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} '@types/sinonjs__fake-timers@8.1.1': resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} - '@types/sizzle@2.3.9': - resolution: {integrity: sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==} + '@types/sizzle@2.3.10': + resolution: {integrity: sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww==} + + '@types/tmp@0.2.6': + resolution: {integrity: sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==} '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@types/validator@13.12.2': - resolution: {integrity: sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==} + '@types/validator@13.15.10': + resolution: {integrity: sha512-T8L6i7wCuyoK8A/ZeLYt1+q0ty3Zb9+qbSSvrIVitzT3YjZqkTZ40IbRsPanlB4h1QB3JVL1SYCdR6ngtFYcuA==} - '@types/web-bluetooth@0.0.20': - resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + '@types/web-bluetooth@0.0.21': + resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.23.0': - resolution: {integrity: sha512-vBz65tJgRrA1Q5gWlRfvoH+w943dq9K1p1yDBY2pc+a1nbBLZp7fB9+Hk8DaALUbzjqlMfgaqlVPT1REJdkt/w==} + '@typescript-eslint/eslint-plugin@8.50.1': + resolution: {integrity: sha512-PKhLGDq3JAg0Jk/aK890knnqduuI/Qj+udH7wCf0217IGi4gt+acgCyPVe79qoT+qKUvHMDQkwJeKW9fwl8Cyw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + '@typescript-eslint/parser': ^8.50.1 eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.23.0': - resolution: {integrity: sha512-h2lUByouOXFAlMec2mILeELUbME5SZRN/7R9Cw2RD2lRQQY08MWMM+PmVVKKJNK1aIwqTo9t/0CvOxwPbRIE2Q==} + '@typescript-eslint/parser@8.50.1': + resolution: {integrity: sha512-hM5faZwg7aVNa819m/5r7D0h0c9yC4DUlWAOvHAtISdFTc8xB86VmX5Xqabrama3wIPJ/q9RbGS1worb6JfnMg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/project-service@8.50.1': + resolution: {integrity: sha512-E1ur1MCVf+YiP89+o4Les/oBAVzmSbeRB0MQLfSlYtbWU17HPxZ6Bhs5iYmKZRALvEuBoXIZMOIRRc/P++Ortg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/project-service@8.52.0': + resolution: {integrity: sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/scope-manager@8.50.1': + resolution: {integrity: sha512-mfRx06Myt3T4vuoHaKi8ZWNTPdzKPNBhiblze5N50//TSHOAQQevl/aolqA/BcqqbJ88GUnLqjjcBc8EWdBcVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.23.0': - resolution: {integrity: sha512-OGqo7+dXHqI7Hfm+WqkZjKjsiRtFUQHPdGMXzk5mYXhJUedO7e/Y7i8AK3MyLMgZR93TX4bIzYrfyVjLC+0VSw==} + '@typescript-eslint/scope-manager@8.52.0': + resolution: {integrity: sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.24.0': - resolution: {integrity: sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw==} + '@typescript-eslint/tsconfig-utils@8.50.1': + resolution: {integrity: sha512-ooHmotT/lCWLXi55G4mvaUF60aJa012QzvLK0Y+Mp4WdSt17QhMhWOaBWeGTFVkb2gDgBe19Cxy1elPXylslDw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/tsconfig-utils@8.52.0': + resolution: {integrity: sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.23.0': - resolution: {integrity: sha512-iIuLdYpQWZKbiH+RkCGc6iu+VwscP5rCtQ1lyQ7TYuKLrcZoeJVpcLiG8DliXVkUxirW/PWlmS+d6yD51L9jvA==} + '@typescript-eslint/type-utils@8.50.1': + resolution: {integrity: sha512-7J3bf022QZE42tYMO6SL+6lTPKFk/WphhRPe9Tw/el+cEwzLz1Jjz2PX3GtGQVxooLDKeMVmMt7fWpYRdG5Etg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.23.0': - resolution: {integrity: sha512-1sK4ILJbCmZOTt9k4vkoulT6/y5CHJ1qUYxqpF1K/DBAd8+ZUL4LlSCxOssuH5m4rUaaN0uS0HlVPvd45zjduQ==} + '@typescript-eslint/types@8.50.1': + resolution: {integrity: sha512-v5lFIS2feTkNyMhd7AucE/9j/4V9v5iIbpVRncjk/K0sQ6Sb+Np9fgYS/63n6nwqahHQvbmujeBL7mp07Q9mlA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.24.0': - resolution: {integrity: sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw==} + '@typescript-eslint/types@8.52.0': + resolution: {integrity: sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.23.0': - resolution: {integrity: sha512-LcqzfipsB8RTvH8FX24W4UUFk1bl+0yTOf9ZA08XngFwMg4Kj8A+9hwz8Cr/ZS4KwHrmo9PJiLZkOt49vPnuvQ==} + '@typescript-eslint/typescript-estree@8.50.1': + resolution: {integrity: sha512-woHPdW+0gj53aM+cxchymJCrh0cyS7BTIdcDxWUNsclr9VDkOSbqC13juHzxOmQ22dDkMZEpZB+3X1WpUvzgVQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.24.0': - resolution: {integrity: sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ==} + '@typescript-eslint/typescript-estree@8.52.0': + resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.23.0': - resolution: {integrity: sha512-uB/+PSo6Exu02b5ZEiVtmY6RVYO7YU5xqgzTIVZwTHvvK3HsL8tZZHFaTLFtRG3CsV4A5mhOv+NZx5BlhXPyIA==} + '@typescript-eslint/utils@8.50.1': + resolution: {integrity: sha512-lCLp8H1T9T7gPbEuJSnHwnSuO9mDf8mfK/Nion5mZmiEaQD9sWf9W4dfeFqRyqRjF06/kBuTmAqcs9sewM2NbQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.24.0': - resolution: {integrity: sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ==} + '@typescript-eslint/utils@8.52.0': + resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.23.0': - resolution: {integrity: sha512-oWWhcWDLwDfu++BGTZcmXWqpwtkwb5o7fxUIGksMQQDSdPW9prsSnfIOZMlsj4vBOSrcnjIUZMiIjODgGosFhQ==} + '@typescript-eslint/visitor-keys@8.50.1': + resolution: {integrity: sha512-IrDKrw7pCRUR94zeuCSUWQ+w8JEf5ZX5jl/e6AHGSLi1/zIr0lgutfn/7JpfCey+urpgQEdrZVYzCaVVKiTwhQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.24.0': - resolution: {integrity: sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg==} + '@typescript-eslint/visitor-keys@8.52.0': + resolution: {integrity: sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@vitejs/plugin-vue@5.2.1': - resolution: {integrity: sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==} + '@vitejs/plugin-vue@5.2.4': + resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 || ^6.0.0 vue: ^3.2.25 - '@vitest/coverage-v8@3.0.5': - resolution: {integrity: sha512-zOOWIsj5fHh3jjGwQg+P+J1FW3s4jBu1Zqga0qW60yutsBtqEqNEJKWYh7cYn1yGD+1bdPsPdC/eL4eVK56xMg==} + '@vitest/coverage-v8@3.2.4': + resolution: {integrity: sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==} peerDependencies: - '@vitest/browser': 3.0.5 - vitest: 3.0.5 + '@vitest/browser': 3.2.4 + vitest: 3.2.4 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/eslint-plugin@1.1.25': - resolution: {integrity: sha512-u8DpDnMbPcqBmJOB4PeEtn6q7vKmLVTLFMpzoxSAo0hjYdl4iYSHRleqwPQo0ywc7UV0S6RKIahYRQ3BnZdMVw==} + '@vitest/eslint-plugin@1.6.3': + resolution: {integrity: sha512-2h4GQ113DR2KGQkZyXXXyKpAv9L130YCe/0be44VeSUsYXdh9XGt0+snCPTijNxG0vJo0YDrdFvpY1bOUfx5ng==} + engines: {node: '>=18'} peerDependencies: - '@typescript-eslint/utils': '>= 8.0' - eslint: '>= 8.57.0' - typescript: '>= 5.0.0' + eslint: '>=8.57.0' + typescript: '>=5.0.0' vitest: '*' peerDependenciesMeta: typescript: @@ -1141,106 +1026,100 @@ packages: vitest: optional: true - '@vitest/expect@3.0.5': - resolution: {integrity: sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA==} + '@vitest/expect@3.2.4': + resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} - '@vitest/mocker@3.0.5': - resolution: {integrity: sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw==} + '@vitest/mocker@3.2.4': + resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} peerDependencies: msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@3.0.5': - resolution: {integrity: sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==} + '@vitest/pretty-format@3.2.4': + resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} - '@vitest/runner@3.0.5': - resolution: {integrity: sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A==} + '@vitest/runner@3.2.4': + resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} - '@vitest/snapshot@3.0.5': - resolution: {integrity: sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA==} + '@vitest/snapshot@3.2.4': + resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} - '@vitest/spy@3.0.5': - resolution: {integrity: sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==} + '@vitest/spy@3.2.4': + resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} - '@vitest/ui@3.0.5': - resolution: {integrity: sha512-gw2noso6WI+2PeMVCZFntdATS6xl9qhQcbhkPQ9sOmx/Xn0f4Bx4KDSbD90jpJPF0l5wOzSoGCmKyVR3W612mg==} + '@vitest/ui@3.2.4': + resolution: {integrity: sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==} peerDependencies: - vitest: 3.0.5 + vitest: 3.2.4 - '@vitest/utils@3.0.5': - resolution: {integrity: sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==} + '@vitest/utils@3.2.4': + resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} - '@volar/language-core@2.4.11': - resolution: {integrity: sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==} + '@volar/language-core@2.4.27': + resolution: {integrity: sha512-DjmjBWZ4tJKxfNC1F6HyYERNHPYS7L7OPFyCrestykNdUZMFYzI9WTyvwPcaNaHlrEUwESHYsfEw3isInncZxQ==} - '@volar/source-map@2.4.11': - resolution: {integrity: sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==} + '@volar/source-map@2.4.27': + resolution: {integrity: sha512-ynlcBReMgOZj2i6po+qVswtDUeeBRCTgDurjMGShbm8WYZgJ0PA4RmtebBJ0BCYol1qPv3GQF6jK7C9qoVc7lg==} - '@volar/typescript@2.4.11': - resolution: {integrity: sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==} + '@volar/typescript@2.4.27': + resolution: {integrity: sha512-eWaYCcl/uAPInSK2Lze6IqVWaBu/itVqR5InXcHXFyles4zO++Mglt3oxdgj75BDcv1Knr9Y93nowS8U3wqhxg==} - '@vue/compiler-core@3.5.13': - resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} + '@vue/compiler-core@3.5.26': + resolution: {integrity: sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==} - '@vue/compiler-dom@3.5.13': - resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} + '@vue/compiler-dom@3.5.26': + resolution: {integrity: sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==} - '@vue/compiler-sfc@3.5.13': - resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} + '@vue/compiler-sfc@3.5.26': + resolution: {integrity: sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==} - '@vue/compiler-ssr@3.5.13': - resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} + '@vue/compiler-ssr@3.5.26': + resolution: {integrity: sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==} - '@vue/compiler-vue2@2.7.16': - resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} + '@vue/devtools-api@7.7.9': + resolution: {integrity: sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g==} - '@vue/devtools-api@7.7.2': - resolution: {integrity: sha512-1syn558KhyN+chO5SjlZIwJ8bV/bQ1nOVTG66t2RbG66ZGekyiYNmRO7X9BJCXQqPsFHlnksqvPhce2qpzxFnA==} + '@vue/devtools-kit@7.7.9': + resolution: {integrity: sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA==} - '@vue/devtools-kit@7.7.2': - resolution: {integrity: sha512-CY0I1JH3Z8PECbn6k3TqM1Bk9ASWxeMtTCvZr7vb+CHi+X/QwQm5F1/fPagraamKMAHVfuuCbdcnNg1A4CYVWQ==} + '@vue/devtools-shared@7.7.9': + resolution: {integrity: sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==} - '@vue/devtools-shared@7.7.2': - resolution: {integrity: sha512-uBFxnp8gwW2vD6FrJB8JZLUzVb6PNRG0B0jBnHsOH8uKyva2qINY8PTF5Te4QlTbMDqU5K6qtJDr6cNsKWhbOA==} + '@vue/language-core@3.2.1': + resolution: {integrity: sha512-g6oSenpnGMtpxHGAwKuu7HJJkNZpemK/zg3vZzZbJ6cnnXq1ssxuNrXSsAHYM3NvH8p4IkTw+NLmuxyeYz4r8A==} - '@vue/language-core@2.2.0': - resolution: {integrity: sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@vue/reactivity@3.5.13': - resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} + '@vue/reactivity@3.5.26': + resolution: {integrity: sha512-9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ==} - '@vue/runtime-core@3.5.13': - resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} + '@vue/runtime-core@3.5.26': + resolution: {integrity: sha512-xJWM9KH1kd201w5DvMDOwDHYhrdPTrAatn56oB/LRG4plEQeZRQLw0Bpwih9KYoqmzaxF0OKSn6swzYi84e1/Q==} - '@vue/runtime-dom@3.5.13': - resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==} + '@vue/runtime-dom@3.5.26': + resolution: {integrity: sha512-XLLd/+4sPC2ZkN/6+V4O4gjJu6kSDbHAChvsyWgm1oGbdSO3efvGYnm25yCjtFm/K7rrSDvSfPDgN1pHgS4VNQ==} - '@vue/server-renderer@3.5.13': - resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==} + '@vue/server-renderer@3.5.26': + resolution: {integrity: sha512-TYKLXmrwWKSodyVuO1WAubucd+1XlLg4set0YoV+Hu8Lo79mp/YMwWV5mC5FgtsDxX3qo1ONrxFaTP1OQgy1uA==} peerDependencies: - vue: 3.5.13 + vue: 3.5.26 - '@vue/shared@3.5.13': - resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + '@vue/shared@3.5.26': + resolution: {integrity: sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==} - '@vueuse/core@12.5.0': - resolution: {integrity: sha512-GVyH1iYqNANwcahAx8JBm6awaNgvR/SwZ1fjr10b8l1HIgDp82ngNbfzJUgOgWEoxjL+URAggnlilAEXwCOZtg==} + '@vueuse/core@12.8.2': + resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==} - '@vueuse/core@12.7.0': - resolution: {integrity: sha512-jtK5B7YjZXmkGNHjviyGO4s3ZtEhbzSgrbX+s5o+Lr8i2nYqNyHuPVOeTdM1/hZ5Tkxg/KktAuAVDDiHMraMVA==} + '@vueuse/core@13.9.0': + resolution: {integrity: sha512-ts3regBQyURfCE2BcytLqzm8+MmLlo5Ln/KLoxDVcsZ2gzIwVNnQpQOL/UKV8alUqjSZOlpFZcRNsLRqj+OzyA==} + peerDependencies: + vue: ^3.5.0 - '@vueuse/integrations@12.7.0': - resolution: {integrity: sha512-IEq7K4bCl7mn3uKJaWtNXnd1CAPaHLUMuyj5K1/k/pVcItt0VONZW8xiGxdIovJcQjkzOHjImhX5t6gija+0/g==} + '@vueuse/integrations@12.8.2': + resolution: {integrity: sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==} peerDependencies: async-validator: ^4 axios: ^1 @@ -1280,17 +1159,19 @@ packages: universal-cookie: optional: true - '@vueuse/metadata@12.5.0': - resolution: {integrity: sha512-Ui7Lo2a7AxrMAXRF+fAp9QsXuwTeeZ8fIB9wsLHqzq9MQk+2gMYE2IGJW48VMJ8ecvCB3z3GsGLKLbSasQ5Qlg==} + '@vueuse/metadata@12.8.2': + resolution: {integrity: sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==} - '@vueuse/metadata@12.7.0': - resolution: {integrity: sha512-4VvTH9mrjXqFN5LYa5YfqHVRI6j7R00Vy4995Rw7PQxyCL3z0Lli86iN4UemWqixxEvYfRjG+hF9wL8oLOn+3g==} + '@vueuse/metadata@13.9.0': + resolution: {integrity: sha512-1AFRvuiGphfF7yWixZa0KwjYH8ulyjDCC0aFgrGRz8+P4kvDFSdXLVfTk5xAN9wEuD1J6z4/myMoYbnHoX07zg==} - '@vueuse/shared@12.5.0': - resolution: {integrity: sha512-vMpcL1lStUU6O+kdj6YdHDixh0odjPAUM15uJ9f7MY781jcYkIwFA4iv2EfoIPO6vBmvutI1HxxAwmf0cx5ISQ==} + '@vueuse/shared@12.8.2': + resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==} - '@vueuse/shared@12.7.0': - resolution: {integrity: sha512-coLlUw2HHKsm7rPN6WqHJQr18WymN4wkA/3ThFaJ4v4gWGWAQQGK+MJxLuJTBs4mojQiazlVWAKNJNpUWGRkNw==} + '@vueuse/shared@13.9.0': + resolution: {integrity: sha512-e89uuTLMh0U5cZ9iDpEI2senqPGfbPRTHM/0AaQkcxnpqjkZqDYP8rpfm7edOz8s+pOCOROEy1PIveSW8+fL5g==} + peerDependencies: + vue: ^3.5.0 JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} @@ -1301,18 +1182,14 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true add-stream@1.0.0: resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} - agent-base@7.1.3: - resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} - engines: {node: '>= 14'} - aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -1320,12 +1197,12 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - algoliasearch@5.20.2: - resolution: {integrity: sha512-8evxG++iWyWnhng3g5RP+kwn6j+2vKLfew8pVoekn87FcfsDm92zJXKwSrU6pl+m5eAbGFhFF/gCYEQiRdbPlA==} + algoliasearch@5.46.2: + resolution: {integrity: sha512-qqAXW9QvKf2tTyhpDA4qXv1IfBwD2eduSW6tUEBFIfCeE9gn9HQ9I5+MaKoenRuHrzk5sQoNh1/iof8mY7uD6Q==} engines: {node: '>= 14.0.0'} - alien-signals@0.4.14: - resolution: {integrity: sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==} + alien-signals@3.1.2: + resolution: {integrity: sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw==} ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} @@ -1339,8 +1216,8 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} ansi-styles@3.2.1: @@ -1351,8 +1228,8 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} any-promise@1.3.0: @@ -1386,13 +1263,13 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + ast-v8-to-istanbul@0.3.10: + resolution: {integrity: sha512-p4K7vMz2ZSk3wN8l5o3y2bJAoZXT3VuJI5OLTATY/01CYWumWvwkUw0SqDBnNq6IiTO3qDa1eSQDibAV8g7XOQ==} + astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} - async@3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -1412,11 +1289,15 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + baseline-browser-mapping@2.9.12: + resolution: {integrity: sha512-Mij6Lij93pTAIsSYy5cyBQ975Qh9uLEc5rwGTpomiZeXZL9yIS6uORJakb3ScHgfs0serMMfIbXzokPMuEiRyw==} + hasBin: true + bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - birpc@0.2.19: - resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==} + birpc@2.9.0: + resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} blob-util@2.0.2: resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} @@ -1424,18 +1305,14 @@ packages: bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browserslist@4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1448,9 +1325,9 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} + builtin-modules@5.0.0: + resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} + engines: {node: '>=18.20'} bundle-require@5.1.0: resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} @@ -1470,8 +1347,8 @@ packages: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} - call-bound@1.0.3: - resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} callsites@3.1.0: @@ -1486,8 +1363,8 @@ packages: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} - caniuse-lite@1.0.30001700: - resolution: {integrity: sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==} + caniuse-lite@1.0.30001762: + resolution: {integrity: sha512-PxZwGNvH7Ak8WX5iXzoK1KPZttBXNPuaOvI2ZYU7NrlM+d9Ov+TUvlLOBNGzVXAntMSMMlJPd+jY6ovrVjSmUw==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -1495,9 +1372,9 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@5.2.0: - resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} - engines: {node: '>=12'} + chai@5.3.3: + resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + engines: {node: '>=18'} chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -1507,26 +1384,25 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + change-case@5.4.4: + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} character-entities-legacy@3.0.0: resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + check-error@2.1.3: + resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} engines: {node: '>= 16'} - check-more-types@2.24.0: - resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} - engines: {node: '>= 0.8.0'} - chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} - ci-info@4.1.0: - resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==} + ci-info@4.3.1: + resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} engines: {node: '>=8'} clean-regexp@1.0.0: @@ -1541,8 +1417,8 @@ packages: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} - cli-table3@0.6.5: - resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + cli-table3@0.6.1: + resolution: {integrity: sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==} engines: {node: 10.* || >= 12.*} cli-truncate@2.1.0: @@ -1575,6 +1451,10 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + colors@1.4.0: + resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} + engines: {node: '>=0.1.90'} + combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -1594,8 +1474,8 @@ packages: resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} engines: {node: '>= 12.0.0'} - commit-and-tag-version@12.5.0: - resolution: {integrity: sha512-Ll7rkKntH20iEFOPUT4e503Jf3J0J8jSN+aSeHuvNdtv4xmv9kSLSBg2CWsMVihwF3J2WvMHBEUSCKuDNesiTA==} + commit-and-tag-version@12.6.1: + resolution: {integrity: sha512-QNwgDDrg44oFAiLwXChOGabeGlkuaEvD7lUbLYleWLmOVYqFidek0G6xUE1NbRtitkOrDx8fuFh8w17+nUCOYg==} engines: {node: '>=18'} hasBin: true @@ -1613,8 +1493,11 @@ packages: resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} engines: {'0': node >= 6.0} - consola@3.4.0: - resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} conventional-changelog-angular@6.0.0: @@ -1687,12 +1570,12 @@ packages: engines: {node: '>=14'} hasBin: true - copy-anything@3.0.5: - resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} - engines: {node: '>=12.13'} + copy-anything@4.0.5: + resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} + engines: {node: '>=18'} - core-js-compat@3.40.0: - resolution: {integrity: sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==} + core-js-compat@3.47.0: + resolution: {integrity: sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==} core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -1704,16 +1587,12 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - cssstyle@4.2.1: - resolution: {integrity: sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==} - engines: {node: '>=18'} - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - cypress@14.0.1: - resolution: {integrity: sha512-gBAvKZE3f6eBaW1v8OtrwAFP90rjNZjjOO40M2KvOvmwVXk96Ps5Yjyck1EzGkXmNCaC/8kXFOY/1KD/wsaWpQ==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + cypress@15.8.1: + resolution: {integrity: sha512-ogc62stTQGh1395ipKxfCE5hQuSApTzeH5e0d9U6m7wYO9HQeCpgnkYtBtd0MbkN2Fnch5Od2mX9u4hoTlrH4Q==} + engines: {node: ^20.1.0 || ^22.0.0 || >=24.0.0} hasBin: true dargs@7.0.0: @@ -1724,18 +1603,11 @@ packages: resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} engines: {node: '>=0.10'} - data-urls@5.0.0: - resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} - engines: {node: '>=18'} - dateformat@3.0.3: resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} - dayjs@1.11.13: - resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} - - de-indent@1.0.2: - resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + dayjs@1.11.19: + resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} @@ -1745,8 +1617,8 @@ packages: supports-color: optional: true - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -1762,9 +1634,6 @@ packages: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} - decimal.js@10.5.0: - resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} - deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} @@ -1788,18 +1657,10 @@ packages: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} - detect-indent@7.0.1: - resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} - engines: {node: '>=12.20'} - detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} - detect-newline@4.0.1: - resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -1834,8 +1695,8 @@ packages: ecc-jsbn@0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} - electron-to-chromium@1.5.101: - resolution: {integrity: sha512-L0ISiQrP/56Acgu4/i/kfPwWSgrzYZUnQrC0+QPFuhqlLP1Ir7qzPPDVS9BcKIyWTRU8+o6CC8dKw38tSWhYIA==} + electron-to-chromium@1.5.267: + resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -1846,8 +1707,8 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} @@ -1857,8 +1718,12 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + entities@7.0.0: + resolution: {integrity: sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==} + engines: {node: '>=0.12'} + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} @@ -1868,8 +1733,8 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@1.6.0: - resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} @@ -1884,13 +1749,8 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.23.1: - resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} - engines: {node: '>=18'} - hasBin: true - - esbuild@0.24.2: - resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + esbuild@0.27.2: + resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} engines: {node: '>=18'} hasBin: true @@ -1906,31 +1766,31 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - eslint-config-prettier@10.0.1: - resolution: {integrity: sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==} + eslint-config-prettier@10.1.8: + resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} hasBin: true peerDependencies: eslint: '>=7.0.0' - eslint-plugin-file-progress@3.0.1: - resolution: {integrity: sha512-sPUOIifutW3Ehhmujt40IU5ytXL6HnuGVev2n9cp4d5fzVOoQp1K17DJ/I+cRdctmTpMcYit/fOuF9efjmD98A==} + eslint-plugin-file-progress@3.0.2: + resolution: {integrity: sha512-wX54LVbKP1MOe+yXI6CkfyseUkgiBgvHDgb3mWZ5j6xfQa81hcLzeiOew+rIZuxZQ+M3UHLC4pOGRYUP6OKsyA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^9.0.0 - eslint-plugin-jsdoc@50.6.3: - resolution: {integrity: sha512-NxbJyt1M5zffPcYZ8Nb53/8nnbIScmiLAMdoe0/FAszwb7lcSiX3iYBTsuF7RV84dZZJC8r3NghomrUXsmWvxQ==} - engines: {node: '>=18'} + eslint-plugin-jsdoc@61.5.0: + resolution: {integrity: sha512-PR81eOGq4S7diVnV9xzFSBE4CDENRQGP0Lckkek8AdHtbj+6Bm0cItwlFnxsLFriJHspiE3mpu8U20eODyToIg==} + engines: {node: '>=20.11.0'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - eslint-plugin-prettier@5.2.3: - resolution: {integrity: sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==} + eslint-plugin-prettier@5.5.4: + resolution: {integrity: sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' eslint: '>=8.0.0' - eslint-config-prettier: '*' + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' prettier: '>=3.0.0' peerDependenciesMeta: '@types/eslint': @@ -1938,26 +1798,26 @@ packages: eslint-config-prettier: optional: true - eslint-plugin-unicorn@56.0.1: - resolution: {integrity: sha512-FwVV0Uwf8XPfVnKSGpMg7NtlZh0G0gBarCaFcMUOoqPxXryxdYxTRRv4kH6B9TFCVIrjRXG+emcxIk2ayZilog==} - engines: {node: '>=18.18'} + eslint-plugin-unicorn@62.0.0: + resolution: {integrity: sha512-HIlIkGLkvf29YEiS/ImuDZQbP12gWyx5i3C6XrRxMvVdqMroCI9qoVYCoIl17ChN+U89pn9sVwLxhIWj5nEc7g==} + engines: {node: ^20.10.0 || >=21.0.0} peerDependencies: - eslint: '>=8.56.0' + eslint: '>=9.38.0' - eslint-scope@8.2.0: - resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.2.0: - resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.19.0: - resolution: {integrity: sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==} + eslint@9.39.2: + resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -1966,12 +1826,12 @@ packages: jiti: optional: true - espree@10.3.0: - resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} esrecurse@4.3.0: @@ -2003,8 +1863,8 @@ packages: resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} engines: {node: '>=4'} - expect-type@1.1.0: - resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} extend@3.0.2: @@ -2025,24 +1885,22 @@ packages: fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fastq@1.19.0: - resolution: {integrity: sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==} + fast-xml-parser@5.3.3: + resolution: {integrity: sha512-2O3dkPAAC6JavuMm8+4+pgTk+5hoAs+CjZ+sWcQLkX9+/tHRuTkQh/Oaifr8qDmZ8iEHb771Ea6G8CdwkrgvYA==} + hasBin: true fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - fdir@6.4.3: - resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -2060,9 +1918,9 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} + find-up-simple@1.0.1: + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} + engines: {node: '>=18'} find-up@2.1.0: resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} @@ -2080,25 +1938,28 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + fix-dts-default-cjs-exports@1.0.1: + resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} + flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.3.2: - resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - focus-trap@7.6.4: - resolution: {integrity: sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==} + focus-trap@7.7.1: + resolution: {integrity: sha512-Pkp8m55GjxBLnhBoT6OXdMvfRr4TjMAKLvFM566zlIryq5plbhaTmLAJWTGR0EkRwLjEte1lCOG9MxF1ipJrOg==} - foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - form-data@4.0.2: - resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} fs-extra@9.1.0: @@ -2117,8 +1978,8 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-intrinsic@1.2.7: - resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} get-pkg-repo@4.2.1: @@ -2130,26 +1991,16 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} - get-stdin@9.0.0: - resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} - engines: {node: '>=12'} - get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} - get-tsconfig@4.10.0: - resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} - - getos@3.2.1: - resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} + get-tsconfig@4.13.0: + resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} getpass@0.1.7: resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} - git-hooks-list@3.2.0: - resolution: {integrity: sha512-ZHG9a1gEhUMX1TvGrLdyWb9kDopCBbTnI8z4JgRMYxsijWipgjSEYoPWqBuIB0DnRnvqlQSEeVmzpeuPm7NdFQ==} - git-raw-commits@3.0.0: resolution: {integrity: sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==} engines: {node: '>=14'} @@ -2167,16 +2018,12 @@ packages: gitconfiglocal@1.0.0: resolution: {integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==} - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} hasBin: true global-dirs@3.0.1: @@ -2187,8 +2034,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@15.15.0: - resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + globals@16.5.0: + resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} engines: {node: '>=18'} gopd@1.2.0: @@ -2198,9 +2045,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - handlebars@4.7.8: resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} engines: {node: '>=0.4.7'} @@ -2226,20 +2070,20 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} + hasha@5.2.2: + resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} + engines: {node: '>=8'} + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - hast-util-to-html@9.0.4: - resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==} + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} @@ -2250,9 +2094,8 @@ packages: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} - html-encoding-sniffer@4.0.0: - resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} - engines: {node: '>=18'} + html-entities@2.6.0: + resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -2263,26 +2106,14 @@ packages: htmlparser2@8.0.2: resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} - http-signature@1.4.0: resolution: {integrity: sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==} engines: {node: '>=0.10'} - https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} - human-signals@1.1.1: resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} engines: {node: '>=8.12.0'} - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -2290,6 +2121,10 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} @@ -2302,6 +2137,10 @@ packages: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} + indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -2315,9 +2154,9 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-builtin-module@3.2.1: - resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} - engines: {node: '>=6'} + is-builtin-module@5.0.0: + resolution: {integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==} + engines: {node: '>=18.20'} is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} @@ -2339,10 +2178,6 @@ packages: resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} engines: {node: '>=10'} - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - is-obj@2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} @@ -2355,17 +2190,10 @@ packages: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} - is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} - is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -2381,9 +2209,9 @@ packages: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} - is-what@4.1.16: - resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} - engines: {node: '>=12.13'} + is-what@5.5.0: + resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} + engines: {node: '>=18'} isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -2410,15 +2238,15 @@ packages: resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} engines: {node: '>=10'} - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true joycon@3.1.1: @@ -2428,29 +2256,19 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - jsdoc-type-pratt-parser@4.1.0: - resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} - engines: {node: '>=12.0.0'} - - jsdom@25.0.1: - resolution: {integrity: sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==} - engines: {node: '>=18'} - peerDependencies: - canvas: ^2.11.2 - peerDependenciesMeta: - canvas: - optional: true - - jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true + jsdoc-type-pratt-parser@6.10.0: + resolution: {integrity: sha512-+LexoTRyYui5iOhJGn13N9ZazL23nAHGkXsa1p/C8yeq79WRfLBag6ZZ0FQG2aRoc9yfo59JT9EYCQonOkHKkQ==} + engines: {node: '>=20.0.0'} jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} @@ -2482,8 +2300,8 @@ packages: json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} @@ -2500,10 +2318,6 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - lazy-ass@1.6.0: - resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} - engines: {node: '> 0.8'} - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -2557,9 +2371,6 @@ packages: lodash.once@4.1.1: resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -2571,8 +2382,8 @@ packages: resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} engines: {node: '>=10'} - loupe@3.1.3: - resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + loupe@3.2.1: + resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -2581,8 +2392,8 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} @@ -2606,8 +2417,8 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} memorystream@0.3.1: resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} @@ -2620,10 +2431,6 @@ packages: merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - micromark-util-character@2.1.1: resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} @@ -2636,12 +2443,8 @@ packages: micromark-util-symbol@2.0.1: resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - micromark-util-types@2.0.1: - resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} @@ -2659,6 +2462,10 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} + minimatch@10.1.1: + resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} + engines: {node: 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -2677,18 +2484,21 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minisearch@7.1.1: - resolution: {integrity: sha512-b3YZEYCEH4EdCAtYP7OlDyx7FdPwNzuNwLQ34SfJpM9dlbBZzeXndGavTrC+VCiRWomL21SWfMc6SCKO/U2ZNw==} + minisearch@7.2.0: + resolution: {integrity: sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==} mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + modify-values@1.0.1: resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==} engines: {node: '>=0.10.0'} - mrmime@2.0.0: - resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} ms@2.1.3: @@ -2700,8 +2510,8 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nanoid@3.3.8: - resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -2714,8 +2524,8 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -2728,22 +2538,22 @@ packages: resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==} engines: {node: ^18.17.0 || >=20.5.0} - npm-run-all2@7.0.2: - resolution: {integrity: sha512-7tXR+r9hzRNOPNTvXegM+QzCuMjzUIIq66VDunL6j60O4RrExx32XUhlrS7UK4VcdGw5/Wxzb3kfNcFix9JKDA==} - engines: {node: ^18.17.0 || >=20.5.0, npm: '>= 9'} + npm-run-all2@8.0.4: + resolution: {integrity: sha512-wdbB5My48XKp2ZfJUlhnLVihzeuA1hgBnqB2J9ahV77wLS+/YAJAlN8I+X3DIFIPZ3m5L7nplmlbhNiFDmXRDA==} + engines: {node: ^20.5.0 || >=22.0.0, npm: '>= 10'} hasBin: true npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - nwsapi@2.2.16: - resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} - object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + object-deep-merge@2.0.0: + resolution: {integrity: sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg==} + object-inspect@1.13.4: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} @@ -2755,8 +2565,8 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - oniguruma-to-es@3.1.0: - resolution: {integrity: sha512-BJ3Jy22YlgejHSO7Fvmz1kKazlaPmRSUH+4adTDUS/dKQ4wLxI+gALZ8updbaux7/m7fIlpgOZ5fp/Inq5jUAw==} + oniguruma-to-es@3.1.1: + resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==} optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} @@ -2812,9 +2622,8 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} - parse-imports@2.2.1: - resolution: {integrity: sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==} - engines: {node: '>= 18'} + parse-imports-exports@0.2.4: + resolution: {integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==} parse-json@4.0.0: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} @@ -2827,8 +2636,8 @@ packages: parse-srcset@1.0.2: resolution: {integrity: sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==} - parse5@7.2.1: - resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + parse-statements@1.0.11: + resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==} path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} @@ -2859,8 +2668,8 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + pathval@2.0.1: + resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} pend@1.2.0: @@ -2875,12 +2684,8 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} pidtree@0.6.0: @@ -2896,10 +2701,13 @@ packages: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} @@ -2922,41 +2730,39 @@ packages: yaml: optional: true - postcss@8.5.2: - resolution: {integrity: sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==} + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} - preact@10.26.0: - resolution: {integrity: sha512-6ugi/Mb7lyV5RA6KlnijFyDLMU253i7L0RRiObIzDoqj59KT9iTeNJbA/YGw6M7jP4vxaab0DOA8DgodTOA6EQ==} + preact@10.28.2: + resolution: {integrity: sha512-lbteaWGzGHdlIuiJ0l2Jq454m6kcpI1zNje6d8MlGAFlYvP2GO4ibnat7P74Esfz4sPTdM6UxtTwh/d3pwM9JA==} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + prettier-linter-helpers@1.0.1: + resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} engines: {node: '>=6.0.0'} - prettier-plugin-organize-imports@4.1.0: - resolution: {integrity: sha512-5aWRdCgv645xaa58X8lOxzZoiHAldAPChljr/MT0crXVOWTZ+Svl4hIWlz+niYSlO6ikE5UXkN1JrRvIP2ut0A==} + prettier-plugin-organize-imports@4.3.0: + resolution: {integrity: sha512-FxFz0qFhyBsGdIsb697f/EkvHzi5SZOhWAjxcx2dLt+Q532bAlhswcXGYB1yzjZ69kW8UoadFBw7TyNwlq96Iw==} peerDependencies: prettier: '>=2.0' typescript: '>=2.9' - vue-tsc: ^2.1.0 + vue-tsc: ^2.1.0 || 3 peerDependenciesMeta: vue-tsc: optional: true - prettier-plugin-packagejson@2.5.8: - resolution: {integrity: sha512-BaGOF63I0IJZoudxpuQe17naV93BRtK8b3byWktkJReKEMX9CC4qdGUzThPDVO/AUhPzlqDiAXbp18U6X8wLKA==} + prettier-plugin-pkg@0.21.2: + resolution: {integrity: sha512-CSlM5+51B7yTKcoRWT4M3ImcdFHD5NUz0Xu2t8J03B761zu6J3BjSo/XleKp2kB0tH49K7oG5Uuqn6ldI5LRLg==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - prettier: '>= 1.16.0' - peerDependenciesMeta: - prettier: - optional: true + prettier: ^3.0.3 - prettier@3.4.2: - resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==} + prettier@3.7.4: + resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} engines: {node: '>=14'} hasBin: true @@ -2971,26 +2777,23 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} - property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} proxy-from-env@1.0.0: resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} - pump@3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + pump@3.0.3: + resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qs@6.13.1: - resolution: {integrity: sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==} + qs@6.14.1: + resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} engines: {node: '>=0.6'} - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} @@ -3036,15 +2839,15 @@ packages: regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - regex@6.0.1: - resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true - regjsparser@0.10.0: - resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} + regjsparser@0.13.0: + resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} hasBin: true request-progress@3.0.0: @@ -3054,6 +2857,10 @@ packages: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} + reserved-identifiers@1.2.0: + resolution: {integrity: sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==} + engines: {node: '>=18'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -3065,8 +2872,8 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} hasBin: true @@ -3074,33 +2881,16 @@ packages: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rimraf@5.0.10: - resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} - hasBin: true - - rollup@4.34.7: - resolution: {integrity: sha512-8qhyN0oZ4x0H6wmBgfKxJtxM7qS98YJ0k0kNh5ECVtuchIJ7z9IVVvzpmtQyT10PXKMtBxYr1wQ5Apg8RS8kXQ==} + rollup@4.55.1: + resolution: {integrity: sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rrweb-cssom@0.7.1: - resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} - - rrweb-cssom@0.8.0: - resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -3111,12 +2901,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sanitize-html@2.14.0: - resolution: {integrity: sha512-CafX+IUPxZshXqqRaG9ZClSlfPVjSxI0td7n07hk8QO2oO+9JDnlcL8iM8TWeOXOIBFgIOx6zioTzM53AOMn3g==} - - saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} + sanitize-html@2.17.0: + resolution: {integrity: sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==} search-insights@2.17.3: resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} @@ -3125,8 +2911,8 @@ packages: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true - semver@7.7.0: - resolution: {integrity: sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==} + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} hasBin: true @@ -3138,12 +2924,12 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.8.2: - resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} engines: {node: '>= 0.4'} - shiki@2.4.1: - resolution: {integrity: sha512-1MmgQgSSx04OSUPqTg7deJudOL4vXpkNEJHlzKEoVNOLFUmXPB/vRvJoLxzy/Un+UIp4zryXJcWDUAUTOSbDyw==} + shiki@2.5.0: + resolution: {integrity: sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==} side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} @@ -3171,13 +2957,10 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - sirv@3.0.0: - resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} engines: {node: '>=18'} - slashes@3.0.12: - resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==} - slice-ansi@3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} engines: {node: '>=8'} @@ -3186,13 +2969,6 @@ packages: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} - sort-object-keys@1.1.3: - resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} - - sort-package-json@2.14.0: - resolution: {integrity: sha512-xBRdmMjFB/KW3l51mP31dhlaiFmqkHLfWTfZAno8prb/wbDxwBPWFpxB16GZbiPbYr3wL41H8Kx22QIDWRe8WQ==} - hasBin: true - source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -3201,9 +2977,9 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -3220,8 +2996,8 @@ packages: spdx-expression-parse@4.0.0: resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} - spdx-license-ids@3.0.21: - resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + spdx-license-ids@3.0.22: + resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} speakingurl@14.0.1: resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} @@ -3241,8 +3017,8 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - std-env@3.8.0: - resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -3265,8 +3041,8 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} strip-bom@3.0.0: @@ -3281,17 +3057,27 @@ packages: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} + strip-indent@4.1.1: + resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} + engines: {node: '>=12'} + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + strip-literal@3.1.0: + resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} + + strnum@2.1.2: + resolution: {integrity: sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==} + + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true - superjson@2.2.2: - resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} + superjson@2.2.6: + resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} engines: {node: '>=16'} supports-color@5.5.0: @@ -3310,15 +3096,18 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - - synckit@0.9.2: - resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} + synckit@0.11.11: + resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} engines: {node: ^14.18.0 || >=16.0.0} - tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + systeminformation@5.30.1: + resolution: {integrity: sha512-5zK8Sqqn71b0AoYKnj8nurrugOVogo4hBxAeQR9N0lbC5V+Fkw1hRBRWLaKxBmuvX8v4xH3cxifOJjlhQQW1lQ==} + engines: {node: '>=8.0.0'} + os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] + hasBin: true + + tabbable@6.4.0: + resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} test-exclude@7.0.1: resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} @@ -3350,52 +3139,45 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.10: - resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} - tinypool@1.0.2: - resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} + tinypool@1.1.1: + resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} engines: {node: ^18.0.0 || >=20.0.0} tinyrainbow@2.0.0: resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} - tinyspy@3.0.2: - resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + tinyspy@4.0.4: + resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} engines: {node: '>=14.0.0'} - tldts-core@6.1.77: - resolution: {integrity: sha512-bCaqm24FPk8OgBkM0u/SrEWJgHnhBWYqeBo6yUmcZJDCHt/IfyWBb+14CXdGi4RInMv4v7eUAin15W0DoA+Ytg==} + tldts-core@6.1.86: + resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} - tldts@6.1.77: - resolution: {integrity: sha512-lBpoWgy+kYmuXWQ83+R7LlJCnsd9YW8DGpZSHhrMl4b8Ly/1vzOie3OdtmUJDkKxcgRGOehDu5btKkty+JEe+g==} + tldts@6.1.86: + resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} hasBin: true - tmp@0.2.3: - resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + tmp@0.2.5: + resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + to-valid-identifier@1.0.0: + resolution: {integrity: sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==} + engines: {node: '>=20'} totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} - tough-cookie@5.1.1: - resolution: {integrity: sha512-Ek7HndSVkp10hmHP9V4qZO1u+pn1RU5sI0Fw+jCU3lyvuMZcgqsNgc6CmJJZyByK4Vm/qotGRJlfgAX8q+4JiA==} + tough-cookie@5.1.2: + resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} engines: {node: '>=16'} - tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - - tr46@5.0.0: - resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} - engines: {node: '>=18'} - tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -3407,8 +3189,8 @@ packages: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} - ts-api-utils@2.0.1: - resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} + ts-api-utils@2.4.0: + resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -3416,14 +3198,14 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - ts-morph@25.0.0: - resolution: {integrity: sha512-ERPTUVO5qF8cEGJgAejGOsCVlbk8d0SDyiJsucKQT5XgqoZslv0Qml+gnui6Yy6o+uQqw5SestyW2HvlVtT/Sg==} + ts-morph@27.0.2: + resolution: {integrity: sha512-fhUhgeljcrdZ+9DZND1De1029PrE+cMkIP7ooqkLRTrRLTqcki2AstsyJm0vRNbTbVCNJ0idGlbBrfqc7/nA8w==} tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsup@8.3.6: - resolution: {integrity: sha512-XkVtlDV/58S9Ye0JxUUTcrQk4S+EqlOHKzg6Roa62rdjL1nGWNUstG0xgI4vanHdfIpjP448J8vlN0oK6XOJ5g==} + tsup@8.5.1: + resolution: {integrity: sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -3441,8 +3223,8 @@ packages: typescript: optional: true - tsx@4.19.2: - resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} + tsx@4.21.0: + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} engines: {node: '>=18.0.0'} hasBin: true @@ -3475,28 +3257,31 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.23.0: - resolution: {integrity: sha512-/LBRo3HrXr5LxmrdYSOCvoAMm7p2jNizNfbIpCgvG4HMsnoprRUOce/+8VJ9BDYWW68rqIENE/haVLWPeFZBVQ==} + typescript-eslint@8.50.1: + resolution: {integrity: sha512-ytTHO+SoYSbhAH9CrYnMhiLx8To6PSSvqnvXyPUgPETCvB6eBKmTI9w6XMPS3HsBRGkwTVBX+urA8dYQx6bHfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <6.0.0' - typescript@5.7.3: - resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true + ufo@1.6.2: + resolution: {integrity: sha512-heMioaxBcG9+Znsda5Q8sQbWnLJSl98AFDXTO80wELWEzX3hordXsTdxrIfMQoO9IY1MEnoGoPjpoKpMj+Yx0Q==} + uglify-js@3.19.3: resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} engines: {node: '>=0.8.0'} hasBin: true - undici-types@6.20.0: - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} @@ -3504,8 +3289,8 @@ packages: unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} @@ -3518,8 +3303,8 @@ packages: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} - update-browserslist-db@1.1.2: - resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -3537,27 +3322,27 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - validator@13.12.0: - resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} + validator@13.15.26: + resolution: {integrity: sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA==} engines: {node: '>= 0.10'} verror@1.10.0: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite-node@3.0.5: - resolution: {integrity: sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==} + vite-node@3.2.4: + resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@5.4.14: - resolution: {integrity: sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==} + vite@5.4.21: + resolution: {integrity: sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -3587,19 +3372,19 @@ packages: terser: optional: true - vite@6.1.0: - resolution: {integrity: sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vite@7.3.1: + resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@types/node': ^20.19.0 || >=22.12.0 jiti: '>=1.21.0' - less: '*' + less: ^4.0.0 lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 yaml: ^2.4.2 @@ -3627,8 +3412,8 @@ packages: yaml: optional: true - vitepress@1.6.3: - resolution: {integrity: sha512-fCkfdOk8yRZT8GD9BFqusW3+GggWYZ/rYncOfmgcDtP3ualNHCAg+Robxp2/6xfH1WwPHtGpPwv7mbA3qomtBw==} + vitepress@1.6.4: + resolution: {integrity: sha512-+2ym1/+0VVrbhNyRoFFesVvBvHAVMZMK0rw60E3X/5349M1GuVdKeazuksqopEdvkKwKGs21Q729jX81/bkBJg==} hasBin: true peerDependencies: markdown-it-mathjax3: ^4 @@ -3639,16 +3424,16 @@ packages: postcss: optional: true - vitest@3.0.5: - resolution: {integrity: sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==} + vitest@3.2.4: + resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.0.5 - '@vitest/ui': 3.0.5 + '@vitest/browser': 3.2.4 + '@vitest/ui': 3.2.4 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -3670,46 +3455,20 @@ packages: vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} - vue-tsc@2.2.0: - resolution: {integrity: sha512-gtmM1sUuJ8aSb0KoAFmK9yMxb8TxjewmxqTJ1aKphD5Cbu0rULFY6+UQT51zW7SpUcenfPUuflKyVwyx9Qdnxg==} + vue-tsc@3.2.1: + resolution: {integrity: sha512-I23Rk8dkQfmcSbxDO0dmg9ioMLjKA1pjlU3Lz6Jfk2pMGu3Uryu9810XkcZH24IzPbhzPCnkKo2rEMRX0skSrw==} hasBin: true peerDependencies: typescript: '>=5.0.0' - vue@3.5.13: - resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} + vue@3.5.26: + resolution: {integrity: sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - w3c-xmlserializer@5.0.0: - resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} - engines: {node: '>=18'} - - webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - - whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} - - whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} - engines: {node: '>=18'} - - whatwg-url@14.1.1: - resolution: {integrity: sha512-mDGf9diDad/giZ/Sm9Xi2YcyzaFpbdLpJPr+E9fSkyQ7KpQD4SdFcugkRQYzhmfI4KeV4Qpnn2sKPdo+kmsgRQ==} - engines: {node: '>=18'} - - whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -3747,25 +3506,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - xml-name-validator@5.0.0: - resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} - engines: {node: '>=18'} - - xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -3777,9 +3517,9 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@2.7.0: - resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} - engines: {node: '>= 14'} + yaml@2.8.2: + resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} + engines: {node: '>= 14.6'} hasBin: true yargs-parser@20.2.9: @@ -3810,169 +3550,145 @@ packages: snapshots: - '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.20.2)(algoliasearch@5.20.2)(search-insights@2.17.3)': + '@algolia/abtesting@1.12.2': + dependencies: + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 + + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.20.2)(algoliasearch@5.20.2)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.20.2)(algoliasearch@5.20.2) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.46.2)(algoliasearch@5.46.2) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.20.2)(algoliasearch@5.20.2)(search-insights@2.17.3)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.20.2)(algoliasearch@5.20.2) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.46.2)(algoliasearch@5.46.2) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.20.2)(algoliasearch@5.20.2)': + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.20.2)(algoliasearch@5.20.2) - '@algolia/client-search': 5.20.2 - algoliasearch: 5.20.2 + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.46.2)(algoliasearch@5.46.2) + '@algolia/client-search': 5.46.2 + algoliasearch: 5.46.2 - '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.20.2)(algoliasearch@5.20.2)': + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)': dependencies: - '@algolia/client-search': 5.20.2 - algoliasearch: 5.20.2 + '@algolia/client-search': 5.46.2 + algoliasearch: 5.46.2 - '@algolia/client-abtesting@5.20.2': + '@algolia/client-abtesting@5.46.2': dependencies: - '@algolia/client-common': 5.20.2 - '@algolia/requester-browser-xhr': 5.20.2 - '@algolia/requester-fetch': 5.20.2 - '@algolia/requester-node-http': 5.20.2 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-analytics@5.20.2': + '@algolia/client-analytics@5.46.2': dependencies: - '@algolia/client-common': 5.20.2 - '@algolia/requester-browser-xhr': 5.20.2 - '@algolia/requester-fetch': 5.20.2 - '@algolia/requester-node-http': 5.20.2 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-common@5.20.2': {} + '@algolia/client-common@5.46.2': {} - '@algolia/client-insights@5.20.2': + '@algolia/client-insights@5.46.2': dependencies: - '@algolia/client-common': 5.20.2 - '@algolia/requester-browser-xhr': 5.20.2 - '@algolia/requester-fetch': 5.20.2 - '@algolia/requester-node-http': 5.20.2 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-personalization@5.20.2': + '@algolia/client-personalization@5.46.2': dependencies: - '@algolia/client-common': 5.20.2 - '@algolia/requester-browser-xhr': 5.20.2 - '@algolia/requester-fetch': 5.20.2 - '@algolia/requester-node-http': 5.20.2 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-query-suggestions@5.20.2': + '@algolia/client-query-suggestions@5.46.2': dependencies: - '@algolia/client-common': 5.20.2 - '@algolia/requester-browser-xhr': 5.20.2 - '@algolia/requester-fetch': 5.20.2 - '@algolia/requester-node-http': 5.20.2 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-search@5.20.2': + '@algolia/client-search@5.46.2': dependencies: - '@algolia/client-common': 5.20.2 - '@algolia/requester-browser-xhr': 5.20.2 - '@algolia/requester-fetch': 5.20.2 - '@algolia/requester-node-http': 5.20.2 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/ingestion@1.20.2': + '@algolia/ingestion@1.46.2': dependencies: - '@algolia/client-common': 5.20.2 - '@algolia/requester-browser-xhr': 5.20.2 - '@algolia/requester-fetch': 5.20.2 - '@algolia/requester-node-http': 5.20.2 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/monitoring@1.20.2': + '@algolia/monitoring@1.46.2': dependencies: - '@algolia/client-common': 5.20.2 - '@algolia/requester-browser-xhr': 5.20.2 - '@algolia/requester-fetch': 5.20.2 - '@algolia/requester-node-http': 5.20.2 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/recommend@5.20.2': + '@algolia/recommend@5.46.2': dependencies: - '@algolia/client-common': 5.20.2 - '@algolia/requester-browser-xhr': 5.20.2 - '@algolia/requester-fetch': 5.20.2 - '@algolia/requester-node-http': 5.20.2 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/requester-browser-xhr@5.20.2': + '@algolia/requester-browser-xhr@5.46.2': dependencies: - '@algolia/client-common': 5.20.2 + '@algolia/client-common': 5.46.2 - '@algolia/requester-fetch@5.20.2': + '@algolia/requester-fetch@5.46.2': dependencies: - '@algolia/client-common': 5.20.2 + '@algolia/client-common': 5.46.2 - '@algolia/requester-node-http@5.20.2': + '@algolia/requester-node-http@5.46.2': dependencies: - '@algolia/client-common': 5.20.2 + '@algolia/client-common': 5.46.2 '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - '@asamuzakjp/css-color@2.8.3': - dependencies: - '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - lru-cache: 10.4.3 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - '@babel/code-frame@7.26.2': + '@babel/code-frame@7.27.1': dependencies: - '@babel/helper-validator-identifier': 7.25.9 + '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-identifier@7.28.5': {} - '@babel/parser@7.26.9': + '@babel/parser@7.28.5': dependencies: - '@babel/types': 7.26.9 + '@babel/types': 7.28.5 - '@babel/types@7.26.9': + '@babel/types@7.28.5': dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 '@bcoe/v8-coverage@1.0.2': {} - '@colors/colors@1.5.0': - optional: true - - '@csstools/color-helpers@5.0.1': {} - - '@csstools/css-calc@2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': - dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - - '@csstools/css-color-parser@3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': - dependencies: - '@csstools/color-helpers': 5.0.1 - '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - - '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': - dependencies: - '@csstools/css-tokenizer': 3.0.3 - - '@csstools/css-tokenizer@3.0.3': {} - - '@cypress/request@3.0.7': + '@cypress/request@3.0.10': dependencies: aws-sign2: 0.7.0 aws4: 1.13.2 @@ -3980,16 +3696,16 @@ snapshots: combined-stream: 1.0.8 extend: 3.0.2 forever-agent: 0.6.1 - form-data: 4.0.2 + form-data: 4.0.5 http-signature: 1.4.0 is-typedarray: 1.0.0 isstream: 0.1.2 json-stringify-safe: 5.0.1 mime-types: 2.1.35 performance-now: 2.1.0 - qs: 6.13.1 + qs: 6.14.1 safe-buffer: 5.2.1 - tough-cookie: 5.1.1 + tough-cookie: 5.1.2 tunnel-agent: 0.6.0 uuid: 8.3.2 @@ -4002,10 +3718,10 @@ snapshots: '@docsearch/css@3.8.2': {} - '@docsearch/js@3.8.2(@algolia/client-search@5.20.2)(search-insights@2.17.3)': + '@docsearch/js@3.8.2(@algolia/client-search@5.46.2)(search-insights@2.17.3)': dependencies: - '@docsearch/react': 3.8.2(@algolia/client-search@5.20.2)(search-insights@2.17.3) - preact: 10.26.0 + '@docsearch/react': 3.8.2(@algolia/client-search@5.46.2)(search-insights@2.17.3) + preact: 10.28.2 transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -4013,478 +3729,428 @@ snapshots: - react-dom - search-insights - '@docsearch/react@3.8.2(@algolia/client-search@5.20.2)(search-insights@2.17.3)': + '@docsearch/react@3.8.2(@algolia/client-search@5.46.2)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.20.2)(algoliasearch@5.20.2)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.20.2)(algoliasearch@5.20.2) + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.46.2)(algoliasearch@5.46.2) '@docsearch/css': 3.8.2 - algoliasearch: 5.20.2 + algoliasearch: 5.46.2 optionalDependencies: search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - '@es-joy/jsdoccomment@0.49.0': + '@es-joy/jsdoccomment@0.76.0': dependencies: + '@types/estree': 1.0.8 + '@typescript-eslint/types': 8.52.0 comment-parser: 1.4.1 - esquery: 1.6.0 - jsdoc-type-pratt-parser: 4.1.0 + esquery: 1.7.0 + jsdoc-type-pratt-parser: 6.10.0 - '@esbuild/aix-ppc64@0.21.5': - optional: true + '@es-joy/resolve.exports@1.2.0': {} - '@esbuild/aix-ppc64@0.23.1': + '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.24.2': + '@esbuild/aix-ppc64@0.27.2': optional: true '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.23.1': - optional: true - - '@esbuild/android-arm64@0.24.2': + '@esbuild/android-arm64@0.27.2': optional: true '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.23.1': - optional: true - - '@esbuild/android-arm@0.24.2': + '@esbuild/android-arm@0.27.2': optional: true '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.23.1': - optional: true - - '@esbuild/android-x64@0.24.2': + '@esbuild/android-x64@0.27.2': optional: true '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.23.1': - optional: true - - '@esbuild/darwin-arm64@0.24.2': + '@esbuild/darwin-arm64@0.27.2': optional: true '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.23.1': - optional: true - - '@esbuild/darwin-x64@0.24.2': + '@esbuild/darwin-x64@0.27.2': optional: true '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.23.1': - optional: true - - '@esbuild/freebsd-arm64@0.24.2': + '@esbuild/freebsd-arm64@0.27.2': optional: true '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.23.1': - optional: true - - '@esbuild/freebsd-x64@0.24.2': + '@esbuild/freebsd-x64@0.27.2': optional: true '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.23.1': - optional: true - - '@esbuild/linux-arm64@0.24.2': + '@esbuild/linux-arm64@0.27.2': optional: true '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.23.1': - optional: true - - '@esbuild/linux-arm@0.24.2': + '@esbuild/linux-arm@0.27.2': optional: true '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.23.1': - optional: true - - '@esbuild/linux-ia32@0.24.2': + '@esbuild/linux-ia32@0.27.2': optional: true '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.23.1': - optional: true - - '@esbuild/linux-loong64@0.24.2': + '@esbuild/linux-loong64@0.27.2': optional: true '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.23.1': - optional: true - - '@esbuild/linux-mips64el@0.24.2': + '@esbuild/linux-mips64el@0.27.2': optional: true '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.23.1': - optional: true - - '@esbuild/linux-ppc64@0.24.2': + '@esbuild/linux-ppc64@0.27.2': optional: true '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.23.1': - optional: true - - '@esbuild/linux-riscv64@0.24.2': + '@esbuild/linux-riscv64@0.27.2': optional: true '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.23.1': - optional: true - - '@esbuild/linux-s390x@0.24.2': + '@esbuild/linux-s390x@0.27.2': optional: true '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.23.1': - optional: true - - '@esbuild/linux-x64@0.24.2': + '@esbuild/linux-x64@0.27.2': optional: true - '@esbuild/netbsd-arm64@0.24.2': + '@esbuild/netbsd-arm64@0.27.2': optional: true '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.23.1': - optional: true - - '@esbuild/netbsd-x64@0.24.2': - optional: true - - '@esbuild/openbsd-arm64@0.23.1': + '@esbuild/netbsd-x64@0.27.2': optional: true - '@esbuild/openbsd-arm64@0.24.2': + '@esbuild/openbsd-arm64@0.27.2': optional: true '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.23.1': + '@esbuild/openbsd-x64@0.27.2': optional: true - '@esbuild/openbsd-x64@0.24.2': + '@esbuild/openharmony-arm64@0.27.2': optional: true '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.23.1': - optional: true - - '@esbuild/sunos-x64@0.24.2': + '@esbuild/sunos-x64@0.27.2': optional: true '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.23.1': - optional: true - - '@esbuild/win32-arm64@0.24.2': + '@esbuild/win32-arm64@0.27.2': optional: true '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.23.1': - optional: true - - '@esbuild/win32-ia32@0.24.2': + '@esbuild/win32-ia32@0.27.2': optional: true '@esbuild/win32-x64@0.21.5': optional: true - '@esbuild/win32-x64@0.23.1': - optional: true - - '@esbuild/win32-x64@0.24.2': + '@esbuild/win32-x64@0.27.2': optional: true - '@eslint-community/eslint-utils@4.4.1(eslint@9.19.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.6.1))': dependencies: - eslint: 9.19.0(jiti@2.4.2) + eslint: 9.39.2(jiti@2.6.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.12.1': {} + '@eslint-community/regexpp@4.12.2': {} - '@eslint/compat@1.2.6(eslint@9.19.0(jiti@2.4.2))': + '@eslint/compat@2.0.0(eslint@9.39.2(jiti@2.6.1))': + dependencies: + '@eslint/core': 1.0.0 optionalDependencies: - eslint: 9.19.0(jiti@2.4.2) + eslint: 9.39.2(jiti@2.6.1) - '@eslint/config-array@0.19.2': + '@eslint/config-array@0.21.1': dependencies: - '@eslint/object-schema': 2.1.6 - debug: 4.4.0(supports-color@8.1.1) + '@eslint/object-schema': 2.1.7 + debug: 4.4.3(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color - '@eslint/core@0.10.0': + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 + + '@eslint/core@0.17.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.2.0': + '@eslint/core@1.0.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.3': dependencies: ajv: 6.12.6 - debug: 4.4.0(supports-color@8.1.1) - espree: 10.3.0 + debug: 4.4.3(supports-color@8.1.1) + espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - '@eslint/js@9.19.0': {} + '@eslint/js@9.39.2': {} - '@eslint/object-schema@2.1.6': {} + '@eslint/object-schema@2.1.7': {} - '@eslint/plugin-kit@0.2.5': + '@eslint/plugin-kit@0.4.1': dependencies: - '@eslint/core': 0.10.0 + '@eslint/core': 0.17.0 levn: 0.4.1 '@humanfs/core@0.19.1': {} - '@humanfs/node@0.16.6': + '@humanfs/node@0.16.7': dependencies: '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/retry': 0.4.3 '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/retry@0.3.1': {} - - '@humanwhocodes/retry@0.4.1': {} + '@humanwhocodes/retry@0.4.3': {} '@hutson/parse-repository-url@3.0.2': {} - '@iconify-json/simple-icons@1.2.24': + '@iconify-json/simple-icons@1.2.65': dependencies: '@iconify/types': 2.0.0 '@iconify/types@2.0.0': {} + '@isaacs/balanced-match@4.0.1': {} + + '@isaacs/brace-expansion@5.0.0': + dependencies: + '@isaacs/balanced-match': 4.0.1 + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 '@istanbuljs/schema@0.1.3': {} - '@jridgewell/gen-mapping@0.3.8': + '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/trace-mapping@0.3.25': + '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 + '@pkgjs/parseargs@0.11.0': + optional: true - '@nodelib/fs.stat@2.0.5': {} + '@pkgr/core@0.2.9': {} - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.0 + '@polka/url@1.0.0-next.29': {} - '@pkgjs/parseargs@0.11.0': + '@rollup/rollup-android-arm-eabi@4.55.1': + optional: true + + '@rollup/rollup-android-arm64@4.55.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.55.1': + optional: true + + '@rollup/rollup-darwin-x64@4.55.1': optional: true - '@pkgr/core@0.1.1': {} + '@rollup/rollup-freebsd-arm64@4.55.1': + optional: true - '@polka/url@1.0.0-next.28': {} + '@rollup/rollup-freebsd-x64@4.55.1': + optional: true - '@rollup/rollup-android-arm-eabi@4.34.7': + '@rollup/rollup-linux-arm-gnueabihf@4.55.1': optional: true - '@rollup/rollup-android-arm64@4.34.7': + '@rollup/rollup-linux-arm-musleabihf@4.55.1': optional: true - '@rollup/rollup-darwin-arm64@4.34.7': + '@rollup/rollup-linux-arm64-gnu@4.55.1': optional: true - '@rollup/rollup-darwin-x64@4.34.7': + '@rollup/rollup-linux-arm64-musl@4.55.1': optional: true - '@rollup/rollup-freebsd-arm64@4.34.7': + '@rollup/rollup-linux-loong64-gnu@4.55.1': optional: true - '@rollup/rollup-freebsd-x64@4.34.7': + '@rollup/rollup-linux-loong64-musl@4.55.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.34.7': + '@rollup/rollup-linux-ppc64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.34.7': + '@rollup/rollup-linux-ppc64-musl@4.55.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.34.7': + '@rollup/rollup-linux-riscv64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.34.7': + '@rollup/rollup-linux-riscv64-musl@4.55.1': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.34.7': + '@rollup/rollup-linux-s390x-gnu@4.55.1': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.34.7': + '@rollup/rollup-linux-x64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.34.7': + '@rollup/rollup-linux-x64-musl@4.55.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.34.7': + '@rollup/rollup-openbsd-x64@4.55.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.34.7': + '@rollup/rollup-openharmony-arm64@4.55.1': optional: true - '@rollup/rollup-linux-x64-musl@4.34.7': + '@rollup/rollup-win32-arm64-msvc@4.55.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.34.7': + '@rollup/rollup-win32-ia32-msvc@4.55.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.34.7': + '@rollup/rollup-win32-x64-gnu@4.55.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.34.7': + '@rollup/rollup-win32-x64-msvc@4.55.1': optional: true - '@shikijs/core@2.4.1': + '@shikijs/core@2.5.0': dependencies: - '@shikijs/engine-javascript': 2.4.1 - '@shikijs/engine-oniguruma': 2.4.1 - '@shikijs/types': 2.4.1 + '@shikijs/engine-javascript': 2.5.0 + '@shikijs/engine-oniguruma': 2.5.0 + '@shikijs/types': 2.5.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - hast-util-to-html: 9.0.4 + hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@2.4.1': + '@shikijs/engine-javascript@2.5.0': dependencies: - '@shikijs/types': 2.4.1 + '@shikijs/types': 2.5.0 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 3.1.0 + oniguruma-to-es: 3.1.1 - '@shikijs/engine-oniguruma@2.4.1': + '@shikijs/engine-oniguruma@2.5.0': dependencies: - '@shikijs/types': 2.4.1 + '@shikijs/types': 2.5.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@2.4.1': + '@shikijs/langs@2.5.0': dependencies: - '@shikijs/types': 2.4.1 + '@shikijs/types': 2.5.0 - '@shikijs/themes@2.4.1': + '@shikijs/themes@2.5.0': dependencies: - '@shikijs/types': 2.4.1 + '@shikijs/types': 2.5.0 - '@shikijs/transformers@2.4.1': + '@shikijs/transformers@2.5.0': dependencies: - '@shikijs/core': 2.4.1 - '@shikijs/types': 2.4.1 + '@shikijs/core': 2.5.0 + '@shikijs/types': 2.5.0 - '@shikijs/types@2.4.1': + '@shikijs/types@2.5.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 '@shikijs/vscode-textmate@10.0.2': {} - '@stylistic/eslint-plugin@3.0.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': + '@sindresorhus/base62@1.0.0': {} + + '@stylistic/eslint-plugin@5.6.1(eslint@9.39.2(jiti@2.6.1))': dependencies: - '@typescript-eslint/utils': 8.24.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.19.0(jiti@2.4.2) - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@typescript-eslint/types': 8.52.0 + eslint: 9.39.2(jiti@2.6.1) + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 estraverse: 5.3.0 - picomatch: 4.0.2 - transitivePeerDependencies: - - supports-color - - typescript + picomatch: 4.0.3 - '@ts-morph/common@0.26.1': + '@ts-morph/common@0.28.1': dependencies: - fast-glob: 3.3.3 - minimatch: 9.0.5 + minimatch: 10.1.1 path-browserify: 1.0.1 + tinyglobby: 0.2.15 - '@types/eslint@9.6.1': + '@types/chai@5.2.3': dependencies: - '@types/estree': 1.0.6 - '@types/json-schema': 7.0.15 + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 - '@types/eslint__js@8.42.3': - dependencies: - '@types/eslint': 9.6.1 + '@types/deep-eql@4.0.2': {} - '@types/estree@1.0.6': {} + '@types/estree@1.0.8': {} '@types/hast@3.0.4': dependencies: @@ -4507,392 +4173,415 @@ snapshots: '@types/minimist@1.2.5': {} - '@types/node@22.13.0': + '@types/node@22.19.3': dependencies: - undici-types: 6.20.0 + undici-types: 6.21.0 '@types/normalize-package-data@2.4.4': {} - '@types/sanitize-html@2.13.0': + '@types/sanitize-html@2.16.0': dependencies: htmlparser2: 8.0.2 - '@types/semver@7.5.8': {} + '@types/semver@7.7.1': {} '@types/sinonjs__fake-timers@8.1.1': {} - '@types/sizzle@2.3.9': {} + '@types/sizzle@2.3.10': {} + + '@types/tmp@0.2.6': {} '@types/unist@3.0.3': {} - '@types/validator@13.12.2': {} + '@types/validator@13.15.10': {} - '@types/web-bluetooth@0.0.20': {} + '@types/web-bluetooth@0.0.21': {} '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.13.0 + '@types/node': 22.19.3 optional: true - '@typescript-eslint/eslint-plugin@8.23.0(@typescript-eslint/parser@8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.23.0 - '@typescript-eslint/type-utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.23.0 - eslint: 9.19.0(jiti@2.4.2) - graphemer: 1.4.0 - ignore: 5.3.2 + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.50.1 + '@typescript-eslint/type-utils': 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.50.1 + eslint: 9.39.2(jiti@2.6.1) + ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.50.1 + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.50.1 + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.50.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) + '@typescript-eslint/types': 8.50.1 + debug: 4.4.3(supports-color@8.1.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/project-service@8.52.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.23.0 - '@typescript-eslint/types': 8.23.0 - '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.23.0 - debug: 4.4.0(supports-color@8.1.1) - eslint: 9.19.0(jiti@2.4.2) - typescript: 5.7.3 + '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) + '@typescript-eslint/types': 8.52.0 + debug: 4.4.3(supports-color@8.1.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.23.0': + '@typescript-eslint/scope-manager@8.50.1': + dependencies: + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/visitor-keys': 8.50.1 + + '@typescript-eslint/scope-manager@8.52.0': + dependencies: + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/visitor-keys': 8.52.0 + + '@typescript-eslint/tsconfig-utils@8.50.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.23.0 - '@typescript-eslint/visitor-keys': 8.23.0 + typescript: 5.9.3 - '@typescript-eslint/scope-manager@8.24.0': + '@typescript-eslint/tsconfig-utils@8.52.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.24.0 - '@typescript-eslint/visitor-keys': 8.24.0 + typescript: 5.9.3 - '@typescript-eslint/type-utils@8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/type-utils@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - debug: 4.4.0(supports-color@8.1.1) - eslint: 9.19.0(jiti@2.4.2) - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.39.2(jiti@2.6.1) + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.23.0': {} + '@typescript-eslint/types@8.50.1': {} - '@typescript-eslint/types@8.24.0': {} + '@typescript-eslint/types@8.52.0': {} - '@typescript-eslint/typescript-estree@8.23.0(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.50.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.23.0 - '@typescript-eslint/visitor-keys': 8.23.0 - debug: 4.4.0(supports-color@8.1.1) - fast-glob: 3.3.3 - is-glob: 4.0.3 + '@typescript-eslint/project-service': 8.50.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/visitor-keys': 8.50.1 + debug: 4.4.3(supports-color@8.1.1) minimatch: 9.0.5 - semver: 7.7.0 - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 + semver: 7.7.3 + tinyglobby: 0.2.15 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.24.0(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.52.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.24.0 - '@typescript-eslint/visitor-keys': 8.24.0 - debug: 4.4.0(supports-color@8.1.1) - fast-glob: 3.3.3 - is-glob: 4.0.3 + '@typescript-eslint/project-service': 8.52.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/visitor-keys': 8.52.0 + debug: 4.4.3(supports-color@8.1.1) minimatch: 9.0.5 - semver: 7.7.0 - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 + semver: 7.7.3 + tinyglobby: 0.2.15 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/utils@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.23.0 - '@typescript-eslint/types': 8.23.0 - '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) - eslint: 9.19.0(jiti@2.4.2) - typescript: 5.7.3 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.50.1 + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.24.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/utils@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.24.0 - '@typescript-eslint/types': 8.24.0 - '@typescript-eslint/typescript-estree': 8.24.0(typescript@5.7.3) - eslint: 9.19.0(jiti@2.4.2) - typescript: 5.7.3 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.52.0 + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.23.0': + '@typescript-eslint/visitor-keys@8.50.1': dependencies: - '@typescript-eslint/types': 8.23.0 - eslint-visitor-keys: 4.2.0 + '@typescript-eslint/types': 8.50.1 + eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.24.0': + '@typescript-eslint/visitor-keys@8.52.0': dependencies: - '@typescript-eslint/types': 8.24.0 - eslint-visitor-keys: 4.2.0 + '@typescript-eslint/types': 8.52.0 + eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-vue@5.2.1(vite@5.4.14(@types/node@22.13.0))(vue@3.5.13(typescript@5.7.3))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.21(@types/node@22.19.3))(vue@3.5.26(typescript@5.9.3))': dependencies: - vite: 5.4.14(@types/node@22.13.0) - vue: 3.5.13(typescript@5.7.3) + vite: 5.4.21(@types/node@22.19.3) + vue: 3.5.26(typescript@5.9.3) - '@vitest/coverage-v8@3.0.5(vitest@3.0.5)': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4)': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 - debug: 4.4.0(supports-color@8.1.1) + ast-v8-to-istanbul: 0.3.10 + debug: 4.4.3(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 - magic-string: 0.30.17 + istanbul-reports: 3.2.0 + magic-string: 0.30.21 magicast: 0.3.5 - std-env: 3.8.0 + std-env: 3.10.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.0.5(@types/node@22.13.0)(@vitest/ui@3.0.5)(jiti@2.4.2)(jsdom@25.0.1)(tsx@4.19.2)(yaml@2.7.0) + vitest: 3.2.4(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitest/eslint-plugin@1.1.25(@typescript-eslint/utils@8.24.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)(vitest@3.0.5)': + '@vitest/eslint-plugin@1.6.3(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(vitest@3.2.4)': dependencies: - '@typescript-eslint/utils': 8.24.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.19.0(jiti@2.4.2) + '@typescript-eslint/scope-manager': 8.52.0 + '@typescript-eslint/utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) optionalDependencies: - typescript: 5.7.3 - vitest: 3.0.5(@types/node@22.13.0)(@vitest/ui@3.0.5)(jiti@2.4.2)(jsdom@25.0.1)(tsx@4.19.2)(yaml@2.7.0) + typescript: 5.9.3 + vitest: 3.2.4(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) + transitivePeerDependencies: + - supports-color - '@vitest/expect@3.0.5': + '@vitest/expect@3.2.4': dependencies: - '@vitest/spy': 3.0.5 - '@vitest/utils': 3.0.5 - chai: 5.2.0 + '@types/chai': 5.2.3 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.0.5(vite@6.1.0(@types/node@22.13.0)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0))': + '@vitest/mocker@3.2.4(vite@7.3.1(@types/node@22.19.3)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@vitest/spy': 3.0.5 + '@vitest/spy': 3.2.4 estree-walker: 3.0.3 - magic-string: 0.30.17 + magic-string: 0.30.21 optionalDependencies: - vite: 6.1.0(@types/node@22.13.0)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0) + vite: 7.3.1(@types/node@22.19.3)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/pretty-format@3.0.5': + '@vitest/pretty-format@3.2.4': dependencies: tinyrainbow: 2.0.0 - '@vitest/runner@3.0.5': + '@vitest/runner@3.2.4': dependencies: - '@vitest/utils': 3.0.5 + '@vitest/utils': 3.2.4 pathe: 2.0.3 + strip-literal: 3.1.0 - '@vitest/snapshot@3.0.5': + '@vitest/snapshot@3.2.4': dependencies: - '@vitest/pretty-format': 3.0.5 - magic-string: 0.30.17 + '@vitest/pretty-format': 3.2.4 + magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@3.0.5': + '@vitest/spy@3.2.4': dependencies: - tinyspy: 3.0.2 + tinyspy: 4.0.4 - '@vitest/ui@3.0.5(vitest@3.0.5)': + '@vitest/ui@3.2.4(vitest@3.2.4)': dependencies: - '@vitest/utils': 3.0.5 + '@vitest/utils': 3.2.4 fflate: 0.8.2 - flatted: 3.3.2 + flatted: 3.3.3 pathe: 2.0.3 - sirv: 3.0.0 - tinyglobby: 0.2.10 + sirv: 3.0.2 + tinyglobby: 0.2.15 tinyrainbow: 2.0.0 - vitest: 3.0.5(@types/node@22.13.0)(@vitest/ui@3.0.5)(jiti@2.4.2)(jsdom@25.0.1)(tsx@4.19.2)(yaml@2.7.0) + vitest: 3.2.4(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/utils@3.0.5': + '@vitest/utils@3.2.4': dependencies: - '@vitest/pretty-format': 3.0.5 - loupe: 3.1.3 + '@vitest/pretty-format': 3.2.4 + loupe: 3.2.1 tinyrainbow: 2.0.0 - '@volar/language-core@2.4.11': + '@volar/language-core@2.4.27': dependencies: - '@volar/source-map': 2.4.11 + '@volar/source-map': 2.4.27 - '@volar/source-map@2.4.11': {} + '@volar/source-map@2.4.27': {} - '@volar/typescript@2.4.11': + '@volar/typescript@2.4.27': dependencies: - '@volar/language-core': 2.4.11 + '@volar/language-core': 2.4.27 path-browserify: 1.0.1 vscode-uri: 3.1.0 - '@vue/compiler-core@3.5.13': + '@vue/compiler-core@3.5.26': dependencies: - '@babel/parser': 7.26.9 - '@vue/shared': 3.5.13 - entities: 4.5.0 + '@babel/parser': 7.28.5 + '@vue/shared': 3.5.26 + entities: 7.0.0 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.13': + '@vue/compiler-dom@3.5.26': dependencies: - '@vue/compiler-core': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/compiler-core': 3.5.26 + '@vue/shared': 3.5.26 - '@vue/compiler-sfc@3.5.13': + '@vue/compiler-sfc@3.5.26': dependencies: - '@babel/parser': 7.26.9 - '@vue/compiler-core': 3.5.13 - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-ssr': 3.5.13 - '@vue/shared': 3.5.13 + '@babel/parser': 7.28.5 + '@vue/compiler-core': 3.5.26 + '@vue/compiler-dom': 3.5.26 + '@vue/compiler-ssr': 3.5.26 + '@vue/shared': 3.5.26 estree-walker: 2.0.2 - magic-string: 0.30.17 - postcss: 8.5.2 + magic-string: 0.30.21 + postcss: 8.5.6 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.13': + '@vue/compiler-ssr@3.5.26': dependencies: - '@vue/compiler-dom': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/compiler-dom': 3.5.26 + '@vue/shared': 3.5.26 - '@vue/compiler-vue2@2.7.16': + '@vue/devtools-api@7.7.9': dependencies: - de-indent: 1.0.2 - he: 1.2.0 + '@vue/devtools-kit': 7.7.9 - '@vue/devtools-api@7.7.2': + '@vue/devtools-kit@7.7.9': dependencies: - '@vue/devtools-kit': 7.7.2 - - '@vue/devtools-kit@7.7.2': - dependencies: - '@vue/devtools-shared': 7.7.2 - birpc: 0.2.19 + '@vue/devtools-shared': 7.7.9 + birpc: 2.9.0 hookable: 5.5.3 mitt: 3.0.1 perfect-debounce: 1.0.0 speakingurl: 14.0.1 - superjson: 2.2.2 + superjson: 2.2.6 - '@vue/devtools-shared@7.7.2': + '@vue/devtools-shared@7.7.9': dependencies: rfdc: 1.4.1 - '@vue/language-core@2.2.0(typescript@5.7.3)': + '@vue/language-core@3.2.1': dependencies: - '@volar/language-core': 2.4.11 - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.13 - alien-signals: 0.4.14 - minimatch: 9.0.5 + '@volar/language-core': 2.4.27 + '@vue/compiler-dom': 3.5.26 + '@vue/shared': 3.5.26 + alien-signals: 3.1.2 muggle-string: 0.4.1 path-browserify: 1.0.1 - optionalDependencies: - typescript: 5.7.3 + picomatch: 4.0.3 - '@vue/reactivity@3.5.13': + '@vue/reactivity@3.5.26': dependencies: - '@vue/shared': 3.5.13 + '@vue/shared': 3.5.26 - '@vue/runtime-core@3.5.13': + '@vue/runtime-core@3.5.26': dependencies: - '@vue/reactivity': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/reactivity': 3.5.26 + '@vue/shared': 3.5.26 - '@vue/runtime-dom@3.5.13': + '@vue/runtime-dom@3.5.26': dependencies: - '@vue/reactivity': 3.5.13 - '@vue/runtime-core': 3.5.13 - '@vue/shared': 3.5.13 - csstype: 3.1.3 + '@vue/reactivity': 3.5.26 + '@vue/runtime-core': 3.5.26 + '@vue/shared': 3.5.26 + csstype: 3.2.3 - '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.7.3))': + '@vue/server-renderer@3.5.26(vue@3.5.26(typescript@5.9.3))': dependencies: - '@vue/compiler-ssr': 3.5.13 - '@vue/shared': 3.5.13 - vue: 3.5.13(typescript@5.7.3) + '@vue/compiler-ssr': 3.5.26 + '@vue/shared': 3.5.26 + vue: 3.5.26(typescript@5.9.3) - '@vue/shared@3.5.13': {} + '@vue/shared@3.5.26': {} - '@vueuse/core@12.5.0(typescript@5.7.3)': + '@vueuse/core@12.8.2(typescript@5.9.3)': dependencies: - '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 12.5.0 - '@vueuse/shared': 12.5.0(typescript@5.7.3) - vue: 3.5.13(typescript@5.7.3) + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 12.8.2 + '@vueuse/shared': 12.8.2(typescript@5.9.3) + vue: 3.5.26(typescript@5.9.3) transitivePeerDependencies: - typescript - '@vueuse/core@12.7.0(typescript@5.7.3)': + '@vueuse/core@13.9.0(vue@3.5.26(typescript@5.9.3))': dependencies: - '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 12.7.0 - '@vueuse/shared': 12.7.0(typescript@5.7.3) - vue: 3.5.13(typescript@5.7.3) - transitivePeerDependencies: - - typescript + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 13.9.0 + '@vueuse/shared': 13.9.0(vue@3.5.26(typescript@5.9.3)) + vue: 3.5.26(typescript@5.9.3) - '@vueuse/integrations@12.7.0(focus-trap@7.6.4)(typescript@5.7.3)': + '@vueuse/integrations@12.8.2(change-case@5.4.4)(focus-trap@7.7.1)(typescript@5.9.3)': dependencies: - '@vueuse/core': 12.7.0(typescript@5.7.3) - '@vueuse/shared': 12.7.0(typescript@5.7.3) - vue: 3.5.13(typescript@5.7.3) + '@vueuse/core': 12.8.2(typescript@5.9.3) + '@vueuse/shared': 12.8.2(typescript@5.9.3) + vue: 3.5.26(typescript@5.9.3) optionalDependencies: - focus-trap: 7.6.4 + change-case: 5.4.4 + focus-trap: 7.7.1 transitivePeerDependencies: - typescript - '@vueuse/metadata@12.5.0': {} + '@vueuse/metadata@12.8.2': {} - '@vueuse/metadata@12.7.0': {} + '@vueuse/metadata@13.9.0': {} - '@vueuse/shared@12.5.0(typescript@5.7.3)': + '@vueuse/shared@12.8.2(typescript@5.9.3)': dependencies: - vue: 3.5.13(typescript@5.7.3) + vue: 3.5.26(typescript@5.9.3) transitivePeerDependencies: - typescript - '@vueuse/shared@12.7.0(typescript@5.7.3)': + '@vueuse/shared@13.9.0(vue@3.5.26(typescript@5.9.3))': dependencies: - vue: 3.5.13(typescript@5.7.3) - transitivePeerDependencies: - - typescript + vue: 3.5.26(typescript@5.9.3) JSONStream@1.3.5: dependencies: jsonparse: 1.3.1 through: 2.3.8 - acorn-jsx@5.3.2(acorn@8.14.0): + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: - acorn: 8.14.0 + acorn: 8.15.0 - acorn@8.14.0: {} + acorn@8.15.0: {} add-stream@1.0.0: {} - agent-base@7.1.3: {} - aggregate-error@3.1.0: dependencies: clean-stack: 2.2.0 @@ -4905,23 +4594,24 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - algoliasearch@5.20.2: - dependencies: - '@algolia/client-abtesting': 5.20.2 - '@algolia/client-analytics': 5.20.2 - '@algolia/client-common': 5.20.2 - '@algolia/client-insights': 5.20.2 - '@algolia/client-personalization': 5.20.2 - '@algolia/client-query-suggestions': 5.20.2 - '@algolia/client-search': 5.20.2 - '@algolia/ingestion': 1.20.2 - '@algolia/monitoring': 1.20.2 - '@algolia/recommend': 5.20.2 - '@algolia/requester-browser-xhr': 5.20.2 - '@algolia/requester-fetch': 5.20.2 - '@algolia/requester-node-http': 5.20.2 - - alien-signals@0.4.14: {} + algoliasearch@5.46.2: + dependencies: + '@algolia/abtesting': 1.12.2 + '@algolia/client-abtesting': 5.46.2 + '@algolia/client-analytics': 5.46.2 + '@algolia/client-common': 5.46.2 + '@algolia/client-insights': 5.46.2 + '@algolia/client-personalization': 5.46.2 + '@algolia/client-query-suggestions': 5.46.2 + '@algolia/client-search': 5.46.2 + '@algolia/ingestion': 1.46.2 + '@algolia/monitoring': 1.46.2 + '@algolia/recommend': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 + + alien-signals@3.1.2: {} ansi-colors@4.1.3: {} @@ -4931,7 +4621,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.1.0: {} + ansi-regex@6.2.2: {} ansi-styles@3.2.1: dependencies: @@ -4941,7 +4631,7 @@ snapshots: dependencies: color-convert: 2.0.1 - ansi-styles@6.2.1: {} + ansi-styles@6.2.3: {} any-promise@1.3.0: {} @@ -4963,9 +4653,13 @@ snapshots: assertion-error@2.0.1: {} - astral-regex@2.0.0: {} + ast-v8-to-istanbul@0.3.10: + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + estree-walker: 3.0.3 + js-tokens: 9.0.1 - async@3.2.6: {} + astral-regex@2.0.0: {} asynckit@0.4.0: {} @@ -4979,35 +4673,34 @@ snapshots: base64-js@1.5.1: {} + baseline-browser-mapping@2.9.12: {} + bcrypt-pbkdf@1.0.2: dependencies: tweetnacl: 0.14.5 - birpc@0.2.19: {} + birpc@2.9.0: {} blob-util@2.0.2: {} bluebird@3.7.2: {} - brace-expansion@1.1.11: + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + brace-expansion@2.0.2: dependencies: balanced-match: 1.0.2 - braces@3.0.3: + browserslist@4.28.1: dependencies: - fill-range: 7.1.1 - - browserslist@4.24.4: - dependencies: - caniuse-lite: 1.0.30001700 - electron-to-chromium: 1.5.101 - node-releases: 2.0.19 - update-browserslist-db: 1.1.2(browserslist@4.24.4) + baseline-browser-mapping: 2.9.12 + caniuse-lite: 1.0.30001762 + electron-to-chromium: 1.5.267 + node-releases: 2.0.27 + update-browserslist-db: 1.2.3(browserslist@4.28.1) buffer-crc32@0.2.13: {} @@ -5018,11 +4711,11 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - builtin-modules@3.3.0: {} + builtin-modules@5.0.0: {} - bundle-require@5.1.0(esbuild@0.24.2): + bundle-require@5.1.0(esbuild@0.27.2): dependencies: - esbuild: 0.24.2 + esbuild: 0.27.2 load-tsconfig: 0.2.5 cac@6.7.14: {} @@ -5034,10 +4727,10 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 - call-bound@1.0.3: + call-bound@1.0.4: dependencies: call-bind-apply-helpers: 1.0.2 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 callsites@3.1.0: {} @@ -5049,19 +4742,19 @@ snapshots: camelcase@5.3.1: {} - caniuse-lite@1.0.30001700: {} + caniuse-lite@1.0.30001762: {} caseless@0.12.0: {} ccount@2.0.1: {} - chai@5.2.0: + chai@5.3.3: dependencies: assertion-error: 2.0.1 - check-error: 2.1.1 + check-error: 2.1.3 deep-eql: 5.0.2 - loupe: 3.1.3 - pathval: 2.0.0 + loupe: 3.2.1 + pathval: 2.0.1 chalk@2.4.2: dependencies: @@ -5074,19 +4767,19 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + change-case@5.4.4: {} + character-entities-html4@2.1.0: {} character-entities-legacy@3.0.0: {} - check-error@2.1.1: {} - - check-more-types@2.24.0: {} + check-error@2.1.3: {} chokidar@4.0.3: dependencies: readdirp: 4.1.2 - ci-info@4.1.0: {} + ci-info@4.3.1: {} clean-regexp@1.0.0: dependencies: @@ -5098,11 +4791,11 @@ snapshots: dependencies: restore-cursor: 3.1.0 - cli-table3@0.6.5: + cli-table3@0.6.1: dependencies: string-width: 4.2.3 optionalDependencies: - '@colors/colors': 1.5.0 + colors: 1.4.0 cli-truncate@2.1.0: dependencies: @@ -5137,6 +4830,9 @@ snapshots: colorette@2.0.20: {} + colors@1.4.0: + optional: true + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -5149,7 +4845,7 @@ snapshots: comment-parser@1.4.1: {} - commit-and-tag-version@12.5.0: + commit-and-tag-version@12.6.1: dependencies: chalk: 2.4.2 conventional-changelog: 4.0.0 @@ -5159,19 +4855,13 @@ snapshots: detect-indent: 6.1.0 detect-newline: 3.1.0 dotgitignore: 2.1.0 + fast-xml-parser: 5.3.3 figures: 3.2.0 find-up: 5.0.0 git-semver-tags: 5.0.1 - jsdom: 25.0.1 - semver: 7.7.0 - w3c-xmlserializer: 5.0.0 - yaml: 2.7.0 + semver: 7.7.3 + yaml: 2.8.2 yargs: 17.7.2 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate common-tags@1.8.2: {} @@ -5189,7 +4879,9 @@ snapshots: readable-stream: 3.6.2 typedarray: 0.0.6 - consola@3.4.0: {} + confbox@0.1.8: {} + + consola@3.4.2: {} conventional-changelog-angular@6.0.0: dependencies: @@ -5240,7 +4932,7 @@ snapshots: handlebars: 4.7.8 json-stringify-safe: 5.0.1 meow: 8.1.2 - semver: 7.7.0 + semver: 7.7.3 split: 1.0.1 conventional-changelog@4.0.0: @@ -5279,13 +4971,13 @@ snapshots: git-semver-tags: 5.0.1 meow: 8.1.2 - copy-anything@3.0.5: + copy-anything@4.0.5: dependencies: - is-what: 4.1.16 + is-what: 5.5.0 - core-js-compat@3.40.0: + core-js-compat@3.47.0: dependencies: - browserslist: 4.24.4 + browserslist: 4.28.1 core-util-is@1.0.2: {} @@ -5297,33 +4989,28 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - cssstyle@4.2.1: - dependencies: - '@asamuzakjp/css-color': 2.8.3 - rrweb-cssom: 0.8.0 - - csstype@3.1.3: {} + csstype@3.2.3: {} - cypress@14.0.1: + cypress@15.8.1: dependencies: - '@cypress/request': 3.0.7 + '@cypress/request': 3.0.10 '@cypress/xvfb': 1.2.4(supports-color@8.1.1) '@types/sinonjs__fake-timers': 8.1.1 - '@types/sizzle': 2.3.9 + '@types/sizzle': 2.3.10 + '@types/tmp': 0.2.6 arch: 2.2.0 blob-util: 2.0.2 bluebird: 3.7.2 buffer: 5.7.1 cachedir: 2.4.0 chalk: 4.1.2 - check-more-types: 2.24.0 - ci-info: 4.1.0 + ci-info: 4.3.1 cli-cursor: 3.1.0 - cli-table3: 0.6.5 + cli-table3: 0.6.1 commander: 6.2.1 common-tags: 1.8.2 - dayjs: 1.11.13 - debug: 4.4.0(supports-color@8.1.1) + dayjs: 1.11.19 + debug: 4.4.3(supports-color@8.1.1) enquirer: 2.4.1 eventemitter2: 6.4.7 execa: 4.1.0 @@ -5331,9 +5018,8 @@ snapshots: extract-zip: 2.0.1(supports-color@8.1.1) figures: 3.2.0 fs-extra: 9.1.0 - getos: 3.2.1 + hasha: 5.2.2 is-installed-globally: 0.4.0 - lazy-ass: 1.6.0 listr2: 3.14.0(enquirer@2.4.1) lodash: 4.17.21 log-symbols: 4.1.0 @@ -5343,9 +5029,9 @@ snapshots: process: 0.11.10 proxy-from-env: 1.0.0 request-progress: 3.0.0 - semver: 7.7.0 supports-color: 8.1.1 - tmp: 0.2.3 + systeminformation: 5.30.1 + tmp: 0.2.5 tree-kill: 1.2.2 untildify: 4.0.0 yauzl: 2.10.0 @@ -5356,16 +5042,9 @@ snapshots: dependencies: assert-plus: 1.0.0 - data-urls@5.0.0: - dependencies: - whatwg-mimetype: 4.0.0 - whatwg-url: 14.1.1 - dateformat@3.0.3: {} - dayjs@1.11.13: {} - - de-indent@1.0.2: {} + dayjs@1.11.19: {} debug@3.2.7(supports-color@8.1.1): dependencies: @@ -5373,7 +5052,7 @@ snapshots: optionalDependencies: supports-color: 8.1.1 - debug@4.4.0(supports-color@8.1.1): + debug@4.4.3(supports-color@8.1.1): dependencies: ms: 2.1.3 optionalDependencies: @@ -5386,8 +5065,6 @@ snapshots: decamelize@1.2.0: {} - decimal.js@10.5.0: {} - deep-eql@5.0.2: {} deep-is@0.1.4: {} @@ -5400,12 +5077,8 @@ snapshots: detect-indent@6.1.0: {} - detect-indent@7.0.1: {} - detect-newline@3.1.0: {} - detect-newline@4.0.1: {} - devlop@1.1.0: dependencies: dequal: 2.0.3 @@ -5450,7 +5123,7 @@ snapshots: jsbn: 0.1.1 safer-buffer: 2.1.2 - electron-to-chromium@1.5.101: {} + electron-to-chromium@1.5.267: {} emoji-regex-xs@1.0.0: {} @@ -5458,7 +5131,7 @@ snapshots: emoji-regex@9.2.2: {} - end-of-stream@1.4.4: + end-of-stream@1.4.5: dependencies: once: 1.4.0 @@ -5469,7 +5142,9 @@ snapshots: entities@4.5.0: {} - error-ex@1.3.2: + entities@7.0.0: {} + + error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -5477,7 +5152,7 @@ snapshots: es-errors@1.3.0: {} - es-module-lexer@1.6.0: {} + es-module-lexer@1.7.0: {} es-object-atoms@1.1.1: dependencies: @@ -5486,7 +5161,7 @@ snapshots: es-set-tostringtag@2.1.0: dependencies: es-errors: 1.3.0 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 has-tostringtag: 1.0.2 hasown: 2.0.2 @@ -5516,60 +5191,34 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.23.1: + esbuild@0.27.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.23.1 - '@esbuild/android-arm': 0.23.1 - '@esbuild/android-arm64': 0.23.1 - '@esbuild/android-x64': 0.23.1 - '@esbuild/darwin-arm64': 0.23.1 - '@esbuild/darwin-x64': 0.23.1 - '@esbuild/freebsd-arm64': 0.23.1 - '@esbuild/freebsd-x64': 0.23.1 - '@esbuild/linux-arm': 0.23.1 - '@esbuild/linux-arm64': 0.23.1 - '@esbuild/linux-ia32': 0.23.1 - '@esbuild/linux-loong64': 0.23.1 - '@esbuild/linux-mips64el': 0.23.1 - '@esbuild/linux-ppc64': 0.23.1 - '@esbuild/linux-riscv64': 0.23.1 - '@esbuild/linux-s390x': 0.23.1 - '@esbuild/linux-x64': 0.23.1 - '@esbuild/netbsd-x64': 0.23.1 - '@esbuild/openbsd-arm64': 0.23.1 - '@esbuild/openbsd-x64': 0.23.1 - '@esbuild/sunos-x64': 0.23.1 - '@esbuild/win32-arm64': 0.23.1 - '@esbuild/win32-ia32': 0.23.1 - '@esbuild/win32-x64': 0.23.1 - - esbuild@0.24.2: - optionalDependencies: - '@esbuild/aix-ppc64': 0.24.2 - '@esbuild/android-arm': 0.24.2 - '@esbuild/android-arm64': 0.24.2 - '@esbuild/android-x64': 0.24.2 - '@esbuild/darwin-arm64': 0.24.2 - '@esbuild/darwin-x64': 0.24.2 - '@esbuild/freebsd-arm64': 0.24.2 - '@esbuild/freebsd-x64': 0.24.2 - '@esbuild/linux-arm': 0.24.2 - '@esbuild/linux-arm64': 0.24.2 - '@esbuild/linux-ia32': 0.24.2 - '@esbuild/linux-loong64': 0.24.2 - '@esbuild/linux-mips64el': 0.24.2 - '@esbuild/linux-ppc64': 0.24.2 - '@esbuild/linux-riscv64': 0.24.2 - '@esbuild/linux-s390x': 0.24.2 - '@esbuild/linux-x64': 0.24.2 - '@esbuild/netbsd-arm64': 0.24.2 - '@esbuild/netbsd-x64': 0.24.2 - '@esbuild/openbsd-arm64': 0.24.2 - '@esbuild/openbsd-x64': 0.24.2 - '@esbuild/sunos-x64': 0.24.2 - '@esbuild/win32-arm64': 0.24.2 - '@esbuild/win32-ia32': 0.24.2 - '@esbuild/win32-x64': 0.24.2 + '@esbuild/aix-ppc64': 0.27.2 + '@esbuild/android-arm': 0.27.2 + '@esbuild/android-arm64': 0.27.2 + '@esbuild/android-x64': 0.27.2 + '@esbuild/darwin-arm64': 0.27.2 + '@esbuild/darwin-x64': 0.27.2 + '@esbuild/freebsd-arm64': 0.27.2 + '@esbuild/freebsd-x64': 0.27.2 + '@esbuild/linux-arm': 0.27.2 + '@esbuild/linux-arm64': 0.27.2 + '@esbuild/linux-ia32': 0.27.2 + '@esbuild/linux-loong64': 0.27.2 + '@esbuild/linux-mips64el': 0.27.2 + '@esbuild/linux-ppc64': 0.27.2 + '@esbuild/linux-riscv64': 0.27.2 + '@esbuild/linux-s390x': 0.27.2 + '@esbuild/linux-x64': 0.27.2 + '@esbuild/netbsd-arm64': 0.27.2 + '@esbuild/netbsd-x64': 0.27.2 + '@esbuild/openbsd-arm64': 0.27.2 + '@esbuild/openbsd-x64': 0.27.2 + '@esbuild/openharmony-arm64': 0.27.2 + '@esbuild/sunos-x64': 0.27.2 + '@esbuild/win32-arm64': 0.27.2 + '@esbuild/win32-ia32': 0.27.2 + '@esbuild/win32-x64': 0.27.2 escalade@3.2.0: {} @@ -5577,95 +5226,99 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.0.1(eslint@9.19.0(jiti@2.4.2)): + eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.6.1)): dependencies: - eslint: 9.19.0(jiti@2.4.2) + eslint: 9.39.2(jiti@2.6.1) - eslint-plugin-file-progress@3.0.1(eslint@9.19.0(jiti@2.4.2)): + eslint-plugin-file-progress@3.0.2(eslint@9.39.2(jiti@2.6.1)): dependencies: - eslint: 9.19.0(jiti@2.4.2) + eslint: 9.39.2(jiti@2.6.1) nanospinner: 1.2.2 picocolors: 1.1.1 - eslint-plugin-jsdoc@50.6.3(eslint@9.19.0(jiti@2.4.2)): + eslint-plugin-jsdoc@61.5.0(eslint@9.39.2(jiti@2.6.1)): dependencies: - '@es-joy/jsdoccomment': 0.49.0 + '@es-joy/jsdoccomment': 0.76.0 + '@es-joy/resolve.exports': 1.2.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint: 9.19.0(jiti@2.4.2) - espree: 10.3.0 - esquery: 1.6.0 - parse-imports: 2.2.1 - semver: 7.7.0 + eslint: 9.39.2(jiti@2.6.1) + espree: 10.4.0 + esquery: 1.7.0 + html-entities: 2.6.0 + object-deep-merge: 2.0.0 + parse-imports-exports: 0.2.4 + semver: 7.7.3 spdx-expression-parse: 4.0.0 - synckit: 0.9.2 + to-valid-identifier: 1.0.0 transitivePeerDependencies: - supports-color - eslint-plugin-prettier@5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@10.0.1(eslint@9.19.0(jiti@2.4.2)))(eslint@9.19.0(jiti@2.4.2))(prettier@3.4.2): + eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))(prettier@3.7.4): dependencies: - eslint: 9.19.0(jiti@2.4.2) - prettier: 3.4.2 - prettier-linter-helpers: 1.0.0 - synckit: 0.9.2 + eslint: 9.39.2(jiti@2.6.1) + prettier: 3.7.4 + prettier-linter-helpers: 1.0.1 + synckit: 0.11.11 optionalDependencies: - '@types/eslint': 9.6.1 - eslint-config-prettier: 10.0.1(eslint@9.19.0(jiti@2.4.2)) + eslint-config-prettier: 10.1.8(eslint@9.39.2(jiti@2.6.1)) - eslint-plugin-unicorn@56.0.1(eslint@9.19.0(jiti@2.4.2)): + eslint-plugin-unicorn@62.0.0(eslint@9.39.2(jiti@2.6.1)): dependencies: - '@babel/helper-validator-identifier': 7.25.9 - '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@2.4.2)) - ci-info: 4.1.0 + '@babel/helper-validator-identifier': 7.28.5 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@eslint/plugin-kit': 0.4.1 + change-case: 5.4.4 + ci-info: 4.3.1 clean-regexp: 1.0.0 - core-js-compat: 3.40.0 - eslint: 9.19.0(jiti@2.4.2) - esquery: 1.6.0 - globals: 15.15.0 - indent-string: 4.0.0 - is-builtin-module: 3.2.1 + core-js-compat: 3.47.0 + eslint: 9.39.2(jiti@2.6.1) + esquery: 1.7.0 + find-up-simple: 1.0.1 + globals: 16.5.0 + indent-string: 5.0.0 + is-builtin-module: 5.0.0 jsesc: 3.1.0 pluralize: 8.0.0 - read-pkg-up: 7.0.1 regexp-tree: 0.1.27 - regjsparser: 0.10.0 - semver: 7.7.0 - strip-indent: 3.0.0 + regjsparser: 0.13.0 + semver: 7.7.3 + strip-indent: 4.1.1 - eslint-scope@8.2.0: + eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.0: {} + eslint-visitor-keys@4.2.1: {} - eslint@9.19.0(jiti@2.4.2): + eslint@9.39.2(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@2.4.2)) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.19.2 - '@eslint/core': 0.10.0 - '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.19.0 - '@eslint/plugin-kit': 0.2.5 - '@humanfs/node': 0.16.6 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.1 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.3 + '@eslint/js': 9.39.2 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.1 - '@types/estree': 1.0.6 - '@types/json-schema': 7.0.15 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint-scope: 8.2.0 - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 - esquery: 1.6.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 @@ -5680,17 +5333,17 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.4.2 + jiti: 2.6.1 transitivePeerDependencies: - supports-color - espree@10.3.0: + espree@10.4.0: dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 4.2.0 + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 - esquery@1.6.0: + esquery@1.7.0: dependencies: estraverse: 5.3.0 @@ -5704,7 +5357,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 esutils@2.0.3: {} @@ -5726,13 +5379,13 @@ snapshots: dependencies: pify: 2.3.0 - expect-type@1.1.0: {} + expect-type@1.3.0: {} extend@3.0.2: {} extract-zip@2.0.1(supports-color@8.1.1): dependencies: - debug: 4.4.0(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -5746,29 +5399,21 @@ snapshots: fast-diff@1.3.0: {} - fast-glob@3.3.3: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} - fastq@1.19.0: + fast-xml-parser@5.3.3: dependencies: - reusify: 1.0.4 + strnum: 2.1.2 fd-slicer@1.1.0: dependencies: pend: 1.2.0 - fdir@6.4.3(picomatch@4.0.2): + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: - picomatch: 4.0.2 + picomatch: 4.0.3 fflate@0.8.2: {} @@ -5780,9 +5425,7 @@ snapshots: dependencies: flat-cache: 4.0.1 - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 + find-up-simple@1.0.1: {} find-up@2.1.0: dependencies: @@ -5802,36 +5445,43 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 + fix-dts-default-cjs-exports@1.0.1: + dependencies: + magic-string: 0.30.21 + mlly: 1.8.0 + rollup: 4.55.1 + flat-cache@4.0.1: dependencies: - flatted: 3.3.2 + flatted: 3.3.3 keyv: 4.5.4 - flatted@3.3.2: {} + flatted@3.3.3: {} - focus-trap@7.6.4: + focus-trap@7.7.1: dependencies: - tabbable: 6.2.0 + tabbable: 6.4.0 - foreground-child@3.3.0: + foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 forever-agent@0.6.1: {} - form-data@4.0.2: + form-data@4.0.5: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 es-set-tostringtag: 2.1.0 + hasown: 2.0.2 mime-types: 2.1.35 fs-extra@9.1.0: dependencies: at-least-node: 1.0.0 graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 fsevents@2.3.3: @@ -5841,7 +5491,7 @@ snapshots: get-caller-file@2.0.5: {} - get-intrinsic@1.2.7: + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 @@ -5866,26 +5516,18 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 - get-stdin@9.0.0: {} - get-stream@5.2.0: dependencies: - pump: 3.0.2 + pump: 3.0.3 - get-tsconfig@4.10.0: + get-tsconfig@4.13.0: dependencies: resolve-pkg-maps: 1.0.0 - getos@3.2.1: - dependencies: - async: 3.2.6 - getpass@0.1.7: dependencies: assert-plus: 1.0.0 - git-hooks-list@3.2.0: {} - git-raw-commits@3.0.0: dependencies: dargs: 7.0.0 @@ -5900,23 +5542,19 @@ snapshots: git-semver-tags@5.0.1: dependencies: meow: 8.1.2 - semver: 7.7.0 + semver: 7.7.3 gitconfiglocal@1.0.0: dependencies: ini: 1.3.8 - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - glob@10.4.5: + glob@10.5.0: dependencies: - foreground-child: 3.3.0 + foreground-child: 3.3.1 jackspeak: 3.4.3 minimatch: 9.0.5 minipass: 7.1.2 @@ -5929,14 +5567,12 @@ snapshots: globals@14.0.0: {} - globals@15.15.0: {} + globals@16.5.0: {} gopd@1.2.0: {} graceful-fs@4.2.11: {} - graphemer@1.4.0: {} - handlebars@4.7.8: dependencies: minimist: 1.2.8 @@ -5958,11 +5594,16 @@ snapshots: dependencies: has-symbols: 1.1.0 + hasha@5.2.2: + dependencies: + is-stream: 2.0.1 + type-fest: 0.8.1 + hasown@2.0.2: dependencies: function-bind: 1.1.2 - hast-util-to-html@9.0.4: + hast-util-to-html@9.0.5: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.3 @@ -5970,8 +5611,8 @@ snapshots: comma-separated-tokens: 2.0.3 hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 - property-information: 6.5.0 + mdast-util-to-hast: 13.2.1 + property-information: 7.1.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 zwitch: 2.0.4 @@ -5980,8 +5621,6 @@ snapshots: dependencies: '@types/hast': 3.0.4 - he@1.2.0: {} - hookable@5.5.3: {} hosted-git-info@2.8.9: {} @@ -5990,9 +5629,7 @@ snapshots: dependencies: lru-cache: 6.0.0 - html-encoding-sniffer@4.0.0: - dependencies: - whatwg-encoding: 3.1.1 + html-entities@2.6.0: {} html-escaper@2.0.2: {} @@ -6005,36 +5642,20 @@ snapshots: domutils: 3.2.2 entities: 4.5.0 - http-proxy-agent@7.0.2: - dependencies: - agent-base: 7.1.3 - debug: 4.4.0(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - http-signature@1.4.0: dependencies: assert-plus: 1.0.0 jsprim: 2.0.2 sshpk: 1.18.0 - https-proxy-agent@7.0.6: - dependencies: - agent-base: 7.1.3 - debug: 4.4.0(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - human-signals@1.1.1: {} - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - ieee754@1.2.1: {} ignore@5.3.2: {} + ignore@7.0.5: {} + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 @@ -6044,6 +5665,8 @@ snapshots: indent-string@4.0.0: {} + indent-string@5.0.0: {} + inherits@2.0.4: {} ini@1.3.8: {} @@ -6052,9 +5675,9 @@ snapshots: is-arrayish@0.2.1: {} - is-builtin-module@3.2.1: + is-builtin-module@5.0.0: dependencies: - builtin-modules: 3.3.0 + builtin-modules: 5.0.0 is-core-module@2.16.1: dependencies: @@ -6073,20 +5696,14 @@ snapshots: global-dirs: 3.0.1 is-path-inside: 3.0.3 - is-number@7.0.0: {} - is-obj@2.0.0: {} is-path-inside@3.0.3: {} is-plain-obj@1.1.0: {} - is-plain-obj@4.1.0: {} - is-plain-object@5.0.0: {} - is-potential-custom-element-name@1.0.1: {} - is-stream@2.0.1: {} is-text-path@1.0.1: @@ -6097,7 +5714,7 @@ snapshots: is-unicode-supported@0.1.0: {} - is-what@4.1.16: {} + is-what@5.5.0: {} isarray@1.0.0: {} @@ -6117,13 +5734,13 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: - '@jridgewell/trace-mapping': 0.3.25 - debug: 4.4.0(supports-color@8.1.1) + '@jridgewell/trace-mapping': 0.3.31 + debug: 4.4.3(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color - istanbul-reports@3.1.7: + istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 @@ -6134,49 +5751,21 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jiti@2.4.2: {} + jiti@2.6.1: {} joycon@3.1.1: {} js-tokens@4.0.0: {} - js-yaml@4.1.0: + js-tokens@9.0.1: {} + + js-yaml@4.1.1: dependencies: argparse: 2.0.1 jsbn@0.1.1: {} - jsdoc-type-pratt-parser@4.1.0: {} - - jsdom@25.0.1: - dependencies: - cssstyle: 4.2.1 - data-urls: 5.0.0 - decimal.js: 10.5.0 - form-data: 4.0.2 - html-encoding-sniffer: 4.0.0 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.16 - parse5: 7.2.1 - rrweb-cssom: 0.7.1 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 5.1.1 - w3c-xmlserializer: 5.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 3.1.1 - whatwg-mimetype: 4.0.0 - whatwg-url: 14.1.1 - ws: 8.18.0 - xml-name-validator: 5.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - jsesc@0.5.0: {} + jsdoc-type-pratt-parser@6.10.0: {} jsesc@3.1.0: {} @@ -6196,7 +5785,7 @@ snapshots: json-stringify-safe@5.0.1: {} - jsonfile@6.1.0: + jsonfile@6.2.0: dependencies: universalify: 2.0.1 optionalDependencies: @@ -6217,8 +5806,6 @@ snapshots: kind-of@6.0.3: {} - lazy-ass@1.6.0: {} - levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -6235,7 +5822,7 @@ snapshots: log-update: 4.0.0 p-map: 4.0.0 rfdc: 1.4.1 - rxjs: 7.8.1 + rxjs: 7.8.2 through: 2.3.8 wrap-ansi: 7.0.0 optionalDependencies: @@ -6274,8 +5861,6 @@ snapshots: lodash.once@4.1.1: {} - lodash.sortby@4.7.0: {} - lodash@4.17.21: {} log-symbols@4.1.0: @@ -6290,7 +5875,7 @@ snapshots: slice-ansi: 4.0.0 wrap-ansi: 6.2.0 - loupe@3.1.3: {} + loupe@3.2.1: {} lru-cache@10.4.3: {} @@ -6298,19 +5883,19 @@ snapshots: dependencies: yallist: 4.0.0 - magic-string@0.30.17: + magic-string@0.30.21: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 magicast@0.3.5: dependencies: - '@babel/parser': 7.26.9 - '@babel/types': 7.26.9 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 source-map-js: 1.2.1 make-dir@4.0.0: dependencies: - semver: 7.7.0 + semver: 7.7.3 map-obj@1.0.1: {} @@ -6320,7 +5905,7 @@ snapshots: math-intrinsics@1.1.0: {} - mdast-util-to-hast@13.2.0: + mdast-util-to-hast@13.2.1: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -6350,12 +5935,10 @@ snapshots: merge-stream@2.0.0: {} - merge2@1.4.1: {} - micromark-util-character@2.1.1: dependencies: micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.1 + micromark-util-types: 2.0.2 micromark-util-encode@2.0.1: {} @@ -6367,12 +5950,7 @@ snapshots: micromark-util-symbol@2.0.1: {} - micromark-util-types@2.0.1: {} - - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 + micromark-util-types@2.0.2: {} mime-db@1.52.0: {} @@ -6384,13 +5962,17 @@ snapshots: min-indent@1.0.1: {} + minimatch@10.1.1: + dependencies: + '@isaacs/brace-expansion': 5.0.0 + minimatch@3.1.2: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.12 minimatch@9.0.5: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimist-options@4.1.0: dependencies: @@ -6402,13 +5984,20 @@ snapshots: minipass@7.1.2: {} - minisearch@7.1.1: {} + minisearch@7.2.0: {} mitt@3.0.1: {} + mlly@1.8.0: + dependencies: + acorn: 8.15.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.2 + modify-values@1.0.1: {} - mrmime@2.0.0: {} + mrmime@2.0.1: {} ms@2.1.3: {} @@ -6420,7 +6009,7 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nanoid@3.3.8: {} + nanoid@3.3.11: {} nanospinner@1.2.2: dependencies: @@ -6430,12 +6019,12 @@ snapshots: neo-async@2.6.2: {} - node-releases@2.0.19: {} + node-releases@2.0.27: {} normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.10 + resolve: 1.22.11 semver: 5.7.2 validate-npm-package-license: 3.0.4 @@ -6443,30 +6032,30 @@ snapshots: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.16.1 - semver: 7.7.0 + semver: 7.7.3 validate-npm-package-license: 3.0.4 npm-normalize-package-bin@4.0.0: {} - npm-run-all2@7.0.2: + npm-run-all2@8.0.4: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 cross-spawn: 7.0.6 memorystream: 0.3.1 - minimatch: 9.0.5 + picomatch: 4.0.3 pidtree: 0.6.0 read-package-json-fast: 4.0.0 - shell-quote: 1.8.2 + shell-quote: 1.8.3 which: 5.0.0 npm-run-path@4.0.1: dependencies: path-key: 3.1.1 - nwsapi@2.2.16: {} - object-assign@4.1.1: {} + object-deep-merge@2.0.0: {} + object-inspect@1.13.4: {} once@1.4.0: @@ -6477,10 +6066,10 @@ snapshots: dependencies: mimic-fn: 2.1.0 - oniguruma-to-es@3.1.0: + oniguruma-to-es@3.1.1: dependencies: emoji-regex-xs: 1.0.0 - regex: 6.0.1 + regex: 6.1.0 regex-recursion: 6.0.2 optionator@0.9.4: @@ -6536,28 +6125,25 @@ snapshots: dependencies: callsites: 3.1.0 - parse-imports@2.2.1: + parse-imports-exports@0.2.4: dependencies: - es-module-lexer: 1.6.0 - slashes: 3.0.12 + parse-statements: 1.0.11 parse-json@4.0.0: dependencies: - error-ex: 1.3.2 + error-ex: 1.3.4 json-parse-better-errors: 1.0.2 parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.26.2 - error-ex: 1.3.2 + '@babel/code-frame': 7.27.1 + error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 parse-srcset@1.0.2: {} - parse5@7.2.1: - dependencies: - entities: 4.5.0 + parse-statements@1.0.11: {} path-browserify@1.0.1: {} @@ -6580,7 +6166,7 @@ snapshots: pathe@2.0.3: {} - pathval@2.0.0: {} + pathval@2.0.1: {} pend@1.2.0: {} @@ -6590,9 +6176,7 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.1: {} - - picomatch@4.0.2: {} + picomatch@4.0.3: {} pidtree@0.6.0: {} @@ -6600,48 +6184,51 @@ snapshots: pify@3.0.0: {} - pirates@4.0.6: {} + pirates@4.0.7: {} + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.0 + pathe: 2.0.3 pluralize@8.0.0: {} - postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.2)(tsx@4.19.2)(yaml@2.7.0): + postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2): dependencies: lilconfig: 3.1.3 optionalDependencies: - jiti: 2.4.2 - postcss: 8.5.2 - tsx: 4.19.2 - yaml: 2.7.0 + jiti: 2.6.1 + postcss: 8.5.6 + tsx: 4.21.0 + yaml: 2.8.2 - postcss@8.5.2: + postcss@8.5.6: dependencies: - nanoid: 3.3.8 + nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 - preact@10.26.0: {} + preact@10.28.2: {} prelude-ls@1.2.1: {} - prettier-linter-helpers@1.0.0: + prettier-linter-helpers@1.0.1: dependencies: fast-diff: 1.3.0 - prettier-plugin-organize-imports@4.1.0(prettier@3.4.2)(typescript@5.7.3)(vue-tsc@2.2.0(typescript@5.7.3)): + prettier-plugin-organize-imports@4.3.0(prettier@3.7.4)(typescript@5.9.3)(vue-tsc@3.2.1(typescript@5.9.3)): dependencies: - prettier: 3.4.2 - typescript: 5.7.3 + prettier: 3.7.4 + typescript: 5.9.3 optionalDependencies: - vue-tsc: 2.2.0(typescript@5.7.3) + vue-tsc: 3.2.1(typescript@5.9.3) - prettier-plugin-packagejson@2.5.8(prettier@3.4.2): + prettier-plugin-pkg@0.21.2(prettier@3.7.4): dependencies: - sort-package-json: 2.14.0 - synckit: 0.9.2 - optionalDependencies: - prettier: 3.4.2 + prettier: 3.7.4 - prettier@3.4.2: {} + prettier@3.7.4: {} pretty-bytes@5.6.0: {} @@ -6649,23 +6236,21 @@ snapshots: process@0.11.10: {} - property-information@6.5.0: {} + property-information@7.1.0: {} proxy-from-env@1.0.0: {} - pump@3.0.2: + pump@3.0.3: dependencies: - end-of-stream: 1.4.4 + end-of-stream: 1.4.5 once: 1.4.0 punycode@2.3.1: {} - qs@6.13.1: + qs@6.14.1: dependencies: side-channel: 1.1.0 - queue-microtask@1.2.3: {} - quick-lru@4.0.1: {} read-package-json-fast@4.0.0: @@ -6726,15 +6311,15 @@ snapshots: regex-utilities@2.3.0: {} - regex@6.0.1: + regex@6.1.0: dependencies: regex-utilities: 2.3.0 regexp-tree@0.1.27: {} - regjsparser@0.10.0: + regjsparser@0.13.0: dependencies: - jsesc: 0.5.0 + jsesc: 3.1.0 request-progress@3.0.0: dependencies: @@ -6742,13 +6327,15 @@ snapshots: require-directory@2.1.1: {} + reserved-identifiers@1.2.0: {} + resolve-from@4.0.0: {} resolve-from@5.0.0: {} resolve-pkg-maps@1.0.0: {} - resolve@1.22.10: + resolve@1.22.11: dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 @@ -6759,48 +6346,40 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 - reusify@1.0.4: {} - rfdc@1.4.1: {} - rimraf@5.0.10: - dependencies: - glob: 10.4.5 - - rollup@4.34.7: + rollup@4.55.1: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.34.7 - '@rollup/rollup-android-arm64': 4.34.7 - '@rollup/rollup-darwin-arm64': 4.34.7 - '@rollup/rollup-darwin-x64': 4.34.7 - '@rollup/rollup-freebsd-arm64': 4.34.7 - '@rollup/rollup-freebsd-x64': 4.34.7 - '@rollup/rollup-linux-arm-gnueabihf': 4.34.7 - '@rollup/rollup-linux-arm-musleabihf': 4.34.7 - '@rollup/rollup-linux-arm64-gnu': 4.34.7 - '@rollup/rollup-linux-arm64-musl': 4.34.7 - '@rollup/rollup-linux-loongarch64-gnu': 4.34.7 - '@rollup/rollup-linux-powerpc64le-gnu': 4.34.7 - '@rollup/rollup-linux-riscv64-gnu': 4.34.7 - '@rollup/rollup-linux-s390x-gnu': 4.34.7 - '@rollup/rollup-linux-x64-gnu': 4.34.7 - '@rollup/rollup-linux-x64-musl': 4.34.7 - '@rollup/rollup-win32-arm64-msvc': 4.34.7 - '@rollup/rollup-win32-ia32-msvc': 4.34.7 - '@rollup/rollup-win32-x64-msvc': 4.34.7 + '@rollup/rollup-android-arm-eabi': 4.55.1 + '@rollup/rollup-android-arm64': 4.55.1 + '@rollup/rollup-darwin-arm64': 4.55.1 + '@rollup/rollup-darwin-x64': 4.55.1 + '@rollup/rollup-freebsd-arm64': 4.55.1 + '@rollup/rollup-freebsd-x64': 4.55.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.55.1 + '@rollup/rollup-linux-arm-musleabihf': 4.55.1 + '@rollup/rollup-linux-arm64-gnu': 4.55.1 + '@rollup/rollup-linux-arm64-musl': 4.55.1 + '@rollup/rollup-linux-loong64-gnu': 4.55.1 + '@rollup/rollup-linux-loong64-musl': 4.55.1 + '@rollup/rollup-linux-ppc64-gnu': 4.55.1 + '@rollup/rollup-linux-ppc64-musl': 4.55.1 + '@rollup/rollup-linux-riscv64-gnu': 4.55.1 + '@rollup/rollup-linux-riscv64-musl': 4.55.1 + '@rollup/rollup-linux-s390x-gnu': 4.55.1 + '@rollup/rollup-linux-x64-gnu': 4.55.1 + '@rollup/rollup-linux-x64-musl': 4.55.1 + '@rollup/rollup-openbsd-x64': 4.55.1 + '@rollup/rollup-openharmony-arm64': 4.55.1 + '@rollup/rollup-win32-arm64-msvc': 4.55.1 + '@rollup/rollup-win32-ia32-msvc': 4.55.1 + '@rollup/rollup-win32-x64-gnu': 4.55.1 + '@rollup/rollup-win32-x64-msvc': 4.55.1 fsevents: 2.3.3 - rrweb-cssom@0.7.1: {} - - rrweb-cssom@0.8.0: {} - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - rxjs@7.8.1: + rxjs@7.8.2: dependencies: tslib: 2.8.1 @@ -6810,24 +6389,20 @@ snapshots: safer-buffer@2.1.2: {} - sanitize-html@2.14.0: + sanitize-html@2.17.0: dependencies: deepmerge: 4.3.1 escape-string-regexp: 4.0.0 htmlparser2: 8.0.2 is-plain-object: 5.0.0 parse-srcset: 1.0.2 - postcss: 8.5.2 - - saxes@6.0.0: - dependencies: - xmlchars: 2.2.0 + postcss: 8.5.6 search-insights@2.17.3: {} semver@5.7.2: {} - semver@7.7.0: {} + semver@7.7.3: {} shebang-command@2.0.0: dependencies: @@ -6835,16 +6410,16 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.8.2: {} + shell-quote@1.8.3: {} - shiki@2.4.1: + shiki@2.5.0: dependencies: - '@shikijs/core': 2.4.1 - '@shikijs/engine-javascript': 2.4.1 - '@shikijs/engine-oniguruma': 2.4.1 - '@shikijs/langs': 2.4.1 - '@shikijs/themes': 2.4.1 - '@shikijs/types': 2.4.1 + '@shikijs/core': 2.5.0 + '@shikijs/engine-javascript': 2.5.0 + '@shikijs/engine-oniguruma': 2.5.0 + '@shikijs/langs': 2.5.0 + '@shikijs/themes': 2.5.0 + '@shikijs/types': 2.5.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -6855,16 +6430,16 @@ snapshots: side-channel-map@1.0.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 object-inspect: 1.13.4 side-channel-weakmap@1.0.2: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 object-inspect: 1.13.4 side-channel-map: 1.0.1 @@ -6882,14 +6457,12 @@ snapshots: signal-exit@4.1.0: {} - sirv@3.0.0: + sirv@3.0.2: dependencies: - '@polka/url': 1.0.0-next.28 - mrmime: 2.0.0 + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 totalist: 3.0.1 - slashes@3.0.12: {} - slice-ansi@3.0.0: dependencies: ansi-styles: 4.3.0 @@ -6902,47 +6475,32 @@ snapshots: astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - sort-object-keys@1.1.3: {} - - sort-package-json@2.14.0: - dependencies: - detect-indent: 7.0.1 - detect-newline: 4.0.1 - get-stdin: 9.0.0 - git-hooks-list: 3.2.0 - is-plain-obj: 4.1.0 - semver: 7.7.0 - sort-object-keys: 1.1.3 - tinyglobby: 0.2.10 - source-map-js@1.2.1: {} source-map@0.6.1: {} - source-map@0.8.0-beta.0: - dependencies: - whatwg-url: 7.1.0 + source-map@0.7.6: {} space-separated-tokens@2.0.2: {} spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.21 + spdx-license-ids: 3.0.22 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.21 + spdx-license-ids: 3.0.22 spdx-expression-parse@4.0.0: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.21 + spdx-license-ids: 3.0.22 - spdx-license-ids@3.0.21: {} + spdx-license-ids@3.0.22: {} speakingurl@14.0.1: {} @@ -6968,7 +6526,7 @@ snapshots: stackback@0.0.2: {} - std-env@3.8.0: {} + std-env@3.10.0: {} string-width@4.2.3: dependencies: @@ -6980,7 +6538,7 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 string_decoder@1.1.1: dependencies: @@ -6999,9 +6557,9 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + strip-ansi@7.1.2: dependencies: - ansi-regex: 6.1.0 + ansi-regex: 6.2.2 strip-bom@3.0.0: {} @@ -7011,21 +6569,29 @@ snapshots: dependencies: min-indent: 1.0.1 + strip-indent@4.1.1: {} + strip-json-comments@3.1.1: {} - sucrase@3.35.0: + strip-literal@3.1.0: + dependencies: + js-tokens: 9.0.1 + + strnum@2.1.2: {} + + sucrase@3.35.1: dependencies: - '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/gen-mapping': 0.3.13 commander: 4.1.1 - glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 - pirates: 4.0.6 + pirates: 4.0.7 + tinyglobby: 0.2.15 ts-interface-checker: 0.1.13 - superjson@2.2.2: + superjson@2.2.6: dependencies: - copy-anything: 3.0.5 + copy-anything: 4.0.5 supports-color@5.5.0: dependencies: @@ -7041,19 +6607,18 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - symbol-tree@3.2.4: {} - - synckit@0.9.2: + synckit@0.11.11: dependencies: - '@pkgr/core': 0.1.1 - tslib: 2.8.1 + '@pkgr/core': 0.2.9 - tabbable@6.2.0: {} + systeminformation@5.30.1: {} + + tabbable@6.4.0: {} test-exclude@7.0.1: dependencies: '@istanbuljs/schema': 0.1.3 - glob: 10.4.5 + glob: 10.5.0 minimatch: 9.0.5 text-extensions@1.9.0: {} @@ -7079,42 +6644,35 @@ snapshots: tinyexec@0.3.2: {} - tinyglobby@0.2.10: + tinyglobby@0.2.15: dependencies: - fdir: 6.4.3(picomatch@4.0.2) - picomatch: 4.0.2 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 - tinypool@1.0.2: {} + tinypool@1.1.1: {} tinyrainbow@2.0.0: {} - tinyspy@3.0.2: {} + tinyspy@4.0.4: {} - tldts-core@6.1.77: {} + tldts-core@6.1.86: {} - tldts@6.1.77: + tldts@6.1.86: dependencies: - tldts-core: 6.1.77 + tldts-core: 6.1.86 - tmp@0.2.3: {} + tmp@0.2.5: {} - to-regex-range@5.0.1: + to-valid-identifier@1.0.0: dependencies: - is-number: 7.0.0 + '@sindresorhus/base62': 1.0.0 + reserved-identifiers: 1.2.0 totalist@3.0.1: {} - tough-cookie@5.1.1: - dependencies: - tldts: 6.1.77 - - tr46@1.0.1: - dependencies: - punycode: 2.3.1 - - tr46@5.0.0: + tough-cookie@5.1.2: dependencies: - punycode: 2.3.1 + tldts: 6.1.86 tree-kill@1.2.2: {} @@ -7122,50 +6680,51 @@ snapshots: trim-newlines@3.0.1: {} - ts-api-utils@2.0.1(typescript@5.7.3): + ts-api-utils@2.4.0(typescript@5.9.3): dependencies: - typescript: 5.7.3 + typescript: 5.9.3 ts-interface-checker@0.1.13: {} - ts-morph@25.0.0: + ts-morph@27.0.2: dependencies: - '@ts-morph/common': 0.26.1 + '@ts-morph/common': 0.28.1 code-block-writer: 13.0.3 tslib@2.8.1: {} - tsup@8.3.6(jiti@2.4.2)(postcss@8.5.2)(tsx@4.19.2)(typescript@5.7.3)(yaml@2.7.0): + tsup@8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2): dependencies: - bundle-require: 5.1.0(esbuild@0.24.2) + bundle-require: 5.1.0(esbuild@0.27.2) cac: 6.7.14 chokidar: 4.0.3 - consola: 3.4.0 - debug: 4.4.0(supports-color@8.1.1) - esbuild: 0.24.2 + consola: 3.4.2 + debug: 4.4.3(supports-color@8.1.1) + esbuild: 0.27.2 + fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.2)(tsx@4.19.2)(yaml@2.7.0) + postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2) resolve-from: 5.0.0 - rollup: 4.34.7 - source-map: 0.8.0-beta.0 - sucrase: 3.35.0 + rollup: 4.55.1 + source-map: 0.7.6 + sucrase: 3.35.1 tinyexec: 0.3.2 - tinyglobby: 0.2.10 + tinyglobby: 0.2.15 tree-kill: 1.2.2 optionalDependencies: - postcss: 8.5.2 - typescript: 5.7.3 + postcss: 8.5.6 + typescript: 5.9.3 transitivePeerDependencies: - jiti - supports-color - tsx - yaml - tsx@4.19.2: + tsx@4.21.0: dependencies: - esbuild: 0.23.1 - get-tsconfig: 4.10.0 + esbuild: 0.27.2 + get-tsconfig: 4.13.0 optionalDependencies: fsevents: 2.3.3 @@ -7189,24 +6748,27 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3): + typescript-eslint@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.23.0(@typescript-eslint/parser@8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/parser': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.19.0(jiti@2.4.2) - typescript: 5.7.3 + '@typescript-eslint/eslint-plugin': 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - typescript@5.7.3: {} + typescript@5.9.3: {} + + ufo@1.6.2: {} uglify-js@3.19.3: optional: true - undici-types@6.20.0: {} + undici-types@6.21.0: {} - unist-util-is@6.0.0: + unist-util-is@6.0.1: dependencies: '@types/unist': 3.0.3 @@ -7218,24 +6780,24 @@ snapshots: dependencies: '@types/unist': 3.0.3 - unist-util-visit-parents@6.0.1: + unist-util-visit-parents@6.0.2: dependencies: '@types/unist': 3.0.3 - unist-util-is: 6.0.0 + unist-util-is: 6.0.1 unist-util-visit@5.0.0: dependencies: '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 universalify@2.0.1: {} untildify@4.0.0: {} - update-browserslist-db@1.1.2(browserslist@4.24.4): + update-browserslist-db@1.2.3(browserslist@4.28.1): dependencies: - browserslist: 4.24.4 + browserslist: 4.28.1 escalade: 3.2.0 picocolors: 1.1.1 @@ -7252,7 +6814,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - validator@13.12.0: {} + validator@13.15.26: {} verror@1.10.0: dependencies: @@ -7260,7 +6822,7 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vfile-message@4.0.2: + vfile-message@4.0.3: dependencies: '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 @@ -7268,15 +6830,15 @@ snapshots: vfile@6.0.3: dependencies: '@types/unist': 3.0.3 - vfile-message: 4.0.2 + vfile-message: 4.0.3 - vite-node@3.0.5(@types/node@22.13.0)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0): + vite-node@3.2.4(@types/node@22.19.3)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: cac: 6.7.14 - debug: 4.4.0(supports-color@8.1.1) - es-module-lexer: 1.6.0 + debug: 4.4.3(supports-color@8.1.1) + es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.1.0(@types/node@22.13.0)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0) + vite: 7.3.1(@types/node@22.19.3)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' - jiti @@ -7291,49 +6853,52 @@ snapshots: - tsx - yaml - vite@5.4.14(@types/node@22.13.0): + vite@5.4.21(@types/node@22.19.3): dependencies: esbuild: 0.21.5 - postcss: 8.5.2 - rollup: 4.34.7 + postcss: 8.5.6 + rollup: 4.55.1 optionalDependencies: - '@types/node': 22.13.0 + '@types/node': 22.19.3 fsevents: 2.3.3 - vite@6.1.0(@types/node@22.13.0)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0): + vite@7.3.1(@types/node@22.19.3)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: - esbuild: 0.24.2 - postcss: 8.5.2 - rollup: 4.34.7 + esbuild: 0.27.2 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.55.1 + tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 22.13.0 + '@types/node': 22.19.3 fsevents: 2.3.3 - jiti: 2.4.2 - tsx: 4.19.2 - yaml: 2.7.0 + jiti: 2.6.1 + tsx: 4.21.0 + yaml: 2.8.2 - vitepress@1.6.3(@algolia/client-search@5.20.2)(@types/node@22.13.0)(postcss@8.5.2)(search-insights@2.17.3)(typescript@5.7.3): + vitepress@1.6.4(@algolia/client-search@5.46.2)(@types/node@22.19.3)(change-case@5.4.4)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.3): dependencies: '@docsearch/css': 3.8.2 - '@docsearch/js': 3.8.2(@algolia/client-search@5.20.2)(search-insights@2.17.3) - '@iconify-json/simple-icons': 1.2.24 - '@shikijs/core': 2.4.1 - '@shikijs/transformers': 2.4.1 - '@shikijs/types': 2.4.1 + '@docsearch/js': 3.8.2(@algolia/client-search@5.46.2)(search-insights@2.17.3) + '@iconify-json/simple-icons': 1.2.65 + '@shikijs/core': 2.5.0 + '@shikijs/transformers': 2.5.0 + '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.1(vite@5.4.14(@types/node@22.13.0))(vue@3.5.13(typescript@5.7.3)) - '@vue/devtools-api': 7.7.2 - '@vue/shared': 3.5.13 - '@vueuse/core': 12.5.0(typescript@5.7.3) - '@vueuse/integrations': 12.7.0(focus-trap@7.6.4)(typescript@5.7.3) - focus-trap: 7.6.4 + '@vitejs/plugin-vue': 5.2.4(vite@5.4.21(@types/node@22.19.3))(vue@3.5.26(typescript@5.9.3)) + '@vue/devtools-api': 7.7.9 + '@vue/shared': 3.5.26 + '@vueuse/core': 12.8.2(typescript@5.9.3) + '@vueuse/integrations': 12.8.2(change-case@5.4.4)(focus-trap@7.7.1)(typescript@5.9.3) + focus-trap: 7.7.1 mark.js: 8.11.1 - minisearch: 7.1.1 - shiki: 2.4.1 - vite: 5.4.14(@types/node@22.13.0) - vue: 3.5.13(typescript@5.7.3) + minisearch: 7.2.0 + shiki: 2.5.0 + vite: 5.4.21(@types/node@22.19.3) + vue: 3.5.26(typescript@5.9.3) optionalDependencies: - postcss: 8.5.2 + postcss: 8.5.6 transitivePeerDependencies: - '@algolia/client-search' - '@types/node' @@ -7361,32 +6926,34 @@ snapshots: - typescript - universal-cookie - vitest@3.0.5(@types/node@22.13.0)(@vitest/ui@3.0.5)(jiti@2.4.2)(jsdom@25.0.1)(tsx@4.19.2)(yaml@2.7.0): - dependencies: - '@vitest/expect': 3.0.5 - '@vitest/mocker': 3.0.5(vite@6.1.0(@types/node@22.13.0)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0)) - '@vitest/pretty-format': 3.0.5 - '@vitest/runner': 3.0.5 - '@vitest/snapshot': 3.0.5 - '@vitest/spy': 3.0.5 - '@vitest/utils': 3.0.5 - chai: 5.2.0 - debug: 4.4.0(supports-color@8.1.1) - expect-type: 1.1.0 - magic-string: 0.30.17 + vitest@3.2.4(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2): + dependencies: + '@types/chai': 5.2.3 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@22.19.3)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/pretty-format': 3.2.4 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 + debug: 4.4.3(supports-color@8.1.1) + expect-type: 1.3.0 + magic-string: 0.30.21 pathe: 2.0.3 - std-env: 3.8.0 + picomatch: 4.0.3 + std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinypool: 1.0.2 + tinyglobby: 0.2.15 + tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 6.1.0(@types/node@22.13.0)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0) - vite-node: 3.0.5(@types/node@22.13.0)(jiti@2.4.2)(tsx@4.19.2)(yaml@2.7.0) + vite: 7.3.1(@types/node@22.19.3)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) + vite-node: 3.2.4(@types/node@22.19.3)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.13.0 - '@vitest/ui': 3.0.5(vitest@3.0.5) - jsdom: 25.0.1 + '@types/node': 22.19.3 + '@vitest/ui': 3.2.4(vitest@3.2.4) transitivePeerDependencies: - jiti - less @@ -7403,46 +6970,21 @@ snapshots: vscode-uri@3.1.0: {} - vue-tsc@2.2.0(typescript@5.7.3): + vue-tsc@3.2.1(typescript@5.9.3): dependencies: - '@volar/typescript': 2.4.11 - '@vue/language-core': 2.2.0(typescript@5.7.3) - typescript: 5.7.3 + '@volar/typescript': 2.4.27 + '@vue/language-core': 3.2.1 + typescript: 5.9.3 - vue@3.5.13(typescript@5.7.3): + vue@3.5.26(typescript@5.9.3): dependencies: - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-sfc': 3.5.13 - '@vue/runtime-dom': 3.5.13 - '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.7.3)) - '@vue/shared': 3.5.13 + '@vue/compiler-dom': 3.5.26 + '@vue/compiler-sfc': 3.5.26 + '@vue/runtime-dom': 3.5.26 + '@vue/server-renderer': 3.5.26(vue@3.5.26(typescript@5.9.3)) + '@vue/shared': 3.5.26 optionalDependencies: - typescript: 5.7.3 - - w3c-xmlserializer@5.0.0: - dependencies: - xml-name-validator: 5.0.0 - - webidl-conversions@4.0.2: {} - - webidl-conversions@7.0.0: {} - - whatwg-encoding@3.1.1: - dependencies: - iconv-lite: 0.6.3 - - whatwg-mimetype@4.0.0: {} - - whatwg-url@14.1.1: - dependencies: - tr46: 5.0.0 - webidl-conversions: 7.0.0 - - whatwg-url@7.1.0: - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 + typescript: 5.9.3 which@2.0.2: dependencies: @@ -7475,25 +7017,19 @@ snapshots: wrap-ansi@8.1.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 wrappy@1.0.2: {} - ws@8.18.0: {} - - xml-name-validator@5.0.0: {} - - xmlchars@2.2.0: {} - xtend@4.0.2: {} y18n@5.0.8: {} yallist@4.0.0: {} - yaml@2.7.0: {} + yaml@2.8.2: {} yargs-parser@20.2.9: {} diff --git a/scripts/apidocs/output/page.ts b/scripts/apidocs/output/page.ts index a95703099c4..e557454d4d3 100644 --- a/scripts/apidocs/output/page.ts +++ b/scripts/apidocs/output/page.ts @@ -137,6 +137,7 @@ async function toMethodData(method: RawApiDocsMethod): Promise { description, since, parameters, + remarks, returns, throws, signature, @@ -158,6 +159,7 @@ async function toMethodData(method: RawApiDocsMethod): Promise { name, deprecated: mdToHtml(deprecated), description: mdToHtml(description), + remark: remarks.length === 0 ? undefined : mdToHtml(remarks.join('\n')), since, parameters: parameters.map((param) => ({ ...param, @@ -178,6 +180,7 @@ async function toMethodData(method: RawApiDocsMethod): Promise { return { name, description: mdToHtml(description), + remark: remarks.length === 0 ? undefined : mdToHtml(remarks.join('\n')), parameters: parameters.map((param) => ({ ...param, type: param.type.text, diff --git a/scripts/apidocs/processing/class.ts b/scripts/apidocs/processing/class.ts index 33fa213e4cc..6e73d8f5df5 100644 --- a/scripts/apidocs/processing/class.ts +++ b/scripts/apidocs/processing/class.ts @@ -102,7 +102,7 @@ export function processModuleClasses(project: Project): RawApiDocsPage[] { (module: string): boolean => module.endsWith('Module') && !module.startsWith('Simple') ) - ).sort((a, b) => a.getNameOrThrow().localeCompare(b.getNameOrThrow())) + ).toSorted((a, b) => a.getNameOrThrow().localeCompare(b.getNameOrThrow())) ); } @@ -123,7 +123,7 @@ function processModules(modules: ClassDeclaration[]): RawApiDocsPage[] { function processModule( module: ClassDeclaration, - category: string | undefined = undefined + category?: string ): RawApiDocsPage { const title = getModuleName(module); @@ -201,7 +201,7 @@ export function processProjectUtilities(project: Project): RawApiDocsPage { function preparePage( module: JSDocableLikeNode, title: string, - category: string | undefined = undefined + category?: string ): RawApiDocsPage { console.log(`- ${title}`); diff --git a/scripts/apidocs/processing/jsdocs.ts b/scripts/apidocs/processing/jsdocs.ts index 41c1b84af6e..55dea867ef4 100644 --- a/scripts/apidocs/processing/jsdocs.ts +++ b/scripts/apidocs/processing/jsdocs.ts @@ -69,6 +69,10 @@ export function getSeeAlsos(jsdocs: JSDoc): string[] { return getTagsFromJSDoc(jsdocs, 'see', true); } +export function getRemarks(jsdocs: JSDoc): string[] { + return getTagsFromJSDoc(jsdocs, 'remark'); +} + function getOptionalTagFromJSDoc( jsdocs: JSDoc, type: string diff --git a/scripts/apidocs/processing/method.ts b/scripts/apidocs/processing/method.ts index 51879caba64..d46987f381a 100644 --- a/scripts/apidocs/processing/method.ts +++ b/scripts/apidocs/processing/method.ts @@ -73,7 +73,7 @@ function getAllMethods(clazz: ClassDeclaration): MethodDeclaration[] { } } - return Object.values(methods).sort((a, b) => + return Object.values(methods).toSorted((a, b) => a.getName().localeCompare(b.getName()) ); } @@ -170,7 +170,7 @@ function processMethodLikes( }); } }) - .sort((a, b) => a.name.localeCompare(b.name)); + .toSorted((a, b) => a.name.localeCompare(b.name)); } export function processMethodLike( diff --git a/scripts/apidocs/processing/parameter.ts b/scripts/apidocs/processing/parameter.ts index ac35b9604f0..ad42e134007 100644 --- a/scripts/apidocs/processing/parameter.ts +++ b/scripts/apidocs/processing/parameter.ts @@ -188,7 +188,7 @@ function processComplexParameter( }); } }) - .sort((a, b) => a.name.localeCompare(b.name)); + .toSorted((a, b) => a.name.localeCompare(b.name)); } return []; diff --git a/scripts/apidocs/processing/signature.ts b/scripts/apidocs/processing/signature.ts index c7ae872b890..8f6cedcbd0f 100644 --- a/scripts/apidocs/processing/signature.ts +++ b/scripts/apidocs/processing/signature.ts @@ -8,6 +8,7 @@ import { getDescription, getExamples, getJsDocs, + getRemarks, getSeeAlsos, getSince, getThrows, @@ -38,6 +39,10 @@ export interface RawApiDocsSignature { * The parameters of the signature. */ parameters: RawApiDocsParameter[]; + /** + * Additional comments of the signature that are supposed to stand out from the description. + */ + remarks: string[]; /** * The return type of the signature. */ @@ -107,6 +112,7 @@ function processSignature( description: getDescription(jsdocs), since: getSince(jsdocs), parameters, + remarks: getRemarks(jsdocs), returns, throws: getThrows(jsdocs), signature: getSignatureText(signature), diff --git a/scripts/apidocs/utils/paths.ts b/scripts/apidocs/utils/paths.ts index 8abca1ea996..defa10fea1f 100644 --- a/scripts/apidocs/utils/paths.ts +++ b/scripts/apidocs/utils/paths.ts @@ -1,7 +1,6 @@ -import { dirname, resolve } from 'node:path'; -import { fileURLToPath } from 'node:url'; +import { resolve } from 'node:path'; -const FILE_PATH_THIS = dirname(fileURLToPath(import.meta.url)); +const FILE_PATH_THIS = import.meta.dirname; /** * The path to the project directory. */ diff --git a/scripts/generate-locales.ts b/scripts/generate-locales.ts index b4bc2311094..ddb7ed44d5f 100644 --- a/scripts/generate-locales.ts +++ b/scripts/generate-locales.ts @@ -7,6 +7,7 @@ * - `src/locales//index.ts` * - `src/locales///index.ts` * - `src/docs/guide/localization.md` + * - `src/docs/locales/.md` * * If you wish to edit all/specific locale data files you can do so using the * `updateLocaleFileHook()` method. @@ -15,20 +16,27 @@ * Run this script using `pnpm run generate:locales` */ import { constants } from 'node:fs'; -import { access, readFile, readdir, stat, writeFile } from 'node:fs/promises'; -import { dirname, resolve } from 'node:path'; -import { fileURLToPath } from 'node:url'; +import { + access, + mkdir, + readFile, + readdir, + stat, + writeFile, +} from 'node:fs/promises'; +import { resolve } from 'node:path'; import type { LocaleDefinition, MetadataDefinition } from '../src/definitions'; import { keys } from '../src/internal/keys'; import { formatMarkdown, formatTypescript } from './apidocs/utils/format'; // Constants -const pathRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..'); +const pathRoot = resolve(import.meta.dirname, '..'); const pathLocale = resolve(pathRoot, 'src', 'locale'); const pathLocales = resolve(pathRoot, 'src', 'locales'); const pathLocaleIndex = resolve(pathLocale, 'index.ts'); const pathLocalesIndex = resolve(pathLocales, 'index.ts'); +const pathDocsLocales = resolve(pathRoot, 'docs', 'locales'); const pathDocsGuideLocalization = resolve( pathRoot, 'docs', @@ -112,6 +120,10 @@ function escapeField(parent: string, module: string): string { return module; } +function toFakerExportName(locale: string): string { + return `faker${locale.replace(/^([a-z]+)/, (part) => part.toUpperCase())}`; +} + async function loadMetadata(locale: string): Promise { const imported = await import( `file:${resolve(pathLocales, locale, 'metadata.ts')}` @@ -127,6 +139,68 @@ async function tryLoadMetadata(locale: string): Promise { } } +async function generateLocaleDocumentation(locale: string): Promise { + if (locale === 'base') { + return; + } + + const metadata = await tryLoadMetadata(locale); + const localizedFakerExport = toFakerExportName(locale); + const content = ` + + + # ${metadata.title} + ${metadata.title} is one of the many supported [locales](/guide/localization.html#available-locales) in Faker. It uses the language code \`${metadata.code}\` and is available as \`${localizedFakerExport}\`. + + ## Language data + + | Key | Value | + | :--- | :--- | + | Name | ${metadata.title} | + | Local Name | ${metadata.endonym} | + | Language | ${metadata.language} | + | Script | ${metadata.script} | + | Direction | ${metadata.dir} | + + ## Usage + + A few commonly localized methods are shown below. Reload this page to see more random examples. Not [all methods](/api/) are localized in all locales. + + \`\`\`ts + import { ${localizedFakerExport} } from '@faker-js/faker'; + // const { ${localizedFakerExport} } = require('@faker-js/faker'); // CJS + + // Commonly localized methods: + ${localizedFakerExport}.person.fullName(); + ${localizedFakerExport}.location.streetAddress(); + ${localizedFakerExport}.location.city(); + ${localizedFakerExport}.location.state(); + ${localizedFakerExport}.location.zipCode(); + ${localizedFakerExport}.phone.number(); + ${localizedFakerExport}.commerce.productName(); + ${localizedFakerExport}.internet.email(); + ${localizedFakerExport}.internet.url(); + ${localizedFakerExport}.date.month(); + ${localizedFakerExport}.date.weekday(); + ${localizedFakerExport}.word.noun(); + ${localizedFakerExport}.word.verb(); + ${localizedFakerExport}.company.name(); + + // Non-localized methods work as normal: + ${localizedFakerExport}.number.int(); + \`\`\` + + + `; + await mkdir(pathDocsLocales, { recursive: true }); + return writeFile( + resolve(pathDocsLocales, `${locale}.md`), + await formatMarkdown(content) + ); +} + async function generateLocaleFile(locale: string): Promise { const parts = locale.split('_'); const locales = [locale]; @@ -355,7 +429,7 @@ async function normalizeLocaleFile(filePath: string, definitionKey: string) { .slice(0, 1000) // sort entries alphabetically // We cannot sort the entries locale aware as the sort order is not stable within node versions #2905 - .sort() as T + .toSorted() as T ); } @@ -369,13 +443,11 @@ async function normalizeLocaleFile(filePath: string, definitionKey: string) { const legacyDefinitions = ['app', 'cell_phone', 'team']; const definitionsToSkip = [ - 'internet', 'location', 'lorem', 'metadata', 'person', 'phone_number', - 'system', 'word', ...legacyDefinitions, ]; @@ -458,23 +530,27 @@ for (const locale of locales) { console.error(error); } - const localizedFaker = `faker${locale.replace(/^([a-z]+)/, (part) => - part.toUpperCase() - )}`; + const localizedFaker = toFakerExportName(locale); localeIndexImports += `import { faker as ${localizedFaker} } from './${locale}';\n`; localeIndexExportsIndividual += `export { faker as ${localizedFaker} } from './${locale}';\n`; localeIndexExportsGrouped += ` ${locale}: ${localizedFaker},\n`; - localesIndexImports += `import { default as ${locale} } from './${locale}';\n`; + localesIndexImports += `import ${locale} from './${locale}';\n`; localesIndexExportsIndividual += `export { default as ${locale} } from './${locale}';\n`; localesIndexExportsGrouped += ` ${locale},\n`; - localizationLocales += `| \`${locale}\` | ${localeTitle} | \`${localizedFaker}\` |\n`; + const linkedLocale = + locale === 'base' ? '`base`' : `[\`${locale}\`](/locales/${locale}.md)`; + localizationLocales += `| ${linkedLocale} | ${localeTitle} | \`${localizedFaker}\` |\n`; promises.push( // src/locale/.ts // eslint-disable-next-line unicorn/prefer-top-level-await -- Disabled for performance generateLocaleFile(locale), + // /docs/locales/*.md + // eslint-disable-next-line unicorn/prefer-top-level-await -- Disabled for performance + generateLocaleDocumentation(locale), + // src/locales/**/index.ts // eslint-disable-next-line unicorn/prefer-top-level-await -- Disabled for performance generateRecursiveModuleIndexes(pathModules, locale, 'LocaleDefinition', 1) diff --git a/src/definitions/commerce.ts b/src/definitions/commerce.ts index 8b6a1e612b7..d0f8add07ce 100644 --- a/src/definitions/commerce.ts +++ b/src/definitions/commerce.ts @@ -38,4 +38,9 @@ export interface CommerceProductNameDefinition { * Types of products (e.g. chair). */ product: string[]; + + /** + * Patterns to generate localized product names. + */ + pattern: string[]; } diff --git a/src/definitions/finance.ts b/src/definitions/finance.ts index 8755edccbb8..52948aa2c15 100644 --- a/src/definitions/finance.ts +++ b/src/definitions/finance.ts @@ -18,7 +18,7 @@ export type FinanceDefinition = LocaleEntry<{ credit_card: { [issuer: string]: string[] }; /** - * Currencies including their name, code and symbol (e.g. `US Dollar` / `USD` / `$`). + * Currencies including their name, code, symbol and ISO numeric code (e.g. `US Dollar` / `USD` / `$` / '840'). */ currency: Currency[]; diff --git a/src/definitions/person.ts b/src/definitions/person.ts index c761b9a38ba..9ae488a60c2 100644 --- a/src/definitions/person.ts +++ b/src/definitions/person.ts @@ -1,15 +1,30 @@ import type { LocaleEntry } from './definitions'; +/** + * Entries that are dependent on a person's sex. + */ export type PersonEntryDefinition = | { + /** + * Values that are primarily attributable to only females. + */ + female: T[]; + /** + * Values that cannot clearly be attributed to a specific sex or are used for both sexes. + */ generic?: T[]; + /** + * Values that are primarily attributable to only males. + */ male: T[]; - female: T[]; } | { + female?: never; + /** + * Values that cannot clearly be attributed to a specific sex or are used for both sexes. + */ generic: T[]; male?: never; - female?: never; }; type SimplePersonEntryDefinition = PersonEntryDefinition; diff --git a/src/faker.ts b/src/faker.ts index 0b03788b3be..cac89a32bda 100644 --- a/src/faker.ts +++ b/src/faker.ts @@ -1,6 +1,5 @@ import type { LocaleDefinition, MetadataDefinition } from './definitions'; import { FakerError } from './errors/faker-error'; -import { deprecated } from './internal/deprecated'; import type { LocaleProxy } from './internal/locale-proxy'; import { createLocaleProxy } from './internal/locale-proxy'; import { AirlineModule } from './modules/airline'; @@ -18,11 +17,9 @@ import { HackerModule } from './modules/hacker'; import { HelpersModule } from './modules/helpers'; import { ImageModule } from './modules/image'; import { InternetModule } from './modules/internet'; -import type { LocationModule as AddressModule } from './modules/location'; import { LocationModule } from './modules/location'; import { LoremModule } from './modules/lorem'; import { MusicModule } from './modules/music'; -import type { PersonModule as NameModule } from './modules/person'; import { PersonModule } from './modules/person'; import { PhoneModule } from './modules/phone'; import { ScienceModule } from './modules/science'; @@ -87,29 +84,6 @@ export class Faker extends SimpleFaker { readonly vehicle: VehicleModule = new VehicleModule(this); readonly word: WordModule = new WordModule(this); - // Aliases - /** @deprecated Use {@link Faker#location} instead */ - get address(): AddressModule { - deprecated({ - deprecated: 'faker.address', - proposed: 'faker.location', - since: '8.0', - until: '10.0', - }); - return this.location; - } - - /** @deprecated Use {@link Faker#person} instead */ - get name(): NameModule { - deprecated({ - deprecated: 'faker.name', - proposed: 'faker.person', - since: '8.0', - until: '10.0', - }); - return this.person; - } - /** * Creates a new instance of Faker. * @@ -120,7 +94,9 @@ export class Faker extends SimpleFaker { * 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. + * @param options.locale The locale data to use for this instance. + * If an array is provided, the first locale that has a definition for a given property will be used. + * Please make sure that all required locales and their parent locales are present, e.g. `[de_AT, de, en, base]`. * @param options.randomizer The Randomizer to use. * Specify this only if you want to use it to achieve a specific goal, * such as sharing the same random generator with other instances/tools. @@ -148,6 +124,7 @@ export class Faker extends SimpleFaker { /** * The locale data to use for this instance. * If an array is provided, the first locale that has a definition for a given property will be used. + * Please make sure that all required locales and their parent locales are present, e.g. `[de_AT, de, en, base]`. * * @see mergeLocales(): For more information about how the locales are merged. */ diff --git a/src/index.ts b/src/index.ts index a8c4ecea739..c100642a9e5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -69,7 +69,7 @@ export type { HelpersModule, SimpleHelpersModule } from './modules/helpers'; export type { ImageModule } from './modules/image'; export { IPv4Network } from './modules/internet'; export type { IPv4NetworkType, InternetModule } from './modules/internet'; -export type { LocationModule } from './modules/location'; +export type { LocationModule, SimpleLocationModule } from './modules/location'; export type { LoremModule } from './modules/lorem'; export type { MusicModule } from './modules/music'; export type { NumberModule } from './modules/number'; diff --git a/src/internal/date.ts b/src/internal/date.ts index 40751c2d997..8bc4cbcd270 100644 --- a/src/internal/date.ts +++ b/src/internal/date.ts @@ -6,7 +6,7 @@ import { FakerError } from '../errors/faker-error'; * @param date The date to convert. * @param name The reference name used for error messages. Defaults to `'refDate'`. * - * @throws If the given date is invalid. + * @throws {FakerError} If the given date is invalid. */ export function toDate( date: string | Date | number, diff --git a/src/internal/locale-proxy.ts b/src/internal/locale-proxy.ts index dbb9f2779f2..3e77a93a4cd 100644 --- a/src/internal/locale-proxy.ts +++ b/src/internal/locale-proxy.ts @@ -72,6 +72,7 @@ export function assertLocaleData( } else if (value === undefined) { throw new FakerError( `The locale data for '${path.join('.')}' are missing in this locale. + If this is a custom Faker instance, please make sure all required locales are used e.g. '[de_AT, de, en, base]'. Please contribute the missing data to the project or use a locale/Faker instance that has these data. For more information see https://fakerjs.dev/guide/localization.html` ); diff --git a/src/locale/bn_BD.ts b/src/locale/bn_BD.ts new file mode 100644 index 00000000000..d8044e252c0 --- /dev/null +++ b/src/locale/bn_BD.ts @@ -0,0 +1,25 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ + +import { Faker } from '../faker'; +import base from '../locales/base'; +import bn_BD from '../locales/bn_BD'; +import en from '../locales/en'; + +/** + * The faker instance for the `bn_BD` locale. + * + * - Language: Bengali (Bangladesh) + * - Endonym: বাংলা (বাংলাদেশ) + * + * This instance uses the following locales internally (in descending precedence): + * + * - `bn_BD` + * - `en` + * - `base` + */ +export const faker = new Faker({ + locale: [bn_BD, en, base], +}); diff --git a/src/locale/cy.ts b/src/locale/cy.ts new file mode 100644 index 00000000000..a9ef3c778e2 --- /dev/null +++ b/src/locale/cy.ts @@ -0,0 +1,25 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ + +import { Faker } from '../faker'; +import base from '../locales/base'; +import cy from '../locales/cy'; +import en from '../locales/en'; + +/** + * The faker instance for the `cy` locale. + * + * - Language: Welsh + * - Endonym: Cymraeg + * + * This instance uses the following locales internally (in descending precedence): + * + * - `cy` + * - `en` + * - `base` + */ +export const faker = new Faker({ + locale: [cy, en, base], +}); diff --git a/src/locale/index.ts b/src/locale/index.ts index cf1e6f50510..5a0d94c1a2d 100644 --- a/src/locale/index.ts +++ b/src/locale/index.ts @@ -7,7 +7,9 @@ import { faker as fakerAF_ZA } from './af_ZA'; import { faker as fakerAR } from './ar'; import { faker as fakerAZ } from './az'; import { faker as fakerBASE } from './base'; +import { faker as fakerBN_BD } from './bn_BD'; import { faker as fakerCS_CZ } from './cs_CZ'; +import { faker as fakerCY } from './cy'; import { faker as fakerDA } from './da'; import { faker as fakerDE } from './de'; import { faker as fakerDE_AT } from './de_AT'; @@ -47,6 +49,8 @@ import { faker as fakerIT } from './it'; import { faker as fakerJA } from './ja'; import { faker as fakerKA_GE } from './ka_GE'; import { faker as fakerKO } from './ko'; +import { faker as fakerKU_ckb } from './ku_ckb'; +import { faker as fakerKU_kmr_latin } from './ku_kmr_latin'; import { faker as fakerLV } from './lv'; import { faker as fakerMK } from './mk'; import { faker as fakerNB_NO } from './nb_NO'; @@ -60,8 +64,10 @@ import { faker as fakerRO } from './ro'; import { faker as fakerRO_MD } from './ro_MD'; import { faker as fakerRU } from './ru'; import { faker as fakerSK } from './sk'; +import { faker as fakerSL_SI } from './sl_SI'; import { faker as fakerSR_RS_latin } from './sr_RS_latin'; import { faker as fakerSV } from './sv'; +import { faker as fakerTA_IN } from './ta_IN'; import { faker as fakerTH } from './th'; import { faker as fakerTR } from './tr'; import { faker as fakerUK } from './uk'; @@ -77,7 +83,9 @@ export { faker as fakerAF_ZA } from './af_ZA'; export { faker as fakerAR } from './ar'; export { faker as fakerAZ } from './az'; export { faker as fakerBASE } from './base'; +export { faker as fakerBN_BD } from './bn_BD'; export { faker as fakerCS_CZ } from './cs_CZ'; +export { faker as fakerCY } from './cy'; export { faker as fakerDA } from './da'; export { faker as fakerDE } from './de'; export { faker as fakerDE_AT } from './de_AT'; @@ -117,6 +125,8 @@ export { faker as fakerIT } from './it'; export { faker as fakerJA } from './ja'; export { faker as fakerKA_GE } from './ka_GE'; export { faker as fakerKO } from './ko'; +export { faker as fakerKU_ckb } from './ku_ckb'; +export { faker as fakerKU_kmr_latin } from './ku_kmr_latin'; export { faker as fakerLV } from './lv'; export { faker as fakerMK } from './mk'; export { faker as fakerNB_NO } from './nb_NO'; @@ -130,8 +140,10 @@ export { faker as fakerRO } from './ro'; export { faker as fakerRO_MD } from './ro_MD'; export { faker as fakerRU } from './ru'; export { faker as fakerSK } from './sk'; +export { faker as fakerSL_SI } from './sl_SI'; export { faker as fakerSR_RS_latin } from './sr_RS_latin'; export { faker as fakerSV } from './sv'; +export { faker as fakerTA_IN } from './ta_IN'; export { faker as fakerTH } from './th'; export { faker as fakerTR } from './tr'; export { faker as fakerUK } from './uk'; @@ -148,7 +160,9 @@ export const allFakers = { ar: fakerAR, az: fakerAZ, base: fakerBASE, + bn_BD: fakerBN_BD, cs_CZ: fakerCS_CZ, + cy: fakerCY, da: fakerDA, de: fakerDE, de_AT: fakerDE_AT, @@ -188,6 +202,8 @@ export const allFakers = { ja: fakerJA, ka_GE: fakerKA_GE, ko: fakerKO, + ku_ckb: fakerKU_ckb, + ku_kmr_latin: fakerKU_kmr_latin, lv: fakerLV, mk: fakerMK, nb_NO: fakerNB_NO, @@ -201,8 +217,10 @@ export const allFakers = { ro_MD: fakerRO_MD, ru: fakerRU, sk: fakerSK, + sl_SI: fakerSL_SI, sr_RS_latin: fakerSR_RS_latin, sv: fakerSV, + ta_IN: fakerTA_IN, th: fakerTH, tr: fakerTR, uk: fakerUK, diff --git a/src/locale/ku_ckb.ts b/src/locale/ku_ckb.ts new file mode 100644 index 00000000000..2c5223a2dd5 --- /dev/null +++ b/src/locale/ku_ckb.ts @@ -0,0 +1,25 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ + +import { Faker } from '../faker'; +import base from '../locales/base'; +import en from '../locales/en'; +import ku_ckb from '../locales/ku_ckb'; + +/** + * The faker instance for the `ku_ckb` locale. + * + * - Language: Kurdish (Sorani) + * - Endonym: کوردی (سۆرانی) + * + * This instance uses the following locales internally (in descending precedence): + * + * - `ku_ckb` + * - `en` + * - `base` + */ +export const faker = new Faker({ + locale: [ku_ckb, en, base], +}); diff --git a/src/locale/ku_kmr_latin.ts b/src/locale/ku_kmr_latin.ts new file mode 100644 index 00000000000..96bf100c9aa --- /dev/null +++ b/src/locale/ku_kmr_latin.ts @@ -0,0 +1,25 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ + +import { Faker } from '../faker'; +import base from '../locales/base'; +import en from '../locales/en'; +import ku_kmr_latin from '../locales/ku_kmr_latin'; + +/** + * The faker instance for the `ku_kmr_latin` locale. + * + * - Language: Kurdish (Kurmanji, Latin) + * - Endonym: Kurdî (Kurmancî) + * + * This instance uses the following locales internally (in descending precedence): + * + * - `ku_kmr_latin` + * - `en` + * - `base` + */ +export const faker = new Faker({ + locale: [ku_kmr_latin, en, base], +}); diff --git a/src/locale/sl_SI.ts b/src/locale/sl_SI.ts new file mode 100644 index 00000000000..219902425e8 --- /dev/null +++ b/src/locale/sl_SI.ts @@ -0,0 +1,25 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ + +import { Faker } from '../faker'; +import base from '../locales/base'; +import en from '../locales/en'; +import sl_SI from '../locales/sl_SI'; + +/** + * The faker instance for the `sl_SI` locale. + * + * - Language: Slovenian (Slovenia) + * - Endonym: Slovensko (Slovenia) + * + * This instance uses the following locales internally (in descending precedence): + * + * - `sl_SI` + * - `en` + * - `base` + */ +export const faker = new Faker({ + locale: [sl_SI, en, base], +}); diff --git a/src/locale/ta_IN.ts b/src/locale/ta_IN.ts new file mode 100644 index 00000000000..79092b9acbd --- /dev/null +++ b/src/locale/ta_IN.ts @@ -0,0 +1,25 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ + +import { Faker } from '../faker'; +import base from '../locales/base'; +import en from '../locales/en'; +import ta_IN from '../locales/ta_IN'; + +/** + * The faker instance for the `ta_IN` locale. + * + * - Language: Tamil (India) + * - Endonym: தமிழ் (இந்தியா) + * + * This instance uses the following locales internally (in descending precedence): + * + * - `ta_IN` + * - `en` + * - `base` + */ +export const faker = new Faker({ + locale: [ta_IN, en, base], +}); diff --git a/src/locales/af_ZA/internet/domain_suffix.ts b/src/locales/af_ZA/internet/domain_suffix.ts index c2a0043b255..b4deb5cf183 100644 --- a/src/locales/af_ZA/internet/domain_suffix.ts +++ b/src/locales/af_ZA/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['co.za', 'com', 'org.za', 'info', 'net.za']; +export default ['co.za', 'com', 'info', 'net.za', 'org.za']; diff --git a/src/locales/ar/commerce/product_name.ts b/src/locales/ar/commerce/product_name.ts index a89f502bc14..85438530cb2 100644 --- a/src/locales/ar/commerce/product_name.ts +++ b/src/locales/ar/commerce/product_name.ts @@ -56,4 +56,7 @@ export default { 'لوحة المفاتيح', 'مناشف', ], + pattern: [ + '{{commerce.product}} {{commerce.productMaterial}} {{commerce.productAdjective}}', + ], }; diff --git a/src/locales/az/commerce/product_name.ts b/src/locales/az/commerce/product_name.ts index 562b9e78ffa..37e5dc73a94 100644 --- a/src/locales/az/commerce/product_name.ts +++ b/src/locales/az/commerce/product_name.ts @@ -22,4 +22,7 @@ export default { 'Stul', 'Sviter', ], + pattern: [ + '{{commerce.productAdjective}} {{commerce.productMaterial}} {{commerce.product}}', + ], }; diff --git a/src/locales/az/internet/domain_suffix.ts b/src/locales/az/internet/domain_suffix.ts index 59781d11ab9..d960710b3e5 100644 --- a/src/locales/az/internet/domain_suffix.ts +++ b/src/locales/az/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com', 'az', 'com.az', 'info', 'net', 'org']; +export default ['az', 'com', 'com.az', 'info', 'net', 'org']; diff --git a/src/locales/az/internet/free_email.ts b/src/locales/az/internet/free_email.ts index 5b9a482318a..0f8fe3eaadf 100644 --- a/src/locales/az/internet/free_email.ts +++ b/src/locales/az/internet/free_email.ts @@ -1 +1 @@ -export default ['box.az', 'mail.az', 'gmail.com', 'yahoo.com', 'hotmail.com']; +export default ['box.az', 'gmail.com', 'hotmail.com', 'mail.az', 'yahoo.com']; diff --git a/src/locales/base/internet/emoji.ts b/src/locales/base/internet/emoji.ts index f6fa677465e..d7eef386894 100644 --- a/src/locales/base/internet/emoji.ts +++ b/src/locales/base/internet/emoji.ts @@ -4,278 +4,252 @@ export default { smiley: [ + '☠️', + '☹️', + '☺️', + '❣️', + '❤️', + '❤️‍🔥', + '❤️‍🩹', + '👁️‍🗨️', + '👹', + '👺', + '👻', + '👽', + '👾', + '👿', + '💀', + '💋', + '💌', + '💓', + '💔', + '💕', + '💖', + '💗', + '💘', + '💙', + '💚', + '💛', + '💜', + '💝', + '💞', + '💟', + '💢', + '💣', + '💤', + '💥', + '💦', + '💨', + '💩', + '💫', + '💬', + '💭', + '💯', + '🕳️', + '🖤', + '🗨️', + '🗯️', '😀', + '😁', + '😂', '😃', '😄', - '😁', - '😆', '😅', - '🤣', - '😂', - '🙂', - '🙃', + '😆', + '😇', + '😈', '😉', '😊', - '😇', - '🥰', - '😍', - '🤩', - '😘', - '😗', - '☺️', - '😚', - '😙', - '🥲', '😋', - '😛', - '😜', - '🤪', - '😝', - '🤑', - '🤗', - '🤭', - '🤫', - '🤔', - '🤐', - '🤨', + '😌', + '😍', + '😎', + '😏', '😐', '😑', - '😶', - '😶‍🌫️', - '😏', '😒', - '🙄', - '😬', - '😮‍💨', - '🤥', - '😌', + '😓', '😔', - '😪', - '🤤', - '😴', - '😷', - '🤒', - '🤕', - '🤢', - '🤮', - '🤧', - '🥵', - '🥶', - '🥴', - '😵', - '😵‍💫', - '🤯', - '🤠', - '🥳', - '🥸', - '😎', - '🤓', - '🧐', '😕', + '😖', + '😗', + '😘', + '😙', + '😚', + '😛', + '😜', + '😝', + '😞', '😟', - '🙁', - '☹️', - '😮', - '😯', - '😲', - '😳', - '🥺', + '😠', + '😡', + '😢', + '😣', + '😤', + '😥', '😦', '😧', '😨', - '😰', - '😥', - '😢', - '😭', - '😱', - '😖', - '😣', - '😞', - '😓', '😩', + '😪', '😫', - '🥱', - '😤', - '😡', - '😠', - '🤬', - '😈', - '👿', - '💀', - '☠️', - '💩', - '🤡', - '👹', - '👺', - '👻', - '👽', - '👾', - '🤖', - '😺', + '😬', + '😭', + '😮', + '😮‍💨', + '😯', + '😰', + '😱', + '😲', + '😳', + '😴', + '😵', + '😵‍💫', + '😶', + '😶‍🌫️', + '😷', '😸', '😹', + '😺', '😻', '😼', '😽', - '🙀', - '😿', '😾', + '😿', + '🙀', + '🙁', + '🙂', + '🙃', + '🙄', '🙈', '🙉', '🙊', - '💋', - '💌', - '💘', - '💝', - '💖', - '💗', - '💓', - '💞', - '💕', - '💟', - '❣️', - '💔', - '❤️‍🔥', - '❤️‍🩹', - '❤️', - '🧡', - '💛', - '💚', - '💙', - '💜', - '🤎', - '🖤', '🤍', - '💯', - '💢', - '💥', - '💫', - '💦', - '💨', - '🕳️', - '💣', - '💬', - '👁️‍🗨️', - '🗨️', - '🗯️', - '💭', - '💤', + '🤎', + '🤐', + '🤑', + '🤒', + '🤓', + '🤔', + '🤕', + '🤖', + '🤗', + '🤠', + '🤡', + '🤢', + '🤣', + '🤤', + '🤥', + '🤧', + '🤨', + '🤩', + '🤪', + '🤫', + '🤬', + '🤭', + '🤮', + '🤯', + '🥰', + '🥱', + '🥲', + '🥳', + '🥴', + '🥵', + '🥶', + '🥸', + '🥺', + '🧐', + '🧡', ], body: [ - '👋', - '👋🏻', - '👋🏼', - '👋🏽', - '👋🏾', - '👋🏿', - '🤚', - '🤚🏻', - '🤚🏼', - '🤚🏽', - '🤚🏾', - '🤚🏿', - '🖐️', - '🖐🏻', - '🖐🏼', - '🖐🏽', - '🖐🏾', - '🖐🏿', + '☝🏻', + '☝🏼', + '☝🏽', + '☝🏾', + '☝🏿', + '☝️', + '✊', + '✊🏻', + '✊🏼', + '✊🏽', + '✊🏾', + '✊🏿', '✋', '✋🏻', '✋🏼', '✋🏽', '✋🏾', '✋🏿', - '🖖', - '🖖🏻', - '🖖🏼', - '🖖🏽', - '🖖🏾', - '🖖🏿', - '👌', - '👌🏻', - '👌🏼', - '👌🏽', - '👌🏾', - '👌🏿', - '🤌', - '🤌🏻', - '🤌🏼', - '🤌🏽', - '🤌🏾', - '🤌🏿', - '🤏', - '🤏🏻', - '🤏🏼', - '🤏🏽', - '🤏🏾', - '🤏🏿', - '✌️', '✌🏻', '✌🏼', '✌🏽', '✌🏾', '✌🏿', - '🤞', - '🤞🏻', - '🤞🏼', - '🤞🏽', - '🤞🏾', - '🤞🏿', - '🤟', - '🤟🏻', - '🤟🏼', - '🤟🏽', - '🤟🏾', - '🤟🏿', - '🤘', - '🤘🏻', - '🤘🏼', - '🤘🏽', - '🤘🏾', - '🤘🏿', - '🤙', - '🤙🏻', - '🤙🏼', - '🤙🏽', - '🤙🏾', - '🤙🏿', - '👈', - '👈🏻', - '👈🏼', - '👈🏽', - '👈🏾', - '👈🏿', - '👉', - '👉🏻', - '👉🏼', - '👉🏽', - '👉🏾', - '👉🏿', + '✌️', + '✍🏻', + '✍🏼', + '✍🏽', + '✍🏾', + '✍🏿', + '✍️', + '👀', + '👁️', + '👂', + '👂🏻', + '👂🏼', + '👂🏽', + '👂🏾', + '👂🏿', + '👃', + '👃🏻', + '👃🏼', + '👃🏽', + '👃🏾', + '👃🏿', + '👄', + '👅', '👆', '👆🏻', '👆🏼', '👆🏽', '👆🏾', '👆🏿', - '🖕', - '🖕🏻', - '🖕🏼', - '🖕🏽', - '🖕🏾', - '🖕🏿', '👇', '👇🏻', '👇🏼', '👇🏽', '👇🏾', '👇🏿', - '☝️', - '☝🏻', - '☝🏼', - '☝🏽', - '☝🏾', - '☝🏿', + '👈', + '👈🏻', + '👈🏼', + '👈🏽', + '👈🏾', + '👈🏿', + '👉', + '👉🏻', + '👉🏼', + '👉🏽', + '👉🏾', + '👉🏿', + '👊', + '👊🏻', + '👊🏼', + '👊🏽', + '👊🏾', + '👊🏿', + '👋', + '👋🏻', + '👋🏼', + '👋🏽', + '👋🏾', + '👋🏿', + '👌', + '👌🏻', + '👌🏼', + '👌🏽', + '👌🏾', + '👌🏿', '👍', '👍🏻', '👍🏼', @@ -288,140 +262,160 @@ export default { '👎🏽', '👎🏾', '👎🏿', - '✊', - '✊🏻', - '✊🏼', - '✊🏽', - '✊🏾', - '✊🏿', - '👊', - '👊🏻', - '👊🏼', - '👊🏽', - '👊🏾', - '👊🏿', - '🤛', - '🤛🏻', - '🤛🏼', - '🤛🏽', - '🤛🏾', - '🤛🏿', - '🤜', - '🤜🏻', - '🤜🏼', - '🤜🏽', - '🤜🏾', - '🤜🏿', '👏', '👏🏻', '👏🏼', '👏🏽', '👏🏾', '👏🏿', - '🙌', - '🙌🏻', - '🙌🏼', - '🙌🏽', - '🙌🏾', - '🙌🏿', '👐', '👐🏻', '👐🏼', '👐🏽', '👐🏾', '👐🏿', - '🤲', - '🤲🏻', - '🤲🏼', - '🤲🏽', - '🤲🏾', - '🤲🏿', - '🤝', - '🙏', - '🙏🏻', - '🙏🏼', - '🙏🏽', - '🙏🏾', - '🙏🏿', - '✍️', - '✍🏻', - '✍🏼', - '✍🏽', - '✍🏾', - '✍🏿', '💅', '💅🏻', '💅🏼', '💅🏽', '💅🏾', '💅🏿', - '🤳', - '🤳🏻', - '🤳🏼', - '🤳🏽', - '🤳🏾', - '🤳🏿', '💪', '💪🏻', '💪🏼', '💪🏽', '💪🏾', '💪🏿', - '🦾', - '🦿', - '🦵', - '🦵🏻', - '🦵🏼', - '🦵🏽', - '🦵🏾', - '🦵🏿', - '🦶', - '🦶🏻', - '🦶🏼', - '🦶🏽', - '🦶🏾', - '🦶🏿', - '👂', - '👂🏻', - '👂🏼', - '👂🏽', - '👂🏾', - '👂🏿', - '🦻', - '🦻🏻', - '🦻🏼', - '🦻🏽', - '🦻🏾', - '🦻🏿', - '👃', - '👃🏻', - '👃🏼', - '👃🏽', - '👃🏾', - '👃🏿', - '🧠', - '🫀', - '🫁', - '🦷', - '🦴', - '👀', - '👁️', - '👅', - '👄', - ], - person: [ - '👶', - '👶🏻', - '👶🏼', - '👶🏽', - '👶🏾', - '👶🏿', - '🧒', - '🧒🏻', - '🧒🏼', - '🧒🏽', - '🧒🏾', - '🧒🏿', + '🖐🏻', + '🖐🏼', + '🖐🏽', + '🖐🏾', + '🖐🏿', + '🖐️', + '🖕', + '🖕🏻', + '🖕🏼', + '🖕🏽', + '🖕🏾', + '🖕🏿', + '🖖', + '🖖🏻', + '🖖🏼', + '🖖🏽', + '🖖🏾', + '🖖🏿', + '🙌', + '🙌🏻', + '🙌🏼', + '🙌🏽', + '🙌🏾', + '🙌🏿', + '🙏', + '🙏🏻', + '🙏🏼', + '🙏🏽', + '🙏🏾', + '🙏🏿', + '🤌', + '🤌🏻', + '🤌🏼', + '🤌🏽', + '🤌🏾', + '🤌🏿', + '🤏', + '🤏🏻', + '🤏🏼', + '🤏🏽', + '🤏🏾', + '🤏🏿', + '🤘', + '🤘🏻', + '🤘🏼', + '🤘🏽', + '🤘🏾', + '🤘🏿', + '🤙', + '🤙🏻', + '🤙🏼', + '🤙🏽', + '🤙🏾', + '🤙🏿', + '🤚', + '🤚🏻', + '🤚🏼', + '🤚🏽', + '🤚🏾', + '🤚🏿', + '🤛', + '🤛🏻', + '🤛🏼', + '🤛🏽', + '🤛🏾', + '🤛🏿', + '🤜', + '🤜🏻', + '🤜🏼', + '🤜🏽', + '🤜🏾', + '🤜🏿', + '🤝', + '🤞', + '🤞🏻', + '🤞🏼', + '🤞🏽', + '🤞🏾', + '🤞🏿', + '🤟', + '🤟🏻', + '🤟🏼', + '🤟🏽', + '🤟🏾', + '🤟🏿', + '🤲', + '🤲🏻', + '🤲🏼', + '🤲🏽', + '🤲🏾', + '🤲🏿', + '🤳', + '🤳🏻', + '🤳🏼', + '🤳🏽', + '🤳🏾', + '🤳🏿', + '🦴', + '🦵', + '🦵🏻', + '🦵🏼', + '🦵🏽', + '🦵🏾', + '🦵🏿', + '🦶', + '🦶🏻', + '🦶🏼', + '🦶🏽', + '🦶🏾', + '🦶🏿', + '🦷', + '🦻', + '🦻🏻', + '🦻🏼', + '🦻🏽', + '🦻🏾', + '🦻🏿', + '🦾', + '🦿', + '🧠', + '🫀', + '🫁', + ], + person: [ + '🎅', + '🎅🏻', + '🎅🏼', + '🎅🏽', + '🎅🏾', + '🎅🏿', '👦', '👦🏻', '👦🏼', @@ -434,143 +428,353 @@ export default { '👧🏽', '👧🏾', '👧🏿', - '🧑', - '🧑🏻', - '🧑🏼', - '🧑🏽', - '🧑🏾', - '🧑🏿', - '👱', - '👱🏻', - '👱🏼', - '👱🏽', - '👱🏾', - '👱🏿', '👨', - '👨🏻', - '👨🏼', - '👨🏽', - '👨🏾', - '👨🏿', - '🧔', - '🧔🏻', - '🧔🏼', - '🧔🏽', - '🧔🏾', - '🧔🏿', - '🧔‍♂️', - '🧔🏻‍♂️', - '🧔🏼‍♂️', - '🧔🏽‍♂️', - '🧔🏾‍♂️', - '🧔🏿‍♂️', - '🧔‍♀️', - '🧔🏻‍♀️', - '🧔🏼‍♀️', - '🧔🏽‍♀️', - '🧔🏾‍♀️', - '🧔🏿‍♀️', + '👨‍⚕️', + '👨‍⚖️', + '👨‍✈️', + '👨‍🌾', + '👨‍🍳', + '👨‍🍼', + '👨‍🎓', + '👨‍🎤', + '👨‍🎨', + '👨‍🏫', + '👨‍🏭', + '👨‍💻', + '👨‍💼', + '👨‍🔧', + '👨‍🔬', + '👨‍🚀', + '👨‍🚒', '👨‍🦰', - '👨🏻‍🦰', - '👨🏼‍🦰', - '👨🏽‍🦰', - '👨🏾‍🦰', - '👨🏿‍🦰', '👨‍🦱', - '👨🏻‍🦱', - '👨🏼‍🦱', - '👨🏽‍🦱', - '👨🏾‍🦱', - '👨🏿‍🦱', - '👨‍🦳', - '👨🏻‍🦳', - '👨🏼‍🦳', - '👨🏽‍🦳', - '👨🏾‍🦳', - '👨🏿‍🦳', '👨‍🦲', + '👨‍🦳', + '👨🏻', + '👨🏻‍⚕️', + '👨🏻‍⚖️', + '👨🏻‍✈️', + '👨🏻‍🌾', + '👨🏻‍🍳', + '👨🏻‍🍼', + '👨🏻‍🎓', + '👨🏻‍🎤', + '👨🏻‍🎨', + '👨🏻‍🏫', + '👨🏻‍🏭', + '👨🏻‍💻', + '👨🏻‍💼', + '👨🏻‍🔧', + '👨🏻‍🔬', + '👨🏻‍🚀', + '👨🏻‍🚒', + '👨🏻‍🦰', + '👨🏻‍🦱', '👨🏻‍🦲', + '👨🏻‍🦳', + '👨🏼', + '👨🏼‍⚕️', + '👨🏼‍⚖️', + '👨🏼‍✈️', + '👨🏼‍🌾', + '👨🏼‍🍳', + '👨🏼‍🍼', + '👨🏼‍🎓', + '👨🏼‍🎤', + '👨🏼‍🎨', + '👨🏼‍🏫', + '👨🏼‍🏭', + '👨🏼‍💻', + '👨🏼‍💼', + '👨🏼‍🔧', + '👨🏼‍🔬', + '👨🏼‍🚀', + '👨🏼‍🚒', + '👨🏼‍🦰', + '👨🏼‍🦱', '👨🏼‍🦲', - '👨🏽‍🦲', - '👨🏾‍🦲', - '👨🏿‍🦲', - '👩', - '👩🏻', - '👩🏼', - '👩🏽', - '👩🏾', - '👩🏿', + '👨🏼‍🦳', + '👨🏽', + '👨🏽‍⚕️', + '👨🏽‍⚖️', + '👨🏽‍✈️', + '👨🏽‍🌾', + '👨🏽‍🍳', + '👨🏽‍🍼', + '👨🏽‍🎓', + '👨🏽‍🎤', + '👨🏽‍🎨', + '👨🏽‍🏫', + '👨🏽‍🏭', + '👨🏽‍💻', + '👨🏽‍💼', + '👨🏽‍🔧', + '👨🏽‍🔬', + '👨🏽‍🚀', + '👨🏽‍🚒', + '👨🏽‍🦰', + '👨🏽‍🦱', + '👨🏽‍🦲', + '👨🏽‍🦳', + '👨🏾', + '👨🏾‍⚕️', + '👨🏾‍⚖️', + '👨🏾‍✈️', + '👨🏾‍🌾', + '👨🏾‍🍳', + '👨🏾‍🍼', + '👨🏾‍🎓', + '👨🏾‍🎤', + '👨🏾‍🎨', + '👨🏾‍🏫', + '👨🏾‍🏭', + '👨🏾‍💻', + '👨🏾‍💼', + '👨🏾‍🔧', + '👨🏾‍🔬', + '👨🏾‍🚀', + '👨🏾‍🚒', + '👨🏾‍🦰', + '👨🏾‍🦱', + '👨🏾‍🦲', + '👨🏾‍🦳', + '👨🏿', + '👨🏿‍⚕️', + '👨🏿‍⚖️', + '👨🏿‍✈️', + '👨🏿‍🌾', + '👨🏿‍🍳', + '👨🏿‍🍼', + '👨🏿‍🎓', + '👨🏿‍🎤', + '👨🏿‍🎨', + '👨🏿‍🏫', + '👨🏿‍🏭', + '👨🏿‍💻', + '👨🏿‍💼', + '👨🏿‍🔧', + '👨🏿‍🔬', + '👨🏿‍🚀', + '👨🏿‍🚒', + '👨🏿‍🦰', + '👨🏿‍🦱', + '👨🏿‍🦲', + '👨🏿‍🦳', + '👩', + '👩‍⚕️', + '👩‍⚖️', + '👩‍✈️', + '👩‍🌾', + '👩‍🍳', + '👩‍🍼', + '👩‍🎓', + '👩‍🎤', + '👩‍🎨', + '👩‍🏫', + '👩‍🏭', + '👩‍💻', + '👩‍💼', + '👩‍🔧', + '👩‍🔬', + '👩‍🚀', + '👩‍🚒', '👩‍🦰', - '👩🏻‍🦰', - '👩🏼‍🦰', - '👩🏽‍🦰', - '👩🏾‍🦰', - '👩🏿‍🦰', - '🧑‍🦰', - '🧑🏻‍🦰', - '🧑🏼‍🦰', - '🧑🏽‍🦰', - '🧑🏾‍🦰', - '🧑🏿‍🦰', '👩‍🦱', - '👩🏻‍🦱', - '👩🏼‍🦱', - '👩🏽‍🦱', - '👩🏾‍🦱', - '👩🏿‍🦱', - '🧑‍🦱', - '🧑🏻‍🦱', - '🧑🏼‍🦱', - '🧑🏽‍🦱', - '🧑🏾‍🦱', - '🧑🏿‍🦱', - '👩‍🦳', - '👩🏻‍🦳', - '👩🏼‍🦳', - '👩🏽‍🦳', - '👩🏾‍🦳', - '👩🏿‍🦳', - '🧑‍🦳', - '🧑🏻‍🦳', - '🧑🏼‍🦳', - '🧑🏽‍🦳', - '🧑🏾‍🦳', - '🧑🏿‍🦳', '👩‍🦲', + '👩‍🦳', + '👩🏻', + '👩🏻‍⚕️', + '👩🏻‍⚖️', + '👩🏻‍✈️', + '👩🏻‍🌾', + '👩🏻‍🍳', + '👩🏻‍🍼', + '👩🏻‍🎓', + '👩🏻‍🎤', + '👩🏻‍🎨', + '👩🏻‍🏫', + '👩🏻‍🏭', + '👩🏻‍💻', + '👩🏻‍💼', + '👩🏻‍🔧', + '👩🏻‍🔬', + '👩🏻‍🚀', + '👩🏻‍🚒', + '👩🏻‍🦰', + '👩🏻‍🦱', '👩🏻‍🦲', + '👩🏻‍🦳', + '👩🏼', + '👩🏼‍⚕️', + '👩🏼‍⚖️', + '👩🏼‍✈️', + '👩🏼‍🌾', + '👩🏼‍🍳', + '👩🏼‍🍼', + '👩🏼‍🎓', + '👩🏼‍🎤', + '👩🏼‍🎨', + '👩🏼‍🏫', + '👩🏼‍🏭', + '👩🏼‍💻', + '👩🏼‍💼', + '👩🏼‍🔧', + '👩🏼‍🔬', + '👩🏼‍🚀', + '👩🏼‍🚒', + '👩🏼‍🦰', + '👩🏼‍🦱', '👩🏼‍🦲', + '👩🏼‍🦳', + '👩🏽', + '👩🏽‍⚕️', + '👩🏽‍⚖️', + '👩🏽‍✈️', + '👩🏽‍🌾', + '👩🏽‍🍳', + '👩🏽‍🍼', + '👩🏽‍🎓', + '👩🏽‍🎤', + '👩🏽‍🎨', + '👩🏽‍🏫', + '👩🏽‍🏭', + '👩🏽‍💻', + '👩🏽‍💼', + '👩🏽‍🔧', + '👩🏽‍🔬', + '👩🏽‍🚀', + '👩🏽‍🚒', + '👩🏽‍🦰', + '👩🏽‍🦱', '👩🏽‍🦲', + '👩🏽‍🦳', + '👩🏾', + '👩🏾‍⚕️', + '👩🏾‍⚖️', + '👩🏾‍✈️', + '👩🏾‍🌾', + '👩🏾‍🍳', + '👩🏾‍🍼', + '👩🏾‍🎓', + '👩🏾‍🎤', + '👩🏾‍🎨', + '👩🏾‍🏫', + '👩🏾‍🏭', + '👩🏾‍💻', + '👩🏾‍💼', + '👩🏾‍🔧', + '👩🏾‍🔬', + '👩🏾‍🚀', + '👩🏾‍🚒', + '👩🏾‍🦰', + '👩🏾‍🦱', '👩🏾‍🦲', + '👩🏾‍🦳', + '👩🏿', + '👩🏿‍⚕️', + '👩🏿‍⚖️', + '👩🏿‍✈️', + '👩🏿‍🌾', + '👩🏿‍🍳', + '👩🏿‍🍼', + '👩🏿‍🎓', + '👩🏿‍🎤', + '👩🏿‍🎨', + '👩🏿‍🏫', + '👩🏿‍🏭', + '👩🏿‍💻', + '👩🏿‍💼', + '👩🏿‍🔧', + '👩🏿‍🔬', + '👩🏿‍🚀', + '👩🏿‍🚒', + '👩🏿‍🦰', + '👩🏿‍🦱', '👩🏿‍🦲', - '🧑‍🦲', - '🧑🏻‍🦲', - '🧑🏼‍🦲', - '🧑🏽‍🦲', - '🧑🏾‍🦲', - '🧑🏿‍🦲', - '👱‍♀️', - '👱🏻‍♀️', - '👱🏼‍♀️', - '👱🏽‍♀️', - '👱🏾‍♀️', - '👱🏿‍♀️', - '👱‍♂️', - '👱🏻‍♂️', - '👱🏼‍♂️', - '👱🏽‍♂️', - '👱🏾‍♂️', - '👱🏿‍♂️', - '🧓', - '🧓🏻', - '🧓🏼', - '🧓🏽', - '🧓🏾', - '🧓🏿', - '👴', - '👴🏻', - '👴🏼', - '👴🏽', - '👴🏾', + '👩🏿‍🦳', + '👮', + '👮‍♀️', + '👮‍♂️', + '👮🏻', + '👮🏻‍♀️', + '👮🏻‍♂️', + '👮🏼', + '👮🏼‍♀️', + '👮🏼‍♂️', + '👮🏽', + '👮🏽‍♀️', + '👮🏽‍♂️', + '👮🏾', + '👮🏾‍♀️', + '👮🏾‍♂️', + '👮🏿', + '👮🏿‍♀️', + '👮🏿‍♂️', + '👰', + '👰‍♀️', + '👰‍♂️', + '👰🏻', + '👰🏻‍♀️', + '👰🏻‍♂️', + '👰🏼', + '👰🏼‍♀️', + '👰🏼‍♂️', + '👰🏽', + '👰🏽‍♀️', + '👰🏽‍♂️', + '👰🏾', + '👰🏾‍♀️', + '👰🏾‍♂️', + '👰🏿', + '👰🏿‍♀️', + '👰🏿‍♂️', + '👱', + '👱‍♀️', + '👱‍♂️', + '👱🏻', + '👱🏻‍♀️', + '👱🏻‍♂️', + '👱🏼', + '👱🏼‍♀️', + '👱🏼‍♂️', + '👱🏽', + '👱🏽‍♀️', + '👱🏽‍♂️', + '👱🏾', + '👱🏾‍♀️', + '👱🏾‍♂️', + '👱🏿', + '👱🏿‍♀️', + '👱🏿‍♂️', + '👲', + '👲🏻', + '👲🏼', + '👲🏽', + '👲🏾', + '👲🏿', + '👳', + '👳‍♀️', + '👳‍♂️', + '👳🏻', + '👳🏻‍♀️', + '👳🏻‍♂️', + '👳🏼', + '👳🏼‍♀️', + '👳🏼‍♂️', + '👳🏽', + '👳🏽‍♀️', + '👳🏽‍♂️', + '👳🏾', + '👳🏾‍♀️', + '👳🏾‍♂️', + '👳🏿', + '👳🏿‍♀️', + '👳🏿‍♂️', + '👴', + '👴🏻', + '👴🏼', + '👴🏽', + '👴🏾', '👴🏿', '👵', '👵🏻', @@ -578,1785 +782,788 @@ export default { '👵🏽', '👵🏾', '👵🏿', - '🙍', - '🙍🏻', - '🙍🏼', - '🙍🏽', - '🙍🏾', - '🙍🏿', - '🙍‍♂️', - '🙍🏻‍♂️', - '🙍🏼‍♂️', - '🙍🏽‍♂️', - '🙍🏾‍♂️', - '🙍🏿‍♂️', - '🙍‍♀️', - '🙍🏻‍♀️', - '🙍🏼‍♀️', - '🙍🏽‍♀️', - '🙍🏾‍♀️', - '🙍🏿‍♀️', - '🙎', - '🙎🏻', - '🙎🏼', - '🙎🏽', - '🙎🏾', - '🙎🏿', - '🙎‍♂️', - '🙎🏻‍♂️', - '🙎🏼‍♂️', - '🙎🏽‍♂️', - '🙎🏾‍♂️', - '🙎🏿‍♂️', - '🙎‍♀️', - '🙎🏻‍♀️', - '🙎🏼‍♀️', - '🙎🏽‍♀️', - '🙎🏾‍♀️', - '🙎🏿‍♀️', + '👶', + '👶🏻', + '👶🏼', + '👶🏽', + '👶🏾', + '👶🏿', + '👷', + '👷‍♀️', + '👷‍♂️', + '👷🏻', + '👷🏻‍♀️', + '👷🏻‍♂️', + '👷🏼', + '👷🏼‍♀️', + '👷🏼‍♂️', + '👷🏽', + '👷🏽‍♀️', + '👷🏽‍♂️', + '👷🏾', + '👷🏾‍♀️', + '👷🏾‍♂️', + '👷🏿', + '👷🏿‍♀️', + '👷🏿‍♂️', + '👸', + '👸🏻', + '👸🏼', + '👸🏽', + '👸🏾', + '👸🏿', + '👼', + '👼🏻', + '👼🏼', + '👼🏽', + '👼🏾', + '👼🏿', + '💁', + '💁‍♀️', + '💁‍♂️', + '💁🏻', + '💁🏻‍♀️', + '💁🏻‍♂️', + '💁🏼', + '💁🏼‍♀️', + '💁🏼‍♂️', + '💁🏽', + '💁🏽‍♀️', + '💁🏽‍♂️', + '💁🏾', + '💁🏾‍♀️', + '💁🏾‍♂️', + '💁🏿', + '💁🏿‍♀️', + '💁🏿‍♂️', + '💂', + '💂‍♀️', + '💂‍♂️', + '💂🏻', + '💂🏻‍♀️', + '💂🏻‍♂️', + '💂🏼', + '💂🏼‍♀️', + '💂🏼‍♂️', + '💂🏽', + '💂🏽‍♀️', + '💂🏽‍♂️', + '💂🏾', + '💂🏾‍♀️', + '💂🏾‍♂️', + '💂🏿', + '💂🏿‍♀️', + '💂🏿‍♂️', + '💆', + '💆‍♀️', + '💆‍♂️', + '💆🏻', + '💆🏻‍♀️', + '💆🏻‍♂️', + '💆🏼', + '💆🏼‍♀️', + '💆🏼‍♂️', + '💆🏽', + '💆🏽‍♀️', + '💆🏽‍♂️', + '💆🏾', + '💆🏾‍♀️', + '💆🏾‍♂️', + '💆🏿', + '💆🏿‍♀️', + '💆🏿‍♂️', + '💇', + '💇🏻', + '💇🏼', + '💇🏽', + '🕵🏻', + '🕵🏻‍♀️', + '🕵🏻‍♂️', + '🕵🏼', + '🕵🏼‍♀️', + '🕵🏼‍♂️', + '🕵🏽', + '🕵🏽‍♀️', + '🕵🏽‍♂️', + '🕵🏾', + '🕵🏾‍♀️', + '🕵🏾‍♂️', + '🕵🏿', + '🕵🏿‍♀️', + '🕵🏿‍♂️', + '🕵️', + '🕵️‍♀️', + '🕵️‍♂️', '🙅', - '🙅🏻', - '🙅🏼', - '🙅🏽', - '🙅🏾', - '🙅🏿', - '🙅‍♂️', - '🙅🏻‍♂️', - '🙅🏼‍♂️', - '🙅🏽‍♂️', - '🙅🏾‍♂️', - '🙅🏿‍♂️', '🙅‍♀️', + '🙅‍♂️', + '🙅🏻', '🙅🏻‍♀️', + '🙅🏻‍♂️', + '🙅🏼', '🙅🏼‍♀️', + '🙅🏼‍♂️', + '🙅🏽', '🙅🏽‍♀️', + '🙅🏽‍♂️', + '🙅🏾', '🙅🏾‍♀️', + '🙅🏾‍♂️', + '🙅🏿', '🙅🏿‍♀️', + '🙅🏿‍♂️', '🙆', + '🙆‍♀️', + '🙆‍♂️', '🙆🏻', - '🙆🏼', - '🙆🏽', - '🙆🏾', - '🙆🏿', - '🙆‍♂️', - '🙆🏻‍♂️', - '🙆🏼‍♂️', - '🙆🏽‍♂️', - '🙆🏾‍♂️', - '🙆🏿‍♂️', - '🙆‍♀️', '🙆🏻‍♀️', + '🙆🏻‍♂️', + '🙆🏼', '🙆🏼‍♀️', + '🙆🏼‍♂️', + '🙆🏽', '🙆🏽‍♀️', + '🙆🏽‍♂️', + '🙆🏾', '🙆🏾‍♀️', + '🙆🏾‍♂️', + '🙆🏿', '🙆🏿‍♀️', - '💁', - '💁🏻', - '💁🏼', - '💁🏽', - '💁🏾', - '💁🏿', - '💁‍♂️', - '💁🏻‍♂️', - '💁🏼‍♂️', - '💁🏽‍♂️', - '💁🏾‍♂️', - '💁🏿‍♂️', - '💁‍♀️', - '💁🏻‍♀️', - '💁🏼‍♀️', - '💁🏽‍♀️', - '💁🏾‍♀️', - '💁🏿‍♀️', - '🙋', - '🙋🏻', - '🙋🏼', - '🙋🏽', - '🙋🏾', - '🙋🏿', - '🙋‍♂️', - '🙋🏻‍♂️', - '🙋🏼‍♂️', - '🙋🏽‍♂️', - '🙋🏾‍♂️', - '🙋🏿‍♂️', - '🙋‍♀️', - '🙋🏻‍♀️', - '🙋🏼‍♀️', - '🙋🏽‍♀️', - '🙋🏾‍♀️', - '🙋🏿‍♀️', - '🧏', - '🧏🏻', - '🧏🏼', - '🧏🏽', - '🧏🏾', - '🧏🏿', - '🧏‍♂️', - '🧏🏻‍♂️', - '🧏🏼‍♂️', - '🧏🏽‍♂️', - '🧏🏾‍♂️', - '🧏🏿‍♂️', - '🧏‍♀️', - '🧏🏻‍♀️', - '🧏🏼‍♀️', - '🧏🏽‍♀️', - '🧏🏾‍♀️', - '🧏🏿‍♀️', + '🙆🏿‍♂️', '🙇', - '🙇🏻', - '🙇🏼', - '🙇🏽', - '🙇🏾', - '🙇🏿', - '🙇‍♂️', - '🙇🏻‍♂️', - '🙇🏼‍♂️', - '🙇🏽‍♂️', - '🙇🏾‍♂️', - '🙇🏿‍♂️', '🙇‍♀️', + '🙇‍♂️', + '🙇🏻', '🙇🏻‍♀️', + '🙇🏻‍♂️', + '🙇🏼', '🙇🏼‍♀️', + '🙇🏼‍♂️', + '🙇🏽', '🙇🏽‍♀️', + '🙇🏽‍♂️', + '🙇🏾', '🙇🏾‍♀️', + '🙇🏾‍♂️', + '🙇🏿', '🙇🏿‍♀️', + '🙇🏿‍♂️', + '🙋', + '🙋‍♀️', + '🙋‍♂️', + '🙋🏻', + '🙋🏻‍♀️', + '🙋🏻‍♂️', + '🙋🏼', + '🙋🏼‍♀️', + '🙋🏼‍♂️', + '🙋🏽', + '🙋🏽‍♀️', + '🙋🏽‍♂️', + '🙋🏾', + '🙋🏾‍♀️', + '🙋🏾‍♂️', + '🙋🏿', + '🙋🏿‍♀️', + '🙋🏿‍♂️', + '🙍', + '🙍‍♀️', + '🙍‍♂️', + '🙍🏻', + '🙍🏻‍♀️', + '🙍🏻‍♂️', + '🙍🏼', + '🙍🏼‍♀️', + '🙍🏼‍♂️', + '🙍🏽', + '🙍🏽‍♀️', + '🙍🏽‍♂️', + '🙍🏾', + '🙍🏾‍♀️', + '🙍🏾‍♂️', + '🙍🏿', + '🙍🏿‍♀️', + '🙍🏿‍♂️', + '🙎', + '🙎‍♀️', + '🙎‍♂️', + '🙎🏻', + '🙎🏻‍♀️', + '🙎🏻‍♂️', + '🙎🏼', + '🙎🏼‍♀️', + '🙎🏼‍♂️', + '🙎🏽', + '🙎🏽‍♀️', + '🙎🏽‍♂️', + '🙎🏾', + '🙎🏾‍♀️', + '🙎🏾‍♂️', + '🙎🏿', + '🙎🏿‍♀️', + '🙎🏿‍♂️', '🤦', - '🤦🏻', - '🤦🏼', - '🤦🏽', - '🤦🏾', - '🤦🏿', - '🤦‍♂️', - '🤦🏻‍♂️', - '🤦🏼‍♂️', - '🤦🏽‍♂️', - '🤦🏾‍♂️', - '🤦🏿‍♂️', '🤦‍♀️', + '🤦‍♂️', + '🤦🏻', '🤦🏻‍♀️', + '🤦🏻‍♂️', + '🤦🏼', '🤦🏼‍♀️', + '🤦🏼‍♂️', + '🤦🏽', '🤦🏽‍♀️', + '🤦🏽‍♂️', + '🤦🏾', '🤦🏾‍♀️', + '🤦🏾‍♂️', + '🤦🏿', '🤦🏿‍♀️', + '🤦🏿‍♂️', + '🤰', + '🤰🏻', + '🤰🏼', + '🤰🏽', + '🤰🏾', + '🤰🏿', + '🤱', + '🤱🏻', + '🤱🏼', + '🤱🏽', + '🤱🏾', + '🤱🏿', + '🤴', + '🤴🏻', + '🤴🏼', + '🤴🏽', + '🤴🏾', + '🤴🏿', + '🤵', + '🤵‍♀️', + '🤵‍♂️', + '🤵🏻', + '🤵🏻‍♀️', + '🤵🏻‍♂️', + '🤵🏼', + '🤵🏼‍♀️', + '🤵🏼‍♂️', + '🤵🏽', + '🤵🏽‍♀️', + '🤵🏽‍♂️', + '🤵🏾', + '🤵🏾‍♀️', + '🤵🏾‍♂️', + '🤵🏿', + '🤵🏿‍♀️', + '🤵🏿‍♂️', + '🤶', + '🤶🏻', + '🤶🏼', + '🤶🏽', + '🤶🏾', + '🤶🏿', '🤷', - '🤷🏻', - '🤷🏼', - '🤷🏽', - '🤷🏾', - '🤷🏿', - '🤷‍♂️', - '🤷🏻‍♂️', - '🤷🏼‍♂️', - '🤷🏽‍♂️', - '🤷🏾‍♂️', - '🤷🏿‍♂️', '🤷‍♀️', + '🤷‍♂️', + '🤷🏻', '🤷🏻‍♀️', + '🤷🏻‍♂️', + '🤷🏼', '🤷🏼‍♀️', + '🤷🏼‍♂️', + '🤷🏽', '🤷🏽‍♀️', + '🤷🏽‍♂️', + '🤷🏾', '🤷🏾‍♀️', + '🤷🏾‍♂️', + '🤷🏿', '🤷🏿‍♀️', - '🧑‍⚕️', - '🧑🏻‍⚕️', - '🧑🏼‍⚕️', - '🧑🏽‍⚕️', - '🧑🏾‍⚕️', - '🧑🏿‍⚕️', - '👨‍⚕️', - '👨🏻‍⚕️', - '👨🏼‍⚕️', - '👨🏽‍⚕️', - '👨🏾‍⚕️', - '👨🏿‍⚕️', - '👩‍⚕️', - '👩🏻‍⚕️', - '👩🏼‍⚕️', - '👩🏽‍⚕️', - '👩🏾‍⚕️', - '👩🏿‍⚕️', - '🧑‍🎓', - '🧑🏻‍🎓', - '🧑🏼‍🎓', - '🧑🏽‍🎓', - '🧑🏾‍🎓', - '🧑🏿‍🎓', - '👨‍🎓', - '👨🏻‍🎓', - '👨🏼‍🎓', - '👨🏽‍🎓', - '👨🏾‍🎓', - '👨🏿‍🎓', - '👩‍🎓', - '👩🏻‍🎓', - '👩🏼‍🎓', - '👩🏽‍🎓', - '👩🏾‍🎓', - '👩🏿‍🎓', - '🧑‍🏫', - '🧑🏻‍🏫', - '🧑🏼‍🏫', - '🧑🏽‍🏫', - '🧑🏾‍🏫', - '🧑🏿‍🏫', - '👨‍🏫', - '👨🏻‍🏫', - '👨🏼‍🏫', - '👨🏽‍🏫', - '👨🏾‍🏫', - '👨🏿‍🏫', - '👩‍🏫', - '👩🏻‍🏫', - '👩🏼‍🏫', - '👩🏽‍🏫', - '👩🏾‍🏫', - '👩🏿‍🏫', + '🤷🏿‍♂️', + '🥷', + '🥷🏻', + '🥷🏼', + '🥷🏽', + '🥷🏾', + '🥷🏿', + '🦸', + '🦸‍♀️', + '🦸‍♂️', + '🦸🏻', + '🦸🏻‍♀️', + '🦸🏻‍♂️', + '🦸🏼', + '🦸🏼‍♀️', + '🦸🏼‍♂️', + '🦸🏽', + '🦸🏽‍♀️', + '🦸🏽‍♂️', + '🦸🏾', + '🦸🏾‍♀️', + '🦸🏾‍♂️', + '🦸🏿', + '🦸🏿‍♀️', + '🦸🏿‍♂️', + '🦹', + '🦹‍♀️', + '🦹‍♂️', + '🦹🏻', + '🦹🏻‍♀️', + '🦹🏻‍♂️', + '🦹🏼', + '🦹🏼‍♀️', + '🦹🏼‍♂️', + '🦹🏽', + '🦹🏽‍♀️', + '🦹🏽‍♂️', + '🦹🏾', + '🦹🏾‍♀️', + '🦹🏾‍♂️', + '🦹🏿', + '🦹🏿‍♀️', + '🦹🏿‍♂️', + '🧏', + '🧏‍♀️', + '🧏‍♂️', + '🧏🏻', + '🧏🏻‍♀️', + '🧏🏻‍♂️', + '🧏🏼', + '🧏🏼‍♀️', + '🧏🏼‍♂️', + '🧏🏽', + '🧏🏽‍♀️', + '🧏🏽‍♂️', + '🧏🏾', + '🧏🏾‍♀️', + '🧏🏾‍♂️', + '🧏🏿', + '🧏🏿‍♀️', + '🧏🏿‍♂️', + '🧑', + '🧑‍⚕️', '🧑‍⚖️', - '🧑🏻‍⚖️', - '🧑🏼‍⚖️', - '🧑🏽‍⚖️', - '🧑🏾‍⚖️', - '🧑🏿‍⚖️', - '👨‍⚖️', - '👨🏻‍⚖️', - '👨🏼‍⚖️', - '👨🏽‍⚖️', - '👨🏾‍⚖️', - '👨🏿‍⚖️', - '👩‍⚖️', - '👩🏻‍⚖️', - '👩🏼‍⚖️', - '👩🏽‍⚖️', - '👩🏾‍⚖️', - '👩🏿‍⚖️', + '🧑‍✈️', '🧑‍🌾', - '🧑🏻‍🌾', - '🧑🏼‍🌾', - '🧑🏽‍🌾', - '🧑🏾‍🌾', - '🧑🏿‍🌾', - '👨‍🌾', - '👨🏻‍🌾', - '👨🏼‍🌾', - '👨🏽‍🌾', - '👨🏾‍🌾', - '👨🏿‍🌾', - '👩‍🌾', - '👩🏻‍🌾', - '👩🏼‍🌾', - '👩🏽‍🌾', - '👩🏾‍🌾', - '👩🏿‍🌾', '🧑‍🍳', - '🧑🏻‍🍳', - '🧑🏼‍🍳', - '🧑🏽‍🍳', - '🧑🏾‍🍳', - '🧑🏿‍🍳', - '👨‍🍳', - '👨🏻‍🍳', - '👨🏼‍🍳', - '👨🏽‍🍳', - '👨🏾‍🍳', - '👨🏿‍🍳', - '👩‍🍳', - '👩🏻‍🍳', - '👩🏼‍🍳', - '👩🏽‍🍳', - '👩🏾‍🍳', - '👩🏿‍🍳', - '🧑‍🔧', - '🧑🏻‍🔧', - '🧑🏼‍🔧', - '🧑🏽‍🔧', - '🧑🏾‍🔧', - '🧑🏿‍🔧', - '👨‍🔧', - '👨🏻‍🔧', - '👨🏼‍🔧', - '👨🏽‍🔧', - '👨🏾‍🔧', - '👨🏿‍🔧', - '👩‍🔧', - '👩🏻‍🔧', - '👩🏼‍🔧', - '👩🏽‍🔧', - '👩🏾‍🔧', - '👩🏿‍🔧', + '🧑‍🍼', + '🧑‍🎄', + '🧑‍🎓', + '🧑‍🎤', + '🧑‍🎨', + '🧑‍🏫', '🧑‍🏭', - '🧑🏻‍🏭', - '🧑🏼‍🏭', - '🧑🏽‍🏭', - '🧑🏾‍🏭', - '🧑🏿‍🏭', - '👨‍🏭', - '👨🏻‍🏭', - '👨🏼‍🏭', - '👨🏽‍🏭', - '👨🏾‍🏭', - '👨🏿‍🏭', - '👩‍🏭', - '👩🏻‍🏭', - '👩🏼‍🏭', - '👩🏽‍🏭', - '👩🏾‍🏭', - '👩🏿‍🏭', + '🧑‍💻', '🧑‍💼', - '🧑🏻‍💼', - '🧑🏼‍💼', - '🧑🏽‍💼', - '🧑🏾‍💼', - '🧑🏿‍💼', - '👨‍💼', - '👨🏻‍💼', - '👨🏼‍💼', - '👨🏽‍💼', - '👨🏾‍💼', - '👨🏿‍💼', - '👩‍💼', - '👩🏻‍💼', - '👩🏼‍💼', - '👩🏽‍💼', - '👩🏾‍💼', - '👩🏿‍💼', + '🧑‍🔧', '🧑‍🔬', + '🧑‍🚀', + '🧑‍🚒', + '🧑‍🦰', + '🧑‍🦱', + '🧑‍🦲', + '🧑‍🦳', + '🧑🏻', + '🧑🏻‍⚕️', + '🧑🏻‍⚖️', + '🧑🏻‍✈️', + '🧑🏻‍🌾', + '🧑🏻‍🍳', + '🧑🏻‍🍼', + '🧑🏻‍🎄', + '🧑🏻‍🎓', + '🧑🏻‍🎤', + '🧑🏻‍🎨', + '🧑🏻‍🏫', + '🧑🏻‍🏭', + '🧑🏻‍💻', + '🧑🏻‍💼', + '🧑🏻‍🔧', '🧑🏻‍🔬', + '🧑🏻‍🚀', + '🧑🏻‍🚒', + '🧑🏻‍🦰', + '🧑🏻‍🦱', + '🧑🏻‍🦲', + '🧑🏻‍🦳', + '🧑🏼', + '🧑🏼‍⚕️', + '🧑🏼‍⚖️', + '🧑🏼‍✈️', + '🧑🏼‍🌾', + '🧑🏼‍🍳', + '🧑🏼‍🍼', + '🧑🏼‍🎄', + '🧑🏼‍🎓', + '🧑🏼‍🎤', + '🧑🏼‍🎨', + '🧑🏼‍🏫', + '🧑🏼‍🏭', + '🧑🏼‍💻', + '🧑🏼‍💼', + '🧑🏼‍🔧', '🧑🏼‍🔬', - '🧑🏽‍🔬', - '🧑🏾‍🔬', - '🧑🏿‍🔬', - '👨‍🔬', - '👨🏻‍🔬', - '👨🏼‍🔬', - '👨🏽‍🔬', - '👨🏾‍🔬', - '👨🏿‍🔬', - '👩‍🔬', - '👩🏻‍🔬', - '👩🏼‍🔬', - '👩🏽‍🔬', - '👩🏾‍🔬', - '👩🏿‍🔬', - '🧑‍💻', - '🧑🏻‍💻', - '🧑🏼‍💻', - '🧑🏽‍💻', - '🧑🏾‍💻', - '🧑🏿‍💻', - '👨‍💻', - '👨🏻‍💻', - '👨🏼‍💻', - '👨🏽‍💻', - '👨🏾‍💻', - '👨🏿‍💻', - '👩‍💻', - '👩🏻‍💻', - '👩🏼‍💻', - '👩🏽‍💻', - '👩🏾‍💻', - '👩🏿‍💻', - '🧑‍🎤', - '🧑🏻‍🎤', - '🧑🏼‍🎤', + '🧑🏼‍🚀', + '🧑🏼‍🚒', + '🧑🏼‍🦰', + '🧑🏼‍🦱', + '🧑🏼‍🦲', + '🧑🏼‍🦳', + '🧑🏽', + '🧑🏽‍⚕️', + '🧑🏽‍⚖️', + '🧑🏽‍✈️', + '🧑🏽‍🌾', + '🧑🏽‍🍳', + '🧑🏽‍🍼', + '🧑🏽‍🎄', + '🧑🏽‍🎓', '🧑🏽‍🎤', - '🧑🏾‍🎤', - '🧑🏿‍🎤', - '👨‍🎤', - '👨🏻‍🎤', - '👨🏼‍🎤', - '👨🏽‍🎤', - '👨🏾‍🎤', - '👨🏿‍🎤', - '👩‍🎤', - '👩🏻‍🎤', - '👩🏼‍🎤', - '👩🏽‍🎤', - '👩🏾‍🎤', - '👩🏿‍🎤', - '🧑‍🎨', - '🧑🏻‍🎨', - '🧑🏼‍🎨', '🧑🏽‍🎨', - '🧑🏾‍🎨', - '🧑🏿‍🎨', - '👨‍🎨', - '👨🏻‍🎨', - '👨🏼‍🎨', - '👨🏽‍🎨', - '👨🏾‍🎨', - '👨🏿‍🎨', - '👩‍🎨', - '👩🏻‍🎨', - '👩🏼‍🎨', - '👩🏽‍🎨', - '👩🏾‍🎨', - '👩🏿‍🎨', - '🧑‍✈️', - '🧑🏻‍✈️', - '🧑🏼‍✈️', - '🧑🏽‍✈️', - '🧑🏾‍✈️', - '🧑🏿‍✈️', - '👨‍✈️', - '👨🏻‍✈️', - '👨🏼‍✈️', - '👨🏽‍✈️', - '👨🏾‍✈️', - '👨🏿‍✈️', - '👩‍✈️', - '👩🏻‍✈️', - '👩🏼‍✈️', - '👩🏽‍✈️', - '👩🏾‍✈️', - '👩🏿‍✈️', - '🧑‍🚀', - '🧑🏻‍🚀', - '🧑🏼‍🚀', + '🧑🏽‍🏫', + '🧑🏽‍🏭', + '🧑🏽‍💻', + '🧑🏽‍💼', + '🧑🏽‍🔧', + '🧑🏽‍🔬', '🧑🏽‍🚀', - '🧑🏾‍🚀', - '🧑🏿‍🚀', - '👨‍🚀', - '👨🏻‍🚀', - '👨🏼‍🚀', - '👨🏽‍🚀', - '👨🏾‍🚀', - '👨🏿‍🚀', - '👩‍🚀', - '👩🏻‍🚀', - '👩🏼‍🚀', - '👩🏽‍🚀', - '👩🏾‍🚀', - '👩🏿‍🚀', - '🧑‍🚒', - '🧑🏻‍🚒', - '🧑🏼‍🚒', '🧑🏽‍🚒', + '🧑🏽‍🦰', + '🧑🏽‍🦱', + '🧑🏽‍🦲', + '🧑🏽‍🦳', + '🧑🏾', + '🧑🏾‍⚕️', + '🧑🏾‍⚖️', + '🧑🏾‍✈️', + '🧑🏾‍🌾', + '🧑🏾‍🍳', + '🧑🏾‍🍼', + '🧑🏾‍🎄', + '🧑🏾‍🎓', + '🧑🏾‍🎤', + '🧑🏾‍🎨', + '🧑🏾‍🏫', + '🧑🏾‍🏭', + '🧑🏾‍💻', + '🧑🏾‍💼', + '🧑🏾‍🔧', + '🧑🏾‍🔬', + '🧑🏾‍🚀', '🧑🏾‍🚒', + '🧑🏾‍🦰', + '🧑🏾‍🦱', + '🧑🏾‍🦲', + '🧑🏾‍🦳', + '🧑🏿', + '🧑🏿‍⚕️', + '🧑🏿‍⚖️', + '🧑🏿‍✈️', + '🧑🏿‍🌾', + '🧑🏿‍🍳', + '🧑🏿‍🍼', + '🧑🏿‍🎄', + '🧑🏿‍🎓', + '🧑🏿‍🎤', + '🧑🏿‍🎨', + '🧑🏿‍🏫', + '🧑🏿‍🏭', + '🧑🏿‍💻', + '🧑🏿‍💼', + '🧑🏿‍🔧', + '🧑🏿‍🔬', + '🧑🏿‍🚀', '🧑🏿‍🚒', - '👨‍🚒', - '👨🏻‍🚒', - '👨🏼‍🚒', - '👨🏽‍🚒', - '👨🏾‍🚒', - '👨🏿‍🚒', - '👩‍🚒', - '👩🏻‍🚒', - '👩🏼‍🚒', - '👩🏽‍🚒', - '👩🏾‍🚒', - '👩🏿‍🚒', - '👮', - '👮🏻', - '👮🏼', - '👮🏽', - '👮🏾', - '👮🏿', - '👮‍♂️', - '👮🏻‍♂️', - '👮🏼‍♂️', - '👮🏽‍♂️', - '👮🏾‍♂️', - '👮🏿‍♂️', - '👮‍♀️', - '👮🏻‍♀️', - '👮🏼‍♀️', - '👮🏽‍♀️', - '👮🏾‍♀️', - '👮🏿‍♀️', - '🕵️', - '🕵🏻', - '🕵🏼', - '🕵🏽', - '🕵🏾', - '🕵🏿', - '🕵️‍♂️', - '🕵🏻‍♂️', - '🕵🏼‍♂️', - '🕵🏽‍♂️', - '🕵🏾‍♂️', - '🕵🏿‍♂️', - '🕵️‍♀️', - '🕵🏻‍♀️', - '🕵🏼‍♀️', - '🕵🏽‍♀️', - '🕵🏾‍♀️', - '🕵🏿‍♀️', - '💂', - '💂🏻', - '💂🏼', - '💂🏽', - '💂🏾', - '💂🏿', - '💂‍♂️', - '💂🏻‍♂️', - '💂🏼‍♂️', - '💂🏽‍♂️', - '💂🏾‍♂️', - '💂🏿‍♂️', - '💂‍♀️', - '💂🏻‍♀️', - '💂🏼‍♀️', - '💂🏽‍♀️', - '💂🏾‍♀️', - '💂🏿‍♀️', - '🥷', - '🥷🏻', - '🥷🏼', - '🥷🏽', - '🥷🏾', - '🥷🏿', - '👷', - '👷🏻', - '👷🏼', - '👷🏽', - '👷🏾', - '👷🏿', - '👷‍♂️', - '👷🏻‍♂️', - '👷🏼‍♂️', - '👷🏽‍♂️', - '👷🏾‍♂️', - '👷🏿‍♂️', - '👷‍♀️', - '👷🏻‍♀️', - '👷🏼‍♀️', - '👷🏽‍♀️', - '👷🏾‍♀️', - '👷🏿‍♀️', - '🤴', - '🤴🏻', - '🤴🏼', - '🤴🏽', - '🤴🏾', - '🤴🏿', - '👸', - '👸🏻', - '👸🏼', - '👸🏽', - '👸🏾', - '👸🏿', - '👳', - '👳🏻', - '👳🏼', - '👳🏽', - '👳🏾', - '👳🏿', - '👳‍♂️', - '👳🏻‍♂️', - '👳🏼‍♂️', - '👳🏽‍♂️', - '👳🏾‍♂️', - '👳🏿‍♂️', - '👳‍♀️', - '👳🏻‍♀️', - '👳🏼‍♀️', - '👳🏽‍♀️', - '👳🏾‍♀️', - '👳🏿‍♀️', - '👲', - '👲🏻', - '👲🏼', - '👲🏽', - '👲🏾', - '👲🏿', + '🧑🏿‍🦰', + '🧑🏿‍🦱', + '🧑🏿‍🦲', + '🧑🏿‍🦳', + '🧒', + '🧒🏻', + '🧒🏼', + '🧒🏽', + '🧒🏾', + '🧒🏿', + '🧓', + '🧓🏻', + '🧓🏼', + '🧓🏽', + '🧓🏾', + '🧓🏿', + '🧔', + '🧔‍♀️', + '🧔‍♂️', + '🧔🏻', + '🧔🏻‍♀️', + '🧔🏻‍♂️', + '🧔🏼', + '🧔🏼‍♀️', + '🧔🏼‍♂️', + '🧔🏽', + '🧔🏽‍♀️', + '🧔🏽‍♂️', + '🧔🏾', + '🧔🏾‍♀️', + '🧔🏾‍♂️', + '🧔🏿', + '🧔🏿‍♀️', + '🧔🏿‍♂️', '🧕', '🧕🏻', '🧕🏼', '🧕🏽', '🧕🏾', '🧕🏿', - '🤵', - '🤵🏻', - '🤵🏼', - '🤵🏽', - '🤵🏾', - '🤵🏿', - '🤵‍♂️', - '🤵🏻‍♂️', - '🤵🏼‍♂️', - '🤵🏽‍♂️', - '🤵🏾‍♂️', - '🤵🏿‍♂️', - '🤵‍♀️', - '🤵🏻‍♀️', - '🤵🏼‍♀️', - '🤵🏽‍♀️', - '🤵🏾‍♀️', - '🤵🏿‍♀️', - '👰', - '👰🏻', - '👰🏼', - '👰🏽', - '👰🏾', - '👰🏿', - '👰‍♂️', - '👰🏻‍♂️', - '👰🏼‍♂️', - '👰🏽‍♂️', - '👰🏾‍♂️', - '👰🏿‍♂️', - '👰‍♀️', - '👰🏻‍♀️', - '👰🏼‍♀️', - '👰🏽‍♀️', - '👰🏾‍♀️', - '👰🏿‍♀️', - '🤰', - '🤰🏻', - '🤰🏼', - '🤰🏽', - '🤰🏾', - '🤰🏿', - '🤱', - '🤱🏻', - '🤱🏼', - '🤱🏽', - '🤱🏾', - '🤱🏿', - '👩‍🍼', - '👩🏻‍🍼', - '👩🏼‍🍼', - '👩🏽‍🍼', - '👩🏾‍🍼', - '👩🏿‍🍼', - '👨‍🍼', - '👨🏻‍🍼', - '👨🏼‍🍼', - '👨🏽‍🍼', - '👨🏾‍🍼', - '👨🏿‍🍼', - '🧑‍🍼', - '🧑🏻‍🍼', - '🧑🏼‍🍼', - '🧑🏽‍🍼', - '🧑🏾‍🍼', - '🧑🏿‍🍼', - '👼', - '👼🏻', - '👼🏼', - '👼🏽', - '👼🏾', - '👼🏿', - '🎅', - '🎅🏻', - '🎅🏼', - '🎅🏽', - '🎅🏾', - '🎅🏿', - '🤶', - '🤶🏻', - '🤶🏼', - '🤶🏽', - '🤶🏾', - '🤶🏿', - '🧑‍🎄', - '🧑🏻‍🎄', - '🧑🏼‍🎄', - '🧑🏽‍🎄', - '🧑🏾‍🎄', - '🧑🏿‍🎄', - '🦸', - '🦸🏻', - '🦸🏼', - '🦸🏽', - '🦸🏾', - '🦸🏿', - '🦸‍♂️', - '🦸🏻‍♂️', - '🦸🏼‍♂️', - '🦸🏽‍♂️', - '🦸🏾‍♂️', - '🦸🏿‍♂️', - '🦸‍♀️', - '🦸🏻‍♀️', - '🦸🏼‍♀️', - '🦸🏽‍♀️', - '🦸🏾‍♀️', - '🦸🏿‍♀️', - '🦹', - '🦹🏻', - '🦹🏼', - '🦹🏽', - '🦹🏾', - '🦹🏿', - '🦹‍♂️', - '🦹🏻‍♂️', - '🦹🏼‍♂️', - '🦹🏽‍♂️', - '🦹🏾‍♂️', - '🦹🏿‍♂️', - '🦹‍♀️', - '🦹🏻‍♀️', - '🦹🏼‍♀️', - '🦹🏽‍♀️', - '🦹🏾‍♀️', - '🦹🏿‍♀️', '🧙', - '🧙🏻', - '🧙🏼', - '🧙🏽', - '🧙🏾', - '🧙🏿', - '🧙‍♂️', - '🧙🏻‍♂️', - '🧙🏼‍♂️', - '🧙🏽‍♂️', - '🧙🏾‍♂️', - '🧙🏿‍♂️', '🧙‍♀️', + '🧙‍♂️', + '🧙🏻', '🧙🏻‍♀️', + '🧙🏻‍♂️', + '🧙🏼', '🧙🏼‍♀️', + '🧙🏼‍♂️', + '🧙🏽', '🧙🏽‍♀️', + '🧙🏽‍♂️', + '🧙🏾', '🧙🏾‍♀️', + '🧙🏾‍♂️', + '🧙🏿', '🧙🏿‍♀️', + '🧙🏿‍♂️', '🧚', - '🧚🏻', - '🧚🏼', - '🧚🏽', - '🧚🏾', - '🧚🏿', - '🧚‍♂️', - '🧚🏻‍♂️', - '🧚🏼‍♂️', - '🧚🏽‍♂️', - '🧚🏾‍♂️', - '🧚🏿‍♂️', '🧚‍♀️', + '🧚‍♂️', + '🧚🏻', '🧚🏻‍♀️', + '🧚🏻‍♂️', + '🧚🏼', '🧚🏼‍♀️', + '🧚🏼‍♂️', + '🧚🏽', '🧚🏽‍♀️', + '🧚🏽‍♂️', + '🧚🏾', '🧚🏾‍♀️', + '🧚🏾‍♂️', + '🧚🏿', '🧚🏿‍♀️', + '🧚🏿‍♂️', '🧛', - '🧛🏻', - '🧛🏼', - '🧛🏽', - '🧛🏾', - '🧛🏿', - '🧛‍♂️', - '🧛🏻‍♂️', - '🧛🏼‍♂️', - '🧛🏽‍♂️', - '🧛🏾‍♂️', - '🧛🏿‍♂️', '🧛‍♀️', + '🧛‍♂️', + '🧛🏻', '🧛🏻‍♀️', + '🧛🏻‍♂️', + '🧛🏼', '🧛🏼‍♀️', + '🧛🏼‍♂️', + '🧛🏽', '🧛🏽‍♀️', + '🧛🏽‍♂️', + '🧛🏾', '🧛🏾‍♀️', + '🧛🏾‍♂️', + '🧛🏿', '🧛🏿‍♀️', + '🧛🏿‍♂️', '🧜', - '🧜🏻', - '🧜🏼', - '🧜🏽', - '🧜🏾', - '🧜🏿', - '🧜‍♂️', - '🧜🏻‍♂️', - '🧜🏼‍♂️', - '🧜🏽‍♂️', - '🧜🏾‍♂️', - '🧜🏿‍♂️', '🧜‍♀️', + '🧜‍♂️', + '🧜🏻', '🧜🏻‍♀️', + '🧜🏻‍♂️', + '🧜🏼', '🧜🏼‍♀️', + '🧜🏼‍♂️', + '🧜🏽', '🧜🏽‍♀️', + '🧜🏽‍♂️', + '🧜🏾', '🧜🏾‍♀️', + '🧜🏾‍♂️', + '🧜🏿', '🧜🏿‍♀️', - '🧝', - '🧝🏻', - '🧝🏼', - '🧝🏽', - '🧝🏾', - '🧝🏿', - '🧝‍♂️', - '🧝🏻‍♂️', - '🧝🏼‍♂️', - '🧝🏽‍♂️', - '🧝🏾‍♂️', - '🧝🏿‍♂️', + '🧜🏿‍♂️', + '🧝', '🧝‍♀️', + '🧝‍♂️', + '🧝🏻', '🧝🏻‍♀️', + '🧝🏻‍♂️', + '🧝🏼', '🧝🏼‍♀️', + '🧝🏼‍♂️', + '🧝🏽', '🧝🏽‍♀️', + '🧝🏽‍♂️', + '🧝🏾', '🧝🏾‍♀️', + '🧝🏾‍♂️', + '🧝🏿', '🧝🏿‍♀️', + '🧝🏿‍♂️', '🧞', - '🧞‍♂️', '🧞‍♀️', + '🧞‍♂️', '🧟', - '🧟‍♂️', '🧟‍♀️', - '💆', - '💆🏻', - '💆🏼', - '💆🏽', - '💆🏾', - '💆🏿', - '💆‍♂️', - '💆🏻‍♂️', - '💆🏼‍♂️', - '💆🏽‍♂️', - '💆🏾‍♂️', - '💆🏿‍♂️', - '💆‍♀️', - '💆🏻‍♀️', - '💆🏼‍♀️', - '💆🏽‍♀️', - '💆🏾‍♀️', - '💆🏿‍♀️', - '💇', - '💇🏻', - '💇🏼', - '💇🏽', - '💇🏾', - '💇🏿', - '💇‍♂️', - '💇🏻‍♂️', - '💇🏼‍♂️', - '💇🏽‍♂️', - '💇🏾‍♂️', - '💇🏿‍♂️', - '💇‍♀️', - '💇🏻‍♀️', - '💇🏼‍♀️', - '💇🏽‍♀️', - '💇🏾‍♀️', - '💇🏿‍♀️', - '🚶', - '🚶🏻', - '🚶🏼', - '🚶🏽', - '🚶🏾', - '🚶🏿', - '🚶‍♂️', - '🚶🏻‍♂️', - '🚶🏼‍♂️', - '🚶🏽‍♂️', - '🚶🏾‍♂️', - '🚶🏿‍♂️', - '🚶‍♀️', - '🚶🏻‍♀️', - '🚶🏼‍♀️', - '🚶🏽‍♀️', - '🚶🏾‍♀️', - '🚶🏿‍♀️', - '🧍', - '🧍🏻', - '🧍🏼', - '🧍🏽', - '🧍🏾', - '🧍🏿', - '🧍‍♂️', - '🧍🏻‍♂️', - '🧍🏼‍♂️', - '🧍🏽‍♂️', - '🧍🏾‍♂️', - '🧍🏿‍♂️', - '🧍‍♀️', - '🧍🏻‍♀️', - '🧍🏼‍♀️', - '🧍🏽‍♀️', - '🧍🏾‍♀️', - '🧍🏿‍♀️', - '🧎', - '🧎🏻', - '🧎🏼', - '🧎🏽', - '🧎🏾', - '🧎🏿', - '🧎‍♂️', - '🧎🏻‍♂️', - '🧎🏼‍♂️', - '🧎🏽‍♂️', - '🧎🏾‍♂️', - '🧎🏿‍♂️', - '🧎‍♀️', - '🧎🏻‍♀️', - '🧎🏼‍♀️', - '🧎🏽‍♀️', - '🧎🏾‍♀️', - '🧎🏿‍♀️', - '🧑‍🦯', - '🧑🏻‍🦯', - '🧑🏼‍🦯', - '🧑🏽‍🦯', - '🧑🏾‍🦯', - '🧑🏿‍🦯', - '👨‍🦯', - '👨🏻‍🦯', - '👨🏼‍🦯', - '👨🏽‍🦯', - '👨🏾‍🦯', - '👨🏿‍🦯', - '👩‍🦯', - '👩🏻‍🦯', - '👩🏼‍🦯', - '👩🏽‍🦯', - '👩🏾‍🦯', - '👩🏿‍🦯', - '🧑‍🦼', - '🧑🏻‍🦼', - '🧑🏼‍🦼', - '🧑🏽‍🦼', - '🧑🏾‍🦼', - '🧑🏿‍🦼', - '👨‍🦼', - '👨🏻‍🦼', - '👨🏼‍🦼', - '👨🏽‍🦼', - '👨🏾‍🦼', - '👨🏿‍🦼', - '👩‍🦼', - '👩🏻‍🦼', - '👩🏼‍🦼', - '👩🏽‍🦼', - '👩🏾‍🦼', - '👩🏿‍🦼', - '🧑‍🦽', - '🧑🏻‍🦽', - '🧑🏼‍🦽', - '🧑🏽‍🦽', - '🧑🏾‍🦽', - '🧑🏿‍🦽', - '👨‍🦽', - '👨🏻‍🦽', - '👨🏼‍🦽', - '👨🏽‍🦽', - '👨🏾‍🦽', - '👨🏿‍🦽', - '👩‍🦽', - '👩🏻‍🦽', - '👩🏼‍🦽', - '👩🏽‍🦽', - '👩🏾‍🦽', - '👩🏿‍🦽', - '🏃', - '🏃🏻', - '🏃🏼', - '🏃🏽', - '🏃🏾', - '🏃🏿', - '🏃‍♂️', - '🏃🏻‍♂️', - '🏃🏼‍♂️', - '🏃🏽‍♂️', - '🏃🏾‍♂️', - '🏃🏿‍♂️', - '🏃‍♀️', - '🏃🏻‍♀️', - '🏃🏼‍♀️', - '🏃🏽‍♀️', - '🏃🏾‍♀️', - '🏃🏿‍♀️', - '💃', - '💃🏻', - '💃🏼', - '💃🏽', - '💃🏾', - '💃🏿', - '🕺', - '🕺🏻', - '🕺🏼', - '🕺🏽', - '🕺🏾', - '🕺🏿', - '🕴️', - '🕴🏻', - '🕴🏼', - '🕴🏽', - '🕴🏾', - '🕴🏿', - '👯', - '👯‍♂️', - '👯‍♀️', - '🧖', - '🧖🏻', - '🧖🏼', - '🧖🏽', - '🧖🏾', - '🧖🏿', - '🧖‍♂️', - '🧖🏻‍♂️', - '🧖🏼‍♂️', - '🧖🏽‍♂️', - '🧖🏾‍♂️', - '🧖🏿‍♂️', - '🧖‍♀️', - '🧖🏻‍♀️', - '🧖🏼‍♀️', - '🧖🏽‍♀️', - '🧖🏾‍♀️', - '🧖🏿‍♀️', - '🧗', - '🧗🏻', - '🧗🏼', - '🧗🏽', - '🧗🏾', - '🧗🏿', - '🧗‍♂️', - '🧗🏻‍♂️', - '🧗🏼‍♂️', - '🧗🏽‍♂️', - '🧗🏾‍♂️', - '🧗🏿‍♂️', - '🧗‍♀️', - '🧗🏻‍♀️', - '🧗🏼‍♀️', - '🧗🏽‍♀️', - '🧗🏾‍♀️', - '🧗🏿‍♀️', - '🤺', - '🏇', - '🏇🏻', - '🏇🏼', - '🏇🏽', - '🏇🏾', - '🏇🏿', - '⛷️', - '🏂', - '🏂🏻', - '🏂🏼', - '🏂🏽', - '🏂🏾', - '🏂🏿', - '🏌️', - '🏌🏻', - '🏌🏼', - '🏌🏽', - '🏌🏾', - '🏌🏿', - '🏌️‍♂️', - '🏌🏻‍♂️', - '🏌🏼‍♂️', - '🏌🏽‍♂️', - '🏌🏾‍♂️', - '🏌🏿‍♂️', - '🏌️‍♀️', - '🏌🏻‍♀️', - '🏌🏼‍♀️', - '🏌🏽‍♀️', - '🏌🏾‍♀️', - '🏌🏿‍♀️', - '🏄', - '🏄🏻', - '🏄🏼', - '🏄🏽', - '🏄🏾', - '🏄🏿', - '🏄‍♂️', - '🏄🏻‍♂️', - '🏄🏼‍♂️', - '🏄🏽‍♂️', - '🏄🏾‍♂️', - '🏄🏿‍♂️', - '🏄‍♀️', - '🏄🏻‍♀️', - '🏄🏼‍♀️', - '🏄🏽‍♀️', - '🏄🏾‍♀️', - '🏄🏿‍♀️', - '🚣', - '🚣🏻', - '🚣🏼', - '🚣🏽', - '🚣🏾', - '🚣🏿', - '🚣‍♂️', - '🚣🏻‍♂️', - '🚣🏼‍♂️', - '🚣🏽‍♂️', - '🚣🏾‍♂️', - '🚣🏿‍♂️', - '🚣‍♀️', - '🚣🏻‍♀️', - '🚣🏼‍♀️', - '🚣🏽‍♀️', - '🚣🏾‍♀️', - '🚣🏿‍♀️', - '🏊', - '🏊🏻', - '🏊🏼', - '🏊🏽', - '🏊🏾', - '🏊🏿', - '🏊‍♂️', - '🏊🏻‍♂️', - '🏊🏼‍♂️', - '🏊🏽‍♂️', - '🏊🏾‍♂️', - '🏊🏿‍♂️', - '🏊‍♀️', - '🏊🏻‍♀️', - '🏊🏼‍♀️', - '🏊🏽‍♀️', - '🏊🏾‍♀️', - '🏊🏿‍♀️', - '⛹️', - '⛹🏻', - '⛹🏼', - '⛹🏽', - '⛹🏾', - '⛹🏿', - '⛹️‍♂️', - '⛹🏻‍♂️', - '⛹🏼‍♂️', - '⛹🏽‍♂️', - '⛹🏾‍♂️', - '⛹🏿‍♂️', - '⛹️‍♀️', - '⛹🏻‍♀️', - '⛹🏼‍♀️', - '⛹🏽‍♀️', - '⛹🏾‍♀️', - '⛹🏿‍♀️', - '🏋️', - '🏋🏻', - '🏋🏼', - '🏋🏽', - '🏋🏾', - '🏋🏿', - '🏋️‍♂️', - '🏋🏻‍♂️', - '🏋🏼‍♂️', - '🏋🏽‍♂️', - '🏋🏾‍♂️', - '🏋🏿‍♂️', - '🏋️‍♀️', - '🏋🏻‍♀️', - '🏋🏼‍♀️', - '🏋🏽‍♀️', - '🏋🏾‍♀️', - '🏋🏿‍♀️', - '🚴', - '🚴🏻', - '🚴🏼', - '🚴🏽', - '🚴🏾', - '🚴🏿', - '🚴‍♂️', - '🚴🏻‍♂️', - '🚴🏼‍♂️', - '🚴🏽‍♂️', - '🚴🏾‍♂️', - '🚴🏿‍♂️', - '🚴‍♀️', - '🚴🏻‍♀️', - '🚴🏼‍♀️', - '🚴🏽‍♀️', - '🚴🏾‍♀️', - '🚴🏿‍♀️', - '🚵', - '🚵🏻', - '🚵🏼', - '🚵🏽', - '🚵🏾', - '🚵🏿', - '🚵‍♂️', - '🚵🏻‍♂️', - '🚵🏼‍♂️', - '🚵🏽‍♂️', - '🚵🏾‍♂️', - '🚵🏿‍♂️', - '🚵‍♀️', - '🚵🏻‍♀️', - '🚵🏼‍♀️', - '🚵🏽‍♀️', - '🚵🏾‍♀️', - '🚵🏿‍♀️', - '🤸', - '🤸🏻', - '🤸🏼', - '🤸🏽', - '🤸🏾', - '🤸🏿', - '🤸‍♂️', - '🤸🏻‍♂️', - '🤸🏼‍♂️', - '🤸🏽‍♂️', - '🤸🏾‍♂️', - '🤸🏿‍♂️', - '🤸‍♀️', - '🤸🏻‍♀️', - '🤸🏼‍♀️', - '🤸🏽‍♀️', - '🤸🏾‍♀️', - '🤸🏿‍♀️', - '🤼', - '🤼‍♂️', - '🤼‍♀️', - '🤽', - '🤽🏻', - '🤽🏼', - '🤽🏽', - '🤽🏾', - '🤽🏿', - '🤽‍♂️', - '🤽🏻‍♂️', - '🤽🏼‍♂️', - '🤽🏽‍♂️', - '🤽🏾‍♂️', - '🤽🏿‍♂️', - '🤽‍♀️', - '🤽🏻‍♀️', - '🤽🏼‍♀️', - '🤽🏽‍♀️', - '🤽🏾‍♀️', - '🤽🏿‍♀️', - '🤾', - '🤾🏻', - '🤾🏼', - '🤾🏽', - '🤾🏾', - '🤾🏿', - '🤾‍♂️', - '🤾🏻‍♂️', - '🤾🏼‍♂️', - '🤾🏽‍♂️', - '🤾🏾‍♂️', - '🤾🏿‍♂️', - '🤾‍♀️', - '🤾🏻‍♀️', - '🤾🏼‍♀️', - '🤾🏽‍♀️', - '🤾🏾‍♀️', - '🤾🏿‍♀️', - '🤹', - '🤹🏻', - '🤹🏼', - '🤹🏽', - '🤹🏾', - '🤹🏿', - '🤹‍♂️', - '🤹🏻‍♂️', - '🤹🏼‍♂️', - '🤹🏽‍♂️', - '🤹🏾‍♂️', - '🤹🏿‍♂️', - '🤹‍♀️', - '🤹🏻‍♀️', - '🤹🏼‍♀️', - '🤹🏽‍♀️', - '🤹🏾‍♀️', - '🤹🏿‍♀️', - '🧘', - '🧘🏻', - '🧘🏼', - '🧘🏽', - '🧘🏾', - '🧘🏿', - '🧘‍♂️', - '🧘🏻‍♂️', - '🧘🏼‍♂️', - '🧘🏽‍♂️', - '🧘🏾‍♂️', - '🧘🏿‍♂️', - '🧘‍♀️', - '🧘🏻‍♀️', - '🧘🏼‍♀️', - '🧘🏽‍♀️', - '🧘🏾‍♀️', - '🧘🏿‍♀️', - '🛀', - '🛀🏻', - '🛀🏼', - '🛀🏽', - '🛀🏾', - '🛀🏿', - '🛌', - '🛌🏻', - '🛌🏼', - '🛌🏽', - '🛌🏾', - '🛌🏿', - '🧑‍🤝‍🧑', - '🧑🏻‍🤝‍🧑🏻', - '🧑🏻‍🤝‍🧑🏼', - '🧑🏻‍🤝‍🧑🏽', - '🧑🏻‍🤝‍🧑🏾', - '🧑🏻‍🤝‍🧑🏿', - '🧑🏼‍🤝‍🧑🏻', - '🧑🏼‍🤝‍🧑🏼', - '🧑🏼‍🤝‍🧑🏽', - '🧑🏼‍🤝‍🧑🏾', - '🧑🏼‍🤝‍🧑🏿', - '🧑🏽‍🤝‍🧑🏻', - '🧑🏽‍🤝‍🧑🏼', - '🧑🏽‍🤝‍🧑🏽', - '🧑🏽‍🤝‍🧑🏾', - '🧑🏽‍🤝‍🧑🏿', - '🧑🏾‍🤝‍🧑🏻', - '🧑🏾‍🤝‍🧑🏼', - '🧑🏾‍🤝‍🧑🏽', - '🧑🏾‍🤝‍🧑🏾', - '🧑🏾‍🤝‍🧑🏿', - '🧑🏿‍🤝‍🧑🏻', - '🧑🏿‍🤝‍🧑🏼', - '🧑🏿‍🤝‍🧑🏽', - '🧑🏿‍🤝‍🧑🏾', - '🧑🏿‍🤝‍🧑🏿', - '👭', - '👭🏻', - '👩🏻‍🤝‍👩🏼', - '👩🏻‍🤝‍👩🏽', - '👩🏻‍🤝‍👩🏾', - '👩🏻‍🤝‍👩🏿', - '👩🏼‍🤝‍👩🏻', - '👭🏼', - '👩🏼‍🤝‍👩🏽', - '👩🏼‍🤝‍👩🏾', - '👩🏼‍🤝‍👩🏿', - '👩🏽‍🤝‍👩🏻', - '👩🏽‍🤝‍👩🏼', - '👭🏽', - '👩🏽‍🤝‍👩🏾', - '👩🏽‍🤝‍👩🏿', - '👩🏾‍🤝‍👩🏻', - '👩🏾‍🤝‍👩🏼', - '👩🏾‍🤝‍👩🏽', - '👭🏾', - '👩🏾‍🤝‍👩🏿', - '👩🏿‍🤝‍👩🏻', - '👩🏿‍🤝‍👩🏼', - '👩🏿‍🤝‍👩🏽', - '👩🏿‍🤝‍👩🏾', - '👭🏿', - '👫', - '👫🏻', - '👩🏻‍🤝‍👨🏼', - '👩🏻‍🤝‍👨🏽', - '👩🏻‍🤝‍👨🏾', - '👩🏻‍🤝‍👨🏿', - '👩🏼‍🤝‍👨🏻', - '👫🏼', - '👩🏼‍🤝‍👨🏽', - '👩🏼‍🤝‍👨🏾', - '👩🏼‍🤝‍👨🏿', - '👩🏽‍🤝‍👨🏻', - '👩🏽‍🤝‍👨🏼', - '👫🏽', - '👩🏽‍🤝‍👨🏾', - '👩🏽‍🤝‍👨🏿', - '👩🏾‍🤝‍👨🏻', - '👩🏾‍🤝‍👨🏼', - '👩🏾‍🤝‍👨🏽', - '👫🏾', - '👩🏾‍🤝‍👨🏿', - '👩🏿‍🤝‍👨🏻', - '👩🏿‍🤝‍👨🏼', - '👩🏿‍🤝‍👨🏽', - '👩🏿‍🤝‍👨🏾', - '👫🏿', - '👬', - '👬🏻', - '👨🏻‍🤝‍👨🏼', - '👨🏻‍🤝‍👨🏽', - '👨🏻‍🤝‍👨🏾', - '👨🏻‍🤝‍👨🏿', - '👨🏼‍🤝‍👨🏻', - '👬🏼', - '👨🏼‍🤝‍👨🏽', - '👨🏼‍🤝‍👨🏾', - '👨🏼‍🤝‍👨🏿', - '👨🏽‍🤝‍👨🏻', - '👨🏽‍🤝‍👨🏼', - '👬🏽', - '👨🏽‍🤝‍👨🏾', - '👨🏽‍🤝‍👨🏿', - '👨🏾‍🤝‍👨🏻', - '👨🏾‍🤝‍👨🏼', - '👨🏾‍🤝‍👨🏽', - '👬🏾', - '👨🏾‍🤝‍👨🏿', - '👨🏿‍🤝‍👨🏻', - '👨🏿‍🤝‍👨🏼', - '👨🏿‍🤝‍👨🏽', - '👨🏿‍🤝‍👨🏾', - '👬🏿', - '💏', - '💏🏻', - '💏🏼', - '💏🏽', - '💏🏾', - '💏🏿', - '🧑🏻‍❤️‍💋‍🧑🏼', - '🧑🏻‍❤️‍💋‍🧑🏽', - '🧑🏻‍❤️‍💋‍🧑🏾', - '🧑🏻‍❤️‍💋‍🧑🏿', - '🧑🏼‍❤️‍💋‍🧑🏻', - '🧑🏼‍❤️‍💋‍🧑🏽', - '🧑🏼‍❤️‍💋‍🧑🏾', - '🧑🏼‍❤️‍💋‍🧑🏿', - '🧑🏽‍❤️‍💋‍🧑🏻', - '🧑🏽‍❤️‍💋‍🧑🏼', - '🧑🏽‍❤️‍💋‍🧑🏾', - '🧑🏽‍❤️‍💋‍🧑🏿', - '🧑🏾‍❤️‍💋‍🧑🏻', - '🧑🏾‍❤️‍💋‍🧑🏼', - '🧑🏾‍❤️‍💋‍🧑🏽', - '🧑🏾‍❤️‍💋‍🧑🏿', - '🧑🏿‍❤️‍💋‍🧑🏻', - '🧑🏿‍❤️‍💋‍🧑🏼', - '🧑🏿‍❤️‍💋‍🧑🏽', - '🧑🏿‍❤️‍💋‍🧑🏾', - '👩‍❤️‍💋‍👨', - '👩🏻‍❤️‍💋‍👨🏻', - '👩🏻‍❤️‍💋‍👨🏼', - '👩🏻‍❤️‍💋‍👨🏽', - '👩🏻‍❤️‍💋‍👨🏾', - '👩🏻‍❤️‍💋‍👨🏿', - '👩🏼‍❤️‍💋‍👨🏻', - '👩🏼‍❤️‍💋‍👨🏼', - '👩🏼‍❤️‍💋‍👨🏽', - '👩🏼‍❤️‍💋‍👨🏾', - '👩🏼‍❤️‍💋‍👨🏿', - '👩🏽‍❤️‍💋‍👨🏻', - '👩🏽‍❤️‍💋‍👨🏼', - '👩🏽‍❤️‍💋‍👨🏽', - '👩🏽‍❤️‍💋‍👨🏾', - '👩🏽‍❤️‍💋‍👨🏿', - '👩🏾‍❤️‍💋‍👨🏻', - '👩🏾‍❤️‍💋‍👨🏼', - '👩🏾‍❤️‍💋‍👨🏽', - '👩🏾‍❤️‍💋‍👨🏾', - '👩🏾‍❤️‍💋‍👨🏿', - '👩🏿‍❤️‍💋‍👨🏻', - '👩🏿‍❤️‍💋‍👨🏼', - '👩🏿‍❤️‍💋‍👨🏽', - '👩🏿‍❤️‍💋‍👨🏾', - '👩🏿‍❤️‍💋‍👨🏿', - '👨‍❤️‍💋‍👨', - '👨🏻‍❤️‍💋‍👨🏻', - '👨🏻‍❤️‍💋‍👨🏼', - '👨🏻‍❤️‍💋‍👨🏽', - '👨🏻‍❤️‍💋‍👨🏾', - '👨🏻‍❤️‍💋‍👨🏿', - '👨🏼‍❤️‍💋‍👨🏻', - '👨🏼‍❤️‍💋‍👨🏼', - '👨🏼‍❤️‍💋‍👨🏽', - '👨🏼‍❤️‍💋‍👨🏾', - '👨🏼‍❤️‍💋‍👨🏿', - '👨🏽‍❤️‍💋‍👨🏻', - '👨🏽‍❤️‍💋‍👨🏼', - '👨🏽‍❤️‍💋‍👨🏽', - '👨🏽‍❤️‍💋‍👨🏾', - '👨🏽‍❤️‍💋‍👨🏿', - '👨🏾‍❤️‍💋‍👨🏻', - '👨🏾‍❤️‍💋‍👨🏼', - '👨🏾‍❤️‍💋‍👨🏽', - '👨🏾‍❤️‍💋‍👨🏾', - '👨🏾‍❤️‍💋‍👨🏿', - '👨🏿‍❤️‍💋‍👨🏻', - '👨🏿‍❤️‍💋‍👨🏼', - '👨🏿‍❤️‍💋‍👨🏽', - '👨🏿‍❤️‍💋‍👨🏾', - '👨🏿‍❤️‍💋‍👨🏿', - '👩‍❤️‍💋‍👩', - '👩🏻‍❤️‍💋‍👩🏻', - '👩🏻‍❤️‍💋‍👩🏼', - '👩🏻‍❤️‍💋‍👩🏽', - '👩🏻‍❤️‍💋‍👩🏾', - '👩🏻‍❤️‍💋‍👩🏿', - '👩🏼‍❤️‍💋‍👩🏻', - '👩🏼‍❤️‍💋‍👩🏼', - '👩🏼‍❤️‍💋‍👩🏽', - '👩🏼‍❤️‍💋‍👩🏾', - '👩🏼‍❤️‍💋‍👩🏿', - '👩🏽‍❤️‍💋‍👩🏻', - '👩🏽‍❤️‍💋‍👩🏼', - '👩🏽‍❤️‍💋‍👩🏽', - '👩🏽‍❤️‍💋‍👩🏾', - '👩🏽‍❤️‍💋‍👩🏿', - '👩🏾‍❤️‍💋‍👩🏻', - '👩🏾‍❤️‍💋‍👩🏼', - '👩🏾‍❤️‍💋‍👩🏽', - '👩🏾‍❤️‍💋‍👩🏾', - '👩🏾‍❤️‍💋‍👩🏿', - '👩🏿‍❤️‍💋‍👩🏻', - '👩🏿‍❤️‍💋‍👩🏼', - '👩🏿‍❤️‍💋‍👩🏽', - '👩🏿‍❤️‍💋‍👩🏾', - '👩🏿‍❤️‍💋‍👩🏿', - '💑', - '💑🏻', - '💑🏼', - '💑🏽', - '💑🏾', - '💑🏿', - '🧑🏻‍❤️‍🧑🏼', - '🧑🏻‍❤️‍🧑🏽', - '🧑🏻‍❤️‍🧑🏾', - '🧑🏻‍❤️‍🧑🏿', - '🧑🏼‍❤️‍🧑🏻', - '🧑🏼‍❤️‍🧑🏽', - '🧑🏼‍❤️‍🧑🏾', - '🧑🏼‍❤️‍🧑🏿', - '🧑🏽‍❤️‍🧑🏻', - '🧑🏽‍❤️‍🧑🏼', - '🧑🏽‍❤️‍🧑🏾', - '🧑🏽‍❤️‍🧑🏿', - '🧑🏾‍❤️‍🧑🏻', - '🧑🏾‍❤️‍🧑🏼', - '🧑🏾‍❤️‍🧑🏽', - '🧑🏾‍❤️‍🧑🏿', - '🧑🏿‍❤️‍🧑🏻', - '🧑🏿‍❤️‍🧑🏼', - '🧑🏿‍❤️‍🧑🏽', - '🧑🏿‍❤️‍🧑🏾', - '👩‍❤️‍👨', - '👩🏻‍❤️‍👨🏻', - '👩🏻‍❤️‍👨🏼', - '👩🏻‍❤️‍👨🏽', - '👩🏻‍❤️‍👨🏾', - '👩🏻‍❤️‍👨🏿', - '👩🏼‍❤️‍👨🏻', - '👩🏼‍❤️‍👨🏼', - '👩🏼‍❤️‍👨🏽', - '👩🏼‍❤️‍👨🏾', - '👩🏼‍❤️‍👨🏿', - '👩🏽‍❤️‍👨🏻', - '👩🏽‍❤️‍👨🏼', - '👩🏽‍❤️‍👨🏽', - '👩🏽‍❤️‍👨🏾', - '👩🏽‍❤️‍👨🏿', - '👩🏾‍❤️‍👨🏻', - '👩🏾‍❤️‍👨🏼', - '👩🏾‍❤️‍👨🏽', - '👩🏾‍❤️‍👨🏾', - '👩🏾‍❤️‍👨🏿', - '👩🏿‍❤️‍👨🏻', - '👩🏿‍❤️‍👨🏼', - '👩🏿‍❤️‍👨🏽', - '👩🏿‍❤️‍👨🏾', - '👩🏿‍❤️‍👨🏿', - '👨‍❤️‍👨', - '👨🏻‍❤️‍👨🏻', - '👨🏻‍❤️‍👨🏼', - '👨🏻‍❤️‍👨🏽', - '👨🏻‍❤️‍👨🏾', - '👨🏻‍❤️‍👨🏿', - '👨🏼‍❤️‍👨🏻', - '👨🏼‍❤️‍👨🏼', - '👨🏼‍❤️‍👨🏽', - '👨🏼‍❤️‍👨🏾', - '👨🏼‍❤️‍👨🏿', - '👨🏽‍❤️‍👨🏻', - '👨🏽‍❤️‍👨🏼', - '👨🏽‍❤️‍👨🏽', - '👨🏽‍❤️‍👨🏾', - '👨🏽‍❤️‍👨🏿', - '👨🏾‍❤️‍👨🏻', - '👨🏾‍❤️‍👨🏼', - '👨🏾‍❤️‍👨🏽', - '👨🏾‍❤️‍👨🏾', - '👨🏾‍❤️‍👨🏿', - '👨🏿‍❤️‍👨🏻', - '👨🏿‍❤️‍👨🏼', - '👨🏿‍❤️‍👨🏽', - '👨🏿‍❤️‍👨🏾', - '👨🏿‍❤️‍👨🏿', - '👩‍❤️‍👩', - '👩🏻‍❤️‍👩🏻', - '👩🏻‍❤️‍👩🏼', - '👩🏻‍❤️‍👩🏽', - '👩🏻‍❤️‍👩🏾', - '👩🏻‍❤️‍👩🏿', - '👩🏼‍❤️‍👩🏻', - '👩🏼‍❤️‍👩🏼', - '👩🏼‍❤️‍👩🏽', - '👩🏼‍❤️‍👩🏾', - '👩🏼‍❤️‍👩🏿', - '👩🏽‍❤️‍👩🏻', - '👩🏽‍❤️‍👩🏼', - '👩🏽‍❤️‍👩🏽', - '👩🏽‍❤️‍👩🏾', - '👩🏽‍❤️‍👩🏿', - '👩🏾‍❤️‍👩🏻', - '👩🏾‍❤️‍👩🏼', - '👩🏾‍❤️‍👩🏽', - '👩🏾‍❤️‍👩🏾', - '👩🏾‍❤️‍👩🏿', - '👩🏿‍❤️‍👩🏻', - '👩🏿‍❤️‍👩🏼', - '👩🏿‍❤️‍👩🏽', - '👩🏿‍❤️‍👩🏾', - '👩🏿‍❤️‍👩🏿', - '👪', - '👨‍👩‍👦', - '👨‍👩‍👧', - '👨‍👩‍👧‍👦', - '👨‍👩‍👦‍👦', - '👨‍👩‍👧‍👧', - '👨‍👨‍👦', - '👨‍👨‍👧', - '👨‍👨‍👧‍👦', - '👨‍👨‍👦‍👦', - '👨‍👨‍👧‍👧', - '👩‍👩‍👦', - '👩‍👩‍👧', - '👩‍👩‍👧‍👦', - '👩‍👩‍👦‍👦', - '👩‍👩‍👧‍👧', - '👨‍👦', - '👨‍👦‍👦', - '👨‍👧', - '👨‍👧‍👦', - '👨‍👧‍👧', - '👩‍👦', - '👩‍👦‍👦', - '👩‍👧', - '👩‍👧‍👦', - '👩‍👧‍👧', - '🗣️', - '👤', - '👥', - '🫂', - '👣', + '🧟‍♂️', ], nature: [ - '🐵', - '🐒', - '🦍', - '🦧', - '🐶', - '🐕', - '🦮', - '🐕‍🦺', - '🐩', - '🐺', - '🦊', - '🦝', - '🐱', - '🐈', - '🐈‍⬛', - '🦁', - '🐯', - '🐅', - '🐆', - '🐴', - '🐎', - '🦄', - '🦓', - '🦌', - '🦬', - '🐮', + '☘️', + '🌱', + '🌲', + '🌳', + '🌴', + '🌵', + '🌷', + '🌸', + '🌹', + '🌺', + '🌻', + '🌼', + '🌾', + '🌿', + '🍀', + '🍁', + '🍂', + '🍃', + '🏵️', + '🐀', + '🐁', '🐂', '🐃', '🐄', - '🐷', - '🐖', - '🐗', - '🐽', + '🐅', + '🐆', + '🐇', + '🐈', + '🐈‍⬛', + '🐉', + '🐊', + '🐋', + '🐌', + '🐍', + '🐎', '🐏', - '🐑', '🐐', + '🐑', + '🐒', + '🐓', + '🐔', + '🐕', + '🐕‍🦺', + '🐖', + '🐗', + '🐘', + '🐙', + '🐚', + '🐛', + '🐜', + '🐝', + '🐞', + '🐟', + '🐠', + '🐡', + '🐢', + '🐣', + '🐤', + '🐥', + '🐦', + '🐧', + '🐨', + '🐩', '🐪', '🐫', - '🦙', - '🦒', - '🐘', - '🦣', - '🦏', - '🦛', + '🐬', '🐭', - '🐁', - '🐀', - '🐹', + '🐮', + '🐯', '🐰', - '🐇', - '🐿️', - '🦫', - '🦔', - '🦇', + '🐱', + '🐲', + '🐳', + '🐴', + '🐵', + '🐶', + '🐷', + '🐸', + '🐹', + '🐺', '🐻', '🐻‍❄️', - '🐨', '🐼', - '🦥', - '🦦', - '🦨', - '🦘', - '🦡', + '🐽', '🐾', - '🦃', - '🐔', - '🐓', - '🐣', - '🐤', - '🐥', - '🐦', - '🐧', + '🐿️', + '💐', + '💮', '🕊️', + '🕷️', + '🕸️', + '🥀', + '🦁', + '🦂', + '🦃', + '🦄', '🦅', '🦆', - '🦢', + '🦇', + '🦈', '🦉', - '🦤', - '🪶', - '🦩', - '🦚', - '🦜', - '🐸', - '🐊', - '🐢', + '🦊', + '🦋', + '🦌', + '🦍', '🦎', - '🐍', - '🐲', - '🐉', + '🦏', + '🦒', + '🦓', + '🦔', '🦕', '🦖', - '🐳', - '🐋', - '🐬', - '🦭', - '🐟', - '🐠', - '🐡', - '🦈', - '🐙', - '🐚', - '🐌', - '🦋', - '🐛', - '🐜', - '🐝', - '🪲', - '🐞', '🦗', - '🪳', - '🕷️', - '🕸️', - '🦂', + '🦘', + '🦙', + '🦚', + '🦛', + '🦜', + '🦝', '🦟', + '🦠', + '🦡', + '🦢', + '🦣', + '🦤', + '🦥', + '🦦', + '🦧', + '🦨', + '🦩', + '🦫', + '🦬', + '🦭', + '🦮', '🪰', '🪱', - '🦠', - '💐', - '🌸', - '💮', - '🏵️', - '🌹', - '🥀', - '🌺', - '🌻', - '🌼', - '🌷', - '🌱', + '🪲', + '🪳', '🪴', - '🌲', - '🌳', - '🌴', - '🌵', - '🌾', - '🌿', - '☘️', - '🍀', - '🍁', - '🍂', - '🍃', + '🪶', ], food: [ + '☕', + '🌭', + '🌮', + '🌯', + '🌰', + '🌶️', + '🌽', + '🍄', + '🍅', + '🍆', '🍇', '🍈', '🍉', @@ -2364,155 +1571,211 @@ export default { '🍋', '🍌', '🍍', - '🥭', '🍎', '🍏', '🍐', '🍑', '🍒', '🍓', - '🫐', - '🥝', - '🍅', - '🫒', - '🥥', - '🥑', - '🍆', - '🥔', - '🥕', - '🌽', - '🌶️', - '🫑', - '🥒', - '🥬', - '🥦', - '🧄', - '🧅', - '🍄', - '🥜', - '🌰', - '🍞', - '🥐', - '🥖', - '🫓', - '🥨', - '🥯', - '🥞', - '🧇', - '🧀', - '🍖', - '🍗', - '🥩', - '🥓', '🍔', - '🍟', '🍕', - '🌭', - '🥪', - '🌮', - '🌯', - '🫔', - '🥙', - '🧆', - '🥚', - '🍳', - '🥘', - '🍲', - '🫕', - '🥣', - '🥗', - '🍿', - '🧈', - '🧂', - '🥫', - '🍱', + '🍖', + '🍗', '🍘', '🍙', '🍚', '🍛', '🍜', '🍝', + '🍞', + '🍟', '🍠', + '🍡', '🍢', '🍣', '🍤', '🍥', - '🥮', - '🍡', - '🥟', - '🥠', - '🥡', - '🦀', - '🦞', - '🦐', - '🦑', - '🦪', '🍦', '🍧', '🍨', '🍩', '🍪', - '🎂', - '🍰', - '🧁', - '🥧', '🍫', '🍬', '🍭', '🍮', '🍯', - '🍼', - '🥛', - '☕', - '🫖', + '🍰', + '🍱', + '🍲', + '🍳', + '🍴', '🍵', '🍶', - '🍾', '🍷', '🍸', '🍹', '🍺', '🍻', + '🍼', + '🍽️', + '🍾', + '🍿', + '🎂', + '🏺', + '🔪', '🥂', '🥃', + '🥄', + '🥐', + '🥑', + '🥒', + '🥓', + '🥔', + '🥕', + '🥖', + '🥗', + '🥘', + '🥙', + '🥚', + '🥛', + '🥜', + '🥝', + '🥞', + '🥟', + '🥠', + '🥡', + '🥢', + '🥣', '🥤', - '🧋', + '🥥', + '🥦', + '🥧', + '🥨', + '🥩', + '🥪', + '🥫', + '🥬', + '🥭', + '🥮', + '🥯', + '🦀', + '🦐', + '🦑', + '🦞', + '🦪', + '🧀', + '🧁', + '🧂', '🧃', + '🧄', + '🧅', + '🧆', + '🧇', + '🧈', '🧉', '🧊', - '🥢', - '🍽️', - '🍴', - '🥄', - '🔪', - '🏺', + '🧋', + '🫐', + '🫑', + '🫒', + '🫓', + '🫔', + '🫕', + '🫖', ], travel: [ + '⌚', + '⌛', + '⏰', + '⏱️', + '⏲️', + '⏳', + '☀️', + '☁️', + '☂️', + '☃️', + '☄️', + '☔', + '♨️', + '⚓', + '⚡', + '⛄', + '⛅', + '⛈️', + '⛩️', + '⛪', + '⛰️', + '⛱️', + '⛲', + '⛴️', + '⛵', + '⛺', + '⛽', + '✈️', + '❄️', + '⭐', + '🌀', + '🌁', + '🌂', + '🌃', + '🌄', + '🌅', + '🌆', + '🌇', + '🌈', + '🌉', + '🌊', + '🌋', + '🌌', '🌍', '🌎', '🌏', '🌐', - '🗺️', - '🗾', - '🧭', + '🌑', + '🌒', + '🌓', + '🌔', + '🌕', + '🌖', + '🌗', + '🌘', + '🌙', + '🌚', + '🌛', + '🌜', + '🌝', + '🌞', + '🌟', + '🌠', + '🌡️', + '🌤️', + '🌥️', + '🌦️', + '🌧️', + '🌨️', + '🌩️', + '🌪️', + '🌫️', + '🌬️', + '🎠', + '🎡', + '🎢', + '🎪', + '🏍️', + '🏎️', '🏔️', - '⛰️', - '🌋', - '🗻', '🏕️', '🏖️', + '🏗️', + '🏘️', + '🏙️', + '🏚️', + '🏛️', '🏜️', '🏝️', '🏞️', '🏟️', - '🏛️', - '🏗️', - '🧱', - '🪨', - '🪵', - '🛖', - '🏘️', - '🏚️', '🏠', '🏡', '🏢', @@ -2528,31 +1791,46 @@ export default { '🏭', '🏯', '🏰', + '💈', '💒', - '🗼', - '🗽', - '⛪', + '💧', + '💺', + '🔥', + '🕋', '🕌', - '🛕', '🕍', - '⛩️', - '🕋', - '⛲', - '⛺', - '🌁', - '🌃', - '🏙️', - '🌄', - '🌅', - '🌆', - '🌇', - '🌉', - '♨️', - '🎠', - '🎡', - '🎢', - '💈', - '🎪', + '🕐', + '🕑', + '🕒', + '🕓', + '🕔', + '🕕', + '🕖', + '🕗', + '🕘', + '🕙', + '🕚', + '🕛', + '🕜', + '🕝', + '🕞', + '🕟', + '🕠', + '🕡', + '🕢', + '🕣', + '🕤', + '🕥', + '🕦', + '🕧', + '🕰️', + '🗺️', + '🗻', + '🗼', + '🗽', + '🗾', + '🚀', + '🚁', '🚂', '🚃', '🚄', @@ -2562,12 +1840,11 @@ export default { '🚈', '🚉', '🚊', - '🚝', - '🚞', '🚋', '🚌', '🚍', '🚎', + '🚏', '🚐', '🚑', '🚒', @@ -2578,139 +1855,71 @@ export default { '🚗', '🚘', '🚙', - '🛻', '🚚', '🚛', '🚜', - '🏎️', - '🏍️', - '🛵', - '🦽', - '🦼', - '🛺', - '🚲', - '🛴', - '🛹', - '🛼', - '🚏', - '🛣️', - '🛤️', - '🛢️', - '⛽', - '🚨', + '🚝', + '🚞', + '🚟', + '🚠', + '🚡', + '🚢', + '🚤', '🚥', '🚦', - '🛑', '🚧', - '⚓', - '⛵', - '🛶', - '🚤', - '🛳️', - '⛴️', + '🚨', + '🚲', + '🛎️', + '🛑', + '🛕', + '🛖', + '🛢️', + '🛣️', + '🛤️', '🛥️', - '🚢', - '✈️', '🛩️', '🛫', '🛬', - '🪂', - '💺', - '🚁', - '🚟', - '🚠', - '🚡', '🛰️', - '🚀', + '🛳️', + '🛴', + '🛵', + '🛶', '🛸', - '🛎️', + '🛹', + '🛺', + '🛻', + '🛼', + '🦼', + '🦽', + '🧭', + '🧱', '🧳', - '⌛', - '⏳', - '⌚', - '⏰', - '⏱️', - '⏲️', - '🕰️', - '🕛', - '🕧', - '🕐', - '🕜', - '🕑', - '🕝', - '🕒', - '🕞', - '🕓', - '🕟', - '🕔', - '🕠', - '🕕', - '🕡', - '🕖', - '🕢', - '🕗', - '🕣', - '🕘', - '🕤', - '🕙', - '🕥', - '🕚', - '🕦', - '🌑', - '🌒', - '🌓', - '🌔', - '🌕', - '🌖', - '🌗', - '🌘', - '🌙', - '🌚', - '🌛', - '🌜', - '🌡️', - '☀️', - '🌝', - '🌞', + '🪂', '🪐', - '⭐', - '🌟', - '🌠', - '🌌', - '☁️', - '⛅', - '⛈️', - '🌤️', - '🌥️', - '🌦️', - '🌧️', - '🌨️', - '🌩️', - '🌪️', - '🌫️', - '🌬️', - '🌀', - '🌈', - '🌂', - '☂️', - '☔', - '⛱️', - '⚡', - '❄️', - '☃️', - '⛄', - '☄️', - '🔥', - '💧', - '🌊', + '🪨', + '🪵', ], activity: [ + '♟️', + '♠️', + '♣️', + '♥️', + '♦️', + '⚽', + '⚾', + '⛳', + '⛸️', + '✨', + '🀄', + '🃏', + '🎀', + '🎁', '🎃', '🎄', '🎆', '🎇', - '🧨', - '✨', '🎈', '🎉', '🎊', @@ -2720,184 +1929,160 @@ export default { '🎏', '🎐', '🎑', - '🧧', - '🎀', - '🎁', + '🎖️', '🎗️', '🎟️', + '🎣', + '🎨', '🎫', - '🎖️', - '🏆', - '🏅', - '🥇', - '🥈', - '🥉', - '⚽', - '⚾', - '🥎', + '🎭', + '🎮', + '🎯', + '🎰', + '🎱', + '🎲', + '🎳', + '🎴', + '🎽', + '🎾', + '🎿', '🏀', - '🏐', + '🏅', + '🏆', '🏈', '🏉', - '🎾', - '🥏', - '🎳', '🏏', + '🏐', '🏑', '🏒', - '🥍', '🏓', '🏸', + '🔮', + '🕹️', + '🖼️', + '🛷', + '🤿', + '🥅', + '🥇', + '🥈', + '🥉', '🥊', '🥋', - '🥅', - '⛳', - '⛸️', - '🎣', - '🤿', - '🎽', - '🎿', - '🛷', '🥌', - '🎯', + '🥍', + '🥎', + '🥏', + '🧧', + '🧨', + '🧩', + '🧵', + '🧶', + '🧸', + '🧿', '🪀', '🪁', - '🎱', - '🔮', '🪄', - '🧿', - '🎮', - '🕹️', - '🎰', - '🎲', - '🧩', - '🧸', '🪅', '🪆', - '♠️', - '♥️', - '♦️', - '♣️', - '♟️', - '🃏', - '🀄', - '🎴', - '🎭', - '🖼️', - '🎨', - '🧵', '🪡', - '🧶', '🪢', ], object: [ + '⌨️', + '☎️', + '⚒️', + '⚔️', + '⚖️', + '⚗️', + '⚙️', + '⚰️', + '⚱️', + '⛏️', + '⛑️', + '⛓️', + '✂️', + '✉️', + '✏️', + '✒️', + '🎒', + '🎓', + '🎙️', + '🎚️', + '🎛️', + '🎞️', + '🎤', + '🎥', + '🎧', + '🎩', + '🎬', + '🎵', + '🎶', + '🎷', + '🎸', + '🎹', + '🎺', + '🎻', + '🎼', + '🏮', + '🏷️', + '🏹', + '👑', + '👒', '👓', - '🕶️', - '🥽', - '🥼', - '🦺', '👔', '👕', '👖', - '🧣', - '🧤', - '🧥', - '🧦', '👗', '👘', - '🥻', - '🩱', - '🩲', - '🩳', '👙', '👚', '👛', '👜', '👝', - '🛍️', - '🎒', - '🩴', '👞', '👟', - '🥾', - '🥿', '👠', '👡', - '🩰', '👢', - '👑', - '👒', - '🎩', - '🎓', - '🧢', - '🪖', - '⛑️', - '📿', '💄', + '💉', + '💊', '💍', '💎', - '🔇', - '🔈', - '🔉', - '🔊', - '📢', - '📣', - '📯', - '🔔', - '🔕', - '🎼', - '🎵', - '🎶', - '🎙️', - '🎚️', - '🎛️', - '🎤', - '🎧', - '📻', - '🎷', - '🪗', - '🎸', - '🎹', - '🎺', - '🎻', - '🪕', - '🥁', - '🪘', - '📱', - '📲', - '☎️', - '📞', - '📟', - '📠', - '🔋', - '🔌', + '💡', + '💰', + '💳', + '💴', + '💵', + '💶', + '💷', + '💸', + '💹', '💻', - '🖥️', - '🖨️', - '⌨️', - '🖱️', - '🖲️', + '💼', '💽', '💾', '💿', '📀', - '🧮', - '🎥', - '🎞️', - '📽️', - '🎬', - '📺', - '📷', - '📸', - '📹', - '📼', - '🔍', - '🔎', - '🕯️', - '💡', - '🔦', - '🏮', - '🪔', + '📁', + '📂', + '📃', + '📄', + '📅', + '📆', + '📇', + '📈', + '📉', + '📊', + '📋', + '📌', + '📍', + '📎', + '📏', + '📐', + '📑', + '📒', + '📓', '📔', '📕', '📖', @@ -2905,203 +2090,212 @@ export default { '📘', '📙', '📚', - '📓', - '📒', - '📃', '📜', - '📄', - '📰', - '🗞️', - '📑', - '🔖', - '🏷️', - '💰', - '🪙', - '💴', - '💵', - '💶', - '💷', - '💸', - '💳', - '🧾', - '💹', - '✉️', - '📧', - '📨', - '📩', + '📝', + '📞', + '📟', + '📠', + '📡', + '📢', + '📣', '📤', '📥', '📦', - '📫', + '📧', + '📨', + '📩', '📪', + '📫', '📬', '📭', '📮', - '🗳️', - '✏️', - '✒️', - '🖋️', + '📯', + '📰', + '📱', + '📲', + '📷', + '📸', + '📹', + '📺', + '📻', + '📼', + '📽️', + '📿', + '🔇', + '🔈', + '🔉', + '🔊', + '🔋', + '🔌', + '🔍', + '🔎', + '🔏', + '🔐', + '🔑', + '🔒', + '🔓', + '🔔', + '🔕', + '🔖', + '🔗', + '🔦', + '🔧', + '🔨', + '🔩', + '🔫', + '🔬', + '🔭', + '🕯️', + '🕶️', + '🖇️', '🖊️', + '🖋️', '🖌️', '🖍️', - '📝', - '💼', - '📁', - '📂', + '🖥️', + '🖨️', + '🖱️', + '🖲️', '🗂️', - '📅', - '📆', - '🗒️', - '🗓️', - '📇', - '📈', - '📉', - '📊', - '📋', - '📌', - '📍', - '📎', - '🖇️', - '📏', - '📐', - '✂️', '🗃️', '🗄️', '🗑️', - '🔒', - '🔓', - '🔏', - '🔐', - '🔑', + '🗒️', + '🗓️', + '🗜️', '🗝️', - '🔨', - '🪓', - '⛏️', - '⚒️', - '🛠️', + '🗞️', '🗡️', - '⚔️', - '🔫', - '🪃', - '🏹', + '🗳️', + '🗿', + '🚪', + '🚬', + '🚽', + '🚿', + '🛁', + '🛋️', + '🛍️', + '🛏️', + '🛒', + '🛗', + '🛠️', '🛡️', - '🪚', - '🔧', - '🪛', - '🔩', - '⚙️', - '🗜️', - '⚖️', + '🥁', + '🥻', + '🥼', + '🥽', + '🥾', + '🥿', '🦯', - '🔗', - '⛓️', - '🪝', - '🧰', - '🧲', - '🪜', - '⚗️', + '🦺', + '🧢', + '🧣', + '🧤', + '🧥', + '🧦', '🧪', '🧫', '🧬', - '🔬', - '🔭', - '📡', - '💉', + '🧮', + '🧯', + '🧰', + '🧲', + '🧴', + '🧷', + '🧹', + '🧺', + '🧻', + '🧼', + '🧽', + '🧾', + '🩰', + '🩱', + '🩲', + '🩳', + '🩴', '🩸', - '💊', '🩹', '🩺', - '🚪', - '🛗', + '🪃', + '🪑', + '🪒', + '🪓', + '🪔', + '🪕', + '🪖', + '🪗', + '🪘', + '🪙', + '🪚', + '🪛', + '🪜', + '🪝', '🪞', '🪟', - '🛏️', - '🛋️', - '🪑', - '🚽', '🪠', - '🚿', - '🛁', - '🪤', - '🪒', - '🧴', - '🧷', - '🧹', - '🧺', - '🧻', '🪣', - '🧼', + '🪤', '🪥', - '🧽', - '🧯', - '🛒', - '🚬', - '⚰️', '🪦', - '⚱️', - '🗿', '🪧', ], symbol: [ - '🏧', - '🚮', - '🚰', - '♿', - '🚹', - '🚺', - '🚻', - '🚼', - '🚾', - '🛂', - '🛃', - '🛄', - '🛅', - '⚠️', - '🚸', - '⛔', - '🚫', - '🚳', - '🚭', - '🚯', - '🚱', - '🚷', - '📵', - '🔞', - '☢️', - '☣️', - '⬆️', + '#️⃣', + '*️⃣', + '0️⃣', + '1️⃣', + '2️⃣', + '3️⃣', + '4️⃣', + '5️⃣', + '6️⃣', + '7️⃣', + '8️⃣', + '9️⃣', + '©️', + '®️', + '‼️', + '⁉️', + '™️', + 'ℹ️', + '↔️', + '↕️', + '↖️', '↗️', - '➡️', '↘️', - '⬇️', '↙️', - '⬅️', - '↖️', - '↕️', - '↔️', '↩️', '↪️', - '⤴️', - '⤵️', - '🔃', - '🔄', - '🔙', - '🔚', - '🔛', - '🔜', - '🔝', - '🛐', - '⚛️', - '🕉️', - '✡️', - '☸️', - '☯️', - '✝️', + '⏏️', + '⏩', + '⏪', + '⏫', + '⏬', + '⏭️', + '⏮️', + '⏯️', + '⏸️', + '⏹️', + '⏺️', + 'Ⓜ️', + '▪️', + '▫️', + '▶️', + '◀️', + '◻️', + '◼️', + '◽', + '◾', + '☑️', + '☢️', + '☣️', '☦️', '☪️', '☮️', - '🕎', - '🔯', + '☯️', + '☸️', + '♀️', + '♂️', '♈', '♉', '♊', @@ -3114,165 +2308,160 @@ export default { '♑', '♒', '♓', - '⛎', - '🔀', - '🔁', - '🔂', - '▶️', - '⏩', - '⏭️', - '⏯️', - '◀️', - '⏪', - '⏮️', - '🔼', - '⏫', - '🔽', - '⏬', - '⏸️', - '⏹️', - '⏺️', - '⏏️', - '🎦', - '🔅', - '🔆', - '📶', - '📳', - '📴', - '♀️', - '♂️', - '⚧️', - '✖️', - '➕', - '➖', - '➗', + '♻️', '♾️', - '‼️', - '⁉️', - '❓', - '❔', - '❕', - '❗', - '〰️', - '💱', - '💲', + '♿', '⚕️', - '♻️', + '⚛️', '⚜️', - '🔱', - '📛', - '🔰', - '⭕', + '⚠️', + '⚧️', + '⚪', + '⚫', + '⛎', + '⛔', '✅', - '☑️', '✔️', + '✖️', + '✝️', + '✡️', + '✳️', + '✴️', + '❇️', '❌', '❎', + '❓', + '❔', + '❕', + '❗', + '➕', + '➖', + '➗', + '➡️', '➰', '➿', + '⤴️', + '⤵️', + '⬅️', + '⬆️', + '⬇️', + '⬛', + '⬜', + '⭕', + '〰️', '〽️', - '✳️', - '✴️', - '❇️', - '©️', - '®️', - '™️', - '#️⃣', - '*️⃣', - '0️⃣', - '1️⃣', - '2️⃣', - '3️⃣', - '4️⃣', - '5️⃣', - '6️⃣', - '7️⃣', - '8️⃣', - '9️⃣', - '🔟', - '🔠', - '🔡', - '🔢', - '🔣', - '🔤', + '㊗️', + '㊙️', '🅰️', - '🆎', '🅱️', + '🅾️', + '🅿️', + '🆎', '🆑', '🆒', '🆓', - 'ℹ️', '🆔', - 'Ⓜ️', '🆕', '🆖', - '🅾️', '🆗', - '🅿️', '🆘', '🆙', '🆚', '🈁', '🈂️', - '🈷️', - '🈶', - '🈯', - '🉐', - '🈹', '🈚', + '🈯', '🈲', - '🉑', - '🈸', - '🈴', '🈳', - '㊗️', - '㊙️', - '🈺', + '🈴', '🈵', + '🈶', + '🈷️', + '🈸', + '🈹', + '🈺', + '🉐', + '🉑', + '🎦', + '🏧', + '💠', + '💱', + '💲', + '📛', + '📳', + '📴', + '📵', + '📶', + '🔀', + '🔁', + '🔂', + '🔃', + '🔄', + '🔅', + '🔆', + '🔘', + '🔙', + '🔚', + '🔛', + '🔜', + '🔝', + '🔞', + '🔟', + '🔠', + '🔡', + '🔢', + '🔣', + '🔤', + '🔯', + '🔰', + '🔱', + '🔲', + '🔳', '🔴', + '🔵', + '🔶', + '🔷', + '🔸', + '🔹', + '🔺', + '🔻', + '🔼', + '🔽', + '🕉️', + '🕎', + '🚫', + '🚭', + '🚮', + '🚯', + '🚰', + '🚱', + '🚳', + '🚷', + '🚸', + '🚹', + '🚺', + '🚻', + '🚼', + '🚾', + '🛂', + '🛃', + '🛄', + '🛅', + '🛐', '🟠', '🟡', '🟢', - '🔵', '🟣', '🟤', - '⚫', - '⚪', '🟥', + '🟦', '🟧', '🟨', '🟩', - '🟦', '🟪', '🟫', - '⬛', - '⬜', - '◼️', - '◻️', - '◾', - '◽', - '▪️', - '▫️', - '🔶', - '🔷', - '🔸', - '🔹', - '🔺', - '🔻', - '💠', - '🔘', - '🔳', - '🔲', ], flag: [ - '🏁', - '🚩', - '🎌', - '🏴', - '🏳️', - '🏳️‍🌈', - '🏳️‍⚧️', - '🏴‍☠️', '🇦🇨', '🇦🇩', '🇦🇪', @@ -3531,5 +2720,13 @@ export default { '🇿🇦', '🇿🇲', '🇿🇼', + '🎌', + '🏁', + '🏳️', + '🏳️‍⚧️', + '🏳️‍🌈', + '🏴', + '🏴‍☠️', + '🚩', ], }; diff --git a/src/locales/base/internet/jwt_algorithm.ts b/src/locales/base/internet/jwt_algorithm.ts index 1cad0baef91..35177f79919 100644 --- a/src/locales/base/internet/jwt_algorithm.ts +++ b/src/locales/base/internet/jwt_algorithm.ts @@ -1,15 +1,15 @@ export default [ - 'HS256', - 'HS384', - 'HS512', - 'RS256', - 'RS384', - 'RS512', 'ES256', 'ES384', 'ES512', + 'HS256', + 'HS384', + 'HS512', 'PS256', 'PS384', 'PS512', + 'RS256', + 'RS384', + 'RS512', 'none', ]; diff --git a/src/locales/base/internet/user_agent_pattern.ts b/src/locales/base/internet/user_agent_pattern.ts index d94d8a55daa..833fa1fe22e 100644 --- a/src/locales/base/internet/user_agent_pattern.ts +++ b/src/locales/base/internet/user_agent_pattern.ts @@ -1,22 +1,22 @@ export default [ - //typical IE user agent on Windows - 'Mozilla/5.0 (compatible; MSIE {{number.int({"min":6,"max":10})}}.0; Windows NT {{helpers.arrayElement(["5.1","5.2","6.0","6.1","6.2","6.3","10.0"])}}; Trident/{{number.int({"min":4,"max":7})}}.0)', - //typical Edge user agent on Windows - 'Mozilla/5.0 (Windows NT {{helpers.arrayElement(["5.1","5.2","6.0","6.1","6.2","6.3","10.0"])}}; Win64; x64) AppleWebKit/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}} (KHTML, like Gecko) Chrome/{{number.int({"min":55,"max":131})}}.{{system.semver}} Safari/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}} Edg/{{number.int({"min":110,"max":131})}}.{{system.semver}}', - //typical Safari user agent on MacOS - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}}.{{number.int({"min":0,"max":99})}} (KHTML, like Gecko) Version/16.1 Safari/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}}.{{number.int({"min":0,"max":99})}}', + //typical user agent for a bot + 'FakerBot/{{system.semver}}', + //typical Googlebot user agent + 'Googlebot/2.1 (+http://www.google.com/bot.html)', + //typical Chrome user agent on Android + 'Mozilla/5.0 (Linux; Android {{number.int({"min":5,"max":13})}}; {{helpers.arrayElement(["SM-G998U","SM-G998B","SM-G998N","SM-G998P","SM-T800"])}}) AppleWebKit/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}} (KHTML, like Gecko) Chrome/{{number.int({"min":55,"max":131})}}.{{system.semver}} Mobile Safari/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}}', //typical Firefox user agent on MacOS 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:{{number.int({"min":75, "max":133})}}.0) Gecko/20100101 Firefox/{{number.int({"min":75, "max":133})}}.0', + //typical Safari user agent on MacOS + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}}.{{number.int({"min":0,"max":99})}} (KHTML, like Gecko) Version/16.1 Safari/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}}.{{number.int({"min":0,"max":99})}}', //typical Chrome user agent on MacOS 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_15_7) AppleWebKit/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}}.{{number.int({"min":0,"max":99})}} (KHTML, like Gecko) Chrome/{{number.int({"min":55,"max":131})}}.{{system.semver}} Safari/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}}.{{number.int({"min":0,"max":99})}}', + //typical Edge user agent on Windows + 'Mozilla/5.0 (Windows NT {{helpers.arrayElement(["5.1","5.2","6.0","6.1","6.2","6.3","10.0"])}}; Win64; x64) AppleWebKit/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}} (KHTML, like Gecko) Chrome/{{number.int({"min":55,"max":131})}}.{{system.semver}} Safari/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}} Edg/{{number.int({"min":110,"max":131})}}.{{system.semver}}', //typical Firefox user agent on Linux 'Mozilla/5.0 (X11; Linux x86_64; rv:{{number.int({"min":75,"max":133})}}.0) Gecko/20100101 Firefox/{{number.int({"min":75,"max":133})}}.0', - //typical user agent for a bot - 'FakerBot/{{system.semver}}', - //typical Googlebot user agent - 'Googlebot/2.1 (+http://www.google.com/bot.html)', + //typical IE user agent on Windows + 'Mozilla/5.0 (compatible; MSIE {{number.int({"min":6,"max":10})}}.0; Windows NT {{helpers.arrayElement(["5.1","5.2","6.0","6.1","6.2","6.3","10.0"])}}; Trident/{{number.int({"min":4,"max":7})}}.0)', //typical Safari user agent on iOS 'Mozilla/5.0 (iPhone; CPU iPhone OS {{number.int({"min":10,"max":18})}}_{{number.int({"min":0,"max":4})}} like Mac OS X) AppleWebKit/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}}.{{number.int({"min":0,"max":99})}} (KHTML, like Gecko) Version/{{number.int({"min":10,"max":18})}}_{{number.int({"min":0,"max":4})}} Mobile/15E148 Safari/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}}', - //typical Chrome user agent on Android - 'Mozilla/5.0 (Linux; Android {{number.int({"min":5,"max":13})}}; {{helpers.arrayElement(["SM-G998U","SM-G998B","SM-G998N","SM-G998P","SM-T800"])}}) AppleWebKit/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}} (KHTML, like Gecko) Chrome/{{number.int({"min":55,"max":131})}}.{{system.semver}} Mobile Safari/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}}', ]; diff --git a/src/locales/base/system/directory_path.ts b/src/locales/base/system/directory_path.ts index b8234bfc090..4077875e7b6 100644 --- a/src/locales/base/system/directory_path.ts +++ b/src/locales/base/system/directory_path.ts @@ -1,5 +1,9 @@ export default [ '/Applications', + '/Library', + '/Network', + '/System', + '/Users', '/bin', '/boot', '/boot/defaults', @@ -14,12 +18,10 @@ export default [ '/home/user', '/home/user/dir', '/lib', - '/Library', '/lost+found', '/media', '/mnt', '/net', - '/Network', '/opt', '/opt/bin', '/opt/include', @@ -36,9 +38,7 @@ export default [ '/selinux', '/srv', '/sys', - '/System', '/tmp', - '/Users', '/usr', '/usr/X11R6', '/usr/bin', diff --git a/src/locales/base/system/mime_type.ts b/src/locales/base/system/mime_type.ts index 7b4dd2bc9d4..bde5bed28ab 100644 --- a/src/locales/base/system/mime_type.ts +++ b/src/locales/base/system/mime_type.ts @@ -1,86 +1,50 @@ -import type { SystemDefinition } from '../../..'; - export default { - 'application/epub+zip': { - extensions: ['epub'], - }, - 'application/gzip': { - extensions: ['gz'], - }, - 'application/java-archive': { - extensions: ['jar', 'war', 'ear'], - }, - 'application/json': { - extensions: ['json', 'map'], - }, - 'application/ld+json': { - extensions: ['jsonld'], - }, - 'application/msword': { - extensions: ['doc', 'dot'], - }, + 'application/epub+zip': { extensions: ['epub'] }, + 'application/gzip': { extensions: ['gz'] }, + 'application/java-archive': { extensions: ['ear', 'jar', 'war'] }, + 'application/json': { extensions: ['json', 'map'] }, + 'application/ld+json': { extensions: ['jsonld'] }, + 'application/msword': { extensions: ['doc', 'dot'] }, 'application/octet-stream': { extensions: [ 'bin', - 'dms', - 'lrf', - 'mar', - 'so', + 'bpk', + 'buffer', + 'deb', + 'deploy', 'dist', 'distz', - 'pkg', - 'bpk', + 'dll', + 'dmg', + 'dms', 'dump', 'elc', - 'deploy', 'exe', - 'dll', - 'deb', - 'dmg', - 'iso', 'img', + 'iso', + 'lrf', + 'mar', 'msi', - 'msp', 'msm', - 'buffer', + 'msp', + 'pkg', + 'so', ], }, - 'application/ogg': { - extensions: ['ogx'], - }, - 'application/pdf': { - extensions: ['pdf'], - }, - 'application/rtf': { - extensions: ['rtf'], - }, - 'application/vnd.amazon.ebook': { - extensions: ['azw'], - }, - 'application/vnd.apple.installer+xml': { - extensions: ['mpkg'], - }, - 'application/vnd.mozilla.xul+xml': { - extensions: ['xul'], - }, + 'application/ogg': { extensions: ['ogx'] }, + 'application/pdf': { extensions: ['pdf'] }, + 'application/rtf': { extensions: ['rtf'] }, + 'application/vnd.amazon.ebook': { extensions: ['azw'] }, + 'application/vnd.apple.installer+xml': { extensions: ['mpkg'] }, + 'application/vnd.mozilla.xul+xml': { extensions: ['xul'] }, 'application/vnd.ms-excel': { - extensions: ['xls', 'xlm', 'xla', 'xlc', 'xlt', 'xlw'], - }, - 'application/vnd.ms-fontobject': { - extensions: ['eot'], - }, - 'application/vnd.ms-powerpoint': { - extensions: ['ppt', 'pps', 'pot'], - }, - 'application/vnd.oasis.opendocument.presentation': { - extensions: ['odp'], - }, - 'application/vnd.oasis.opendocument.spreadsheet': { - extensions: ['ods'], - }, - 'application/vnd.oasis.opendocument.text': { - extensions: ['odt'], + extensions: ['xla', 'xlc', 'xlm', 'xls', 'xlt', 'xlw'], }, + 'application/vnd.ms-fontobject': { extensions: ['eot'] }, + 'application/vnd.ms-powerpoint': { extensions: ['pot', 'pps', 'ppt'] }, + 'application/vnd.oasis.opendocument.presentation': { extensions: ['odp'] }, + 'application/vnd.oasis.opendocument.spreadsheet': { extensions: ['ods'] }, + 'application/vnd.oasis.opendocument.text': { extensions: ['odt'] }, 'application/vnd.openxmlformats-officedocument.presentationml.presentation': { extensions: ['pptx'], }, @@ -90,154 +54,56 @@ export default { 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': { extensions: ['docx'], }, - 'application/vnd.rar': { - extensions: ['rar'], - }, - 'application/vnd.visio': { - extensions: ['vsd', 'vst', 'vss', 'vsw'], - }, - 'application/x-7z-compressed': { - extensions: ['7z'], - }, - 'application/x-abiword': { - extensions: ['abw'], - }, - 'application/x-bzip': { - extensions: ['bz'], - }, - 'application/x-bzip2': { - extensions: ['bz2', 'boz'], - }, - 'application/x-csh': { - extensions: ['csh'], - }, - 'application/x-freearc': { - extensions: ['arc'], - }, - 'application/x-httpd-php': { - extensions: ['php'], - }, - 'application/x-sh': { - extensions: ['sh'], - }, - 'application/x-tar': { - extensions: ['tar'], - }, - 'application/xhtml+xml': { - extensions: ['xhtml', 'xht'], - }, - 'application/xml': { - extensions: ['xml', 'xsl', 'xsd', 'rng'], - }, - 'application/zip': { - extensions: ['zip'], - }, - 'audio/3gpp': { - extensions: ['3gpp'], - }, - 'audio/3gpp2': { - extensions: ['3g2'], - }, - 'audio/aac': { - extensions: ['aac'], - }, - 'audio/midi': { - extensions: ['mid', 'midi', 'kar', 'rmi'], - }, - 'audio/mpeg': { - extensions: ['mpga', 'mp2', 'mp2a', 'mp3', 'm2a', 'm3a'], - }, - 'audio/ogg': { - extensions: ['oga', 'ogg', 'spx', 'opus'], - }, - 'audio/opus': { - extensions: ['opus'], - }, - 'audio/wav': { - extensions: ['wav'], - }, - 'audio/webm': { - extensions: ['weba'], - }, - 'font/otf': { - extensions: ['otf'], - }, - 'font/ttf': { - extensions: ['ttf'], - }, - 'font/woff': { - extensions: ['woff'], - }, - 'font/woff2': { - extensions: ['woff2'], - }, - 'image/avif': { - extensions: ['avif'], - }, - 'image/bmp': { - extensions: ['bmp'], - }, - 'image/gif': { - extensions: ['gif'], - }, - 'image/jpeg': { - extensions: ['jpeg', 'jpg', 'jpe'], - }, - 'image/png': { - extensions: ['png'], - }, - 'image/svg+xml': { - extensions: ['svg', 'svgz'], - }, - 'image/tiff': { - extensions: ['tif', 'tiff'], - }, - 'image/vnd.microsoft.icon': { - extensions: ['ico'], - }, - 'image/webp': { - extensions: ['webp'], - }, - 'text/calendar': { - extensions: ['ics', 'ifb'], - }, - 'text/css': { - extensions: ['css'], - }, - 'text/csv': { - extensions: ['csv'], - }, - 'text/html': { - extensions: ['html', 'htm', 'shtml'], - }, - 'text/javascript': { - extensions: ['js', 'mjs'], - }, + 'application/vnd.rar': { extensions: ['rar'] }, + 'application/vnd.visio': { extensions: ['vsd', 'vss', 'vst', 'vsw'] }, + 'application/x-7z-compressed': { extensions: ['7z'] }, + 'application/x-abiword': { extensions: ['abw'] }, + 'application/x-bzip': { extensions: ['bz'] }, + 'application/x-bzip2': { extensions: ['boz', 'bz2'] }, + 'application/x-csh': { extensions: ['csh'] }, + 'application/x-freearc': { extensions: ['arc'] }, + 'application/x-httpd-php': { extensions: ['php'] }, + 'application/x-sh': { extensions: ['sh'] }, + 'application/x-tar': { extensions: ['tar'] }, + 'application/xhtml+xml': { extensions: ['xht', 'xhtml'] }, + 'application/xml': { extensions: ['rng', 'xml', 'xsd', 'xsl'] }, + 'application/zip': { extensions: ['zip'] }, + 'audio/3gpp': { extensions: ['3gpp'] }, + 'audio/3gpp2': { extensions: ['3g2'] }, + 'audio/aac': { extensions: ['aac'] }, + 'audio/midi': { extensions: ['kar', 'mid', 'midi', 'rmi'] }, + 'audio/mpeg': { extensions: ['m2a', 'm3a', 'mp2', 'mp2a', 'mp3', 'mpga'] }, + 'audio/ogg': { extensions: ['oga', 'ogg', 'opus', 'spx'] }, + 'audio/opus': { extensions: ['opus'] }, + 'audio/wav': { extensions: ['wav'] }, + 'audio/webm': { extensions: ['weba'] }, + 'font/otf': { extensions: ['otf'] }, + 'font/ttf': { extensions: ['ttf'] }, + 'font/woff': { extensions: ['woff'] }, + 'font/woff2': { extensions: ['woff2'] }, + 'image/avif': { extensions: ['avif'] }, + 'image/bmp': { extensions: ['bmp'] }, + 'image/gif': { extensions: ['gif'] }, + 'image/jpeg': { extensions: ['jpe', 'jpeg', 'jpg'] }, + 'image/png': { extensions: ['png'] }, + 'image/svg+xml': { extensions: ['svg', 'svgz'] }, + 'image/tiff': { extensions: ['tif', 'tiff'] }, + 'image/vnd.microsoft.icon': { extensions: ['ico'] }, + 'image/webp': { extensions: ['webp'] }, + 'text/calendar': { extensions: ['ics', 'ifb'] }, + 'text/css': { extensions: ['css'] }, + 'text/csv': { extensions: ['csv'] }, + 'text/html': { extensions: ['htm', 'html', 'shtml'] }, + 'text/javascript': { extensions: ['js', 'mjs'] }, 'text/plain': { - extensions: ['txt', 'text', 'conf', 'def', 'list', 'log', 'in', 'ini'], - }, - 'video/3gpp': { - extensions: ['3gp', '3gpp'], - }, - 'video/3gpp2': { - extensions: ['3g2'], - }, - 'video/mp2t': { - extensions: ['ts'], - }, - 'video/mp4': { - extensions: ['mp4', 'mp4v', 'mpg4'], - }, - 'video/mpeg': { - extensions: ['mpeg', 'mpg', 'mpe', 'm1v', 'm2v'], - }, - 'video/ogg': { - extensions: ['ogv'], - }, - 'video/webm': { - extensions: ['webm'], - }, - 'video/x-msvideo': { - extensions: ['avi'], - }, -} satisfies SystemDefinition['mimeTypes']; + extensions: ['conf', 'def', 'in', 'ini', 'list', 'log', 'text', 'txt'], + }, + 'video/3gpp': { extensions: ['3gp', '3gpp'] }, + 'video/3gpp2': { extensions: ['3g2'] }, + 'video/mp2t': { extensions: ['ts'] }, + 'video/mp4': { extensions: ['mp4', 'mp4v', 'mpg4'] }, + 'video/mpeg': { extensions: ['m1v', 'm2v', 'mpe', 'mpeg', 'mpg'] }, + 'video/ogg': { extensions: ['ogv'] }, + 'video/webm': { extensions: ['webm'] }, + 'video/x-msvideo': { extensions: ['avi'] }, +}; diff --git a/src/locales/bn_BD/date/index.ts b/src/locales/bn_BD/date/index.ts new file mode 100644 index 00000000000..a28ce823bb8 --- /dev/null +++ b/src/locales/bn_BD/date/index.ts @@ -0,0 +1,14 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { DateDefinition } from '../../..'; +import month from './month'; +import weekday from './weekday'; + +const date: DateDefinition = { + month, + weekday, +}; + +export default date; diff --git a/src/locales/bn_BD/date/month.ts b/src/locales/bn_BD/date/month.ts new file mode 100644 index 00000000000..ec6eefe228f --- /dev/null +++ b/src/locales/bn_BD/date/month.ts @@ -0,0 +1,30 @@ +export default { + wide: [ + 'অক্টোবর', + 'আগস্ট', + 'এপ্রিল', + 'জানুয়ারি', + 'জুন', + 'জুলাই', + 'ডিসেম্বর', + 'নভেম্বর', + 'ফেব্রুয়ারি', + 'মার্চ', + 'মে', + 'সেপ্টেম্বর', + ], + abbr: [ + 'অক্ট', + 'আগ', + 'এপ্রি', + 'জানু', + 'জুন', + 'জুলা', + 'ডিস', + 'নভ', + 'ফেব', + 'মার্চ', + 'মে', + 'সেপ', + ], +}; diff --git a/src/locales/bn_BD/date/weekday.ts b/src/locales/bn_BD/date/weekday.ts new file mode 100644 index 00000000000..67f3b3ef5b6 --- /dev/null +++ b/src/locales/bn_BD/date/weekday.ts @@ -0,0 +1,12 @@ +export default { + wide: [ + 'বুধবার', + 'বৃহস্পতিবার', + 'মঙ্গলবার', + 'রবিবার', + 'শনিবার', + 'শুক্রবার', + 'সোমবার', + ], + abbr: ['বুধ', 'বৃহস্পতি', 'মঙ্গল', 'রবি', 'শনি', 'শুক্র', 'সোম'], +}; diff --git a/src/locales/bn_BD/index.ts b/src/locales/bn_BD/index.ts new file mode 100644 index 00000000000..ec3affa38da --- /dev/null +++ b/src/locales/bn_BD/index.ts @@ -0,0 +1,22 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { LocaleDefinition } from '../..'; +import date from './date'; +import location from './location'; +import metadata from './metadata'; + +/** + * The locale data for the `bn_BD` locale. + * + * - Language: Bengali (Bangladesh) + * - Endonym: বাংলা (বাংলাদেশ) + */ +const bn_BD: LocaleDefinition = { + date, + location, + metadata, +}; + +export default bn_BD; diff --git a/src/locales/bn_BD/location/city_name.ts b/src/locales/bn_BD/location/city_name.ts new file mode 100644 index 00000000000..de01e16b902 --- /dev/null +++ b/src/locales/bn_BD/location/city_name.ts @@ -0,0 +1,484 @@ +// Source: https://bangladesh.gov.bd/site/view/upazila-list/%E0%A6%89%E0%A6%AA%E0%A6%9C%E0%A7%87%E0%A6%B2%E0%A6%BE%E0%A6%B8%E0%A6%AE%E0%A7%82%E0%A6%B9 + +export default [ + 'অভয়নগর', + 'অষ্টগ্রাম', + 'আক্কেলপুর', + 'আখাউড়া', + 'আগৈলঝাড়া', + 'আজমিরীগঞ্জ', + 'আটঘরিয়া', + 'আটপাড়া', + 'আটোয়ারী', + 'আড়াইহাজার', + 'আত্রাই', + 'আদমদিঘী', + 'আদিতমারী', + 'আনোয়ারা', + 'আমতলী', + 'আলফাডাঙ্গা', + 'আলমডাঙ্গা', + 'আলিকদম', + 'আশাশুনি', + 'আশুগঞ্জ', + 'ইটনা', + 'ইন্দুরকানী', + 'ইসলামপুর', + 'ঈদগাঁও', + 'ঈশ্বরগঞ্জ', + 'ঈশ্বরদী', + 'উখিয়া', + 'উজিরপুর', + 'উলিপুর', + 'উল্লাপাড়া', + 'ওসমানীনগর', + 'কক্সবাজার সদর', + 'কচুয়া', + 'কটিয়াদি', + 'কবিরহাট', + 'কমলগঞ্জ', + 'কমলনগর', + 'কয়রা', + 'করিমগঞ্জ', + 'কর্ণফুলি', + 'কলমাকান্দা', + 'কলাপাড়া', + 'কলারোয়া', + 'কসবা', + 'কাঁঠালিয়া', + 'কাউখালী', + 'কাউনিয়া', + 'কাজীপুর', + 'কানাইঘাট', + 'কাপাসিয়া', + 'কাপ্তাই', + 'কামারখন্দ', + 'কালকিনি', + 'কালাই', + 'কালিয়া', + 'কালিয়াকৈর', + 'কালিহাতি', + 'কালীগঞ্জ', + 'কালুখালী', + 'কাশিয়ানী', + 'কাহারোল', + 'কাহালু', + 'কিশোরগঞ্জ', + 'কিশোরগঞ্জ সদর', + 'কুড়িগ্রাম সদর', + 'কুতুবদিয়া', + 'কুমারখালী', + 'কুমিল্লা সদর', + 'কুলাউড়া', + 'কুলিয়ারচর', + 'কুষ্টিয়া সদর', + 'কেন্দুয়া', + 'কেরানীগঞ্জ', + 'কেশবপুর', + 'কোটচাঁদপুর', + 'কোটালীপাড়া', + 'কোম্পানীগঞ্জ', + 'ক্ষেতলাল', + 'খাগড়াছড়ি সদর', + 'খানসামা', + 'খালিয়াজুড়ি', + 'খোকসা', + 'গংগাচড়া', + 'গজারিয়া', + 'গফরগাঁও', + 'গলাচিপা', + 'গাংনী', + 'গাইবান্ধা সদর', + 'গাজীপুর সদর', + 'গাবতলী', + 'গুইমারা', + 'গুরুদাসপুর', + 'গোদাগারী', + 'গোপালগঞ্জ সদর', + 'গোপালপুর', + 'গোবিন্দগঞ্জ', + 'গোমস্তাপুর', + 'গোয়াইনঘাট', + 'গোয়ালন্দ', + 'গোলাপগঞ্জ', + 'গোসাইরহাট', + 'গৌরনদী', + 'গৌরীপুর', + 'ঘাটাইল', + 'ঘিওর', + 'ঘোড়াঘাট', + 'চকরিয়া', + 'চন্দনাইশ', + 'চর ভদ্রাসন', + 'চর রাজিবপুর', + 'চরফ্যাশন', + 'চাঁদপুর সদর', + 'চাঁপাইনবাবগঞ্জ সদর', + 'চাটখিল', + 'চাটমোহর', + 'চান্দিনা', + 'চারঘাট', + 'চিতলমারী', + 'চিরিরবন্দর', + 'চিলমারী', + 'চুনারুঘাট', + 'চুয়াডাঙ্গা সদর', + 'চৌগাছা', + 'চৌদ্দগ্রাম', + 'চৌহালি', + 'ছাগলনাইয়া', + 'ছাতক', + 'জকিগঞ্জ', + 'জগন্নাথপুর', + 'জয়পুরহাট সদর', + 'জলঢাকা', + 'জাজিরা', + 'জামালগঞ্জ', + 'জামালপুর সদর', + 'জীবননগর', + 'জুড়ী', + 'জুরাছড়ি', + 'জৈন্তাপুর', + 'ঝালকাঠি সদর', + 'ঝিকরগাছা', + 'ঝিনাইগাতী', + 'ঝিনাইদহ সদর', + 'টংগিবাড়ী', + 'টাঙ্গাইল সদর', + 'টুঙ্গিপাড়া', + 'টেকনাফ', + 'ঠাকুরগাঁও সদর', + 'ডামুড্যা', + 'ডাসার', + 'ডিমলা', + 'ডুমুরিয়া', + 'ডোমার', + 'তজমুদ্দিন', + 'তাড়াইল', + 'তাড়াশ', + 'তানোর', + 'তারাকান্দা', + 'তারাগঞ্জ', + 'তালতলী', + 'তালা', + 'তাহিরপুর', + 'তিতাস', + 'তেতুলিয়া', + 'তেরখাদা', + 'ত্রিশাল', + 'থানচি', + 'দক্ষিণ সুরমা', + 'দশমিনা', + 'দাউদকান্দি', + 'দাকোপ', + 'দাগনভূঁইয়া', + 'দামুড়হুদা', + 'দিঘলিয়া', + 'দিনাজপুর সদর', + 'দিরাই', + 'দীঘিনালা', + 'দুপচাঁচিয়া', + 'দুমকি', + 'দুর্গাপুর', + 'দেওয়ানগঞ্জ', + 'দেবহাটা', + 'দেবিদ্বার', + 'দেবীগঞ্জ', + 'দেলদুয়ার', + 'দোয়ারাবাজার', + 'দোহার', + 'দৌলতখান', + 'দৌলতপুর', + 'ধনবাড়ী', + 'ধর্মপাশা', + 'ধামরাই', + 'ধামুরহাট', + 'ধুনট', + 'ধোবাউড়া', + 'নওগাঁ সদর', + 'নকলা', + 'নগরকান্দা', + 'নড়াইল সদর', + 'নড়িয়া', + 'নন্দীগ্রাম', + 'নবাবগঞ্জ', + 'নবীগঞ্জ', + 'নবীনগর', + 'নরসিংদী সদর', + 'নলছিটি', + 'নলডাঙ্গা', + 'নাইক্ষ্যংছড়ি', + 'নাগরপুর', + 'নাগেশ্বরী', + 'নাঙ্গলকোট', + 'নাচোল', + 'নাজিরপুর', + 'নাটোর সদর', + 'নানিয়াচর', + 'নান্দাইল', + 'নারায়ণগঞ্জ সদর', + 'নালিতাবাড়ী', + 'নাসিরনগর', + 'নিকলী', + 'নিয়ামতপুর', + 'নীলফামারী সদর', + 'নেছারাবাদ', + 'নেত্রকোণা সদর', + 'নোয়াখালী সদর', + 'পঞ্চগড় সদর', + 'পটিয়া', + 'পটুয়াখালী সদর', + 'পত্নীতলা', + 'পবা', + 'পরশুরাম', + 'পলাশ', + 'পলাশবাড়ী', + 'পাঁচবিবি', + 'পাংশা', + 'পাইকগাছা', + 'পাকুন্দিয়া', + 'পাটগ্রাম', + 'পাথরঘাটা', + 'পানছড়ি', + 'পাবনা সদর', + 'পার্বতীপুর', + 'পিরোজপুর সদর', + 'পীরগঞ্জ', + 'পীরগাছা', + 'পুঠিয়া', + 'পূর্বধলা', + 'পেকুয়া', + 'পোরশা', + 'ফকিরহাট', + 'ফটিকছড়ি', + 'ফরিদগঞ্জ', + 'ফরিদপুর', + 'ফরিদপুর সদর', + 'ফুলগাজী', + 'ফুলছড়ি', + 'ফুলতলা', + 'ফুলপুর', + 'ফুলবাড়িয়া', + 'ফুলবাড়ী', + 'ফেঞ্চুগঞ্জ', + 'ফেনী সদর', + 'বকশীগঞ্জ', + 'বগুড়া সদর', + 'বটিয়াঘাটা', + 'বড়লেখা', + 'বদরগঞ্জ', + 'বদলগাছী', + 'বন্দর', + 'বরকল', + 'বরগুনা সদর', + 'বরাইগ্রাম', + 'বরিশাল সদর', + 'বরুরা', + 'বাঁশখালী', + 'বাউফল', + 'বাকেরগঞ্জ', + 'বাগমারা', + 'বাগাতিপাড়া', + 'বাগেরহাট সদর', + 'বাঘা', + 'বাঘাইছড়ি', + 'বাঘারপাড়া', + 'বাজিতপুর', + 'বাঞ্ছারামপুর', + 'বানারীপাড়া', + 'বানিয়াচং', + 'বান্দরবান সদর', + 'বাবুগঞ্জ', + 'বামনা', + 'বারহাট্টা', + 'বালাগঞ্জ', + 'বালিয়াকান্দি', + 'বালিয়াডাঙ্গী', + 'বাসাইল', + 'বাহুবল', + 'বিজয়নগর', + 'বিয়ানীবাজার', + 'বিরল', + 'বিরামপুর', + 'বিলাইছড়ি', + 'বিশ্বনাথ', + 'বিশ্বম্ভরপুর', + 'বীরগঞ্জ', + 'বুড়িচং', + 'বেগমগঞ্জ', + 'বেড়া', + 'বেতাগি', + 'বেলকুচি', + 'বেলাবো', + 'বোচাগঞ্জ', + 'বোদা', + 'বোয়ালখালী', + 'বোয়ালমারী', + 'বোরহানউদ্দিন', + 'ব্রাহ্মণপাড়া', + 'ব্রাহ্মণবাড়িয়া সদর', + 'ভাঙ্গা', + 'ভাঙ্গুরা', + 'ভান্ডারিয়া', + 'ভালুকা', + 'ভুরুঙ্গামারী', + 'ভূঞাপুর', + 'ভেড়ামারা', + 'ভেদরগঞ্জ', + 'ভৈরব', + 'ভোলা সদর', + 'ভোলাহাট', + 'মঠবাড়িয়া', + 'মতলব উত্তর', + 'মতলব দক্ষিণ', + 'মদন', + 'মধুখালী', + 'মধুপুর', + 'মধ্যনগর', + 'মনপুরা', + 'মনিরামপুর', + 'মনোহরগঞ্জ', + 'মনোহরদী', + 'ময়মনসিংহ সদর', + 'মহাদেবপুর', + 'মহালছড়ি', + 'মহেশখালী', + 'মহেশপুর', + 'মাগুরা সদর', + 'মাটিরাঙ্গা', + 'মাদারগঞ্জ', + 'মাদারীপুর সদর', + 'মাধবপুর', + 'মানিকগঞ্জ সদর', + 'মানিকছড়ি', + 'মান্দা', + 'মিটামইন', + 'মিঠাপুকুর', + 'মিরপুর', + 'মির্জাগঞ্জ', + 'মির্জাপুর', + 'মীরসরাই', + 'মুকসুদপুর', + 'মুক্তাগাছা', + 'মুজিবনগর', + 'মুন্সীগঞ্জ সদর', + 'মুরাদনগর', + 'মুলাদী', + 'মেঘনা', + 'মেলান্দহ', + 'মেহেন্দিগঞ্জ', + 'মেহেরপুর সদর', + 'মোংলা', + 'মোড়েলগঞ্জ', + 'মোল্লাহাট', + 'মোহনগঞ্জ', + 'মোহনপুর', + 'মোহাম্মদপুর', + 'মৌলভীবাজার সদর', + 'যশোর সদর', + 'রংপুর সদর', + 'রাউজান', + 'রাঙ্গাবালী', + 'রাঙ্গামাটি সদর', + 'রাঙ্গুনিয়া', + 'রাজনগর', + 'রাজবাড়ী সদর', + 'রাজস্থলী', + 'রাজাপুর', + 'রাজারহাট', + 'রাজৈর', + 'রানীনগর', + 'রানীশংকৈল', + 'রামগঞ্জ', + 'রামগড়', + 'রামগতি', + 'রামপাল', + 'রামু', + 'রায়গঞ্জ', + 'রায়পুর', + 'রায়পুরা', + 'রুমা', + 'রূপগঞ্জ', + 'রূপসা', + 'রোয়াংছড়ি', + 'রৌমারী', + 'লংগদু', + 'লক্ষীছড়ি', + 'লক্ষ্মীপুর সদর', + 'লাকসাম', + 'লাখাই', + 'লামা', + 'লালপুর', + 'লালমনিরহাট সদর', + 'লালমাই', + 'লালমোহন', + 'লোহাগড়া', + 'লোহাগাড়া', + 'লৌহজং', + 'শরণখোলা', + 'শরীয়তপুর সদর', + 'শাজাহানপুর', + 'শান্তিগঞ্জ', + 'শায়েস্তাগঞ্জ', + 'শার্শা', + 'শালিখা', + 'শাল্লা', + 'শাহজাদপুর', + 'শাহরাস্তি', + 'শিবগঞ্জ', + 'শিবচর', + 'শিবপুর', + 'শিবালয়', + 'শেরপুর সদর', + 'শৈলকুপা', + 'শ্যামনগর', + 'শ্রীনগর', + 'শ্রীপুর', + 'শ্রীবরদী', + 'শ্রীমঙ্গল', + 'সখিপুর', + 'সদর দক্ষিণ', + 'সদরপুর', + 'সন্দ্বীপ', + 'সরাইল', + 'সরিষাবাড়ি', + 'সাঁথিয়া', + 'সাঘাটা', + 'সাটুরিয়া', + 'সাতকানিয়া', + 'সাতক্ষীরা সদর', + 'সাদুল্লাপুর', + 'সাপাহার', + 'সাভার', + 'সারিয়াকান্দি', + 'সালথা', + 'সিংড়া', + 'সিঙ্গাইর', + 'সিরাজগঞ্জ সদর', + 'সিরাজদিখান', + 'সিলেট সদর', + 'সীতাকুণ্ড', + 'সুজানগর', + 'সুন্দরগঞ্জ', + 'সুবর্ণ চর', + 'সেনবাগ', + 'সৈয়দপুর', + 'সোনাইমুড়ি', + 'সোনাগাজী', + 'সোনাতলা', + 'সোনারগাঁও', + 'হবিগঞ্জ সদর', + 'হরিণাকুন্ডু', + 'হরিপুর', + 'হরিরামপুর', + 'হাইমচর', + 'হাকিমপুর', + 'হাজীগঞ্জ', + 'হাটহাজারী', + 'হাতিয়া', + 'হাতীবান্ধা', + 'হালুয়াঘাট', + 'হিজলা', + 'হোমনা', + 'হোসেনপুর', +]; diff --git a/src/locales/bn_BD/location/city_pattern.ts b/src/locales/bn_BD/location/city_pattern.ts new file mode 100644 index 00000000000..ad43b68fc5c --- /dev/null +++ b/src/locales/bn_BD/location/city_pattern.ts @@ -0,0 +1 @@ +export default ['{{location.city_name}}']; diff --git a/src/locales/bn_BD/location/continent.ts b/src/locales/bn_BD/location/continent.ts new file mode 100644 index 00000000000..6f5aa6fbb22 --- /dev/null +++ b/src/locales/bn_BD/location/continent.ts @@ -0,0 +1,9 @@ +export default [ + 'আফ্রিকা', + 'অ্যান্টার্কটিকা', + 'এশিয়া', + 'অস্ট্রেলিয়া', + 'ইউরোপ', + 'উত্তর আমেরিকা', + 'দক্ষিণ আমেরিকা', +]; diff --git a/src/locales/bn_BD/location/country.ts b/src/locales/bn_BD/location/country.ts new file mode 100644 index 00000000000..0831da125b4 --- /dev/null +++ b/src/locales/bn_BD/location/country.ts @@ -0,0 +1,251 @@ +export default [ + 'আফগানিস্তান', + 'অ্যাল্যান্ড দ্বীপপুঞ্জ', + 'আলবেনিয়া', + 'আলজেরিয়া', + 'আমেরিকান সামোয়া', + 'অ্যান্ডোরা', + 'অ্যাঙ্গোলা', + 'অ্যাঙ্গুইলা', + 'অ্যান্টার্কটিকা', + 'অ্যান্টিগা এবং বারবুডা', + 'আর্জেন্টিনা', + 'আর্মেনিয়া', + 'আরুবা', + 'অস্ট্রেলিয়া', + 'অস্ট্রিয়া', + 'আজারবাইজান', + 'বাহামাস', + 'বাহরাইন', + 'বাংলাদেশ', + 'বার্বাডোজ', + 'বেলারুশ', + 'বেলজিয়াম', + 'বেলিজ', + 'বেনিন', + 'বারমুডা', + 'ভুটান', + 'বলিভিয়া', + 'বোনেয়ার, সিন্ট ইউস্টাটিয়াস এবং সাবা', + 'বসনিয়া ও হার্জেগোভিনা', + 'বতসোয়ানা', + 'বুভেট আইল্যান্ড', + 'ব্রাজিল', + 'ব্রিটিশ ভারত মহাসাগর অঞ্চল (চাগোস দ্বীপপুঞ্জ)', + 'ব্রুনাই দারুসসালাম', + 'বুলগেরিয়া', + 'বুর্কিনা ফাসো', + 'বুরুন্ডি', + 'কম্বোডিয়া', + 'ক্যামেরুন', + 'কানাডা', + 'কেপ গ্রিন', + 'কেম্যান দ্বীপপুঞ্জ', + 'মধ্য আফ্রিকান প্রজাতন্ত্র', + 'চাদ', + 'চিলি', + 'চীন', + 'ক্রিসমাস আইল্যান্ড', + 'কোকোস (কিলিং) দ্বীপপুঞ্জ', + 'কলম্বিয়া', + 'কোমোরোস', + 'কঙ্গো', + 'কুক আইল্যান্ডস', + 'কোস্টারিকা', + 'আইভরি কোস্ট', + 'ক্রোয়েশিয়া', + 'কিউবা', + 'কুরাকাও', + 'সাইপ্রাস', + 'চেক প্রজাতন্ত্র', + 'কঙ্গো গণতান্ত্রিক প্রজাতন্ত্র', + 'ডেনমার্ক', + 'জিবুতি', + 'ডোমিনিকা', + 'ডোমিনিকান রিপাবলিক', + 'ইকুয়েডর', + 'মিশর', + 'পরিত্রাতা', + 'নিরক্ষীয় গিনি', + 'ইরিত্রিয়া', + 'এস্তোনিয়া', + 'ঈশ্বাতিনী', + 'ইথিওপিয়া', + 'ফ্যারো দ্বীপপুঞ্জ', + 'ফকল্যান্ড দ্বীপপুঞ্জ (ফকল্যান্ড)', + 'ফিজি', + 'ফিনল্যান্ড', + 'ফ্রান্স', + 'ফরাসি গায়ানা', + 'ফরাসি পলিনেশিয়া', + 'ফরাসি দক্ষিণ অঞ্চল', + 'গ্যাবন', + 'গাম্বিয়া', + 'জর্জিয়া', + 'জার্মানি', + 'ঘানা', + 'জিব্রাল্টার', + 'গ্রীস', + 'গ্রিনল্যান্ড', + 'গ্রেনাডা', + 'গুয়াডেলুপ', + 'গুয়াম', + 'গুয়েতেমালা', + 'গার্নসি', + 'গিনি', + 'গিনি-বিসাউ', + 'গিয়ানা', + 'হাইতি', + 'হার্ড আইল্যান্ড এবং ম্যাকডোনাল্ড দ্বীপপুঞ্জ', + 'হলি সি (ভ্যাটিকান সিটি স্টেট)', + 'হন্ডুরাস', + 'হংকং', + 'হাঙ্গেরি', + 'আইসল্যান্ড', + 'ভারত', + 'ইন্দোনেশিয়া', + 'ইরান', + 'ইরাক', + 'আয়ারল্যান্ড', + 'আইল অফ ম্যান', + 'ইসরায়েল', + 'ইতালি', + 'জ্যামাইকা', + 'জাপান', + 'জার্সি', + 'জর্ডান', + 'কাজাখস্তান', + 'কেনিয়া', + 'কিরিবাতি', + 'গণতান্ত্রিক গণপ্রজাতন্ত্রী কোরিয়া', + 'কোরিয়া প্রজাতন্ত্র', + 'কুয়েত', + 'কিরগিজ প্রজাতন্ত্র', + 'লাও পিপলস ডেমোক্রেটিক রিপাবলিক', + 'লাটভিয়া', + 'লেবানন', + 'লেসোথো', + 'লাইবেরিয়া', + 'লিবিয়ান আরব জনগণ', + 'লিচেনস্টাইন', + 'লিথুয়ানিয়া', + 'লাক্সেমবার্গ', + 'ম্যাকাও', + 'মাদাগাস্কার', + 'মালাউই', + 'মালয়েশিয়া', + 'মালদ্বীপ', + 'মালি', + 'মাল্টা', + 'মার্শাল দ্বীপপুঞ্জ', + 'মার্টিনিক', + 'মৌরিতানিয়া', + 'মরিশাস', + 'মায়োট', + 'মেক্সিকো', + 'মাইক্রোনেশিয়া', + 'মোল্দোভা', + 'মোনাকো', + 'মঙ্গোলিয়া', + 'মন্টিনিগ্রো', + 'মন্টসেরাট', + 'মরক্কো', + 'মোজাম্বিক', + 'মিয়ানমার', + 'নামিবিয়া', + 'নাউরু', + 'নেপাল', + 'নেদারল্যান্ডস', + 'নিউ ক্যালেডোনিয়া', + 'নিউজিল্যান্ড', + 'নিকারাগুয়া', + 'নাইজার', + 'নাইজেরিয়া', + 'নিউ', + 'নরফোক দ্বীপ', + 'উত্তর ম্যাসেডোনিয়া', + 'উত্তর মারিয়ানা দ্বীপপুঞ্জ', + 'নরওয়ে', + 'ওমান', + 'পাকিস্তান', + 'পালাউ', + 'প্যালেস্টাইন', + 'পানামা', + 'পাপুয়া নিউ গিনি', + 'প্যারাগুয়ে', + 'পেরু', + 'ফিলিপাইন', + 'পিটকেয়ার্ন দ্বীপপুঞ্জ', + 'পোল্যান্ড', + 'পর্তুগাল', + 'পুয়ের্তো রিকো', + 'কাতার', + 'রিইউনিয়ন', + 'রোমানিয়া', + 'রাশিয়ান ফেডারেশন', + 'রুয়ান্ডা', + 'সেন্ট বার্থেলেমি', + 'সেন্ট হেলেনা', + 'সেন্ট কিটস অ্যান্ড নেভিস', + 'সেন্ট লুসিয়া', + 'সেন্ট মার্টিন', + 'সেন্ট পিয়েরে অ্যান্ড মিকেলন', + 'সেন্ট ভিনসেন্ট অ্যান্ড দ্য গ্রেনাডাইনস', + 'সামোয়া', + 'সান মারিনো', + 'সাও টোম অ্যান্ড প্রিন্সিপে', + 'সৌদি আরব', + 'সেনেগাল', + 'সার্বিয়া', + 'সেশেলস', + 'সিয়েরা লিওন', + 'সিঙ্গাপুর', + 'সিন্ট মার্টেন', + 'স্লোভাকিয়া', + 'স্লোভেনিয়া', + 'সলোমন দ্বীপপুঞ্জ', + 'সোমালিয়া', + 'দক্ষিণ আফ্রিকা', + 'দক্ষিণ জর্জিয়া এবং দক্ষিণ স্যান্ডউইচ দ্বীপপুঞ্জ', + 'দক্ষিণ সুদান', + 'স্পেন', + 'শ্রীলঙ্কা', + 'সুদান', + 'সুরিনাম', + 'সোয়ালবার্ড এবং জান মায়েন দ্বীপপুঞ্জ', + 'সুইডেন', + 'সুইজারল্যান্ড', + 'সিরিয়ান আরব প্রজাতন্ত্র', + 'তাইওয়ান', + 'তাজিকিস্তান', + 'তানজানিয়া', + 'থাইল্যান্ড', + 'তিমর-লেস্তে', + 'টোগো', + 'টোকেলাউ', + 'টোঙ্গা', + 'ত্রিনিদাদ ও টোবাগো', + 'তিউনিসিয়া', + 'তুরস্ক', + 'তুর্কমেনিস্তান', + 'তুর্কস এবং কাইকোস দ্বীপপুঞ্জ', + 'টুভালু', + 'উগান্ডা', + 'ইউক্রেন', + 'সংযুক্ত আরব আমিরাত', + 'যুক্তরাজ্য', + 'মার্কিন যুক্তরাষ্ট্র', + 'ইউনাইটেড স্টেটস মাইনর আউটলাইং আইল্যান্ডস', + 'উরুগুয়ে', + 'উজবেকিস্তান', + 'ভানুয়াতু', + 'ভেনিজুয়েলা', + 'ভিয়েতনাম', + 'ভার্জিন দ্বীপপুঞ্জ, ব্রিটিশ', + 'ভার্জিন দ্বীপপুঞ্জ, মার্কিন যুক্তরাষ্ট্র', + 'ওয়ালিস এবং ফুটুনা', + 'ওয়েস্টার্ন সাহারা', + 'ইয়েমেন', + 'জাম্বিয়া', + 'জিম্বাবুয়ে', +]; diff --git a/src/locales/bn_BD/location/county.ts b/src/locales/bn_BD/location/county.ts new file mode 100644 index 00000000000..6d0b860b4e7 --- /dev/null +++ b/src/locales/bn_BD/location/county.ts @@ -0,0 +1,68 @@ +// Source: https://bangladesh.gov.bd/site/view/district-list/%E0%A6%9C%E0%A7%87%E0%A6%B2%E0%A6%BE%E0%A6%B8%E0%A6%AE%E0%A7%82%E0%A6%B9 + +export default [ + 'কুমিল্লা', + 'ফেনী', + 'ব্রাহ্মণবাড়িয়া', + 'রাঙ্গামাটি', + 'নোয়াখালী', + 'চাঁদপুর', + 'লক্ষ্মীপুর', + 'চট্টগ্রাম', + 'কক্সবাজার', + 'খাগড়াছড়ি', + 'বান্দরবান', + 'সিরাজগঞ্জ', + 'পাবনা', + 'বগুড়া', + 'রাজশাহী', + 'নাটোর', + 'জয়পুরহাট', + 'চাঁপাইনবাবগঞ্জ', + 'নওগাঁ', + 'যশোর', + 'সাতক্ষীরা', + 'মেহেরপুর', + 'নড়াইল', + 'চুয়াডাঙ্গা', + 'কুষ্টিয়া', + 'মাগুরা', + 'খুলনা', + 'বাগেরহাট', + 'ঝিনাইদহ', + 'ঝালকাঠি', + 'পটুয়াখালী', + 'পিরোজপুর', + 'বরিশাল', + 'ভোলা', + 'বরগুনা', + 'সিলেট', + 'মৌলভীবাজার', + 'হবিগঞ্জ', + 'সুনামগঞ্জ', + 'নরসিংদী', + 'গাজীপুর', + 'শরীয়তপুর', + 'নারায়ণগঞ্জ', + 'টাঙ্গাইল', + 'কিশোরগঞ্জ', + 'মানিকগঞ্জ', + 'ঢাকা', + 'মুন্সিগঞ্জ', + 'রাজবাড়ী', + 'মাদারীপুর', + 'গোপালগঞ্জ', + 'ফরিদপুর', + 'পঞ্চগড়', + 'দিনাজপুর', + 'লালমনিরহাট', + 'নীলফামারী', + 'গাইবান্ধা', + 'ঠাকুরগাঁও', + 'রংপুর', + 'কুড়িগ্রাম', + 'শেরপুর', + 'ময়মনসিংহ', + 'জামালপুর', + 'নেত্রকোণা', +]; diff --git a/src/locales/bn_BD/location/index.ts b/src/locales/bn_BD/location/index.ts new file mode 100644 index 00000000000..3bfdffcf27e --- /dev/null +++ b/src/locales/bn_BD/location/index.ts @@ -0,0 +1,22 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { LocationDefinition } from '../../..'; +import city_name from './city_name'; +import city_pattern from './city_pattern'; +import continent from './continent'; +import country from './country'; +import county from './county'; +import state from './state'; + +const location: LocationDefinition = { + city_name, + city_pattern, + continent, + country, + county, + state, +}; + +export default location; diff --git a/src/locales/bn_BD/location/state.ts b/src/locales/bn_BD/location/state.ts new file mode 100644 index 00000000000..ed18aa87ace --- /dev/null +++ b/src/locales/bn_BD/location/state.ts @@ -0,0 +1,12 @@ +// Source: https://bangladesh.gov.bd/site/view/division-list/%E0%A6%AC%E0%A6%BF%E0%A6%AD%E0%A6%BE%E0%A6%97%E0%A6%B8%E0%A6%AE%E0%A7%82%E0%A6%B9 + +export default [ + 'বরিশাল', + 'চট্টগ্রাম', + 'ঢাকা', + 'খুলনা', + 'ময়মনসিংহ', + 'রাজশাহী', + 'রংপুর ', + 'সিলেট', +]; diff --git a/src/locales/bn_BD/metadata.ts b/src/locales/bn_BD/metadata.ts new file mode 100644 index 00000000000..e49c7dc8bf2 --- /dev/null +++ b/src/locales/bn_BD/metadata.ts @@ -0,0 +1,13 @@ +import type { PreBuiltMetadataDefinitionForCountry } from '../../definitions/metadata'; + +const metadata: PreBuiltMetadataDefinitionForCountry = { + title: 'Bengali (Bangladesh)', + code: 'bn_BD', + country: 'BD', + language: 'bn', + endonym: 'বাংলা (বাংলাদেশ)', + dir: 'ltr', + script: 'Beng', +}; + +export default metadata; diff --git a/src/locales/cs_CZ/internet/domain_suffix.ts b/src/locales/cs_CZ/internet/domain_suffix.ts index f22b023368e..910a7821feb 100644 --- a/src/locales/cs_CZ/internet/domain_suffix.ts +++ b/src/locales/cs_CZ/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['cz', 'com', 'net', 'eu', 'org']; +export default ['com', 'cz', 'eu', 'net', 'org']; diff --git a/src/locales/cs_CZ/internet/free_email.ts b/src/locales/cs_CZ/internet/free_email.ts index e893f514838..5298eef23b5 100644 --- a/src/locales/cs_CZ/internet/free_email.ts +++ b/src/locales/cs_CZ/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'seznam.cz', 'centrum.cz', 'volny.cz', 'atlas.cz']; +export default ['atlas.cz', 'centrum.cz', 'gmail.com', 'seznam.cz', 'volny.cz']; diff --git a/src/locales/cy/date/index.ts b/src/locales/cy/date/index.ts new file mode 100644 index 00000000000..a28ce823bb8 --- /dev/null +++ b/src/locales/cy/date/index.ts @@ -0,0 +1,14 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { DateDefinition } from '../../..'; +import month from './month'; +import weekday from './weekday'; + +const date: DateDefinition = { + month, + weekday, +}; + +export default date; diff --git a/src/locales/cy/date/month.ts b/src/locales/cy/date/month.ts new file mode 100644 index 00000000000..b13ff449a1a --- /dev/null +++ b/src/locales/cy/date/month.ts @@ -0,0 +1,30 @@ +export default { + wide: [ + 'Awst', + 'Chwefror', + 'Ebrill', + 'Gorffennaf', + 'Hydref', + 'Ionawr', + 'Mai', + 'Mawrth', + 'Medi', + 'Mehefin', + 'Rhagfyr', + 'Tachwedd', + ], + abbr: [ + 'Aws', + 'Chwef', + 'Ebr', + 'Gorff', + 'Hyd', + 'Ion', + 'Mai', + 'Maw', + 'Medi', + 'Meh', + 'Rhag', + 'Tach', + ], +}; diff --git a/src/locales/cy/date/weekday.ts b/src/locales/cy/date/weekday.ts new file mode 100644 index 00000000000..bb740603d9f --- /dev/null +++ b/src/locales/cy/date/weekday.ts @@ -0,0 +1,4 @@ +export default { + wide: ['Gwener', 'Iau', 'Llun', 'Mawrth', 'Mercher', 'Sadwrn', 'Sul'], + abbr: ['Gwen', 'Iau', 'Llun', 'Maw', 'Mer', 'Sad', 'Sul'], +}; diff --git a/src/locales/cy/index.ts b/src/locales/cy/index.ts new file mode 100644 index 00000000000..03b39ee1159 --- /dev/null +++ b/src/locales/cy/index.ts @@ -0,0 +1,20 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { LocaleDefinition } from '../..'; +import date from './date'; +import metadata from './metadata'; + +/** + * The locale data for the `cy` locale. + * + * - Language: Welsh + * - Endonym: Cymraeg + */ +const cy: LocaleDefinition = { + date, + metadata, +}; + +export default cy; diff --git a/src/locales/cy/metadata.ts b/src/locales/cy/metadata.ts new file mode 100644 index 00000000000..7c7b41d20fc --- /dev/null +++ b/src/locales/cy/metadata.ts @@ -0,0 +1,12 @@ +import type { PreBuiltMetadataDefinition } from '../../definitions/metadata'; + +const metadata: PreBuiltMetadataDefinition = { + title: 'Welsh', + code: 'cy', + language: 'cy', + endonym: 'Cymraeg', + dir: 'ltr', + script: 'Latn', +}; + +export default metadata; diff --git a/src/locales/da/commerce/product_name.ts b/src/locales/da/commerce/product_name.ts index 0fd09461a4d..eb1c29b49c0 100644 --- a/src/locales/da/commerce/product_name.ts +++ b/src/locales/da/commerce/product_name.ts @@ -64,4 +64,7 @@ export default { 'Tastatur', 'Tun', ], + pattern: [ + '{{commerce.productAdjective}} {{commerce.productMaterial}} {{commerce.product}}', + ], }; diff --git a/src/locales/da/internet/domain_suffix.ts b/src/locales/da/internet/domain_suffix.ts index b5484416a3c..f6eb3a82f99 100644 --- a/src/locales/da/internet/domain_suffix.ts +++ b/src/locales/da/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com', 'info', 'name', 'net', 'org', 'dk']; +export default ['com', 'dk', 'info', 'name', 'net', 'org']; diff --git a/src/locales/da/location/index.ts b/src/locales/da/location/index.ts index d0fe278c249..4c48994ec3d 100644 --- a/src/locales/da/location/index.ts +++ b/src/locales/da/location/index.ts @@ -10,6 +10,7 @@ import country from './country'; import direction from './direction'; import postcode from './postcode'; import secondary_address from './secondary_address'; +import state from './state'; import street_address from './street_address'; import street_name from './street_name'; import street_pattern from './street_pattern'; @@ -22,6 +23,7 @@ const location: LocationDefinition = { direction, postcode, secondary_address, + state, street_address, street_name, street_pattern, diff --git a/src/locales/da/location/state.ts b/src/locales/da/location/state.ts new file mode 100644 index 00000000000..1895a67769f --- /dev/null +++ b/src/locales/da/location/state.ts @@ -0,0 +1,7 @@ +export default [ + 'Hovedstaden', + 'Midtjylland', + 'Nordjylland', + 'Sjælland', + 'Syddanmark', +]; diff --git a/src/locales/de/internet/domain_suffix.ts b/src/locales/de/internet/domain_suffix.ts index a4a980863ce..425e82bce8a 100644 --- a/src/locales/de/internet/domain_suffix.ts +++ b/src/locales/de/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com', 'info', 'name', 'net', 'org', 'de', 'ch']; +export default ['ch', 'com', 'de', 'info', 'name', 'net', 'org']; diff --git a/src/locales/de/internet/free_email.ts b/src/locales/de/internet/free_email.ts index 8ef7d24397b..6f46aaab244 100644 --- a/src/locales/de/internet/free_email.ts +++ b/src/locales/de/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'yahoo.com', 'hotmail.com']; +export default ['gmail.com', 'hotmail.com', 'yahoo.com']; diff --git a/src/locales/de_AT/internet/domain_suffix.ts b/src/locales/de_AT/internet/domain_suffix.ts index 2269aa174c7..8ec7fb3841a 100644 --- a/src/locales/de_AT/internet/domain_suffix.ts +++ b/src/locales/de_AT/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com', 'info', 'name', 'net', 'org', 'de', 'ch', 'at']; +export default ['at', 'ch', 'com', 'de', 'info', 'name', 'net', 'org']; diff --git a/src/locales/de_AT/internet/free_email.ts b/src/locales/de_AT/internet/free_email.ts index 8ef7d24397b..6f46aaab244 100644 --- a/src/locales/de_AT/internet/free_email.ts +++ b/src/locales/de_AT/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'yahoo.com', 'hotmail.com']; +export default ['gmail.com', 'hotmail.com', 'yahoo.com']; diff --git a/src/locales/de_CH/internet/domain_suffix.ts b/src/locales/de_CH/internet/domain_suffix.ts index dafff68ce76..1aa32264d06 100644 --- a/src/locales/de_CH/internet/domain_suffix.ts +++ b/src/locales/de_CH/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com', 'net', 'biz', 'ch', 'de', 'li', 'at']; +export default ['at', 'biz', 'ch', 'com', 'de', 'li', 'net']; diff --git a/src/locales/el/commerce/product_name.ts b/src/locales/el/commerce/product_name.ts index 19ea1a93e00..2a295a1a812 100644 --- a/src/locales/el/commerce/product_name.ts +++ b/src/locales/el/commerce/product_name.ts @@ -35,4 +35,7 @@ export default { 'Υπολογιστής', 'Ωάρι', ], + pattern: [ + '{{commerce.productAdjective}} {{commerce.productMaterial}} {{commerce.product}}', + ], }; diff --git a/src/locales/el/finance/credit_card/discover.ts b/src/locales/el/finance/credit_card/discover.ts index 1010fae7e49..6b7bbb482ea 100644 --- a/src/locales/el/finance/credit_card/discover.ts +++ b/src/locales/el/finance/credit_card/discover.ts @@ -1,5 +1 @@ -export default [ - '/6011-####-####-###L/', - '/64[4-9]#-####-####-###L/', - '/65##-####-####-###L/', -]; +export default ['/6011-####-####-###L/', '/65##-####-####-###L/']; diff --git a/src/locales/el/finance/currency.ts b/src/locales/el/finance/currency.ts index a3d06cda8ca..e225aa22efd 100644 --- a/src/locales/el/finance/currency.ts +++ b/src/locales/el/finance/currency.ts @@ -3,5 +3,6 @@ export default [ name: 'Ευρώ', code: 'EUR', symbol: '€', + numericCode: '978', }, ]; diff --git a/src/locales/el/internet/domain_suffix.ts b/src/locales/el/internet/domain_suffix.ts index 0df3763abbd..3da96f519d4 100644 --- a/src/locales/el/internet/domain_suffix.ts +++ b/src/locales/el/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['gr', 'com', 'biz', 'info', 'name']; +export default ['biz', 'com', 'gr', 'info', 'name']; diff --git a/src/locales/el/internet/free_email.ts b/src/locales/el/internet/free_email.ts index 8ef7d24397b..6f46aaab244 100644 --- a/src/locales/el/internet/free_email.ts +++ b/src/locales/el/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'yahoo.com', 'hotmail.com']; +export default ['gmail.com', 'hotmail.com', 'yahoo.com']; diff --git a/src/locales/en/airline/airline.ts b/src/locales/en/airline/airline.ts index a2be4548f40..6e2a275a2d3 100644 --- a/src/locales/en/airline/airline.ts +++ b/src/locales/en/airline/airline.ts @@ -8,7 +8,7 @@ export default [ { name: 'Air Canada', iataCode: 'AC' }, { name: 'Air China', iataCode: 'CA' }, { name: 'Air Europa', iataCode: 'UX' }, - { name: 'Air France-KLM', iataCode: 'AF' }, + { name: 'Air France', iataCode: 'AF' }, { name: 'Air India', iataCode: 'AI' }, { name: 'Air Mauritius', iataCode: 'MK' }, { name: 'Air New Zealand', iataCode: 'NZ' }, @@ -67,6 +67,7 @@ export default [ { name: 'JetSMART', iataCode: 'JA' }, { name: 'Juneyao Airlines', iataCode: 'HO' }, { name: 'Kenya Airways', iataCode: 'KQ' }, + { name: 'KLM Royal Dutch Airlines', iataCode: 'KL' }, { name: 'Korean Air', iataCode: 'KE' }, { name: 'Kulula.com', iataCode: 'MN' }, { name: 'LATAM Airlines', iataCode: 'LA' }, @@ -100,7 +101,7 @@ export default [ { name: 'Southwest Airlines', iataCode: 'WN' }, { name: 'SpiceJet', iataCode: 'SG' }, { name: 'Spirit Airlines', iataCode: 'NK' }, - { name: 'Spring Airlines', iataCode: '9S' }, + { name: 'Spring Airlines', iataCode: '9C' }, { name: 'SriLankan Airlines', iataCode: 'UL' }, { name: 'Star Peru', iataCode: '2I' }, { name: 'Sun Country Airlines', iataCode: 'SY' }, diff --git a/src/locales/en/commerce/product_name.ts b/src/locales/en/commerce/product_name.ts index aff3e57848d..d28437b237c 100644 --- a/src/locales/en/commerce/product_name.ts +++ b/src/locales/en/commerce/product_name.ts @@ -71,4 +71,7 @@ export default { 'Towels', 'Tuna', ], + pattern: [ + '{{commerce.productAdjective}} {{commerce.productMaterial}} {{commerce.product}}', + ], }; diff --git a/src/locales/en/finance/credit_card/diners_club.ts b/src/locales/en/finance/credit_card/diners_club.ts index b372913b820..b5eb693355b 100644 --- a/src/locales/en/finance/credit_card/diners_club.ts +++ b/src/locales/en/finance/credit_card/diners_club.ts @@ -1,5 +1 @@ -export default [ - '30[0-5]#-######-###L', - '36##-######-###L', - '54##-####-####-###L', -]; +export default ['30[0-5]#-######-###L', '36##-######-###L']; diff --git a/src/locales/en/finance/credit_card/discover.ts b/src/locales/en/finance/credit_card/discover.ts index d2b3ac18dbb..734723f8929 100644 --- a/src/locales/en/finance/credit_card/discover.ts +++ b/src/locales/en/finance/credit_card/discover.ts @@ -1,5 +1 @@ -export default [ - '6011-####-####-###L', - '64[4-9]#-####-####-###L', - '65##-####-####-###L', -]; +export default ['6011-####-####-###L', '65##-####-####-###L']; diff --git a/src/locales/en/finance/currency.ts b/src/locales/en/finance/currency.ts index 7cccf4fec77..be2a387654c 100644 --- a/src/locales/en/finance/currency.ts +++ b/src/locales/en/finance/currency.ts @@ -3,770 +3,924 @@ export default [ name: 'UAE Dirham', code: 'AED', symbol: '', + numericCode: '784', }, { name: 'Afghani', code: 'AFN', symbol: '؋', + numericCode: '971', }, { name: 'Lek', code: 'ALL', symbol: 'Lek', + numericCode: '008', }, { name: 'Armenian Dram', code: 'AMD', symbol: '', + numericCode: '051', }, { name: 'Netherlands Antillian Guilder', code: 'ANG', symbol: 'ƒ', + numericCode: '532', }, { name: 'Kwanza', code: 'AOA', symbol: '', + numericCode: '973', }, { name: 'Argentine Peso', code: 'ARS', symbol: '$', + numericCode: '032', }, { name: 'Australian Dollar', code: 'AUD', symbol: '$', + numericCode: '036', }, { name: 'Aruban Guilder', code: 'AWG', symbol: 'ƒ', + numericCode: '533', }, { name: 'Azerbaijanian Manat', code: 'AZN', symbol: 'ман', + numericCode: '944', }, { name: 'Convertible Marks', code: 'BAM', symbol: 'KM', + numericCode: '977', }, { name: 'Barbados Dollar', code: 'BBD', symbol: '$', + numericCode: '052', }, { name: 'Taka', code: 'BDT', symbol: '', + numericCode: '050', }, { name: 'Bulgarian Lev', code: 'BGN', symbol: 'лв', + numericCode: '975', }, { name: 'Bahraini Dinar', code: 'BHD', symbol: '', + numericCode: '048', }, { name: 'Burundi Franc', code: 'BIF', symbol: '', + numericCode: '108', }, { name: 'Bermudian Dollar (customarily known as Bermuda Dollar)', code: 'BMD', symbol: '$', + numericCode: '060', }, { name: 'Brunei Dollar', code: 'BND', symbol: '$', + numericCode: '096', }, { name: 'Boliviano boliviano', code: 'BOB', symbol: 'Bs', + numericCode: '068', }, { name: 'Brazilian Real', code: 'BRL', symbol: 'R$', + numericCode: '986', }, { name: 'Bahamian Dollar', code: 'BSD', symbol: '$', + numericCode: '044', }, { name: 'Pula', code: 'BWP', symbol: 'P', + numericCode: '072', }, { name: 'Belarusian Ruble', code: 'BYN', symbol: 'Rbl', + numericCode: '933', }, { name: 'Belize Dollar', code: 'BZD', symbol: 'BZ$', + numericCode: '084', }, { name: 'Canadian Dollar', code: 'CAD', symbol: '$', + numericCode: '124', }, { name: 'Congolese Franc', code: 'CDF', symbol: '', + numericCode: '976', }, { name: 'Swiss Franc', code: 'CHF', symbol: 'CHF', + numericCode: '756', }, { name: 'Chilean Peso', code: 'CLP', symbol: '$', + numericCode: '152', }, { name: 'Yuan Renminbi', code: 'CNY', symbol: '¥', + numericCode: '156', }, { name: 'Colombian Peso', code: 'COP', symbol: '$', + numericCode: '170', }, { name: 'Costa Rican Colon', code: 'CRC', symbol: '₡', + numericCode: '188', }, { name: 'Cuban Peso', code: 'CUP', symbol: '₱', + numericCode: '192', }, { name: 'Cape Verde Escudo', code: 'CVE', symbol: '', + numericCode: '132', }, { name: 'Czech Koruna', code: 'CZK', symbol: 'Kč', + numericCode: '203', }, { name: 'Djibouti Franc', code: 'DJF', symbol: '', + numericCode: '262', }, { name: 'Danish Krone', code: 'DKK', symbol: 'kr', + numericCode: '208', }, { name: 'Dominican Peso', code: 'DOP', symbol: 'RD$', + numericCode: '214', }, { name: 'Algerian Dinar', code: 'DZD', symbol: '', + numericCode: '012', }, { name: 'Egyptian Pound', code: 'EGP', symbol: '£', + numericCode: '818', }, { name: 'Nakfa', code: 'ERN', symbol: '', + numericCode: '232', }, { name: 'Ethiopian Birr', code: 'ETB', symbol: '', + numericCode: '230', }, { name: 'Euro', code: 'EUR', symbol: '€', + numericCode: '978', }, { name: 'Fiji Dollar', code: 'FJD', symbol: '$', + numericCode: '242', }, { name: 'Falkland Islands Pound', code: 'FKP', symbol: '£', + numericCode: '238', }, { name: 'Pound Sterling', code: 'GBP', symbol: '£', + numericCode: '826', }, { name: 'Lari', code: 'GEL', symbol: '', + numericCode: '981', }, { name: 'Cedi', code: 'GHS', symbol: '', + numericCode: '936', }, { name: 'Gibraltar Pound', code: 'GIP', symbol: '£', + numericCode: '292', }, { name: 'Dalasi', code: 'GMD', symbol: '', + numericCode: '270', }, { name: 'Guinea Franc', code: 'GNF', symbol: '', + numericCode: '324', }, { name: 'Quetzal', code: 'GTQ', symbol: 'Q', + numericCode: '320', }, { name: 'Guyana Dollar', code: 'GYD', symbol: '$', + numericCode: '328', }, { name: 'Hong Kong Dollar', code: 'HKD', symbol: '$', + numericCode: '344', }, { name: 'Lempira', code: 'HNL', symbol: 'L', + numericCode: '340', }, { name: 'Gourde', code: 'HTG', symbol: '', + numericCode: '332', }, { name: 'Forint', code: 'HUF', symbol: 'Ft', + numericCode: '348', }, { name: 'Rupiah', code: 'IDR', symbol: 'Rp', + numericCode: '360', }, { name: 'New Israeli Sheqel', code: 'ILS', symbol: '₪', + numericCode: '376', }, { name: 'Bhutanese Ngultrum', code: 'BTN', symbol: 'Nu', + numericCode: '064', }, { name: 'Indian Rupee', code: 'INR', symbol: '₹', + numericCode: '356', }, { name: 'Iraqi Dinar', code: 'IQD', symbol: '', + numericCode: '368', }, { name: 'Iranian Rial', code: 'IRR', symbol: '﷼', + numericCode: '364', }, { name: 'Iceland Krona', code: 'ISK', symbol: 'kr', + numericCode: '352', }, { name: 'Jamaican Dollar', code: 'JMD', symbol: 'J$', + numericCode: '388', }, { name: 'Jordanian Dinar', code: 'JOD', symbol: '', + numericCode: '400', }, { name: 'Yen', code: 'JPY', symbol: '¥', + numericCode: '392', }, { name: 'Kenyan Shilling', code: 'KES', symbol: '', + numericCode: '404', }, { name: 'Som', code: 'KGS', symbol: 'лв', + numericCode: '417', }, { name: 'Riel', code: 'KHR', symbol: '៛', + numericCode: '116', }, { name: 'Comoro Franc', code: 'KMF', symbol: '', + numericCode: '174', }, { name: 'North Korean Won', code: 'KPW', symbol: '₩', + numericCode: '408', }, { name: 'Won', code: 'KRW', symbol: '₩', + numericCode: '410', }, { name: 'Kuwaiti Dinar', code: 'KWD', symbol: '', + numericCode: '414', }, { name: 'Cayman Islands Dollar', code: 'KYD', symbol: '$', + numericCode: '136', }, { name: 'Tenge', code: 'KZT', symbol: 'лв', + numericCode: '398', }, { name: 'Kip', code: 'LAK', symbol: '₭', + numericCode: '418', }, { name: 'Lebanese Pound', code: 'LBP', symbol: '£', + numericCode: '422', }, { name: 'Sri Lanka Rupee', code: 'LKR', symbol: '₨', + numericCode: '144', }, { name: 'Liberian Dollar', code: 'LRD', symbol: '$', + numericCode: '430', }, { name: 'Libyan Dinar', code: 'LYD', symbol: '', + numericCode: '434', }, { name: 'Moroccan Dirham', code: 'MAD', symbol: '', + numericCode: '504', }, { name: 'Moldovan Leu', code: 'MDL', symbol: '', + numericCode: '498', }, { name: 'Malagasy Ariary', code: 'MGA', symbol: '', + numericCode: '969', }, { name: 'Denar', code: 'MKD', symbol: 'ден', + numericCode: '807', }, { name: 'Kyat', code: 'MMK', symbol: '', + numericCode: '104', }, { name: 'Tugrik', code: 'MNT', symbol: '₮', + numericCode: '496', }, { name: 'Pataca', code: 'MOP', symbol: '', + numericCode: '446', }, { name: 'Ouguiya', code: 'MRU', symbol: '', + numericCode: '929', }, { name: 'Mauritius Rupee', code: 'MUR', symbol: '₨', + numericCode: '480', }, { name: 'Rufiyaa', code: 'MVR', symbol: '', + numericCode: '462', }, { name: 'Kwacha', code: 'MWK', symbol: '', + numericCode: '454', }, { name: 'Mexican Peso', code: 'MXN', symbol: '$', + numericCode: '484', }, { name: 'Malaysian Ringgit', code: 'MYR', symbol: 'RM', + numericCode: '458', }, { name: 'Metical', code: 'MZN', symbol: 'MT', + numericCode: '943', }, { name: 'Naira', code: 'NGN', symbol: '₦', + numericCode: '566', }, { name: 'Cordoba Oro', code: 'NIO', symbol: 'C$', + numericCode: '558', }, { name: 'Norwegian Krone', code: 'NOK', symbol: 'kr', + numericCode: '578', }, { name: 'Nepalese Rupee', code: 'NPR', symbol: '₨', + numericCode: '524', }, { name: 'New Zealand Dollar', code: 'NZD', symbol: '$', + numericCode: '554', }, { name: 'Rial Omani', code: 'OMR', symbol: '﷼', + numericCode: '512', }, { name: 'Balboa', code: 'PAB', symbol: 'B/.', + numericCode: '590', }, { name: 'Nuevo Sol', code: 'PEN', symbol: 'S/.', + numericCode: '604', }, { name: 'Kina', code: 'PGK', symbol: '', + numericCode: '598', }, { name: 'Philippine Peso', code: 'PHP', symbol: 'Php', + numericCode: '608', }, { name: 'Pakistan Rupee', code: 'PKR', symbol: '₨', + numericCode: '586', }, { name: 'Zloty', code: 'PLN', symbol: 'zł', + numericCode: '985', }, { name: 'Guarani', code: 'PYG', symbol: 'Gs', + numericCode: '600', }, { name: 'Qatari Rial', code: 'QAR', symbol: '﷼', + numericCode: '634', }, { name: 'New Leu', code: 'RON', symbol: 'lei', + numericCode: '946', }, { name: 'Serbian Dinar', code: 'RSD', symbol: 'Дин.', + numericCode: '941', }, { name: 'Russian Ruble', code: 'RUB', symbol: 'руб', + numericCode: '643', }, { name: 'Rwanda Franc', code: 'RWF', symbol: '', + numericCode: '646', }, { name: 'Saudi Riyal', code: 'SAR', symbol: '﷼', + numericCode: '682', }, { name: 'Solomon Islands Dollar', code: 'SBD', symbol: '$', + numericCode: '090', }, { name: 'Seychelles Rupee', code: 'SCR', symbol: '₨', + numericCode: '690', }, { name: 'Sudanese Pound', code: 'SDG', symbol: '', + numericCode: '938', }, { name: 'Swedish Krona', code: 'SEK', symbol: 'kr', + numericCode: '752', }, { name: 'Singapore Dollar', code: 'SGD', symbol: '$', + numericCode: '702', }, { name: 'Saint Helena Pound', code: 'SHP', symbol: '£', + numericCode: '654', }, { name: 'Leone', code: 'SLE', symbol: '', + numericCode: '925', }, { name: 'Somali Shilling', code: 'SOS', symbol: 'S', + numericCode: '706', }, { name: 'Surinam Dollar', code: 'SRD', symbol: '$', + numericCode: '968', }, { name: 'South Sudanese pound', code: 'SSP', symbol: '', + numericCode: '728', }, { name: 'Dobra', code: 'STN', symbol: 'Db', + numericCode: '930', }, { name: 'Syrian Pound', code: 'SYP', symbol: '£', + numericCode: '760', }, { name: 'Lilangeni', code: 'SZL', symbol: '', + numericCode: '748', }, { name: 'Baht', code: 'THB', symbol: '฿', + numericCode: '764', }, { name: 'Somoni', code: 'TJS', symbol: '', + numericCode: '972', }, { name: 'Manat', code: 'TMT', symbol: '', + numericCode: '934', }, { name: 'Tunisian Dinar', code: 'TND', symbol: '', + numericCode: '788', }, { name: "Pa'anga", code: 'TOP', symbol: '', + numericCode: '776', }, { name: 'Turkish Lira', code: 'TRY', symbol: '₺', + numericCode: '949', }, { name: 'Trinidad and Tobago Dollar', code: 'TTD', symbol: 'TT$', + numericCode: '780', }, { name: 'New Taiwan Dollar', code: 'TWD', symbol: 'NT$', + numericCode: '901', }, { name: 'Tanzanian Shilling', code: 'TZS', symbol: '', + numericCode: '834', }, { name: 'Hryvnia', code: 'UAH', symbol: '₴', + numericCode: '980', }, { name: 'Uganda Shilling', code: 'UGX', symbol: '', + numericCode: '800', }, { name: 'US Dollar', code: 'USD', symbol: '$', + numericCode: '840', }, { name: 'Peso Uruguayo', code: 'UYU', symbol: '$U', + numericCode: '858', }, { name: 'Uzbekistan Sum', code: 'UZS', symbol: 'лв', + numericCode: '860', }, { name: 'Venezuelan bolívar', code: 'VES', symbol: 'Bs', + numericCode: '928', }, { name: 'Dong', code: 'VND', symbol: '₫', + numericCode: '704', }, { name: 'Vatu', code: 'VUV', symbol: '', + numericCode: '548', }, { name: 'Tala', code: 'WST', symbol: '', + numericCode: '882', }, { name: 'CFA Franc BEAC', code: 'XAF', symbol: '', + numericCode: '950', }, { name: 'East Caribbean Dollar', code: 'XCD', symbol: '$', + numericCode: '951', }, { name: 'CFA Franc BCEAO', code: 'XOF', symbol: '', + numericCode: '952', }, { name: 'CFP Franc', code: 'XPF', symbol: '', + numericCode: '953', }, { name: 'Yemeni Rial', code: 'YER', symbol: '﷼', + numericCode: '886', }, { name: 'Rand', code: 'ZAR', symbol: 'R', + numericCode: '710', }, { name: 'Lesotho Loti', code: 'LSL', symbol: '', + numericCode: '426', }, { name: 'Namibia Dollar', code: 'NAD', symbol: 'N$', + numericCode: '516', }, { name: 'Zambian Kwacha', code: 'ZMW', symbol: 'K', + numericCode: '967', }, { name: 'Zimbabwe Dollar', code: 'ZWL', symbol: '', + numericCode: '932', }, ]; diff --git a/src/locales/en/food/fruit.ts b/src/locales/en/food/fruit.ts index c8624838913..4ba92cf8dce 100644 --- a/src/locales/en/food/fruit.ts +++ b/src/locales/en/food/fruit.ts @@ -59,6 +59,7 @@ export default [ 'plum', 'pomegranate', 'prune', + 'raspberry', 'rockmelon', 'snowpea', 'sprout', diff --git a/src/locales/en/food/vegetable.ts b/src/locales/en/food/vegetable.ts index 7e1019cf526..f053184e559 100644 --- a/src/locales/en/food/vegetable.ts +++ b/src/locales/en/food/vegetable.ts @@ -51,7 +51,6 @@ export default [ 'purple carrot', 'radicchio', 'radish', - 'raspberry', 'red cabbage', 'red pepper', 'rhubarb', diff --git a/src/locales/en/internet/domain_suffix.ts b/src/locales/en/internet/domain_suffix.ts index e5c5b94d01d..1ae76462eec 100644 --- a/src/locales/en/internet/domain_suffix.ts +++ b/src/locales/en/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com', 'biz', 'info', 'name', 'net', 'org']; +export default ['biz', 'com', 'info', 'name', 'net', 'org']; diff --git a/src/locales/en/internet/example_email.ts b/src/locales/en/internet/example_email.ts index f05b8ab6241..68b665dc941 100644 --- a/src/locales/en/internet/example_email.ts +++ b/src/locales/en/internet/example_email.ts @@ -1 +1 @@ -export default ['example.org', 'example.com', 'example.net']; +export default ['example.com', 'example.net', 'example.org']; diff --git a/src/locales/en/internet/free_email.ts b/src/locales/en/internet/free_email.ts index 8ef7d24397b..6f46aaab244 100644 --- a/src/locales/en/internet/free_email.ts +++ b/src/locales/en/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'yahoo.com', 'hotmail.com']; +export default ['gmail.com', 'hotmail.com', 'yahoo.com']; diff --git a/src/locales/en/location/country.ts b/src/locales/en/location/country.ts index 8e17d00c441..13976e6493f 100644 --- a/src/locales/en/location/country.ts +++ b/src/locales/en/location/country.ts @@ -1,6 +1,6 @@ export default [ 'Afghanistan', - 'Aland Islands', + 'Åland Islands', 'Albania', 'Algeria', 'American Samoa', @@ -52,10 +52,10 @@ export default [ 'Congo', 'Cook Islands', 'Costa Rica', - "Cote d'Ivoire", + "Côte d'Ivoire", 'Croatia', 'Cuba', - 'Curacao', + 'Curaçao', 'Cyprus', 'Czechia', 'Democratic Republic of the Congo', @@ -180,11 +180,11 @@ export default [ 'Portugal', 'Puerto Rico', 'Qatar', - 'Reunion', + 'Réunion', 'Romania', 'Russian Federation', 'Rwanda', - 'Saint Barthelemy', + 'Saint Barthélemy', 'Saint Helena', 'Saint Kitts and Nevis', 'Saint Lucia', diff --git a/src/locales/en/vehicle/model.ts b/src/locales/en/vehicle/model.ts index 341e8cd0bbc..3febd602d58 100644 --- a/src/locales/en/vehicle/model.ts +++ b/src/locales/en/vehicle/model.ts @@ -39,12 +39,12 @@ export default [ 'Land Cruiser', 'LeBaron', 'Malibu', - 'Mercielago', 'Model 3', 'Model S', 'Model T', 'Model X', 'Model Y', + 'Murcielago', 'Mustang', 'PT Cruiser', 'Prius', diff --git a/src/locales/en_AU/internet/domain_suffix.ts b/src/locales/en_AU/internet/domain_suffix.ts index 35aa9abeaa2..1e324120aef 100644 --- a/src/locales/en_AU/internet/domain_suffix.ts +++ b/src/locales/en_AU/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com.au', 'com', 'net.au', 'net', 'org.au', 'org']; +export default ['com', 'com.au', 'net', 'net.au', 'org', 'org.au']; diff --git a/src/locales/en_AU_ocker/internet/domain_suffix.ts b/src/locales/en_AU_ocker/internet/domain_suffix.ts index 35aa9abeaa2..1e324120aef 100644 --- a/src/locales/en_AU_ocker/internet/domain_suffix.ts +++ b/src/locales/en_AU_ocker/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com.au', 'com', 'net.au', 'net', 'org.au', 'org']; +export default ['com', 'com.au', 'net', 'net.au', 'org', 'org.au']; diff --git a/src/locales/en_CA/internet/domain_suffix.ts b/src/locales/en_CA/internet/domain_suffix.ts index 05942e2d250..eb953f376f8 100644 --- a/src/locales/en_CA/internet/domain_suffix.ts +++ b/src/locales/en_CA/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['ca', 'com', 'biz', 'info', 'name', 'net', 'org']; +export default ['biz', 'ca', 'com', 'info', 'name', 'net', 'org']; diff --git a/src/locales/en_CA/internet/free_email.ts b/src/locales/en_CA/internet/free_email.ts index 958590ebd0d..837d851d515 100644 --- a/src/locales/en_CA/internet/free_email.ts +++ b/src/locales/en_CA/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'yahoo.ca', 'hotmail.com']; +export default ['gmail.com', 'hotmail.com', 'yahoo.ca']; diff --git a/src/locales/en_CA/location/country_code.ts b/src/locales/en_CA/location/country_code.ts new file mode 100644 index 00000000000..75683672d61 --- /dev/null +++ b/src/locales/en_CA/location/country_code.ts @@ -0,0 +1,2 @@ +// [ISO_3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) +export default [{ alpha2: 'CA', alpha3: 'CAN', numeric: '124' }]; diff --git a/src/locales/en_CA/location/index.ts b/src/locales/en_CA/location/index.ts index 8103ffb4e93..04ccff079d1 100644 --- a/src/locales/en_CA/location/index.ts +++ b/src/locales/en_CA/location/index.ts @@ -5,6 +5,7 @@ import type { LocationDefinition } from '../../..'; import city_name from './city_name'; import city_pattern from './city_pattern'; +import country_code from './country_code'; import postcode from './postcode'; import postcode_by_state from './postcode_by_state'; import state from './state'; @@ -14,6 +15,7 @@ import street_pattern from './street_pattern'; const location: LocationDefinition = { city_name, city_pattern, + country_code, postcode, postcode_by_state, state, diff --git a/src/locales/en_GH/internet/domain_suffix.ts b/src/locales/en_GH/internet/domain_suffix.ts index a7842cbc807..c07817b4b88 100644 --- a/src/locales/en_GH/internet/domain_suffix.ts +++ b/src/locales/en_GH/internet/domain_suffix.ts @@ -1,11 +1,11 @@ export default [ + 'biz', + 'co', + 'com', 'com.gh', 'edu.gh', 'gov.gh', - 'org.gh', - 'com', 'net', 'org', - 'biz', - 'co', + 'org.gh', ]; diff --git a/src/locales/en_HK/internet/domain_suffix.ts b/src/locales/en_HK/internet/domain_suffix.ts index 54279038014..fff23737f7b 100644 --- a/src/locales/en_HK/internet/domain_suffix.ts +++ b/src/locales/en_HK/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com', 'hk', 'com.hk', 'org.hk']; +export default ['com', 'com.hk', 'hk', 'org.hk']; diff --git a/src/locales/en_IE/internet/domain_suffix.ts b/src/locales/en_IE/internet/domain_suffix.ts index cedbbf6a494..fd8f0859e55 100644 --- a/src/locales/en_IE/internet/domain_suffix.ts +++ b/src/locales/en_IE/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['ie', 'com', 'net', 'info', 'eu']; +export default ['com', 'eu', 'ie', 'info', 'net']; diff --git a/src/locales/en_IN/internet/domain_suffix.ts b/src/locales/en_IN/internet/domain_suffix.ts index 450ec4c0afe..f8972185504 100644 --- a/src/locales/en_IN/internet/domain_suffix.ts +++ b/src/locales/en_IN/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['in', 'com', 'biz', 'info', 'name', 'net', 'org', 'co.in']; +export default ['biz', 'co.in', 'com', 'in', 'info', 'name', 'net', 'org']; diff --git a/src/locales/en_IN/internet/free_email.ts b/src/locales/en_IN/internet/free_email.ts index 41cd98ae00c..54f92659860 100644 --- a/src/locales/en_IN/internet/free_email.ts +++ b/src/locales/en_IN/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'yahoo.co.in', 'hotmail.com']; +export default ['gmail.com', 'hotmail.com', 'yahoo.co.in']; diff --git a/src/locales/en_NG/internet/domain_suffix.ts b/src/locales/en_NG/internet/domain_suffix.ts index e681cb4fd93..676fec81f9e 100644 --- a/src/locales/en_NG/internet/domain_suffix.ts +++ b/src/locales/en_NG/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com.ng', 'com', 'org.ng', 'ng']; +export default ['com', 'com.ng', 'ng', 'org.ng']; diff --git a/src/locales/en_US/internet/domain_suffix.ts b/src/locales/en_US/internet/domain_suffix.ts index ed5c784702f..ce8d4cf3ff1 100644 --- a/src/locales/en_US/internet/domain_suffix.ts +++ b/src/locales/en_US/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com', 'us', 'biz', 'info', 'name', 'net', 'org']; +export default ['biz', 'com', 'info', 'name', 'net', 'org', 'us']; diff --git a/src/locales/en_ZA/internet/domain_suffix.ts b/src/locales/en_ZA/internet/domain_suffix.ts index c2a0043b255..b4deb5cf183 100644 --- a/src/locales/en_ZA/internet/domain_suffix.ts +++ b/src/locales/en_ZA/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['co.za', 'com', 'org.za', 'info', 'net.za']; +export default ['co.za', 'com', 'info', 'net.za', 'org.za']; diff --git a/src/locales/eo/commerce/product_name.ts b/src/locales/eo/commerce/product_name.ts index ef8b36f9563..390c633bf41 100644 --- a/src/locales/eo/commerce/product_name.ts +++ b/src/locales/eo/commerce/product_name.ts @@ -65,4 +65,7 @@ export default { 'ĉemizo', 'ŝuo', ], + pattern: [ + '{{commerce.productAdjective}} {{commerce.productMaterial}} {{commerce.product}}', + ], }; diff --git a/src/locales/es/commerce/product_name.ts b/src/locales/es/commerce/product_name.ts index 1607614e377..a74204b7649 100644 --- a/src/locales/es/commerce/product_name.ts +++ b/src/locales/es/commerce/product_name.ts @@ -52,4 +52,7 @@ export default { 'Toallas', 'Zapatos', ], + pattern: [ + '{{commerce.product}} {{commerce.productAdjective}} de {{commerce.productMaterial}}', + ], }; diff --git a/src/locales/es/internet/domain_suffix.ts b/src/locales/es/internet/domain_suffix.ts index 9cce7ce8393..cefd4f59503 100644 --- a/src/locales/es/internet/domain_suffix.ts +++ b/src/locales/es/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com', 'es', 'info', 'com.es', 'org', 'eus', 'cat']; +export default ['cat', 'com', 'com.es', 'es', 'eus', 'info', 'org']; diff --git a/src/locales/es/internet/free_email.ts b/src/locales/es/internet/free_email.ts index 8ef7d24397b..6f46aaab244 100644 --- a/src/locales/es/internet/free_email.ts +++ b/src/locales/es/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'yahoo.com', 'hotmail.com']; +export default ['gmail.com', 'hotmail.com', 'yahoo.com']; diff --git a/src/locales/es_MX/commerce/product_name.ts b/src/locales/es_MX/commerce/product_name.ts index 22a088e2e73..8d388682c3b 100644 --- a/src/locales/es_MX/commerce/product_name.ts +++ b/src/locales/es_MX/commerce/product_name.ts @@ -55,4 +55,7 @@ export default { 'Tuna', 'Zapatos', ], + pattern: [ + '{{commerce.product}} {{commerce.productAdjective}} de {{commerce.productMaterial}}', + ], }; diff --git a/src/locales/es_MX/internet/domain_suffix.ts b/src/locales/es_MX/internet/domain_suffix.ts index 4ed9fdfecec..e8f86fa735d 100644 --- a/src/locales/es_MX/internet/domain_suffix.ts +++ b/src/locales/es_MX/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com', 'mx', 'info', 'com.mx', 'org', 'gob.mx']; +export default ['com', 'com.mx', 'gob.mx', 'info', 'mx', 'org']; diff --git a/src/locales/es_MX/internet/free_email.ts b/src/locales/es_MX/internet/free_email.ts index 4f880e7b455..de3c65d8cf5 100644 --- a/src/locales/es_MX/internet/free_email.ts +++ b/src/locales/es_MX/internet/free_email.ts @@ -1,7 +1,7 @@ export default [ + 'corpfolder.com', 'gmail.com', - 'yahoo.com', 'hotmail.com', 'nearbpo.com', - 'corpfolder.com', + 'yahoo.com', ]; diff --git a/src/locales/fa/commerce/product_name.ts b/src/locales/fa/commerce/product_name.ts index d01ead853d0..2e9049bee5b 100644 --- a/src/locales/fa/commerce/product_name.ts +++ b/src/locales/fa/commerce/product_name.ts @@ -53,4 +53,7 @@ export default { 'کلاه', 'کیبورد', ], + pattern: [ + '{{commerce.product}} {{commerce.productMaterial}} {{commerce.productAdjective}}', + ], }; diff --git a/src/locales/fa/finance/currency.ts b/src/locales/fa/finance/currency.ts index 0d11129ae4c..9d215874300 100644 --- a/src/locales/fa/finance/currency.ts +++ b/src/locales/fa/finance/currency.ts @@ -3,135 +3,162 @@ export default [ name: 'درهم امارات', code: 'AED', symbol: '', + numericCode: '784', }, { name: 'افغانی', code: 'AFN', symbol: '؋', + numericCode: '971', }, { name: 'پزو آرژانتین', code: 'ARS', symbol: '$', + numericCode: '032', }, { name: 'دلار استرالیا', code: 'AUD', symbol: '$', + numericCode: '036', }, { name: 'مانات آذربایجان', code: 'AZN', symbol: 'ман', + numericCode: '944', }, { name: 'دلار کانادا', code: 'CAD', symbol: '$', + numericCode: '124', }, { name: 'فرانک سوئیس', code: 'CHF', symbol: 'CHF', + numericCode: '756', }, { name: 'کرون چک', code: 'CZK', symbol: 'Kč', + numericCode: '203', }, { name: 'کرون', code: 'EEK', symbol: '', + numericCode: '233', }, { name: 'دینار عراق', code: 'IQD', symbol: '', + numericCode: '368', }, { name: 'ریال ایران', code: 'IRR', symbol: '﷼', + numericCode: '364', }, { name: 'کرون ایسلند', code: 'ISK', symbol: 'kr', + numericCode: '352', }, { name: 'دینار اردن', code: 'JOD', symbol: '', + numericCode: '400', }, { name: 'ین', code: 'JPY', symbol: '¥', + numericCode: '392', }, { name: 'دینار کویت', code: 'KWD', symbol: '', + numericCode: '414', }, { name: 'دینار لیبی', code: 'LYD', symbol: '', + numericCode: '434', }, { name: 'درهم مراکش', code: 'MAD', symbol: '', + numericCode: '504', }, { name: 'روپی نپال', code: 'NPR', symbol: '₨', + numericCode: '524', }, { name: 'ریال عمان', code: 'OMR', symbol: '﷼', + numericCode: '512', }, { name: 'پزو فیلیپین', code: 'PHP', symbol: 'Php', + numericCode: '608', }, { name: 'روپی پاکستان', code: 'PKR', symbol: '₨', + numericCode: '586', }, { name: 'ریال قطر', code: 'QAR', symbol: '﷼', + numericCode: '634', }, { name: 'روبل روسیه', code: 'RUB', symbol: 'руб', + numericCode: '643', }, { name: 'ریال عربستان', code: 'SAR', symbol: '﷼', + numericCode: '682', }, { name: 'پوند سودان', code: 'SDG', symbol: '', + numericCode: '938', }, { name: 'کرون سوئد', code: 'SEK', symbol: 'kr', + numericCode: '752', }, { name: 'دلار سنگاپور', code: 'SGD', symbol: '$', + numericCode: '702', }, ]; diff --git a/src/locales/fa/internet/domain_suffix.ts b/src/locales/fa/internet/domain_suffix.ts index 14c04a2b65a..dc9dab0c18e 100644 --- a/src/locales/fa/internet/domain_suffix.ts +++ b/src/locales/fa/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com', 'ir', 'info', 'net', 'org']; +export default ['com', 'info', 'ir', 'net', 'org']; diff --git a/src/locales/fa/internet/example_email.ts b/src/locales/fa/internet/example_email.ts index f05b8ab6241..68b665dc941 100644 --- a/src/locales/fa/internet/example_email.ts +++ b/src/locales/fa/internet/example_email.ts @@ -1 +1 @@ -export default ['example.org', 'example.com', 'example.net']; +export default ['example.com', 'example.net', 'example.org']; diff --git a/src/locales/fa/internet/free_email.ts b/src/locales/fa/internet/free_email.ts index 8ef7d24397b..6f46aaab244 100644 --- a/src/locales/fa/internet/free_email.ts +++ b/src/locales/fa/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'yahoo.com', 'hotmail.com']; +export default ['gmail.com', 'hotmail.com', 'yahoo.com']; diff --git a/src/locales/fr/commerce/product_name.ts b/src/locales/fr/commerce/product_name.ts index d5bed088f77..c8210a993dc 100644 --- a/src/locales/fr/commerce/product_name.ts +++ b/src/locales/fr/commerce/product_name.ts @@ -64,4 +64,7 @@ export default { 'Voiture', 'Vélo', ], + pattern: [ + '{{commerce.product}} {{commerce.productAdjective}} en {{commerce.productMaterial}}', + ], }; diff --git a/src/locales/fr/finance/currency.ts b/src/locales/fr/finance/currency.ts index dea5757cf72..8df12a3416e 100644 --- a/src/locales/fr/finance/currency.ts +++ b/src/locales/fr/finance/currency.ts @@ -3,430 +3,516 @@ export default [ name: 'Dollar', code: 'USD', symbol: '$', + numericCode: '840', }, { name: 'Dollar canadien', code: 'CAD', symbol: '$', + numericCode: '124', }, { name: 'Peso mexicain', code: 'MXN', symbol: '$', + numericCode: '484', }, { name: 'Florin', code: 'AWG', symbol: 'ƒ', + numericCode: '533', }, { name: 'Baisse du dollar', code: 'BBD', symbol: '$', + numericCode: '052', }, { name: 'Dollar bermudien', code: 'BMD', symbol: '$', + numericCode: '060', }, { name: 'Dollar des Bahamas', code: 'BSD', symbol: '$', + numericCode: '044', }, { name: 'Peso dominicain', code: 'DOP', symbol: '$', + numericCode: '214', }, { name: 'Dollar jamaïcain', code: 'JMD', symbol: '$', + numericCode: '388', }, { name: 'Quetzal guatémaltèque', code: 'GTQ', symbol: 'Q', + numericCode: '320', }, { name: 'Balboa panaméen', code: 'PAB', symbol: 'B/.', + numericCode: '590', }, { name: 'Dollar des Caraïbes', code: 'XCD', symbol: '$', + numericCode: '951', }, { name: 'euro', code: 'EUR', symbol: '€', + numericCode: '978', }, { name: 'Livre sterling', code: 'GBP', symbol: '£', + numericCode: '826', }, { name: 'Course géorgienne', code: 'GEL', symbol: '₾', + numericCode: '981', }, { name: 'Lev bulgare', code: 'BGN', symbol: 'лв', + numericCode: '975', }, { name: 'Franc suisse', code: 'CHF', symbol: 'CHF', + numericCode: '756', }, { name: 'Couronne danoise', code: 'DKK', symbol: 'kr', + numericCode: '208', }, { name: 'République tchèque Couronne', code: 'CZK', symbol: 'Kč', + numericCode: '203', }, { name: 'Kuna croate', code: 'HRK', symbol: 'kn', + numericCode: '191', }, { name: 'Forint hongrois', code: 'HUF', symbol: 'ft', + numericCode: '348', }, { name: 'couronne norvégienne', code: 'NOK', symbol: 'kr', + numericCode: '578', }, { name: 'Rouble russe', code: 'RUB', symbol: '₽', + numericCode: '643', }, { name: 'Zloty polonais', code: 'PLN', symbol: 'zł', + numericCode: '985', }, { name: 'Leu roumain', code: 'RON', symbol: 'lei', + numericCode: '946', }, { name: 'couronne suédoise', code: 'SEK', symbol: 'kr', + numericCode: '752', }, { name: 'Hryvnia ukrainienne', code: 'UAH', symbol: '₴', + numericCode: '980', }, { name: 'lire turque', code: 'TRY', symbol: '₺', + numericCode: '949', }, { name: 'Argentine Peso', code: 'ARS', symbol: '$', + numericCode: '032', }, { name: 'Bolivien bolivien', code: 'BOB', symbol: 'Bs.', + numericCode: '068', }, { name: 'Real brésilien', code: 'BRL', symbol: 'R$', + numericCode: '986', }, { name: 'Peso chilien', code: 'CLP', symbol: '$', + numericCode: '152', }, { name: 'Peso colombien', code: 'COP', symbol: '$', + numericCode: '170', }, { name: 'Nouveau Sol Péruvien', code: 'PEN', symbol: 'S/.', + numericCode: '604', }, { name: 'Guarani paraguayen', code: 'PYG', symbol: '₲', + numericCode: '600', }, { name: 'Peso uruguayen', code: 'UYU', symbol: '$', + numericCode: '858', }, { name: 'Bolivar vénézuélien', code: 'VES', symbol: 'Bs.', + numericCode: '928', }, { name: 'Yen japonais', code: 'JPY', symbol: '¥', + numericCode: '392', }, { name: 'Bangladesh Taka', code: 'BDT', symbol: '৳', + numericCode: '050', }, { name: 'Le yuan chinois', code: 'CNY', symbol: '¥', + numericCode: '156', }, { name: 'Dollar de Hong Kong', code: 'HKD', symbol: '$', + numericCode: '344', }, { name: 'Roupie indienne', code: 'INR', symbol: '₹', + numericCode: '356', }, { name: 'Riel cambodgien', code: 'KHR', symbol: '៛', + numericCode: '116', }, { name: 'Poulet', code: 'LAK', symbol: '₭', + numericCode: '418', }, { name: 'Roupie sri lankaise', code: 'LKR', symbol: 'රු', + numericCode: '144', }, { name: 'Rufiyaa', code: 'MVR', symbol: '.ރ', + numericCode: '462', }, { name: 'cloche malaisienne', code: 'MYR', symbol: 'RM', + numericCode: '458', }, { name: 'Roupie népalaise', code: 'NPR', symbol: 'रू', + numericCode: '524', }, { name: 'Peso philippin', code: 'PHP', symbol: '₱', + numericCode: '608', }, { name: 'Roupie pakistanaise', code: 'PKR', symbol: '₨', + numericCode: '586', }, { name: 'Dollar de Singapour', code: 'SGD', symbol: '$', + numericCode: '702', }, { name: 'Baht thaïlandais', code: 'THB', symbol: '฿', + numericCode: '764', }, { name: 'Nouveau dollar de Taïwan', code: 'TWD', symbol: '$', + numericCode: '901', }, { name: 'Dong vietnamien', code: 'VND', symbol: '₫', + numericCode: '704', }, { name: 'Dollar australien', code: 'AUD', symbol: '$', + numericCode: '036', }, { name: 'Dollar fidjien', code: 'FJD', symbol: '$', + numericCode: '242', }, { name: 'Dollar néo-zélandais', code: 'NZD', symbol: '$', + numericCode: '554', }, { name: 'Franc CFP', code: 'XPF', symbol: '₣', + numericCode: '953', }, { name: 'Livre égyptienne', code: 'EGP', symbol: '£', + numericCode: '818', }, { name: 'Cédi ghanéen', code: 'GHS', symbol: '₵', + numericCode: '936', }, { name: 'Dalasi', code: 'GMD', symbol: 'D', + numericCode: '270', }, { name: 'Shilling kenyan', code: 'KES', symbol: 'Sh', + numericCode: '404', }, { name: 'Dirham marocain', code: 'MAD', symbol: 'DH', + numericCode: '504', }, { name: 'Ariary malgache', code: 'MGA', symbol: 'Ar', + numericCode: '969', }, { name: 'Roupie mauricienne', code: 'MUR', symbol: '₨', + numericCode: '480', }, { name: 'Dollar namibien', code: 'NAD', symbol: '$', + numericCode: '516', }, { name: 'Naira nigérian', code: 'NGN', symbol: '₦', + numericCode: '566', }, { name: 'Roupie', code: 'SCR', symbol: '₨', + numericCode: '690', }, { name: 'Dinar tunisien', code: 'TND', symbol: 'DT', + numericCode: '788', }, { name: 'Shilling ougandais', code: 'UGX', symbol: 'Sh', + numericCode: '800', }, { name: 'CFA Franc BEAC', code: 'XAF', symbol: 'Fr', + numericCode: '950', }, { name: 'CFA Franc BCEAO', code: 'XOF', symbol: 'Fr', + numericCode: '952', }, { name: 'Rand sud-africain', code: 'ZAR', symbol: 'Br', + numericCode: '710', }, { name: 'Dirham des Émirats arabes unis', code: 'AED', symbol: 'د.إ', + numericCode: '784', }, { name: 'Nouveau Shekel israélien', code: 'ILS', symbol: '₪', + numericCode: '376', }, { name: 'Livre syrienne', code: 'SYP', symbol: '£', + numericCode: '760', }, { name: 'Dinar jordanien', code: 'JOD', symbol: 'د.ا', + numericCode: '400', }, { name: 'Dinar koweïtien', code: 'KWD', symbol: 'د.ك', + numericCode: '414', }, { name: 'Livre libanaise', code: 'LBP', symbol: 'ل.ل', + numericCode: '422', }, { name: 'Rial omanais', code: 'OMR', symbol: 'ر.ع.', + numericCode: '512', }, { name: 'Rial qatari', code: 'QAR', symbol: 'ر.ق', + numericCode: '634', }, { name: 'Riyal saoudien', code: 'SAR', symbol: '', + numericCode: '682', }, { name: 'Bitcoin', code: 'BTC', symbol: '₿', + numericCode: '000', }, { name: 'Ethereum', code: 'ETH', symbol: 'Ξ', + numericCode: '000', }, { name: 'Litecoin', code: 'LTC', symbol: 'Ł', + numericCode: '000', }, { name: 'Ripples', code: 'XRP', symbol: 'XRP', + numericCode: '000', }, ]; diff --git a/src/locales/fr/internet/domain_suffix.ts b/src/locales/fr/internet/domain_suffix.ts index e83d088f447..ec00dcf34c8 100644 --- a/src/locales/fr/internet/domain_suffix.ts +++ b/src/locales/fr/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com', 'fr', 'eu', 'info', 'name', 'net', 'org']; +export default ['com', 'eu', 'fr', 'info', 'name', 'net', 'org']; diff --git a/src/locales/fr/internet/free_email.ts b/src/locales/fr/internet/free_email.ts index a4db07a6c43..e29076347f0 100644 --- a/src/locales/fr/internet/free_email.ts +++ b/src/locales/fr/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'yahoo.fr', 'hotmail.fr']; +export default ['gmail.com', 'hotmail.fr', 'yahoo.fr']; diff --git a/src/locales/fr_BE/internet/domain_suffix.ts b/src/locales/fr_BE/internet/domain_suffix.ts index 88530b0fa7a..247520d250f 100644 --- a/src/locales/fr_BE/internet/domain_suffix.ts +++ b/src/locales/fr_BE/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['be', 'eu', 'com', 'biz', 'info', 'name', 'net', 'org']; +export default ['be', 'biz', 'com', 'eu', 'info', 'name', 'net', 'org']; diff --git a/src/locales/fr_CA/internet/domain_suffix.ts b/src/locales/fr_CA/internet/domain_suffix.ts index 3c1f16683e8..f4a6fa5d229 100644 --- a/src/locales/fr_CA/internet/domain_suffix.ts +++ b/src/locales/fr_CA/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['qc.ca', 'ca', 'com', 'biz', 'info', 'name', 'net', 'org']; +export default ['biz', 'ca', 'com', 'info', 'name', 'net', 'org', 'qc.ca']; diff --git a/src/locales/fr_CA/internet/free_email.ts b/src/locales/fr_CA/internet/free_email.ts index 958590ebd0d..837d851d515 100644 --- a/src/locales/fr_CA/internet/free_email.ts +++ b/src/locales/fr_CA/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'yahoo.ca', 'hotmail.com']; +export default ['gmail.com', 'hotmail.com', 'yahoo.ca']; diff --git a/src/locales/fr_CA/location/country_code.ts b/src/locales/fr_CA/location/country_code.ts new file mode 100644 index 00000000000..75683672d61 --- /dev/null +++ b/src/locales/fr_CA/location/country_code.ts @@ -0,0 +1,2 @@ +// [ISO_3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) +export default [{ alpha2: 'CA', alpha3: 'CAN', numeric: '124' }]; diff --git a/src/locales/fr_CA/location/index.ts b/src/locales/fr_CA/location/index.ts index 4567ecde2cf..eec8374f01a 100644 --- a/src/locales/fr_CA/location/index.ts +++ b/src/locales/fr_CA/location/index.ts @@ -4,6 +4,7 @@ */ import type { LocationDefinition } from '../../..'; import city_pattern from './city_pattern'; +import country_code from './country_code'; import postcode from './postcode'; import state from './state'; import state_abbr from './state_abbr'; @@ -11,6 +12,7 @@ import street_pattern from './street_pattern'; const location: LocationDefinition = { city_pattern, + country_code, postcode, state, state_abbr, diff --git a/src/locales/fr_CH/internet/domain_suffix.ts b/src/locales/fr_CH/internet/domain_suffix.ts index b10df394acb..b1263080775 100644 --- a/src/locales/fr_CH/internet/domain_suffix.ts +++ b/src/locales/fr_CH/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com', 'net', 'biz', 'ch']; +export default ['biz', 'ch', 'com', 'net']; diff --git a/src/locales/fr_CH/internet/free_email.ts b/src/locales/fr_CH/internet/free_email.ts index 5806b71cae0..4f6c95db7be 100644 --- a/src/locales/fr_CH/internet/free_email.ts +++ b/src/locales/fr_CH/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'bluewin.ch', 'hotmail.com', 'outlook.com']; +export default ['bluewin.ch', 'gmail.com', 'hotmail.com', 'outlook.com']; diff --git a/src/locales/fr_SN/internet/domain_suffix.ts b/src/locales/fr_SN/internet/domain_suffix.ts index 4c9e2ae0793..f6203d0e35d 100644 --- a/src/locales/fr_SN/internet/domain_suffix.ts +++ b/src/locales/fr_SN/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['sn', 'com', 'net', 'org']; +export default ['com', 'net', 'org', 'sn']; diff --git a/src/locales/fr_SN/internet/free_email.ts b/src/locales/fr_SN/internet/free_email.ts index 8ef7d24397b..6f46aaab244 100644 --- a/src/locales/fr_SN/internet/free_email.ts +++ b/src/locales/fr_SN/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'yahoo.com', 'hotmail.com']; +export default ['gmail.com', 'hotmail.com', 'yahoo.com']; diff --git a/src/locales/he/commerce/product_name.ts b/src/locales/he/commerce/product_name.ts index d4f6a15d287..41285b5aa99 100644 --- a/src/locales/he/commerce/product_name.ts +++ b/src/locales/he/commerce/product_name.ts @@ -55,4 +55,7 @@ export default { "צ'יפס", 'שולחן', ], + pattern: [ + '{{commerce.product}} {{commerce.productAdjective}} מ{{commerce.productMaterial}}', + ], }; diff --git a/src/locales/he/lorem/word.ts b/src/locales/he/lorem/word.ts index 30a19b72ad1..6ec1dfe0d4e 100644 --- a/src/locales/he/lorem/word.ts +++ b/src/locales/he/lorem/word.ts @@ -100,7 +100,6 @@ export default [ 'כלרשט', 'מיחוצים', 'קלאצי', - '', 'סת', 'אלמנקום', 'ניסי', diff --git a/src/locales/hr/internet/domain_suffix.ts b/src/locales/hr/internet/domain_suffix.ts index 8d380ef6321..f1b5c6b5833 100644 --- a/src/locales/hr/internet/domain_suffix.ts +++ b/src/locales/hr/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['hr', 'com', 'net', 'eu', 'org']; +export default ['com', 'eu', 'hr', 'net', 'org']; diff --git a/src/locales/hu/commerce/product_name.ts b/src/locales/hu/commerce/product_name.ts index 95d64b720f8..e895023f89e 100644 --- a/src/locales/hu/commerce/product_name.ts +++ b/src/locales/hu/commerce/product_name.ts @@ -57,4 +57,7 @@ export default { 'Törölköző', 'Virsli', ], + pattern: [ + '{{commerce.productAdjective}} {{commerce.productMaterial}} {{commerce.product}}', + ], }; diff --git a/src/locales/hu/internet/domain_suffix.ts b/src/locales/hu/internet/domain_suffix.ts index f10859fda1e..91b81c147f7 100644 --- a/src/locales/hu/internet/domain_suffix.ts +++ b/src/locales/hu/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com', 'hu', 'eu', 'net', 'org']; +export default ['com', 'eu', 'hu', 'net', 'org']; diff --git a/src/locales/hu/internet/free_email.ts b/src/locales/hu/internet/free_email.ts index 19f09d124fe..81bfe5fca7c 100644 --- a/src/locales/hu/internet/free_email.ts +++ b/src/locales/hu/internet/free_email.ts @@ -1,9 +1,9 @@ export default [ + 'citromail.hu', + 'freemail.hu', 'gmail.com', - 'hotmail.hu', 'hotamil.com', - 'freemail.hu', - 'citromail.hu', + 'hotmail.hu', 'outlook.com', 'outlook.hu', ]; diff --git a/src/locales/hu/location/building_number.ts b/src/locales/hu/location/building_number.ts new file mode 100644 index 00000000000..4b74b7def29 --- /dev/null +++ b/src/locales/hu/location/building_number.ts @@ -0,0 +1 @@ +export default ['#', '##', '###']; diff --git a/src/locales/hu/location/city_name.ts b/src/locales/hu/location/city_name.ts new file mode 100644 index 00000000000..2c5d333c560 --- /dev/null +++ b/src/locales/hu/location/city_name.ts @@ -0,0 +1,3153 @@ +export default [ + 'Aba', + 'Abádszalók', + 'Abaliget', + 'Abasár', + 'Abaújalpár', + 'Abaújkér', + 'Abaújlak', + 'Abaújszántó', + 'Abaújszolnok', + 'Abaújvár', + 'Abda', + 'Abod', + 'Abony', + 'Acsa', + 'Acsád', + 'Acsalag', + 'Adács', + 'Adásztevel', + 'Adony', + 'Adorjánháza', + 'Adorjás', + 'Aggtelek', + 'Agyagosszergény', + 'Ajak', + 'Ajka', + 'Aka', + 'Akasztó', + 'Alacska', + 'Alap', + 'Alattyán', + 'Albertirsa', + 'Alcsútdoboz', + 'Aldebrő', + 'Algyő', + 'Alibánfa', + 'Almamellék', + 'Almásfüzitő', + 'Almásháza', + 'Almáskamarás', + 'Almáskeresztúr', + 'Alsóberecki', + 'Alsóbogát', + 'Alsódobsza', + 'Alsógagy', + 'Alsómocsolád', + 'Alsónána', + 'Alsónémedi', + 'Alsónemesapáti', + 'Alsónyék', + 'Alsóörs', + 'Alsópáhok', + 'Alsópetény', + 'Alsórajk', + 'Alsóregmec', + 'Alsószenterzsébet', + 'Alsószentiván', + 'Alsószentmárton', + 'Alsószölnök', + 'Alsószuha', + 'Alsótelekes', + 'Alsótold', + 'Alsóújlak', + 'Alsóvadász', + 'Alsózsolca', + 'Ambrózfalva', + 'Anarcs', + 'Andocs', + 'Andornaktálya', + 'Andrásfa', + 'Annavölgy', + 'Apácatorna', + 'Apagy', + 'Apaj', + 'Aparhant', + 'Apátfalva', + 'Apátistvánfalva', + 'Apátvarasd', + 'Apc', + 'Apostag', + 'Aranyosapáti', + 'Aranyosgadány', + 'Arka', + 'Arló', + 'Arnót', + 'Aszaló', + 'Aszód', + 'Aszófő', + 'Atkár', + 'Attala', + 'Ábrahámhegy', + 'Ács', + 'Ácsteszér', + 'Ádánd', + 'Ág', + 'Ágasegyháza', + 'Ágfalva', + 'Álmosd', + 'Áporka', + 'Ároktő', + 'Árpádhalom', + 'Árpás', + 'Ártánd', + 'Ásotthalom', + 'Ásványráró', + 'Ászár', + 'Áta', + 'Átány', + 'Babarc', + 'Babarcszőlős', + 'Babócsa', + 'Bábolna', + 'Bábonymegyer', + 'Babosdöbréte', + 'Babót', + 'Bácsalmás', + 'Bácsbokod', + 'Bácsborsód', + 'Bácsszentgyörgy', + 'Bácsszőlős', + 'Badacsonytomaj', + 'Badacsonytördemic', + 'Bag', + 'Bagamér', + 'Baglad', + 'Bagod', + 'Bágyogszovát', + 'Baj', + 'Baja', + 'Bajánsenye', + 'Bajna', + 'Bajót', + 'Bak', + 'Bakháza', + 'Bakóca', + 'Bakonszeg', + 'Bakonya', + 'Bakonybánk', + 'Bakonybél', + 'Bakonycsernye', + 'Bakonygyirót', + 'Bakonyjákó', + 'Bakonykoppány', + 'Bakonykúti', + 'Bakonynána', + 'Bakonyoszlop', + 'Bakonypéterd', + 'Bakonypölöske', + 'Bakonyság', + 'Bakonysárkány', + 'Bakonyszentiván', + 'Bakonyszentkirály', + 'Bakonyszentlászló', + 'Bakonyszombathely', + 'Bakonyszücs', + 'Bakonytamási', + 'Baks', + 'Baksa', + 'Baktakék', + 'Baktalórántháza', + 'Baktüttös', + 'Balajt', + 'Balassagyarmat', + 'Balástya', + 'Balaton', + 'Balatonakali', + 'Balatonalmádi', + 'Balatonberény', + 'Balatonboglár', + 'Balatoncsicsó', + 'Balatonederics', + 'Balatonendréd', + 'Balatonfenyves', + 'Balatonfőkajár', + 'Balatonföldvár', + 'Balatonfüred', + 'Balatonfűzfő', + 'Balatongyörök', + 'Balatonhenye', + 'Balatonkenese', + 'Balatonkeresztúr', + 'Balatonlelle', + 'Balatonmagyaród', + 'Balatonmáriafürdő', + 'Balatonőszöd', + 'Balatonrendes', + 'Balatonszabadi', + 'Balatonszárszó', + 'Balatonszemes', + 'Balatonszentgyörgy', + 'Balatonszepezd', + 'Balatonszőlős', + 'Balatonudvari', + 'Balatonújlak', + 'Balatonvilágos', + 'Balinka', + 'Balkány', + 'Ballószög', + 'Balmazújváros', + 'Balogunyom', + 'Balotaszállás', + 'Balsa', + 'Bálványos', + 'Bana', + 'Bánd', + 'Bánfa', + 'Bánhorváti', + 'Bánk', + 'Bánokszentgyörgy', + 'Bánréve', + 'Bár', + 'Barabás', + 'Baracs', + 'Baracska', + 'Báránd', + 'Baranyahídvég', + 'Baranyajenő', + 'Baranyaszentgyörgy', + 'Barbacs', + 'Barcs', + 'Bárdudvarnok', + 'Barlahida', + 'Bárna', + 'Barnag', + 'Bársonyos', + 'Basal', + 'Baskó', + 'Báta', + 'Bátaapáti', + 'Bátaszék', + 'Baté', + 'Bátmonostor', + 'Bátonyterenye', + 'Bátor', + 'Bátorliget', + 'Battonya', + 'Bátya', + 'Batyk', + 'Bázakerettye', + 'Bazsi', + 'Béb', + 'Becsehely', + 'Becske', + 'Becskeháza', + 'Becsvölgye', + 'Bedegkér', + 'Bedő', + 'Bejcgyertyános', + 'Békás', + 'Bekecs', + 'Békés', + 'Békéscsaba', + 'Békéssámson', + 'Békésszentandrás', + 'Bekölce', + 'Bélapátfalva', + 'Bélavár', + 'Belecska', + 'Beled', + 'Beleg', + 'Belezna', + 'Bélmegyer', + 'Beloiannisz', + 'Belsősárd', + 'Belvárdgyula', + 'Benk', + 'Bénye', + 'Bér', + 'Bérbaltavár', + 'Bercel', + 'Beregdaróc', + 'Beregsurány', + 'Berekböszörmény', + 'Berekfürdő', + 'Beremend', + 'Berente', + 'Beret', + 'Berettyóújfalu', + 'Berhida', + 'Berkenye', + 'Berkesd', + 'Berkesz', + 'Bernecebaráti', + 'Berzék', + 'Berzence', + 'Besence', + 'Besenyőd', + 'Besenyőtelek', + 'Besenyszög', + 'Besnyő', + 'Beszterec', + 'Bezedek', + 'Bezenye', + 'Bezeréd', + 'Bezi', + 'Biatorbágy', + 'Bicsérd', + 'Bicske', + 'Bihardancsháza', + 'Biharkeresztes', + 'Biharnagybajom', + 'Bihartorda', + 'Biharugra', + 'Bikács', + 'Bikal', + 'Biri', + 'Birján', + 'Bisse', + 'Boba', + 'Bocfölde', + 'Boconád', + 'Bócsa', + 'Bocska', + 'Bocskaikert', + 'Boda', + 'Bodajk', + 'Bodmér', + 'Bodolyabér', + 'Bodonhely', + 'Bodony', + 'Bodorfa', + 'Bodrog', + 'Bodroghalom', + 'Bodrogkeresztúr', + 'Bodrogkisfalud', + 'Bodrogolaszi', + 'Bódvalenke', + 'Bódvarákó', + 'Bódvaszilas', + 'Bogács', + 'Bogád', + 'Bogádmindszent', + 'Bogdása', + 'Bogyiszló', + 'Bogyoszló', + 'Bojt', + 'Bókaháza', + 'Bokod', + 'Bokor', + 'Boldog', + 'Boldogasszonyfa', + 'Boldogkőújfalu', + 'Boldogkőváralja', + 'Boldva', + 'Bolhás', + 'Bolhó', + 'Bóly', + 'Boncodfölde', + 'Bonyhád', + 'Bonyhádvarasd', + 'Bonnya', + 'Bordány', + 'Borgáta', + 'Borjád', + 'Borota', + 'Borsfa', + 'Borsodbóta', + 'Borsodgeszt', + 'Borsodivánka', + 'Borsodnádasd', + 'Borsodszentgyörgy', + 'Borsodszirák', + 'Borsosberény', + 'Borszörcsök', + 'Borzavár', + 'Bosta', + 'Botpalád', + 'Botykapeterd', + 'Bozzai', + 'Bozsok', + 'Bózsva', + 'Bő', + 'Bőcs', + 'Böde', + 'Bödeháza', + 'Bögöt', + 'Bögöte', + 'Böhönye', + 'Bököny', + 'Bölcske', + 'Bőny', + 'Börcs', + 'Börzönce', + 'Bősárkány', + 'Bőszénfa', + 'Bucsa', + 'Bucsu', + 'Búcsúszentlászló', + 'Bucsuta', + 'Budajenő', + 'Budakalász', + 'Budakeszi', + 'Budaörs', + 'Budapest', + 'Bugac', + 'Bugacpusztaháza', + 'Bugyi', + 'Buj', + 'Buják', + 'Buzsák', + 'Bük', + 'Bükkábrány', + 'Bükkaranyos', + 'Bükkmogyorósd', + 'Bükkösd', + 'Bükkszék', + 'Bükkszenterzsébet', + 'Bükkszentkereszt', + 'Bükkszentmárton', + 'Bükkzsérc', + 'Bürüs', + 'Büssü', + 'Büttös', + 'Cák', + 'Cakóháza', + 'Cece', + 'Cégénydányád', + 'Cegléd', + 'Ceglédbercel', + 'Celldömölk', + 'Cered', + 'Chernelházadamonya', + 'Cibakháza', + 'Cigánd', + 'Cikó', + 'Cirák', + 'Cún', + 'Csabacsűd', + 'Csabaszabadi', + 'Csabdi', + 'Csabrendek', + 'Csáfordjánosfa', + 'Csaholc', + 'Csajág', + 'Csákány', + 'Csákánydoroszló', + 'Csákberény', + 'Csákvár', + 'Csanádalberti', + 'Csanádapáca', + 'Csanádpalota', + 'Csánig', + 'Csány', + 'Csányoszró', + 'Csanytelek', + 'Csapi', + 'Csapod', + 'Csárdaszállás', + 'Csarnóta', + 'Csaroda', + 'Császár', + 'Császártöltés', + 'Császló', + 'Csátalja', + 'Csatár', + 'Csataszög', + 'Csatka', + 'Csávoly', + 'Csebény', + 'Csécse', + 'Csegöld', + 'Csehbánya', + 'Csehi', + 'Csehimindszent', + 'Csém', + 'Csemő', + 'Csempeszkopács', + 'Csengele', + 'Csenger', + 'Csengersima', + 'Csengerújfalu', + 'Csengőd', + 'Csénye', + 'Csenyéte', + 'Csép', + 'Csépa', + 'Csepreg', + 'Csér', + 'Cserdi', + 'Cserénfa', + 'Cserépfalu', + 'Cserépváralja', + 'Cserháthaláp', + 'Cserhátsurány', + 'Cserhátszentiván', + 'Cserkeszőlő', + 'Cserkút', + 'Csernely', + 'Cserszegtomaj', + 'Csertalakos', + 'Csertő', + 'Csesznek', + 'Csesztreg', + 'Csesztve', + 'Csetény', + 'Csévharaszt', + 'Csibrák', + 'Csikéria', + 'Csikóstőttős', + 'Csikvánd', + 'Csincse', + 'Csipkerek', + 'Csitár', + 'Csobád', + 'Csobaj', + 'Csobánka', + 'Csókakő', + 'Csokonyavisonta', + 'Csokvaomány', + 'Csolnok', + 'Csólyospálos', + 'Csoma', + 'Csomád', + 'Csombárd', + 'Csongrád', + 'Csonkahegyhát', + 'Csonkamindszent', + 'Csopak', + 'Csór', + 'Csorna', + 'Csorvás', + 'Csót', + 'Csöde', + 'Csögle', + 'Csökmő', + 'Csököly', + 'Csömend', + 'Csömödér', + 'Csömör', + 'Csönge', + 'Csörnyeföld', + 'Csörög', + 'Csörötnek', + 'Csősz', + 'Csővár', + 'Csurgó', + 'Csurgónagymarton', + 'Dabas', + 'Dabronc', + 'Dabrony', + 'Dad', + 'Dág', + 'Dáka', + 'Dalmand', + 'Damak', + 'Dámóc', + 'Dánszentmiklós', + 'Dány', + 'Daraboshegy', + 'Darány', + 'Darnó', + 'Darnózseli', + 'Daruszentmiklós', + 'Darvas', + 'Dávod', + 'Debercsény', + 'Debrecen', + 'Debréte', + 'Decs', + 'Dédestapolcsány', + 'Dég', + 'Dejtár', + 'Délegyháza', + 'Demecser', + 'Demjén', + 'Dencsháza', + 'Dénesfa', + 'Derecske', + 'Derekegyház', + 'Deszk', + 'Detek', + 'Detk', + 'Dévaványa', + 'Devecser', + 'Dinnyeberki', + 'Diósberény', + 'Diósd', + 'Diósjenő', + 'Dióskál', + 'Diósviszló', + 'Doba', + 'Doboz', + 'Dobri', + 'Dobronhegy', + 'Dóc', + 'Domaháza', + 'Domaszék', + 'Dombegyház', + 'Dombiratos', + 'Dombóvár', + 'Dombrád', + 'Domony', + 'Domoszló', + 'Dormánd', + 'Dorog', + 'Dorogháza', + 'Dozmat', + 'Döbörhegy', + 'Döbröce', + 'Döbrököz', + 'Döbrönte', + 'Döge', + 'Dömös', + 'Dömsöd', + 'Dör', + 'Dörgicse', + 'Döröske', + 'Dötk', + 'Dövény', + 'Drágszél', + 'Drávacsehi', + 'Drávacsepely', + 'Drávafok', + 'Drávagárdony', + 'Drávaiványi', + 'Drávakeresztúr', + 'Drávapalkonya', + 'Drávapiski', + 'Drávaszabolcs', + 'Drávaszerdahely', + 'Drávasztára', + 'Drávatamási', + 'Drégelypalánk', + 'Dubicsány', + 'Dudar', + 'Duka', + 'Dunaalmás', + 'Dunabogdány', + 'Dunaegyháza', + 'Dunafalva', + 'Dunaföldvár', + 'Dunaharaszti', + 'Dunakeszi', + 'Dunakiliti', + 'Dunapataj', + 'Dunaremete', + 'Dunaszeg', + 'Dunaszekcső', + 'Dunaszentbenedek', + 'Dunaszentgyörgy', + 'Dunaszentmiklós', + 'Dunaszentpál', + 'Dunasziget', + 'Dunatetétlen', + 'Dunaújváros', + 'Dunavarsány', + 'Dunavecse', + 'Dusnok', + 'Dúzs', + 'Ebergőc', + 'Ebes', + 'Écs', + 'Ecséd', + 'Ecseg', + 'Ecsegfalva', + 'Ecseny', + 'Ecser', + 'Edde', + 'Edelény', + 'Edve', + 'Eger', + 'Egerág', + 'Egeralja', + 'Egeraracsa', + 'Egerbakta', + 'Egerbocs', + 'Egercsehi', + 'Egerfarmos', + 'Egerlövő', + 'Egerszalók', + 'Egerszólát', + 'Egervár', + 'Egervölgy', + 'Egyed', + 'Egyek', + 'Egyházasdengeleg', + 'Egyházasfalu', + 'Egyházasgerge', + 'Egyházasharaszti', + 'Egyházashetye', + 'Egyházashollós', + 'Egyházaskesző', + 'Egyházaskozár', + 'Egyházasrádóc', + 'Elek', + 'Ellend', + 'Előszállás', + 'Emőd', + 'Encs', + 'Encsencs', + 'Endrefalva', + 'Endrőc', + 'Enese', + 'Enying', + 'Eperjes', + 'Eperjeske', + 'Eplény', + 'Epöl', + 'Ercsi', + 'Erdőbénye', + 'Erdőhorváti', + 'Erdőkertes', + 'Erdőkövesd', + 'Erdőkürt', + 'Erdősmárok', + 'Erdősmecske', + 'Erdőtarcsa', + 'Erdőtelek', + 'Erk', + 'Erzsébet', + 'Esztár', + 'Eszteregnye', + 'Esztergályhorváti', + 'Esztergom', + 'Ete', + 'Etes', + 'Etyek', + 'Égerszög', + 'Érd', + 'Érpatak', + 'Érsekcsanád', + 'Érsekhalma', + 'Érsekvadkert', + 'Értény', + 'Fábiánháza', + 'Fábiánsebestyén', + 'Fácánkert', + 'Fadd', + 'Fáj', + 'Fajsz', + 'Fancsal', + 'Farád', + 'Farkasgyepű', + 'Farkaslyuk', + 'Farmos', + 'Fazekasboda', + 'Fedémes', + 'Fegyvernek', + 'Fehérgyarmat', + 'Fehértó', + 'Fehérvárcsurgó', + 'Feked', + 'Feketeerdő', + 'Felcsút', + 'Feldebrő', + 'Felgyő', + 'Felpéc', + 'Felsőberecki', + 'Felsőcsatár', + 'Felsődobsza', + 'Felsőegerszeg', + 'Felsőgagy', + 'Felsőjánosfa', + 'Felsőkelecsény', + 'Felsőlajos', + 'Felsőmarác', + 'Felsőmocsolád', + 'Felsőnána', + 'Felsőnyárád', + 'Felsőnyék', + 'Felsőörs', + 'Felsőpáhok', + 'Felsőpakony', + 'Felsőpetény', + 'Felsőrajk', + 'Felsőregmec', + 'Felsőszenterzsébet', + 'Felsőszentiván', + 'Felsőszentmárton', + 'Felsőszölnök', + 'Felsőtárkány', + 'Felsőtelekes', + 'Felsőtold', + 'Felsővadász', + 'Felsőzsolca', + 'Fényeslitke', + 'Fenyőfő', + 'Ferencszállás', + 'Fertőboz', + 'Fertőd', + 'Fertőendréd', + 'Fertőhomok', + 'Fertőrákos', + 'Fertőszentmiklós', + 'Fertőszéplak', + 'Fiad', + 'Filkeháza', + 'Fityeház', + 'Foktő', + 'Folyás', + 'Fonó', + 'Fony', + 'Fonyód', + 'Forráskút', + 'Forró', + 'Fót', + 'Földeák', + 'Földes', + 'Főnyed', + 'Fulókércs', + 'Furta', + 'Füle', + 'Fülesd', + 'Fülöp', + 'Fülöpháza', + 'Fülöpjakab', + 'Fülöpszállás', + 'Fülpösdaróc', + 'Fürged', + 'Füzér', + 'Füzérkajata', + 'Füzérkomlós', + 'Füzérradvány', + 'Füzesabony', + 'Füzesgyarmat', + 'Fűzvölgy', + 'Gáborján', + 'Gáborjánháza', + 'Gacsály', + 'Gadács', + 'Gadány', + 'Gadna', + 'Gádoros', + 'Gagyapáti', + 'Gagybátor', + 'Gagyvendégi', + 'Galambok', + 'Galgaguta', + 'Galgagyörk', + 'Galgahévíz', + 'Galgamácsa', + 'Gálosfa', + 'Galvács', + 'Gamás', + 'Ganna', + 'Gánt', + 'Gara', + 'Garáb', + 'Garabonc', + 'Garadna', + 'Garbolc', + 'Gárdony', + 'Garé', + 'Gasztony', + 'Gátér', + 'Gávavencsellő', + 'Géberjén', + 'Gecse', + 'Géderlak', + 'Gégény', + 'Gelej', + 'Gelénes', + 'Gellénháza', + 'Gelse', + 'Gelsesziget', + 'Gemzse', + 'Gencsapáti', + 'Gérce', + 'Gerde', + 'Gerendás', + 'Gerényes', + 'Geresdlak', + 'Gerjen', + 'Gersekarát', + 'Geszt', + 'Gesztely', + 'Geszteréd', + 'Gétye', + 'Gibárt', + 'Gic', + 'Gige', + 'Gilvánfa', + 'Girincs', + 'Gógánfa', + 'Golop', + 'Gomba', + 'Gombosszeg', + 'Gór', + 'Gordisa', + 'Gosztola', + 'Göd', + 'Gödöllő', + 'Gödre', + 'Gölle', + 'Gömörszőlős', + 'Gönc', + 'Göncruszka', + 'Gönyű', + 'Görbeháza', + 'Görcsöny', + 'Görcsönydoboka', + 'Görgeteg', + 'Gősfa', + 'Grábóc', + 'Gulács', + 'Gutorfölde', + 'Gyál', + 'Gyalóka', + 'Gyanógeregye', + 'Gyarmat', + 'Gyékényes', + 'Gyenesdiás', + 'Gyepükaján', + 'Gyermely', + 'Gyód', + 'Gyomaendrőd', + 'Gyóró', + 'Gyömöre', + 'Gyömrő', + 'Gyöngyfa', + 'Gyöngyös', + 'Gyöngyösfalu', + 'Gyöngyöshalász', + 'Gyöngyösmellék', + 'Gyöngyösoroszi', + 'Gyöngyöspata', + 'Gyöngyössolymos', + 'Gyöngyöstarján', + 'Gyönk', + 'Győr', + 'Győrasszonyfa', + 'Györe', + 'Györgytarló', + 'Györköny', + 'Győrladamér', + 'Győröcske', + 'Győrság', + 'Győrsövényház', + 'Győrszemere', + 'Győrtelek', + 'Győrújbarát', + 'Győrújfalu', + 'Győrvár', + 'Győrzámoly', + 'Gyugy', + 'Gyula', + 'Gyulaháza', + 'Gyulaj', + 'Gyulakeszi', + 'Gyúró', + 'Gyügye', + 'Gyüre', + 'Gyűrűs', + 'Hács', + 'Hagyárosbörönd', + 'Hahót', + 'Hajdúbagos', + 'Hajdúböszörmény', + 'Hajdúdorog', + 'Hajdúhadház', + 'Hajdúnánás', + 'Hajdúsámson', + 'Hajdúszoboszló', + 'Hajdúszovát', + 'Hajmás', + 'Hajmáskér', + 'Hajós', + 'Halastó', + 'Halászi', + 'Halásztelek', + 'Halimba', + 'Halmaj', + 'Halmajugra', + 'Halogy', + 'Hangács', + 'Hangony', + 'Hantos', + 'Harasztifalu', + 'Harc', + 'Harka', + 'Harkakötöny', + 'Harkány', + 'Háromfa', + 'Háromhuta', + 'Harsány', + 'Hárskút', + 'Harta', + 'Hásságy', + 'Hatvan', + 'Hédervár', + 'Hedrehely', + 'Hegyesd', + 'Hegyeshalom', + 'Hegyfalu', + 'Hegyháthodász', + 'Hegyhátmaróc', + 'Hegyhátsál', + 'Hegyhátszentjakab', + 'Hegyhátszentmárton', + 'Hegyhátszentpéter', + 'Hegykő', + 'Hegymagas', + 'Hegymeg', + 'Hegyszentmárton', + 'Héhalom', + 'Hejce', + 'Hejőbába', + 'Hejőkeresztúr', + 'Hejőkürt', + 'Hejőpapi', + 'Hejőszalonta', + 'Helesfa', + 'Helvécia', + 'Hencida', + 'Hencse', + 'Herceghalom', + 'Hercegkút', + 'Hercegszántó', + 'Heréd', + 'Héreg', + 'Herencsény', + 'Herend', + 'Heresznye', + 'Hermánszeg', + 'Hernád', + 'Hernádbűd', + 'Hernádcéce', + 'Hernádkak', + 'Hernádkércs', + 'Hernádnémeti', + 'Hernádpetri', + 'Hernádszentandrás', + 'Hernádszurdok', + 'Hernádvécse', + 'Hernyék', + 'Hét', + 'Hetefejércse', + 'Hetes', + 'Hetvehely', + 'Hetyefő', + 'Heves', + 'Hevesaranyos', + 'Hevesvezekény', + 'Hévíz', + 'Hévízgyörk', + 'Hidas', + 'Hidasnémeti', + 'Hidegkút', + 'Hidegség', + 'Hidvégardó', + 'Himesháza', + 'Himod', + 'Hirics', + 'Hobol', + 'Hodász', + 'Hódmezővásárhely', + 'Hollád', + 'Hollóháza', + 'Hollókő', + 'Homokbödöge', + 'Homokkomárom', + 'Homokmégy', + 'Homokszentgyörgy', + 'Homorúd', + 'Homrogd', + 'Hont', + 'Horpács', + 'Hort', + 'Hortobágy', + 'Horváthertelend', + 'Horvátlövő', + 'Horvátzsidány', + 'Hosszúhetény', + 'Hosszúpályi', + 'Hosszúpereszteg', + 'Hosszúvíz', + 'Hosszúvölgy', + 'Hosztót', + 'Hottó', + 'Hőgyész', + 'Hövej', + 'Hugyag', + 'Hunya', + 'Hunyadfalva', + 'Husztót', + 'Ibafa', + 'Iborfia', + 'Ibrány', + 'Igal', + 'Igar', + 'Igrici', + 'Iharos', + 'Iharosberény', + 'Ikervár', + 'Iklad', + 'Iklanberény', + 'Iklódbördőce', + 'Ikrény', + 'Iliny', + 'Ilk', + 'Illocska', + 'Imola', + 'Imrehegy', + 'Ináncs', + 'Inárcs', + 'Inke', + 'Ipacsfa', + 'Ipolydamásd', + 'Ipolyszög', + 'Ipolytarnóc', + 'Ipolytölgyes', + 'Ipolyvece', + 'Iregszemcse', + 'Irota', + 'Isaszeg', + 'Ispánk', + 'Istenmezeje', + 'Istvándi', + 'Iszkaszentgyörgy', + 'Iszkáz', + 'Isztimér', + 'Ivád', + 'Iván', + 'Ivánbattyán', + 'Ivánc', + 'Iváncsa', + 'Ivándárda', + 'Izmény', + 'Izsák', + 'Izsófalva', + 'Jágónak', + 'Ják', + 'Jakabszállás', + 'Jákfa', + 'Jákfalva', + 'Jákó', + 'Jánd', + 'Jánkmajtis', + 'Jánoshalma', + 'Jánosháza', + 'Jánoshida', + 'Jánossomorja', + 'Járdánháza', + 'Jármi', + 'Jásd', + 'Jászágó', + 'Jászalsószentgyörgy', + 'Jászapáti', + 'Jászárokszállás', + 'Jászberény', + 'Jászboldogháza', + 'Jászdózsa', + 'Jászfelsőszentgyörgy', + 'Jászfényszaru', + 'Jászivány', + 'Jászjákóhalma', + 'Jászkarajenő', + 'Jászkisér', + 'Jászladány', + 'Jászszentandrás', + 'Jászszentlászló', + 'Jásztelek', + 'Jéke', + 'Jenő', + 'Jobaháza', + 'Jobbágyi', + 'Jósvafő', + 'Juta', + 'Kaba', + 'Kacorlak', + 'Kács', + 'Kacsóta', + 'Kadarkút', + 'Kajárpéc', + 'Kajászó', + 'Kajdacs', + 'Kakasd', + 'Kákics', + 'Kakucs', + 'Kál', + 'Kalaznó', + 'Káld', + 'Kálló', + 'Kallósd', + 'Kállósemjén', + 'Kálmáncsa', + 'Kálmánháza', + 'Kálócfa', + 'Kalocsa', + 'Káloz', + 'Kám', + 'Kamond', + 'Kamut', + 'Kánó', + 'Kántorjánosi', + 'Kány', + 'Kánya', + 'Kányavár', + 'Kapolcs', + 'Kápolna', + 'Kápolnásnyék', + 'Kapoly', + 'Kaposfő', + 'Kaposgyarmat', + 'Kaposhomok', + 'Kaposkeresztúr', + 'Kaposmérő', + 'Kapospula', + 'Kaposszekcső', + 'Kaposszerdahely', + 'Kaposújlak', + 'Kaposvár', + 'Káptalanfa', + 'Káptalantóti', + 'Kapuvár', + 'Kára', + 'Karácsond', + 'Karád', + 'Karakó', + 'Karakószörcsök', + 'Karancsalja', + 'Karancsberény', + 'Karancskeszi', + 'Karancslapujtő', + 'Karancsság', + 'Kárász', + 'Karcag', + 'Karcsa', + 'Kardos', + 'Kardoskút', + 'Karmacs', + 'Károlyháza', + 'Karos', + 'Kartal', + 'Kásád', + 'Kaskantyú', + 'Kastélyosdombó', + 'Kaszaper', + 'Kaszó', + 'Katádfa', + 'Katafa', + 'Kátoly', + 'Katymár', + 'Káva', + 'Kávás', + 'Kazár', + 'Kazincbarcika', + 'Kázsmárk', + 'Kazsok', + 'Kecel', + 'Kecskéd', + 'Kecskemét', + 'Kehidakustány', + 'Kék', + 'Kékcse', + 'Kéked', + 'Kékesd', + 'Kékkút', + 'Kelebia', + 'Keléd', + 'Kelemér', + 'Kéleshalom', + 'Kelevíz', + 'Kemecse', + 'Kemence', + 'Kemendollár', + 'Kemeneshőgyész', + 'Kemeneskápolna', + 'Kemenesmagasi', + 'Kemenesmihályfa', + 'Kemenespálfa', + 'Kemenessömjén', + 'Kemenesszentmárton', + 'Kemenesszentpéter', + 'Keménfa', + 'Kémes', + 'Kemestaródfa', + 'Kemse', + 'Kenderes', + 'Kenéz', + 'Kenézlő', + 'Kengyel', + 'Kenyeri', + 'Kercaszomor', + 'Kercseliget', + 'Kerecsend', + 'Kerecseny', + 'Kerekegyháza', + 'Kerekharaszt', + 'Kereki', + 'Kerékteleki', + 'Kerepes', + 'Keresztéte', + 'Kerkabarabás', + 'Kerkafalva', + 'Kerkakutas', + 'Kerkáskápolna', + 'Kerkaszentkirály', + 'Kerkateskánd', + 'Kérsemjén', + 'Kerta', + 'Kertészsziget', + 'Keszeg', + 'Kesznyéten', + 'Keszőhidegkút', + 'Keszthely', + 'Kesztölc', + 'Keszü', + 'Kétbodony', + 'Kétegyháza', + 'Kéthely', + 'Kétpó', + 'Kétsoprony', + 'Kétújfalu', + 'Kétvölgy', + 'Kéty', + 'Kevermes', + 'Kilimán', + 'Kimle', + 'Kincsesbánya', + 'Királd', + 'Királyegyháza', + 'Királyhegyes', + 'Királyszentistván', + 'Kisapáti', + 'Kisapostag', + 'Kisar', + 'Kisasszond', + 'Kisasszonyfa', + 'Kisbabot', + 'Kisbágyon', + 'Kisbajcs', + 'Kisbajom', + 'Kisbárapáti', + 'Kisbárkány', + 'Kisbér', + 'Kisberény', + 'Kisberzseny', + 'Kisbeszterce', + 'Kisbodak', + 'Kisbucsa', + 'Kisbudmér', + 'Kiscsécs', + 'Kiscsehi', + 'Kiscsősz', + 'Kisdér', + 'Kisdobsza', + 'Kisdombegyház', + 'Kisdorog', + 'Kisecset', + 'Kisfalud', + 'Kisfüzes', + 'Kisgörbő', + 'Kisgyalán', + 'Kisgyőr', + 'Kishajmás', + 'Kisharsány', + 'Kishartyán', + 'Kisherend', + 'Kishódos', + 'Kishuta', + 'Kisigmánd', + 'Kisjakabfalva', + 'Kiskassa', + 'Kiskinizs', + 'Kiskorpád', + 'Kisköre', + 'Kiskőrös', + 'Kiskunfélegyháza', + 'Kiskunhalas', + 'Kiskunlacháza', + 'Kiskunmajsa', + 'Kiskutas', + 'Kisláng', + 'Kisléta', + 'Kislippó', + 'Kislőd', + 'Kismányok', + 'Kismarja', + 'Kismaros', + 'Kisnamény', + 'Kisnána', + 'Kisnémedi', + 'Kisnyárád', + 'Kisoroszi', + 'Kispalád', + 'Kispáli', + 'Kispirit', + 'Kisrákos', + 'Kisrécse', + 'Kisrozvágy', + 'Kissikátor', + 'Kissomlyó', + 'Kisszállás', + 'Kisszékely', + 'Kisszekeres', + 'Kisszentmárton', + 'Kissziget', + 'Kisszőlős', + 'Kistamási', + 'Kistapolca', + 'Kistarcsa', + 'Kistelek', + 'Kistokaj', + 'Kistolmács', + 'Kistormás', + 'Kistótfalu', + 'Kisújszállás', + 'Kisunyom', + 'Kisvárda', + 'Kisvarsány', + 'Kisvásárhely', + 'Kisvaszar', + 'Kisvejke', + 'Kiszombor', + 'Kiszsidány', + 'Klárafalva', + 'Kocs', + 'Kocsér', + 'Kocsola', + 'Kocsord', + 'Kóka', + 'Kokad', + 'Kolontár', + 'Komádi', + 'Komárom', + 'Komjáti', + 'Komló', + 'Komlódtótfalu', + 'Komlósd', + 'Komlóska', + 'Komoró', + 'Kompolt', + 'Kondó', + 'Kondorfa', + 'Kondoros', + 'Kóny', + 'Konyár', + 'Kópháza', + 'Koppányszántó', + 'Korlát', + 'Koroncó', + 'Kórós', + 'Kosd', + 'Kóspallag', + 'Kótaj', + 'Kovácshida', + 'Kovácsszénája', + 'Kovácsvágás', + 'Kozárd', + 'Kozármisleny', + 'Kozmadombja', + 'Köblény', + 'Köcsk', + 'Kökény', + 'Kőkút', + 'Kölcse', + 'Kölesd', + 'Kölked', + 'Kömlő', + 'Kömlőd', + 'Kömörő', + 'Kömpöc', + 'Körmend', + 'Környe', + 'Köröm', + 'Kőröshegy', + 'Körösladány', + 'Körösnagyharsány', + 'Körösszakál', + 'Körösszegapáti', + 'Köröstarcsa', + 'Kőröstetétlen', + 'Körösújfalu', + 'Kőszárhegy', + 'Kőszeg', + 'Kőszegdoroszló', + 'Kőszegpaty', + 'Kőszegszerdahely', + 'Kötcse', + 'Kötegyán', + 'Kőtelek', + 'Kővágóörs', + 'Kővágószőlős', + 'Kővágótöttös', + 'Kövegy', + 'Köveskál', + 'Krasznokvajda', + 'Kulcs', + 'Kunadacs', + 'Kunágota', + 'Kunbaja', + 'Kunbaracs', + 'Kuncsorba', + 'Kunfehértó', + 'Kunhegyes', + 'Kunmadaras', + 'Kunpeszér', + 'Kunszállás', + 'Kunszentmárton', + 'Kunszentmiklós', + 'Kunsziget', + 'Kup', + 'Kupa', + 'Kurd', + 'Kurityán', + 'Kustánszeg', + 'Kutas', + 'Kutasó', + 'Kübekháza', + 'Külsősárd', + 'Külsővat', + 'Küngös', + 'Lábatlan', + 'Lábod', + 'Lácacséke', + 'Lad', + 'Ladánybene', + 'Ládbesenyő', + 'Lajoskomárom', + 'Lajosmizse', + 'Lak', + 'Lakhegy', + 'Lakitelek', + 'Lakócsa', + 'Lánycsók', + 'Lápafő', + 'Lapáncsa', + 'Laskod', + 'Lasztonya', + 'Látrány', + 'Lázi', + 'Leányfalu', + 'Leányvár', + 'Lébény', + 'Legénd', + 'Legyesbénye', + 'Léh', + 'Lénárddaróc', + 'Lendvadedes', + 'Lendvajakabfa', + 'Lengyel', + 'Lengyeltóti', + 'Lenti', + 'Lepsény', + 'Lesencefalu', + 'Lesenceistvánd', + 'Lesencetomaj', + 'Létavértes', + 'Letenye', + 'Letkés', + 'Levél', + 'Levelek', + 'Libickozma', + 'Lickóvadamos', + 'Liget', + 'Ligetfalva', + 'Lipót', + 'Lippó', + 'Liptód', + 'Lispeszentadorján', + 'Liszó', + 'Litér', + 'Litka', + 'Litke', + 'Lócs', + 'Lókút', + 'Lónya', + 'Lórév', + 'Lothárd', + 'Lovas', + 'Lovasberény', + 'Lovászhetény', + 'Lovászi', + 'Lovászpatona', + 'Lőkösháza', + 'Lőrinci', + 'Lövő', + 'Lövőpetri', + 'Lucfalva', + 'Ludányhalászi', + 'Ludas', + 'Lukácsháza', + 'Lulla', + 'Lúzsok', + 'Mád', + 'Madaras', + 'Madocsa', + 'Maglóca', + 'Maglód', + 'Mágocs', + 'Magosliget', + 'Magy', + 'Magyaralmás', + 'Magyaratád', + 'Magyarbánhegyes', + 'Magyarbóly', + 'Magyarcsanád', + 'Magyardombegyház', + 'Magyaregregy', + 'Magyaregres', + 'Magyarföld', + 'Magyargéc', + 'Magyargencs', + 'Magyarhertelend', + 'Magyarhomorog', + 'Magyarkeresztúr', + 'Magyarkeszi', + 'Magyarlak', + 'Magyarlukafa', + 'Magyarmecske', + 'Magyarnádalja', + 'Magyarnándor', + 'Magyarpolány', + 'Magyarsarlós', + 'Magyarszecsőd', + 'Magyarszék', + 'Magyarszentmiklós', + 'Magyarszerdahely', + 'Magyarszombatfa', + 'Magyartelek', + 'Majosháza', + 'Majs', + 'Makád', + 'Makkoshotyka', + 'Maklár', + 'Makó', + 'Malomsok', + 'Mályi', + 'Mályinka', + 'Mánd', + 'Mándok', + 'Mánfa', + 'Mány', + 'Maráza', + 'Marcalgergelyi', + 'Marcali', + 'Marcaltő', + 'Márfa', + 'Máriahalom', + 'Máriakálnok', + 'Máriakéménd', + 'Márianosztra', + 'Máriapócs', + 'Markaz', + 'Márkháza', + 'Márkó', + 'Markóc', + 'Markotabödöge', + 'Maróc', + 'Marócsa', + 'Márok', + 'Márokföld', + 'Márokpapi', + 'Maroslele', + 'Mártély', + 'Martfű', + 'Martonfa', + 'Martonvásár', + 'Martonyi', + 'Mátészalka', + 'Mátételke', + 'Mátraballa', + 'Mátraderecske', + 'Mátramindszent', + 'Mátranovák', + 'Mátraszele', + 'Mátraszentimre', + 'Mátraszőlős', + 'Mátraterenye', + 'Mátraverebély', + 'Mátyásdomb', + 'Matty', + 'Mátyus', + 'Máza', + 'Mecseknádasd', + 'Mecsekpölöske', + 'Mecsér', + 'Medgyesbodzás', + 'Medgyesegyháza', + 'Medina', + 'Megyaszó', + 'Megyehíd', + 'Megyer', + 'Meggyeskovácsi', + 'Méhkerék', + 'Méhtelek', + 'Mekényes', + 'Mélykút', + 'Mencshely', + 'Mende', + 'Méra', + 'Merenye', + 'Mérges', + 'Mérk', + 'Mernye', + 'Mersevát', + 'Mesterháza', + 'Mesteri', + 'Mesterszállás', + 'Meszes', + 'Meszlen', + 'Mesztegnyő', + 'Mezőberény', + 'Mezőcsát', + 'Mezőcsokonya', + 'Meződ', + 'Mezőfalva', + 'Mezőgyán', + 'Mezőhegyes', + 'Mezőhék', + 'Mezőkeresztes', + 'Mezőkomárom', + 'Mezőkovácsháza', + 'Mezőkövesd', + 'Mezőladány', + 'Mezőlak', + 'Mezőnagymihály', + 'Mezőnyárád', + 'Mezőörs', + 'Mezőpeterd', + 'Mezősas', + 'Mezőszemere', + 'Mezőszentgyörgy', + 'Mezőszilas', + 'Mezőtárkány', + 'Mezőtúr', + 'Mezőzombor', + 'Miháld', + 'Mihályfa', + 'Mihálygerge', + 'Mihályháza', + 'Mihályi', + 'Mike', + 'Mikebuda', + 'Mikekarácsonyfa', + 'Mikepércs', + 'Miklósi', + 'Mikófalva', + 'Mikóháza', + 'Mikosszéplak', + 'Milejszeg', + 'Milota', + 'Mindszent', + 'Mindszentgodisa', + 'Mindszentkálla', + 'Misefa', + 'Miske', + 'Miskolc', + 'Miszla', + 'Mocsa', + 'Mogyoród', + 'Mogyorósbánya', + 'Mogyoróska', + 'Moha', + 'Mohács', + 'Mohora', + 'Molnári', + 'Molnaszecsőd', + 'Molvány', + 'Monaj', + 'Monok', + 'Monor', + 'Monorierdő', + 'Mónosbél', + 'Monostorapáti', + 'Monostorpályi', + 'Monoszló', + 'Monyoród', + 'Mór', + 'Mórágy', + 'Mórahalom', + 'Móricgát', + 'Mórichida', + 'Mosdós', + 'Mosonmagyaróvár', + 'Mosonszentmiklós', + 'Mosonszolnok', + 'Mozsgó', + 'Mőcsény', + 'Mucsfa', + 'Mucsi', + 'Múcsony', + 'Muhi', + 'Murakeresztúr', + 'Murarátka', + 'Muraszemenye', + 'Murga', + 'Murony', + 'Nábrád', + 'Nadap', + 'Nádasd', + 'Nádasdladány', + 'Nádudvar', + 'Nágocs', + 'Nagyacsád', + 'Nagyalásony', + 'Nagyar', + 'Nagyatád', + 'Nagybajcs', + 'Nagybajom', + 'Nagybakónak', + 'Nagybánhegyes', + 'Nagybaracska', + 'Nagybarca', + 'Nagybárkány', + 'Nagyberény', + 'Nagyberki', + 'Nagybörzsöny', + 'Nagybudmér', + 'Nagycenk', + 'Nagycsány', + 'Nagycsécs', + 'Nagycsepely', + 'Nagycserkesz', + 'Nagydém', + 'Nagydobos', + 'Nagydobsza', + 'Nagydorog', + 'Nagyecsed', + 'Nagyér', + 'Nagyesztergár', + 'Nagyfüged', + 'Nagygeresd', + 'Nagygörbő', + 'Nagygyimót', + 'Nagyhajmás', + 'Nagyhalász', + 'Nagyharsány', + 'Nagyhegyes', + 'Nagyhódos', + 'Nagyhuta', + 'Nagyigmánd', + 'Nagyiván', + 'Nagykálló', + 'Nagykamarás', + 'Nagykanizsa', + 'Nagykapornak', + 'Nagykarácsony', + 'Nagykáta', + 'Nagykereki', + 'Nagykeresztúr', + 'Nagykinizs', + 'Nagykónyi', + 'Nagykorpád', + 'Nagykovácsi', + 'Nagykozár', + 'Nagykökényes', + 'Nagykölked', + 'Nagykőrös', + 'Nagykörű', + 'Nagykutas', + 'Nagylak', + 'Nagylengyel', + 'Nagylóc', + 'Nagylók', + 'Nagylózs', + 'Nagymágocs', + 'Nagymányok', + 'Nagymaros', + 'Nagymizdó', + 'Nagynyárád', + 'Nagyoroszi', + 'Nagypáli', + 'Nagypall', + 'Nagypeterd', + 'Nagypirit', + 'Nagyrábé', + 'Nagyrada', + 'Nagyrákos', + 'Nagyrécse', + 'Nagyréde', + 'Nagyrév', + 'Nagyrozvágy', + 'Nagysáp', + 'Nagysimonyi', + 'Nagyszakácsi', + 'Nagyszékely', + 'Nagyszekeres', + 'Nagyszénás', + 'Nagyszentjános', + 'Nagyszokoly', + 'Nagytálya', + 'Nagytarcsa', + 'Nagytevel', + 'Nagytilaj', + 'Nagytótfalu', + 'Nagytőke', + 'Nagyút', + 'Nagyvarsány', + 'Nagyváty', + 'Nagyvázsony', + 'Nagyvejke', + 'Nagyveleg', + 'Nagyvenyim', + 'Nagyvisnyó', + 'Nak', + 'Napkor', + 'Nárai', + 'Narda', + 'Naszály', + 'Négyes', + 'Nekézseny', + 'Nemesapáti', + 'Nemesbikk', + 'Nemesborzova', + 'Nemesbőd', + 'Nemesbük', + 'Nemescsó', + 'Nemesdéd', + 'Nemesgörzsöny', + 'Nemesgulács', + 'Nemeshany', + 'Nemeshetés', + 'Nemeske', + 'Nemeskér', + 'Nemeskeresztúr', + 'Nemeskisfalud', + 'Nemeskocs', + 'Nemeskolta', + 'Nemesládony', + 'Nemesmedves', + 'Nemesnádudvar', + 'Nemesnép', + 'Nemespátró', + 'Nemesrádó', + 'Nemesrempehollós', + 'Nemessándorháza', + 'Nemesszalók', + 'Nemesszentandrás', + 'Nemesvámos', + 'Nemesvid', + 'Nemesvita', + 'Németbánya', + 'Németfalu', + 'Németkér', + 'Nemti', + 'Neszmély', + 'Nézsa', + 'Nick', + 'Nikla', + 'Nógrád', + 'Nógrádkövesd', + 'Nógrádmarcal', + 'Nógrádmegyer', + 'Nógrádsáp', + 'Nógrádsipek', + 'Nógrádszakál', + 'Nóráp', + 'Noszlop', + 'Noszvaj', + 'Nova', + 'Novaj', + 'Novajidrány', + 'Nőtincs', + 'Nyalka', + 'Nyárád', + 'Nyáregyháza', + 'Nyárlőrinc', + 'Nyársapát', + 'Nyékládháza', + 'Nyergesújfalu', + 'Nyésta', + 'Nyim', + 'Nyírábrány', + 'Nyíracsád', + 'Nyirád', + 'Nyíradony', + 'Nyírbátor', + 'Nyírbéltek', + 'Nyírbogát', + 'Nyírbogdány', + 'Nyírcsaholy', + 'Nyírcsászári', + 'Nyírderzs', + 'Nyíregyháza', + 'Nyírgelse', + 'Nyírgyulaj', + 'Nyíri', + 'Nyíribrony', + 'Nyírjákó', + 'Nyírkarász', + 'Nyírkáta', + 'Nyírkércs', + 'Nyírlövő', + 'Nyírlugos', + 'Nyírmada', + 'Nyírmártonfalva', + 'Nyírmeggyes', + 'Nyírmihálydi', + 'Nyírparasznya', + 'Nyírpazony', + 'Nyírpilis', + 'Nyírtass', + 'Nyírtelek', + 'Nyírtét', + 'Nyírtura', + 'Nyírvasvári', + 'Nyomár', + 'Nyőgér', + 'Nyugotszenterzsébet', + 'Nyúl', + 'Óbánya', + 'Óbarok', + 'Óbudavár', + 'Ócsa', + 'Ócsárd', + 'Ófalu', + 'Ófehértó', + 'Óföldeák', + 'Óhíd', + 'Okány', + 'Okorág', + 'Okorvölgy', + 'Olasz', + 'Olaszfa', + 'Olaszfalu', + 'Olaszliszka', + 'Olcsva', + 'Olcsvaapáti', + 'Old', + 'Ólmod', + 'Oltárc', + 'Onga', + 'Ónod', + 'Ópályi', + 'Ópusztaszer', + 'Orbányosfa', + 'Orci', + 'Ordacsehi', + 'Ordas', + 'Orfalu', + 'Orfű', + 'Orgovány', + 'Ormándlak', + 'Ormosbánya', + 'Orosháza', + 'Oroszi', + 'Oroszlány', + 'Oroszló', + 'Orosztony', + 'Ortaháza', + 'Osli', + 'Ostffyasszonyfa', + 'Ostoros', + 'Oszkó', + 'Oszlár', + 'Osztopán', + 'Ózd', + 'Ózdfalu', + 'Ozmánbük', + 'Ozora', + 'Öcs', + 'Őcsény', + 'Öcsöd', + 'Ököritófülpös', + 'Ölbő', + 'Ömböly', + 'Őr', + 'Őrbottyán', + 'Öregcsertő', + 'Öreglak', + 'Őrhalom', + 'Őrimagyarósd', + 'Őriszentpéter', + 'Örkény', + 'Örményes', + 'Örménykút', + 'Őrtilos', + 'Örvényes', + 'Ősagárd', + 'Ősi', + 'Öskü', + 'Öttevény', + 'Öttömös', + 'Ötvöskónyi', + 'Pácin', + 'Pacsa', + 'Pácsony', + 'Padár', + 'Páhi', + 'Páka', + 'Pakod', + 'Pákozd', + 'Paks', + 'Palé', + 'Pálfa', + 'Pálfiszeg', + 'Pálháza', + 'Páli', + 'Palkonya', + 'Pálmajor', + 'Pálmonostora', + 'Pálosvörösmart', + 'Palotabozsok', + 'Palotás', + 'Paloznak', + 'Pamlény', + 'Pamuk', + 'Pánd', + 'Pankasz', + 'Pannonhalma', + 'Pányok', + 'Panyola', + 'Pap', + 'Pápa', + 'Pápadereske', + 'Pápakovácsi', + 'Pápasalamon', + 'Pápateszér', + 'Papkeszi', + 'Pápoc', + 'Papos', + 'Páprád', + 'Parád', + 'Parádsasvár', + 'Parasznya', + 'Pári', + 'Paszab', + 'Pásztó', + 'Pásztori', + 'Pat', + 'Patak', + 'Patalom', + 'Patapoklosi', + 'Patca', + 'Pátka', + 'Patosfa', + 'Pátroha', + 'Patvarc', + 'Páty', + 'Pátyod', + 'Pázmánd', + 'Pázmándfalu', + 'Pécel', + 'Pecöl', + 'Pécs', + 'Pécsbagota', + 'Pécsdevecser', + 'Pécsely', + 'Pécsudvard', + 'Pécsvárad', + 'Pellérd', + 'Pély', + 'Penc', + 'Penészlek', + 'Pénzesgyőr', + 'Penyige', + 'Pér', + 'Perbál', + 'Pere', + 'Perecse', + 'Pereked', + 'Perenye', + 'Peresznye', + 'Pereszteg', + 'Perkáta', + 'Perkupa', + 'Perőcsény', + 'Peterd', + 'Péterhida', + 'Péteri', + 'Pétervására', + 'Pétfürdő', + 'Pethőhenye', + 'Petneháza', + 'Petőfibánya', + 'Petőfiszállás', + 'Petőháza', + 'Petőmihályfa', + 'Petrikeresztúr', + 'Petrivente', + 'Pettend', + 'Piliny', + 'Pilis', + 'Pilisborosjenő', + 'Piliscsaba', + 'Piliscsév', + 'Pilisjászfalu', + 'Pilismarót', + 'Pilisszántó', + 'Pilisszentiván', + 'Pilisszentkereszt', + 'Pilisszentlászló', + 'Pilisvörösvár', + 'Pincehely', + 'Pinkamindszent', + 'Pinnye', + 'Piricse', + 'Pirtó', + 'Piskó', + 'Pitvaros', + 'Pócsa', + 'Pocsaj', + 'Pócsmegyer', + 'Pócspetri', + 'Pogány', + 'Pogányszentpéter', + 'Pókaszepetk', + 'Polány', + 'Polgár', + 'Polgárdi', + 'Pomáz', + 'Porcsalma', + 'Pornóapáti', + 'Poroszló', + 'Porpác', + 'Porrog', + 'Porrogszentkirály', + 'Porrogszentpál', + 'Pórszombat', + 'Porva', + 'Pósfa', + 'Potony', + 'Potyond', + 'Pölöske', + 'Pölöskefő', + 'Pörböly', + 'Pördefölde', + 'Pötréte', + 'Prügy', + 'Pula', + 'Pusztaapáti', + 'Pusztaberki', + 'Pusztacsalád', + 'Pusztacsó', + 'Pusztadobos', + 'Pusztaederics', + 'Pusztafalu', + 'Pusztaföldvár', + 'Pusztahencse', + 'Pusztakovácsi', + 'Pusztamagyaród', + 'Pusztamérges', + 'Pusztamiske', + 'Pusztamonostor', + 'Pusztaottlaka', + 'Pusztaradvány', + 'Pusztaszabolcs', + 'Pusztaszemes', + 'Pusztaszentlászló', + 'Pusztaszer', + 'Pusztavacs', + 'Pusztavám', + 'Pusztazámor', + 'Putnok', + 'Püski', + 'Püspökhatvan', + 'Püspökladány', + 'Püspökmolnári', + 'Püspökszilágy', + 'Rábacsanak', + 'Rábacsécsény', + 'Rábagyarmat', + 'Rábahídvég', + 'Rábakecöl', + 'Rábapatona', + 'Rábapaty', + 'Rábapordány', + 'Rábasebes', + 'Rábaszentandrás', + 'Rábaszentmihály', + 'Rábaszentmiklós', + 'Rábatamási', + 'Rábatöttös', + 'Rábcakapi', + 'Rácalmás', + 'Ráckeresztúr', + 'Ráckeve', + 'Rád', + 'Rádfalva', + 'Rádóckölked', + 'Radostyán', + 'Ragály', + 'Rajka', + 'Rakaca', + 'Rakacaszend', + 'Rakamaz', + 'Rákóczibánya', + 'Rákóczifalva', + 'Rákócziújfalu', + 'Ráksi', + 'Ramocsa', + 'Ramocsaháza', + 'Rápolt', + 'Raposka', + 'Rásonysápberencs', + 'Rátka', + 'Rátót', + 'Ravazd', + 'Recsk', + 'Réde', + 'Rédics', + 'Regéc', + 'Regenye', + 'Regöly', + 'Rém', + 'Remeteszőlős', + 'Répáshuta', + 'Répcelak', + 'Répceszemere', + 'Répceszentgyörgy', + 'Répcevis', + 'Resznek', + 'Rétalap', + 'Rétközberencs', + 'Rétság', + 'Révfülöp', + 'Révleányvár', + 'Rezi', + 'Ricse', + 'Rigács', + 'Rigyác', + 'Rimóc', + 'Rinyabesenyő', + 'Rinyakovácsi', + 'Rinyaszentkirály', + 'Rinyaújlak', + 'Rinyaújnép', + 'Rohod', + 'Románd', + 'Romhány', + 'Romonya', + 'Rózsafa', + 'Rozsály', + 'Rózsaszentmárton', + 'Röjtökmuzsaj', + 'Rönök', + 'Röszke', + 'Rudabánya', + 'Rudolftelep', + 'Rum', + 'Ruzsa', + 'Ságújfalu', + 'Ságvár', + 'Sajóbábony', + 'Sajóecseg', + 'Sajógalgóc', + 'Sajóhídvég', + 'Sajóivánka', + 'Sajókápolna', + 'Sajókaza', + 'Sajókeresztúr', + 'Sajólád', + 'Sajólászlófalva', + 'Sajómercse', + 'Sajónémeti', + 'Sajóörös', + 'Sajópálfala', + 'Sajópetri', + 'Sajópüspöki', + 'Sajósenye', + 'Sajószentpéter', + 'Sajószöged', + 'Sajóvámos', + 'Sajóvelezd', + 'Sajtoskál', + 'Salföld', + 'Salgótarján', + 'Salköveskút', + 'Salomvár', + 'Sály', + 'Sámod', + 'Sámsonháza', + 'Sand', + 'Sándorfalva', + 'Sántos', + 'Sáp', + 'Sáránd', + 'Sárazsadány', + 'Sárbogárd', + 'Sáregres', + 'Sárfimizdó', + 'Sárhida', + 'Sárisáp', + 'Sarkad', + 'Sarkadkeresztúr', + 'Sárkeresztes', + 'Sárkeresztúr', + 'Sárkeszi', + 'Sármellék', + 'Sárok', + 'Sárosd', + 'Sárospatak', + 'Sárpilis', + 'Sárrétudvari', + 'Sarród', + 'Sárszentágota', + 'Sárszentlőrinc', + 'Sárszentmihály', + 'Sarud', + 'Sárvár', + 'Sásd', + 'Sáska', + 'Sáta', + 'Sátoraljaújhely', + 'Sátorhely', + 'Sávoly', + 'Sé', + 'Segesd', + 'Selyeb', + 'Sellye', + 'Semjén', + 'Semjénháza', + 'Sénye', + 'Sényő', + 'Seregélyes', + 'Serényfalva', + 'Sérsekszőlős', + 'Sikátor', + 'Siklós', + 'Siklósbodony', + 'Siklósnagyfalu', + 'Sima', + 'Simaság', + 'Simonfa', + 'Simontornya', + 'Sióagárd', + 'Siófok ', + 'Siójut', + 'Sirok', + 'Sitke', + 'Sobor', + 'Sokorópátka', + 'Solt', + 'Soltszentimre', + 'Soltvadkert', + 'Sóly', + 'Solymár', + 'Som', + 'Somberek', + 'Somlójenő', + 'Somlószőlős', + 'Somlóvásárhely', + 'Somlóvecse', + 'Somodor', + 'Somogyacsa', + 'Somogyapáti', + 'Somogyaracs', + 'Somogyaszaló', + 'Somogybabod', + 'Somogybükkösd', + 'Somogycsicsó', + 'Somogydöröcske', + 'Somogyegres', + 'Somogyfajsz', + 'Somogygeszti', + 'Somogyhárságy', + 'Somogyhatvan', + 'Somogyjád', + 'Somogymeggyes', + 'Somogysámson', + 'Somogysárd', + 'Somogysimonyi', + 'Somogyszentpál', + 'Somogyszil', + 'Somogyszob', + 'Somogytúr', + 'Somogyudvarhely', + 'Somogyvámos', + 'Somogyvár', + 'Somogyviszló', + 'Somogyzsitfa', + 'Somoskőújfalu', + 'Sonkád', + 'Soponya', + 'Sopron', + 'Sopronhorpács', + 'Sopronkövesd', + 'Sopronnémeti', + 'Sorkifalud', + 'Sorkikápolna', + 'Sormás', + 'Sorokpolány', + 'Sóshartyán', + 'Sóskút', + 'Sóstófalva', + 'Sósvertike', + 'Sótony', + 'Söjtör', + 'Söpte', + 'Söréd', + 'Sukoró', + 'Sumony', + 'Súr', + 'Surd', + 'Sükösd', + 'Sülysáp', + 'Sümeg', + 'Sümegcsehi', + 'Sümegprága', + 'Süttő', + 'Szabadbattyán', + 'Szabadegyháza', + 'Szabadhídvég', + 'Szabadi', + 'Szabadkígyós', + 'Szabadszállás', + 'Szabadszentkirály', + 'Szabás', + 'Szabolcs', + 'Szabolcsbáka', + 'Szabolcsveresmart', + 'Szada', + 'Szágy', + 'Szajk', + 'Szajla', + 'Szajol', + 'Szakácsi', + 'Szakadát', + 'Szakáld', + 'Szakály', + 'Szakcs', + 'Szakmár', + 'Szaknyér', + 'Szakoly', + 'Szakony', + 'Szakonyfalu', + 'Szákszend', + 'Szalafő', + 'Szalánta', + 'Szalapa', + 'Szalaszend', + 'Szalatnak', + 'Szálka', + 'Szalkszentmárton', + 'Szalmatercs', + 'Szalonna', + 'Szamosangyalos', + 'Szamosbecs', + 'Szamoskér', + 'Szamossályi', + 'Szamosszeg', + 'Szamostatárfalva', + 'Szamosújlak', + 'Szanda', + 'Szank', + 'Szántód', + 'Szany', + 'Szápár', + 'Szaporca', + 'Szár', + 'Szárász', + 'Szárazd', + 'Szárföld', + 'Szárliget', + 'Szarvas', + 'Szarvasgede', + 'Szarvaskend', + 'Szarvaskő', + 'Szászberek', + 'Szászfa', + 'Szászvár', + 'Szatmárcseke', + 'Szátok', + 'Szatta', + 'Szatymaz', + 'Szava', + 'Százhalombatta', + 'Szebény', + 'Szécsénke', + 'Szécsény', + 'Szécsényfelfalu', + 'Szécsisziget', + 'Szederkény', + 'Szedres', + 'Szeged', + 'Szegerdő', + 'Szeghalom', + 'Szegi', + 'Szegilong', + 'Szegvár', + 'Székely', + 'Székelyszabar', + 'Székesfehérvár', + 'Székkutas', + 'Szekszárd', + 'Szeleste', + 'Szelevény', + 'Szellő', + 'Szemely', + 'Szemenye', + 'Szemere', + 'Szendehely', + 'Szendrő', + 'Szendrőlád', + 'Szenna', + 'Szenta', + 'Szentantalfa', + 'Szentbalázs', + 'Szentbékkálla', + 'Szentborbás', + 'Szentdénes', + 'Szentdomonkos', + 'Szente', + 'Szentegát', + 'Szentendre', + 'Szentes', + 'Szentgál', + 'Szentgáloskér', + 'Szentgotthárd', + 'Szentgyörgyvár', + 'Szentgyörgyvölgy', + 'Szentimrefalva', + 'Szentistván', + 'Szentistvánbaksa', + 'Szentjakabfa', + 'Szentkatalin', + 'Szentkirály', + 'Szentkirályszabadja', + 'Szentkozmadombja', + 'Szentlászló', + 'Szentliszló', + 'Szentlőrinc', + 'Szentlőrinckáta', + 'Szentmargitfalva', + 'Szentmártonkáta', + 'Szentpéterfa', + 'Szentpéterfölde', + 'Szentpéterszeg', + 'Szentpéterúr', + 'Szenyér', + 'Szepetnek', + 'Szerecseny', + 'Szeremle', + 'Szerencs', + 'Szerep', + 'Szergény', + 'Szigetbecse', + 'Szigetcsép', + 'Szigethalom', + 'Szigetmonostor', + 'Szigetszentmárton', + 'Szigetszentmiklós', + 'Szigetújfalu', + 'Szigetvár', + 'Szigliget', + 'Szihalom', + 'Szijártóháza', + 'Szikszó', + 'Szil', + 'Szilágy', + 'Szilaspogony', + 'Szilsárkány', + 'Szilvágy', + 'Szilvás', + 'Szilvásszentmárton', + 'Szilvásvárad', + 'Szin', + 'Szinpetri', + 'Szirák', + 'Szirmabesenyő', + 'Szob', + 'Szokolya', + 'Szólád', + 'Szolnok', + 'Szombathely', + 'Szomód', + 'Szomolya', + 'Szomor', + 'Szorgalmatos', + 'Szorosad', + 'Szőc', + 'Szőce', + 'Sződ', + 'Sződliget', + 'Szögliget', + 'Szőke', + 'Szőkéd', + 'Szőkedencs', + 'Szőlősardó', + 'Szőlősgyörök', + 'Szörény', + 'Szúcs', + 'Szuha', + 'Szuhafő', + 'Szuhakálló', + 'Szuhogy', + 'Szulimán', + 'Szulok', + 'Szurdokpüspöki', + 'Szűcsi', + 'Szügy', + 'Szűr', + 'Tab', + 'Tabajd', + 'Tabdi', + 'Táborfalva', + 'Tác', + 'Tagyon', + 'Tahitótfalu', + 'Takácsi', + 'Tákos', + 'Taksony', + 'Taktabáj', + 'Taktaharkány', + 'Taktakenéz', + 'Taktaszada', + 'Taliándörögd', + 'Tállya', + 'Tamási', + 'Tanakajd', + 'Táp', + 'Tápióbicske', + 'Tápiógyörgye', + 'Tápióság', + 'Tápiószecső', + 'Tápiószele', + 'Tápiószentmárton', + 'Tápiószőlős', + 'Táplánszentkereszt', + 'Tapolca', + 'Tapsony', + 'Tápszentmiklós', + 'Tar', + 'Tarany', + 'Tarcal', + 'Tard', + 'Tardona', + 'Tardos', + 'Tarhos', + 'Tarján', + 'Tarjánpuszta', + 'Tárkány', + 'Tarnabod', + 'Tarnalelesz', + 'Tarnaméra', + 'Tarnaörs', + 'Tarnaszentmária', + 'Tarnaszentmiklós', + 'Tarnazsadány', + 'Tárnok', + 'Tárnokréti', + 'Tarpa', + 'Tarrós', + 'Táska', + 'Tass', + 'Taszár', + 'Tát', + 'Tata', + 'Tatabánya', + 'Tataháza', + 'Tatárszentgyörgy', + 'Tázlár', + 'Téglás', + 'Tékes', + 'Teklafalu', + 'Telekes', + 'Telekgerendás', + 'Teleki', + 'Telki', + 'Telkibánya', + 'Tengelic', + 'Tengeri', + 'Tengőd', + 'Tenk', + 'Tényő', + 'Tépe', + 'Terem', + 'Terény', + 'Tereske', + 'Teresztenye', + 'Terpes', + 'Tés', + 'Tésa', + 'Tésenfa', + 'Téseny', + 'Teskánd', + 'Tét', + 'Tetétlen', + 'Tevel', + 'Tibolddaróc', + 'Tiborszállás', + 'Tihany', + 'Tikos', + 'Tilaj', + 'Timár', + 'Tinnye', + 'Tiszaadony', + 'Tiszaalpár', + 'Tiszabábolna', + 'Tiszabecs', + 'Tiszabercel', + 'Tiszabezdéd', + 'Tiszabő', + 'Tiszabura', + 'Tiszacsécse', + 'Tiszacsege', + 'Tiszacsermely', + 'Tiszadada', + 'Tiszaderzs', + 'Tiszadob', + 'Tiszadorogma', + 'Tiszaeszlár', + 'Tiszaföldvár', + 'Tiszafüred', + 'Tiszagyenda', + 'Tiszagyulaháza', + 'Tiszaigar', + 'Tiszainoka', + 'Tiszajenő', + 'Tiszakanyár', + 'Tiszakarád', + 'Tiszakécske', + 'Tiszakerecseny', + 'Tiszakeszi', + 'Tiszakóród', + 'Tiszakürt', + 'Tiszaladány', + 'Tiszalök', + 'Tiszalúc', + 'Tiszamogyorós', + 'Tiszanagyfalu', + 'Tiszanána', + 'Tiszaörs', + 'Tiszapalkonya', + 'Tiszapüspöki', + 'Tiszarád', + 'Tiszaroff', + 'Tiszasas', + 'Tiszasüly', + 'Tiszaszalka', + 'Tiszaszentimre', + 'Tiszaszentmárton', + 'Tiszasziget', + 'Tiszaszőlős', + 'Tiszatardos', + 'Tiszatarján', + 'Tiszatelek', + 'Tiszatenyő', + 'Tiszaug', + 'Tiszaújváros', + 'Tiszavalk', + 'Tiszavárkony', + 'Tiszavasvári', + 'Tiszavid', + 'Tisztaberek', + 'Tivadar', + 'Tóalmás', + 'Tófalu', + 'Tófej', + 'Tófű', + 'Tokaj', + 'Tokod', + 'Tokodaltáró', + 'Tokorcs', + 'Tolcsva', + 'Told', + 'Tolmács', + 'Tolna', + 'Tolnanémedi', + 'Tomajmonostora', + 'Tomor', + 'Tompa', + 'Tompaládony', + 'Tordas', + 'Tormafölde', + 'Tormás', + 'Tormásliget', + 'Tornabarakony', + 'Tornakápolna', + 'Tornanádaska', + 'Tornaszentandrás', + 'Tornaszentjakab', + 'Tornyiszentmiklós', + 'Tornyosnémeti', + 'Tornyospálca', + 'Torony', + 'Torvaj', + 'Tószeg', + 'Tótkomlós', + 'Tótszentgyörgy', + 'Tótszentmárton', + 'Tótszerdahely', + 'Tótújfalu', + 'Tótvázsony', + 'Tök', + 'Tököl', + 'Töltéstava', + 'Tömörd', + 'Tömörkény', + 'Törökbálint', + 'Törökkoppány', + 'Törökszentmiklós', + 'Törtel', + 'Töttös', + 'Trizs', + 'Tunyogmatolcs', + 'Tura', + 'Túristvándi', + 'Túrkeve', + 'Túrony', + 'Túrricse', + 'Tuzsér', + 'Türje', + 'Tüskevár', + 'Udvar', + 'Udvari', + 'Ugod', + 'Újbarok', + 'Újcsanálos', + 'Újdombrád', + 'Újfehértó', + 'Újhartyán', + 'Újiráz', + 'Újireg', + 'Újkenéz', + 'Újkér', + 'Újkígyós', + 'Újlengyel', + 'Újléta', + 'Újlőrincfalva', + 'Újpetre', + 'Újrónafő', + 'Újsolt', + 'Újszalonta', + 'Újszász', + 'Újszentiván', + 'Újszentmargita', + 'Újszilvás', + 'Újtelek', + 'Újtikos', + 'Újudvar', + 'Újvárfalva', + 'Ukk', + 'Und', + 'Úny', + 'Uppony', + 'Ura', + 'Uraiújfalu', + 'Úrhida', + 'Úri', + 'Úrkút', + 'Uszka', + 'Uszód', + 'Uzsa', + 'Üllés', + 'Üllő', + 'Üröm', + 'Vác', + 'Vácduka', + 'Vácegres', + 'Váchartyán', + 'Váckisújfalu', + 'Vácrátót', + 'Vácszentlászló', + 'Vadna', + 'Vadosfa', + 'Vág', + 'Vágáshuta', + 'Vaja', + 'Vajdácska', + 'Vajszló', + 'Vajta', + 'Vál', + 'Valkó', + 'Valkonya', + 'Vállaj', + 'Vállus', + 'Vámosatya', + 'Vámoscsalád', + 'Vámosgyörk', + 'Vámosmikola', + 'Vámosoroszi', + 'Vámospércs', + 'Vámosszabadi', + 'Vámosújfalu', + 'Váncsod', + 'Vanyarc', + 'Vanyola', + 'Várad', + 'Váralja', + 'Varászló', + 'Váraszó', + 'Várbalog', + 'Varbó', + 'Varbóc', + 'Várda', + 'Várdomb', + 'Várfölde', + 'Varga', + 'Várgesztes', + 'Várkesző', + 'Várong', + 'Városföld', + 'Városlőd', + 'Várpalota', + 'Varsád', + 'Varsány', + 'Várvölgy', + 'Vasad', + 'Vasalja', + 'Vásárosbéc', + 'Vásárosdombó', + 'Vásárosfalu', + 'Vásárosmiske', + 'Vásárosnamény', + 'Vasasszonyfa', + 'Vasboldogasszony', + 'Vasegerszeg', + 'Vashosszúfalu', + 'Vaskeresztes', + 'Vaskút', + 'Vasmegyer', + 'Vaspör', + 'Vassurány', + 'Vasszécseny', + 'Vasszentmihály', + 'Vasszilvágy', + 'Vasvár', + 'Vaszar', + 'Vászoly', + 'Vát', + 'Vatta', + 'Vázsnok', + 'Vécs', + 'Vecsés', + 'Végegyháza', + 'Vejti', + 'Vékény', + 'Vekerd', + 'Velem', + 'Velemér', + 'Velence', + 'Velény', + 'Véménd', + 'Vének', + 'Vép', + 'Vereb', + 'Veresegyház', + 'Verőce', + 'Verpelét', + 'Verseg', + 'Versend', + 'Vértesacsa', + 'Vértesboglár', + 'Vérteskethely', + 'Vértessomló', + 'Vértesszőlős', + 'Vértestolna', + 'Vése', + 'Veszkény', + 'Veszprém', + 'Veszprémfajsz', + 'Veszprémgalsa', + 'Veszprémvarsány', + 'Vésztő', + 'Vezseny', + 'Vid', + 'Vigántpetend', + 'Villány', + 'Villánykövesd', + 'Vilmány', + 'Vilonya', + 'Vilyvitány', + 'Vinár', + 'Vindornyafok', + 'Vindornyalak', + 'Vindornyaszőlős', + 'Visegrád', + 'Visnye', + 'Visonta', + 'Viss', + 'Visz', + 'Viszák', + 'Viszló', + 'Visznek', + 'Vitnyéd', + 'Vízvár', + 'Vizslás', + 'Vizsoly', + 'Vokány', + 'Vonyarcvashegy', + 'Vöckönd', + 'Völcsej', + 'Vönöck', + 'Vöröstó', + 'Vörs', + 'Zabar', + 'Zádor', + 'Zádorfalva', + 'Zagyvarékas', + 'Zagyvaszántó', + 'Záhony', + 'Zajk', + 'Zajta', + 'Zákány', + 'Zákányfalu', + 'Zákányszék', + 'Zala', + 'Zalaapáti', + 'Zalabaksa', + 'Zalabér', + 'Zalaboldogfa', + 'Zalacsány', + 'Zalacséb', + 'Zalaegerszeg', + 'Zalaerdőd', + 'Zalagyömörő', + 'Zalahaláp', + 'Zalaháshágy', + 'Zalaigrice', + 'Zalaistvánd', + 'Zalakaros', + 'Zalakomár', + 'Zalaköveskút', + 'Zalalövő', + 'Zalameggyes', + 'Zalamerenye', + 'Zalasárszeg', + 'Zalaszabar', + 'Zalaszántó', + 'Zalaszegvár', + 'Zalaszentbalázs', + 'Zalaszentgrót', + 'Zalaszentgyörgy', + 'Zalaszentiván', + 'Zalaszentjakab', + 'Zalaszentlászló', + 'Zalaszentlőrinc', + 'Zalaszentmárton', + 'Zalaszentmihály', + 'Zalaszombatfa', + 'Zaláta', + 'Zalatárnok', + 'Zalaújlak', + 'Zalavár', + 'Zalavég', + 'Zalkod', + 'Zamárdi', + 'Zámoly', + 'Zánka', + 'Zaránk', + 'Závod', + 'Zebecke', + 'Zebegény', + 'Zemplénagárd', + 'Zengővárkony', + 'Zichyújfalu', + 'Zics', + 'Ziliz', + 'Zimány', + 'Zirc', + 'Zók', + 'Zomba', + 'Zubogy', + 'Zsadány', + 'Zsáka', + 'Zsámbék', + 'Zsámbok', + 'Zsana', + 'Zsarolyán', + 'Zsebeháza', + 'Zsédeny', + 'Zselickisfalud', + 'Zselickislak', + 'Zselicszentpál', + 'Zsennye', + 'Zsira', + 'Zsombó', + 'Zsujta', + 'Zsurk', +]; diff --git a/src/locales/hu/location/city_pattern.ts b/src/locales/hu/location/city_pattern.ts new file mode 100644 index 00000000000..ad43b68fc5c --- /dev/null +++ b/src/locales/hu/location/city_pattern.ts @@ -0,0 +1 @@ +export default ['{{location.city_name}}']; diff --git a/src/locales/hu/location/continent.ts b/src/locales/hu/location/continent.ts new file mode 100644 index 00000000000..9f7d4fef9d7 --- /dev/null +++ b/src/locales/hu/location/continent.ts @@ -0,0 +1,9 @@ +export default [ + 'Afrika', + 'Antarktika', + 'Ázsia', + 'Ausztrália és Óceánia', + 'Európa', + 'Észak-Amerika', + 'Dél-Amerika', +]; diff --git a/src/locales/hu/location/country.ts b/src/locales/hu/location/country.ts new file mode 100644 index 00000000000..d4d57b32aea --- /dev/null +++ b/src/locales/hu/location/country.ts @@ -0,0 +1,223 @@ +export default [ + 'Afganisztán', + 'Albánia', + 'Algéria', + 'Amerikai Egyesült Államok', + 'Amerikai Szamoa', + 'Andorra', + 'Angola', + 'Anguilla', + 'Antarktisz és Norfolk sziget', + 'Antigua és Barbuda', + 'Arab Emírségek', + 'Argentína', + 'Aruba', + 'Ascension', + 'Ausztrália', + 'Ausztria', + 'Azerbajdzsán', + 'Bahama-szigetek', + 'Bahrein', + 'Banglades', + 'Barbados', + 'Belgium', + 'Belize', + 'Benin', + 'Bermuda', + 'Bhután', + 'Bissau-Guinea', + 'Bolívia', + 'Bosznia-Hercegovina', + 'Botswana', + 'Brazília', + 'Brunei', + 'Bulgária', + 'Burkina Faso', + 'Burundi', + 'Falkland-szigetek', + 'Fehéroroszország', + 'Feröer-szigetek', + 'Fidzsi-szigetek', + 'Finnország', + 'Francia Guyana', + 'Francia Polinézia', + 'Franciaország', + 'Fülöp-szigetek', + 'Chile', + 'Ciprus', + 'Comore-szigetek', + 'Costa Rica', + 'Csád', + 'Csehország', + 'Dánia', + 'Dél-afrikai Köztársaság', + 'Dél-Korea', + 'Diego Garcia', + 'Dominikai Közösség', + 'Dominikai Köztársaság', + 'Dzsibuti', + 'Ecuador', + 'Egyenlítői-Guinea', + 'Egyesült Királyság', + 'Egyiptom', + 'Elefántcsontpart', + 'Eritrea', + 'Észtország', + 'Etiópia', + 'Gabon', + 'Gambia', + 'Ghána', + 'Gibraltár', + 'Görögország', + 'Grenada', + 'Grönland', + 'Grúzia', + 'Guadeloupe', + 'Guam', + 'Guatemala', + 'Guinea', + 'Guyana', + 'Haiti', + 'Holland Antillák', + 'Hollandia', + 'Honduras', + 'Horvátország', + 'India', + 'Indonézia', + 'Irak', + 'Irán', + 'Írország', + 'Izland', + 'Izrael', + 'Jamaica', + 'Japán', + 'Jemen', + 'Jordánia', + 'Kambodzsa', + 'Kamerun', + 'Kanada', + 'Katar', + 'Kazahsztán', + 'Kelet-Timor', + 'Kenya', + 'Kína', + 'Kirgizisztán', + 'Kiribati', + 'Kolumbia', + 'Kongó', + 'Kongói Dem. Közt.', + 'Koreai Köztársaság', + 'Koreai NDK', + 'Közép-afrikai Köztársaság', + 'Kuba', + 'Kuvait', + 'Laosz', + 'Lengyelország', + 'Lesotho', + 'Lettország', + 'Libanon', + 'Libéria', + 'Líbia', + 'Liechtenstein', + 'Litvánia', + 'Luxemburg', + 'Macedónia', + 'Madagaszkár', + 'Magyarország', + 'Makao', + 'Malajzia', + 'Malawi', + 'Maldív-szigetek', + 'Mali', + 'Málta', + 'Marokkó', + 'Marshall-szigetek', + 'Martinique', + 'Mauritánia', + 'Mauritius', + 'Mexikó', + 'Mianmar', + 'Mikronézia', + 'Moldova', + 'Monaco', + 'Mongólia', + 'Mozambik', + 'Namíbia', + 'Nauru', + 'Németország', + 'Nepál', + 'Nicaragua', + 'Niger', + 'Nigéria', + 'Niue', + 'Norvégia', + 'Nyugat Szahara', + 'Nyugat Szamoa', + 'Olaszország', + 'Omán', + 'Örményország', + 'Oroszország', + 'Pakisztán', + 'Palau', + 'Panama', + 'Pápua Új-Guinea', + 'Paraguay', + 'Peru', + 'Portugália', + 'Románia', + 'Ruanda', + 'Saint Kitts és Nevis', + 'Saint Lucia', + 'Saint Pierrre és Miquelon', + 'Saint Vincent és Grenadine-szigetek', + 'Salamon-szigetek', + 'Salvador', + 'San Marino', + 'Sao Tomé és Principé', + 'Seychelles-szigetek', + 'Sierra Leone', + 'Spanyolország', + 'Sri Lanka', + 'Suriname', + 'Svájc', + 'Svédország', + 'Szaúd-Arábia', + 'Szenegál', + 'Szerbia és Montenegró', + 'Szingapúr', + 'Szíria', + 'Szlovákia', + 'Szlovénia', + 'Szomália', + 'Szudán', + 'Szváziföld', + 'Tadzsikisztán', + 'Tajvan', + 'Tanzánia', + 'Thaiföld', + 'Togo', + 'Tokelau-szigetek', + 'Tonga', + 'Törökország', + 'Trinidad és Tobago', + 'Tunézia', + 'Türkmenisztán', + 'Turks és Caicos', + 'Tuvalu', + 'Uganda', + 'Új-Kaledónia', + 'Új-Zéland', + 'Ukrajna', + 'Uruguay', + 'Üzbegisztán', + 'Vanuatu', + 'Vatikán', + 'Venezuela', + 'Vietnam', + 'Virgin-szigetek (amerikai)', + 'Virgin-szigetek (brit)', + 'Wallis és Futuna-szigetek', + 'Zambia', + 'Zimbabwe', + 'Zöld-foki Köztársaság', +]; diff --git a/src/locales/hu/location/direction.ts b/src/locales/hu/location/direction.ts new file mode 100644 index 00000000000..3cc0689d07b --- /dev/null +++ b/src/locales/hu/location/direction.ts @@ -0,0 +1,6 @@ +export default { + cardinal: ['Észak', 'Kelet', 'Dél', 'Nyugat'], + cardinal_abbr: ['É', 'K', 'D', 'Ny'], + ordinal: ['Északkelet', 'Északnyugat', 'Délkelet', 'Délnyugat'], + ordinal_abbr: ['ÉK', 'ÉNy', 'DK', 'DNy'], +}; diff --git a/src/locales/hu/location/index.ts b/src/locales/hu/location/index.ts index ce30cbb431b..6d61b0f510f 100644 --- a/src/locales/hu/location/index.ts +++ b/src/locales/hu/location/index.ts @@ -3,10 +3,34 @@ * Run 'pnpm run generate:locales' to update. */ import type { LocationDefinition } from '../../..'; +import building_number from './building_number'; +import city_name from './city_name'; +import city_pattern from './city_pattern'; +import continent from './continent'; +import country from './country'; +import direction from './direction'; +import postcode from './postcode'; +import secondary_address from './secondary_address'; import state from './state'; +import street_address from './street_address'; +import street_name from './street_name'; +import street_pattern from './street_pattern'; +import street_suffix from './street_suffix'; const location: LocationDefinition = { + building_number, + city_name, + city_pattern, + continent, + country, + direction, + postcode, + secondary_address, state, + street_address, + street_name, + street_pattern, + street_suffix, }; export default location; diff --git a/src/locales/hu/location/postcode.ts b/src/locales/hu/location/postcode.ts new file mode 100644 index 00000000000..a8235678f7b --- /dev/null +++ b/src/locales/hu/location/postcode.ts @@ -0,0 +1 @@ +export default ['####']; diff --git a/src/locales/hu/location/secondary_address.ts b/src/locales/hu/location/secondary_address.ts new file mode 100644 index 00000000000..4ef2b91fef1 --- /dev/null +++ b/src/locales/hu/location/secondary_address.ts @@ -0,0 +1 @@ +export default ['#.em ## ajtó', '#.em']; diff --git a/src/locales/hu/location/street_address.ts b/src/locales/hu/location/street_address.ts new file mode 100644 index 00000000000..437f20dd91a --- /dev/null +++ b/src/locales/hu/location/street_address.ts @@ -0,0 +1,4 @@ +export default { + normal: '{{location.street}} {{location.buildingNumber}}', + full: '{{location.street}} {{location.buildingNumber}} {{location.secondaryAddress}}', +}; diff --git a/src/locales/hu/location/street_name.ts b/src/locales/hu/location/street_name.ts new file mode 100644 index 00000000000..537f4a8a2ac --- /dev/null +++ b/src/locales/hu/location/street_name.ts @@ -0,0 +1,1172 @@ +export default [ + 'Kossuth Lajos', + 'Petőfi', + 'Szent István', + 'Templom', + 'Arany János', + 'Rákóczi', + 'Széchenyi', + 'Vörösmarty', + 'Zrínyi', + 'Ady Endre', + 'Attila', + 'Baross', + 'József Attila', + 'Szabadság', + 'Batthyány', + 'Árpád', + 'Csokonai', + 'Duna', + 'Eötvös', + 'Hunyadi', + 'Jókai', + 'Kölcsey', + 'Lehel', + 'Mátyás király', + 'Szent László', + 'Vasút', + 'Báthory', + 'Bem', + 'Bocskai', + 'Deák Ferenc', + 'Frangepán', + 'Iskola', + 'Kisfaludy', + 'Maros', + 'Mária', + 'Nap', + 'Rózsa', + 'Sas', + 'Szegfű', + 'Táncsics Mihály', + 'Tátra', + 'Thököly', + 'Wesselényi', + 'Aradi', + 'Béke', + 'Bercsényi', + 'Brassó', + 'Corvin', + 'Dózsa György', + 'Határ', + 'Honvéd', + 'József', + 'Kassai', + 'Katona József', + 'Kinizsi', + 'Klapka', + 'Liget', + 'Madách', + 'Mikes Kelemen', + 'Nefelejcs', + 'Tompa', + 'Vas Gereben', + 'Viola', + 'Akácfa', + 'Álmos vezér', + 'Bartók Béla', + 'Bethlen Gábor', + 'Damjanich', + 'Dobó', + 'Előd', + 'Erzsébet', + 'Ferenc', + 'Garay', + 'Hősök', + 'Huba', + 'Jósika', + 'Kazinczy', + 'Kápolna', + 'Királyhágó', + 'Kiss Ernő', + 'Liszt Ferenc', + 'Margit', + 'Martinovics', + 'Mátyás', + 'Nyár', + 'Pozsonyi', + 'Rákos', + 'Sólyom', + 'Szamos', + 'Szondi', + 'Virág', + 'Alpár', + 'Alsó', + 'Aulich', + 'Álmos', + 'Bajcsy-Zsilinszky', + 'Bajza', + 'Bánya', + 'Béla', + 'Benczúr', + 'Beregszász', + 'Berzsenyi Dániel', + 'Botond', + 'Bulcsú', + 'Csaba', + 'Csillag', + 'Erdőalja', + 'Fő', + 'Gábor Áron', + 'Géza', + 'Hargita', + 'Hársfa', + 'Hunyadi János', + 'Kassa', + 'Kiss János', + 'Lajos', + 'Liliom', + 'Magyar', + 'Mátra', + 'Mikszáth Kálmán', + 'Nagysándor József', + 'Nagyszeben', + 'Nádor', + 'Nyáry Pál', + 'Nyitra', + 'Pacsirta', + 'Rezeda', + 'Szabadkai', + 'Szent Gellért', + 'Szentháromság', + 'Temesvár', + 'Temesvári', + 'Temető', + 'Tinódi', + 'Tisza', + 'Torockó', + 'Török', + 'Tulipán', + 'Újvidék', + 'Vág', + 'Vágóhíd', + 'Akácos', + 'Alkotmány', + 'Anna', + 'Állomás', + 'Bártfa', + 'Beszterce', + 'Brassói', + 'Czuczor', + 'Diófa', + 'Dugonics', + 'Fenyves', + 'Garam', + 'Gárdonyi Géza', + 'Gyöngyvirág', + 'Gyula', + 'Háromszék', + 'Huszár', + 'Ibolya', + 'Igló', + 'Ipolyság', + 'István', + 'Jegenye', + 'Jókai Mór', + 'Károly', + 'Késmárki', + 'Klauzál', + 'Kolozsvár', + 'Kolozsvári', + 'Komáromi', + 'Kossuth', + 'Körös', + 'Köztársaság', + 'Kuruc', + 'Léva', + 'Lőcsei', + 'Mályva', + 'Móricz Zsigmond', + 'Murányi', + 'Nagyszalonta', + 'Nagyvárad', + 'Olt', + 'Pannónia', + 'Pozsony', + 'Remete', + 'Rigó', + 'Rozsnyó', + 'Római', + 'Sajó', + 'Sport', + 'Szabadka', + 'Szent Imre', + 'Szepesi', + 'Széchenyi István', + 'Szilágyi Dezső', + 'Toldi Miklós', + 'Tompa Mihály', + 'Tüzér', + 'Ungvár', + 'Ungvári', + 'Vak Bottyán', + 'Vasvári Pál', + 'Városház', + 'Verecke', + 'Vezér', + 'Vécsey', + 'Vércse', + 'Völgy', + 'Zombori', + 'Zólyom', + 'Aba', + 'Adorján', + 'Aranyhegyi', + 'Arató', + 'Áchim András', + 'Baba', + 'Bácska', + 'Balassa', + 'Bécsi', + 'Bem József', + 'Bethlen', + 'Bezerédj', + 'Bimbó', + 'Blaha Lujza', + 'Bosnyák', + 'Botfalu', + 'Breznó', + 'Csáktornya', + 'Csallóköz', + 'Csányi', + 'Csap', + 'Csengery', + 'Csermely', + 'Csíksomlyó', + 'Csongor', + 'Damjanich János', + 'Deák', + 'Denevér', + 'Derkovits Gyula', + 'Dessewffy', + 'Diós', + 'Domoszló', + 'Donáti', + 'Dráva', + 'Ecsedháza', + 'Edison', + 'Egressy', + 'Emma', + 'Erdélyi', + 'Erdő', + 'Erkel Ferenc', + 'Esze Tamás', + 'Etele', + 'Farkastorki', + 'Fátra', + 'Fáy', + 'Fecske', + 'Felső', + 'Feszty Árpád', + 'Fodor', + 'Fogaras', + 'Fogarasi', + 'Földváry', + 'Fráter György', + 'Futó', + 'Füredi', + 'Galamb', + 'Gutenberg', + 'Halom', + 'Hanga', + 'Hold', + 'Hóvirág', + 'Hungária', + 'Hunyadi László', + 'Iglói', + 'Ilona', + 'Irányi Dániel', + 'Irányi', + 'Jablonka', + 'János', + 'Kakukkhegyi', + 'Kapisztrán', + 'Karácsony Sándor', + 'Karinthy Frigyes', + 'Kárpát', + 'Kázmér', + 'Kelenhegyi', + 'Kenyérmező', + 'Kereszt', + 'Kert', + 'Keve', + 'Késmárk', + 'Kinizsi Pál', + 'Király', + 'Királylaki', + 'Kis', + 'Kiscelli', + 'Kiss János altábornagy', + 'Klapka György', + 'Knézits', + 'Koppány', + 'Korányi Frigyes', + 'Körmöci', + 'Kövér Lajos', + 'Kő', + 'Kőérberki', + 'Laborc', + 'Lapos', + 'Latorca', + 'Leiningen', + 'Lepke', + 'Limanova', + 'Lorántffy Zsuzsanna', + 'Losonc', + 'Madách Imre', + 'Magdolna', + 'Mansfeld Péter', + 'Máramarosi', + 'Márton', + 'Mező', + 'Miklós', + 'Mókus', + 'Munkácsy Mihály', + 'Muskátli', + 'Nagybecskerek', + 'Nagyenyed', + 'Nagyszőlős', + 'Nádasdy', + 'Nyárfás', + 'Nyúl', + 'Oltvány', + 'Ond vezér', + 'Ordas', + 'Orló', + 'Orom', + 'Óhegy', + 'Ónodi', + 'Pasaréti', + 'Pálma', + 'Pálya', + 'Perczel Mór', + 'Peterdy', + 'Péterhegyi', + 'Piac', + 'Piroska', + 'Pogány', + 'Poprádi', + 'Pósa Lajos', + 'Pöstyén', + 'Regös', + 'Reviczky', + 'Révay', + 'Rimaszombat', + 'Róna', + 'Sashalmi', + 'Semmelweis', + 'Síp', + 'Sorház', + 'Stefánia', + 'Szalonka', + 'Szarvas', + 'Szatmár', + 'Szemere', + 'Szendrő', + 'Szent Korona', + 'Szépvölgyi', + 'Szérűskert', + 'Szigetvári', + 'Szigligeti', + 'Szőlő', + 'Taksony', + 'Tartsay Vilmos', + 'Tas', + 'Tábor', + 'Táborhegyi', + 'Táltos', + 'Testvérhegyi', + 'Thaly Kálmán', + 'Toborzó', + 'Toldy Ferenc', + 'Tomori', + 'Torda', + 'Tordai', + 'Tó', + 'Tópart', + 'Tóth Árpád', + 'Tölgyfa', + 'Töltés', + 'Tövis', + 'Turul', + 'Uzsoki', + 'Ürömi', + 'Varjú', + 'Vendel', + 'Veréb', + 'Versec', + 'Vihar', + 'Vitéz', + 'Vizafogó', + 'Vízmosás', + 'Víztorony', + 'Vöröstorony', + 'Zalán', + 'Zenta', + 'Zerge', + 'Zilah', + 'Zoltán', + 'Zombor', + 'Zsigmond', + 'Zsuzsanna', + 'I.', + 'II.', + 'III.', + 'IV.', + 'V.', + 'VI.', + 'VII.', + 'VIII.', + 'IX.', + 'X.', + 'XI.', + 'XII.', + 'XIII.', + 'XIV.', + 'XV.', + 'XVI.', + 'XVII.', + 'Abádi', + 'Abos', + 'Adria', + 'Aga', + 'Agyaghegyi', + 'Akácvirág', + 'Albert', + 'Albertirsai', + 'Album', + 'Alkér', + 'Almafa', + 'Almássy', + 'Alsódabas', + 'Andocs', + 'Andor', + 'Anjou', + 'Ankara', + 'Antónia', + 'Asztalos Sándor', + 'Aszú', + 'Avar', + 'Ábrahám Géza', + 'Ágnes', + 'Árnyas', + 'Árpád fejedelem', + 'Árpádföldi', + 'Árpád-házi Szent Erzsébet', + 'Árvácska', + 'Átlós', + 'Babér', + 'Babits Mihály', + 'Bácskai', + 'Badacsony', + 'Badacsonyi', + 'Bagolyvár', + 'Bajnok', + 'Bajtárs', + 'Bakáts', + 'Balázs', + 'Balkán', + 'Balogh Ádám', + 'Balta', + 'Bank', + 'Bánk bán', + 'Bánki Donát', + 'Bányász', + 'Barackfa', + 'Barackos', + 'Baradla', + 'Baranyai', + 'Barázda', + 'Bárczy István', + 'Barcsay', + 'Barka', + 'Bártfai', + 'Battai', + 'Battonya', + 'Benedek Elek', + 'Benyovszky Móric', + 'Bercsényi Miklós', + 'Berkenye', + 'Berzsenyi', + 'Bessenyei', + 'Bíbic', + 'Bocskai István', + 'Bod Péter', + 'Bogár', + 'Boglya', + 'Bokréta', + 'Bolyai János', + 'Bornemissza', + 'Borz', + 'Budafoki', + 'Budai Nagy Antal', + 'Caprera', + 'Cifra', + 'Ciklámen', + 'Cimbalom', + 'Cinege', + 'Cinkotai', + 'Cirmos', + 'Citadella', + 'Cukornád', + 'Czetz János', + 'Cziffra György', + 'Csabagyöngye', + 'Csákó', + 'Csalán', + 'Csalitos', + 'Csalogány', + 'Csantavér', + 'Csatárka', + 'Csejtei', + 'Csepeli', + 'Cseppkő', + 'Cser', + 'Cserei', + 'Cserepes', + 'Cseresznye', + 'Csertő', + 'Csévi', + 'Csíkszereda', + 'Csíky', + 'Csobánc', + 'Csónak', + 'Csömöri', + 'Csörlő', + 'Dandár', + 'Dániel', + 'Dara', + 'Darázs', + 'Daru', + 'Dávid Ferenc', + 'Déli', + 'Dembinszky', + 'Dér', + 'Derkovits', + 'Dés', + 'Déva', + 'Dézsma', + 'Diák', + 'Diana', + 'Dinnyehegyi', + 'Dobozi', + 'Domaszék', + 'Dombóvári', + 'Döbrentei', + 'Drégely', + 'Dunadűlő', + 'Dunakeszi', + 'Ecseri', + 'Egér', + 'Előpatak', + 'Emília', + 'Emlék', + 'Endrődi', + 'Endrődi Sándor', + 'Eötvös József', + 'Eötvös Loránd', + 'Eper', + 'Eperjes', + 'Eperjesi', + 'Epres', + 'Erdész', + 'Erdőhegy', + 'Erdősor', + 'Erdőszél', + 'Erkel', + 'Erőmű', + 'Erzsébet királyné', + 'Est', + 'Eszék', + 'Eszter', + 'Érdi', + 'Érsekújvár', + 'Fadrusz', + 'Fatimai', + 'Fazekas', + 'Fácános', + 'Fáklya', + 'Fehér', + 'Fejér Lipót', + 'Felső Duna', + 'Felsőbánya', + 'Felsőbüki Nagy Pál', + 'Ferenchegyi', + 'Fillér', + 'Fiume', + 'Fiumei', + 'Flamingó', + 'Fodros', + 'Folyondár', + 'Fonó', + 'Forduló', + 'Forgách', + 'Forrás', + 'Forrásmajori', + 'Fortuna', + 'Föld', + 'Fülek', + 'Füleki', + 'Fülemile', + 'Fürdő', + 'Fűrész', + 'Fűz', + 'Fűzfa', + 'Galgóczy', + 'Garda', + 'Gárdonyi', + 'Garibaldi', + 'Gát', + 'Gazda', + 'Gazdagréti', + 'Gázló', + 'Gépész', + 'Gépmadár', + 'Gerenda', + 'Gesztenye', + 'Gesztenyés', + 'Géza fejedelem', + 'Gizella', + 'Golgota', + 'Gomb', + 'Gombosszeg', + 'Gordonka', + 'Görgey Artúr', + 'Gránit', + 'gróf Esterházy János', + 'Gulyás', + 'Gútor', + 'Gyakorló', + 'Gyár', + 'Gyarmat', + 'Gyékény', + 'Gyergyó', + 'Gyertyaláng', + 'Gyökér', + 'Gyömröi', + 'Gyöngyösi', + 'Gyöngyvirágos', + 'Györffy István', + 'György', + 'Gyula vezér', + 'Gyulai Pál', + 'Hajdú', + 'Hajnal', + 'Hajómalom', + 'Hajós', + 'Halász', + 'Halomegyházi', + 'Hangos', + 'Hangya', + 'Haránt', + 'Harcos', + 'Harmat', + 'Hárfa', + 'Háromszéki', + 'Hársfavirág', + 'Hegyalja', + 'Hegyfok', + 'Hegyhát', + 'Helikopter', + 'Heltai', + 'Hengermalom', + 'Hermina', + 'Hittérítő', + 'Hollandi', + 'Hollós', + 'Homonna', + 'Honfoglalás', + 'Horgász', + 'Hortenzia', + 'Hortobágyi', + 'Horváth Mihály', + 'Hosszúhegy', + 'Hó', + 'Hős', + 'Hubay Jenő', + 'Hunor', + 'Hunyad', + 'Huszt', + 'Hűvösvölgyi', + 'Ida', + 'Iglice', + 'Igmándi', + 'Ihász', + 'Iker', + 'Illés', + 'Ilosvai Selymes', + 'Ipar', + 'Iparos', + 'Irhás', + 'Iringó', + 'Irsa', + 'Istenhegyi', + 'Írisz', + 'Írottkő', + 'Janda Vilmos', + 'Jázmin', + 'Jegesmedve', + 'Jobbágy', + 'Józsefhegyi', + 'Juharos', + 'Juhos', + 'Jutas', + 'Kada', + 'Kaffka Margit', + 'Kakukk', + 'Kalászi', + 'Kamaraerdei', + 'Kaptató', + 'Karatna', + 'Karthauzi', + 'Katalin', + 'Katlan', + 'Katymár', + 'Kálmán', + 'Kálvária', + 'Kálvin', + 'Kányakapu', + 'Károli Gáspár', + 'Kecske', + 'Kelenvölgyi', + 'Kemény Zsigmond', + 'Kende', + 'Kender', + 'Kerékgyártó', + 'Kerényi Frigyes', + 'Kertész', + 'Keselyű', + 'Kékfestő', + 'Kézműves', + 'Kikötő', + 'Kis-Duna', + 'Kiskert', + 'Kisköre', + 'Kistétény', + 'Kolozs', + 'Komárom', + 'Kondor', + 'Korall', + 'Korompai', + 'Korsó', + 'Kosár', + 'Kossuthfalva', + 'Kosztolányi Dezső', + 'Kócsag', + 'Kórház', + 'Kós Károly', + 'Kósa Pál', + 'Kökény', + 'Kökörcsin', + 'Körte', + 'Körtvélyes', + 'Köszörűs', + 'Kötő', + 'Közvágóhíd', + 'Kőbányai', + 'Kőér', + 'Kőműves', + 'Kőpor', + 'Kőris', + 'Krisztina', + 'Kriván', + 'Kucorgó', + 'Kun', + 'Kútvölgyi', + 'Küküllő', + 'Lajosház', + 'Lakatos', + 'Lant', + 'Lándzsa', + 'Láva', + 'Lázár', + 'Lázár Vilmos', + 'Legény', + 'Leiningen Károly', + 'Lengyel', + 'Lenke', + 'Leonardo da Vinci', + 'Lévay', + 'Lidérc', + 'Lomnici', + 'Losonci', + 'Lotz Károly', + 'Lovas', + 'Lóránt', + 'Lövész', + 'Lőcse', + 'Lőportár', + 'Lőrinc', + 'Lőrinci', + 'Lucernás', + 'Ludány', + 'Lujza', + 'Madarász', + 'Magas', + 'Magasúti', + 'Magyarok Nagyasszonya', + 'Major', + 'Maláta', + 'Malomkerék', + 'Mandula', + 'Mars', + 'Martin', + 'Matróz', + 'Mádi', + 'Május 1.', + 'Mányoki', + 'Máramaros', + 'Március 15.', + 'Márga', + 'Máriahegy', + 'Mártírok', + 'Márvány', + 'Mátyáshegyi', + 'Mázsa', + 'Mechwart', + 'Meder', + 'Medve', + 'Meggyfa', + 'Mese', + 'Mester', + 'Méhes', + 'Mérleg', + 'Miatyánk', + 'Mikes', + 'Mildenberger', + 'Moha', + 'Mohai', + 'Molnár', + 'Móra Ferenc', + 'Munkácsy', + 'Muskotály', + 'Múzeum', + 'Nagy Győry István', + 'Nagy Imre', + 'Nagy Jenő', + 'Nagy Lajos', + 'Nagybányai', + 'Nagyboldogasszony', + 'Nagy-Hangács', + 'Nagyicce', + 'Nagyida', + 'Nagyszombat', + 'Napfény', + 'Naphegy', + 'Napkelet', + 'Napraforgó', + 'Napsugár', + 'Nádastó', + 'Nánási', + 'Nemes', + 'Nemes Nagy Ágnes', + 'Neszmélyi', + 'Nevegy', + 'Nezsider', + 'Németh László', + 'Németvölgyi', + 'Nimród', + 'Nógrádi', + 'Nyereg', + 'Nyerges', + 'Oázis', + 'Obsitos', + 'Obulus', + 'Olajliget', + 'Ond', + 'Orbán Balázs', + 'Orbánhegyi', + 'Orczy', + 'Orgona', + 'Oroszvár', + 'Oroszvég', + 'Orsova', + 'Orvos', + 'Osztag', + 'Óbor', + 'Ógyalla', + 'Óra', + 'Öböl', + 'Ökörszem', + 'Ökrös', + 'Ördögorom', + 'Ördögszikla', + 'Örs vezér', + 'Összefogás', + 'Őrnagy', + 'Ősz', + 'Őszapó', + 'Őszirózsa', + 'Őz', + 'Őzike', + 'Pajtás', + 'Pala', + 'Palotás', + 'Pancsova', + 'Papp László', + 'Paskál', + 'Patak', + 'Patkó', + 'Pattantyús', + 'Patyolat', + 'Páfrány', + 'Pál', + 'Pálvölgyi', + 'Párizsi', + 'Párkány', + 'Párta', + 'Páva', + 'Pázmány Péter', + 'Pázsit', + 'Pengő', + 'Perényi', + 'Pesti', + 'Pestújhelyi', + 'Pethényi', + 'Petneházy', + 'Petőfi Sándor', + 'Petur', + 'Péceli', + 'Piarista', + 'Pici', + 'Pillangó', + 'Pinty', + 'Pipacs', + 'Piski', + 'Pistahegyi', + 'Platán', + 'Pomázi', + 'Pongrácz', + 'Poprád', + 'Posztógyár', + 'Pöltenberg Ernő', + 'Pöltenberg', + 'Pöttyös', + 'Puszta', + 'Pusztadombi', + 'Pusztakúti', + 'Pusztaszeri', + 'Radvány', + 'Raoul Wallenberg', + 'Ratkóc', + 'Rácz Aladár', + 'Rákosmező', + 'Rákospalotai', + 'Rákospatak', + 'Rákosszeg', + 'Rákosvölgyi', + 'Remetehegyi', + 'Repkény', + 'Rezgő', + 'Régivám', + 'Rét', + 'Rév', + 'Révész', + 'Ritka', + 'Rodostó', + 'Rottenbiller', + 'Rozgonyi', + 'Rozmaring', + 'Róka', + 'Rózsabarack', + 'Rózsahegy', + 'Rózsavölgyi', + 'Röppentyű', + 'Rőzse', + 'Salkaházi Sára', + 'Sarló', + 'Saroglya', + 'Sasadi', + 'Sándor', + 'Sárkány', + 'Sárrét', + 'Schulek Frigyes', + 'Schweidel József', + 'Sebész', + 'Segesvár', + 'Selmeci', + 'Seregély', + 'Serpenyő', + 'Simándi', + 'Slachta Margit', + 'Solymár', + 'Somfa', + 'Somló', + 'Só', + 'Sósfürdő', + 'Strázsa', + 'Sümegvár', + 'Szabolcs', + 'Szabolcska Mihály', + 'Szabó', + 'Szabó Ervin', + 'Szabó József', + 'Szajkó', + 'Szalag', + 'Szalamandra', + 'Szalay', + 'Szalmarózsa', + 'Szamóca', + 'Szarka', + 'Szatmári', + 'Szádelő', + 'Szállás', + 'Szárazhegy', + 'Száva', + 'Százszorszép', + 'Szebeni', + 'Szemafor', + 'Szendi', + 'Szent Flórián', + 'Szent György', + 'Szent Imre herceg', + 'Szentendrei', + 'Szentmihályi', + 'Szerémi', + 'Szeréna', + 'Szél', + 'Szélső', + 'Szép Juhászné', + 'Sziget', + 'Szigony', + 'Szikla', + 'Szikszó', + 'Szilas', + 'Szilaspatak', + 'Szilágyi Erzsébet', + 'Szilágyi', + 'Szilágysomlyó', + 'Szilvafa', + 'Szindbád', + 'Szinyei Merse', + 'Szirom', + 'Szitás', + 'Szlatina', + 'Szobránc', + 'Szolyva', + 'Szomolány', + 'Szováta', + 'Szófia', + 'Szövetség', + 'Szőlőfürt', + 'Szőlőkert', + 'Szőnyi István', + 'Szőnyi', + 'Sztehlo Gábor', + 'Talpfa', + 'Tamás', + 'Tapolcsányi', + 'Tarcsai', + 'Tarpai', + 'Tas vezér', + 'Tavasz', + 'Tavirózsa', + 'Táblás', + 'Táncsics', + 'Tápió', + 'Tárnok', + 'Tárogató', + 'Távíró', + 'Tearózsa', + 'Tegzes', + 'Teleki', + 'Temes', + 'Tengerszem', + 'Teréz', + 'Testvériség', + 'Téglagyár', + 'Téglavető', + 'Tél', + 'Tétényi', + 'Thurzó', + 'Tiborc', + 'Tigris', + 'Tihany', + 'Tisza István', + 'Tímár', + 'Toboz', + 'Toldi', + 'Toldy', + 'Torontál', + 'Toronya', + 'Töhötöm', + 'Török Bálint', + 'Törökvész', + 'Trencsén', + 'Trencséni', + 'Turán', + 'Tusnád', + 'Tusnádi', + 'Tutajos', + 'Túzok', + 'Tündér', + 'Türr István', + 'Tüske', + 'Tűzliliom', + 'Udvarhely', + 'Ugarszél', + 'Ugocsa', + 'Uzsok', + 'Újhegyi', + 'Üdülő', + 'Üllői', + 'Ürömhegyi', + 'Vadász', + 'Vajda János', + 'Vajdahunyad', + 'Vajk', + 'Valéria', + 'Vasas', + 'Vaskapu', + 'Vácduka', + 'Váci', + 'Vágó', + 'Váltó', + 'Városfal', + 'Városkúti', + 'Vásár', + 'Verebély', + 'Vereckei', + 'Verőce', + 'Vetés', + 'Vezekény', + 'Vécsey Károly', + 'Vérhalom', + 'Vigadó', + 'Vihorlát', + 'Villám', + 'Vincellér', + 'Virág Benedek', + 'Virágvölgy', + 'Virányos', + 'Visegrádi', + 'Visszatérő', + 'Víg', + 'Vízakna', + 'Vízesés', + 'Vízimalom', + 'Vízimolnár', + 'Vöcsök', + 'Vöröskereszt', + 'Vöröskúti', + 'Wass Albert', + 'Wein János', + 'Wekerle Sándor', + 'Zaránd', + 'Zágrábi', + 'Zichy Mihály', + 'Zoborhegy', + 'Zólyomi', + 'Zöldfa', + 'Zuhatag', + 'Zuzmó', + 'Zúzmara', + 'Zsarnó', + 'Zsák', + 'Zsálya', + 'Zsellér', + 'Zsilip', + 'Zsitva', + 'Zsolt', + 'Zsurló', +]; diff --git a/src/locales/hu/location/street_pattern.ts b/src/locales/hu/location/street_pattern.ts new file mode 100644 index 00000000000..b7f05261a6d --- /dev/null +++ b/src/locales/hu/location/street_pattern.ts @@ -0,0 +1,5 @@ +export default [ + '{{person.first_name.generic}} {{location.street_suffix}}', + '{{person.last_name.generic}} {{location.street_suffix}}', + '{{location.street_name}} {{location.street_suffix}}', +]; diff --git a/src/locales/hu/location/street_suffix.ts b/src/locales/hu/location/street_suffix.ts new file mode 100644 index 00000000000..d8d7597ad8a --- /dev/null +++ b/src/locales/hu/location/street_suffix.ts @@ -0,0 +1,22 @@ +export default [ + 'dűlő', + 'fasor', + 'főtér', + 'főút', + 'határút', + 'körtér', + 'körút', + 'köz', + 'lakótelep', + 'liget', + 'országút', + 'park', + 'rakpart', + 'sétány', + 'sor', + 'sugárút', + 'tér', + 'út', + 'utca', + 'útja', +]; diff --git a/src/locales/hu/word/adjective.ts b/src/locales/hu/word/adjective.ts index be5ea5002f2..30dccc9611c 100644 --- a/src/locales/hu/word/adjective.ts +++ b/src/locales/hu/word/adjective.ts @@ -605,7 +605,6 @@ export default [ 'pandzsábi', 'parancsoló', 'paraszti', - 'parasztos', 'pattogatott', 'patyolatfehér', 'pekingi', @@ -631,7 +630,6 @@ export default [ 'rekedt', 'reményteljes', 'rendszertelen', - 'retardált', 'revideált', 'robbanékony', 'rojtos', diff --git a/src/locales/hu/word/noun.ts b/src/locales/hu/word/noun.ts index 97ffc609275..3966e87273d 100644 --- a/src/locales/hu/word/noun.ts +++ b/src/locales/hu/word/noun.ts @@ -650,7 +650,6 @@ export default [ 'pali', 'papucsos kígyógomba', 'parabola csúcspontja', - 'parasztország', 'parazita', 'parkolójegy', 'partraszállás', diff --git a/src/locales/hy/internet/domain_suffix.ts b/src/locales/hy/internet/domain_suffix.ts index db4b18bc71a..e6bfa11ff3c 100644 --- a/src/locales/hy/internet/domain_suffix.ts +++ b/src/locales/hy/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com', 'biz', 'info', 'name', 'net', 'org', 'am']; +export default ['am', 'biz', 'com', 'info', 'name', 'net', 'org']; diff --git a/src/locales/id_ID/animal/bear.ts b/src/locales/id_ID/animal/bear.ts new file mode 100644 index 00000000000..32248c5f380 --- /dev/null +++ b/src/locales/id_ID/animal/bear.ts @@ -0,0 +1,10 @@ +export default [ + 'Beruang berkacamata', + 'Beruang cokelat', + 'Beruang hitam Amerika', + 'Beruang hitam Asia', + 'Beruang kungkang', + 'Beruang kutub', + 'Beruang madu', + 'Panda', +]; diff --git a/src/locales/id_ID/animal/cetacean.ts b/src/locales/id_ID/animal/cetacean.ts new file mode 100644 index 00000000000..58a1e4d9db4 --- /dev/null +++ b/src/locales/id_ID/animal/cetacean.ts @@ -0,0 +1,56 @@ +export default [ + 'Costero', + 'Lumba-lumba Bercorak Atlantik', + 'Lumba-lumba Bercorak Pantropis', + 'Lumba-lumba Bergaris', + 'Lumba-lumba Bergigi Kasar', + 'Lumba-lumba Berpunuk Atlantik', + 'Lumba-lumba Berpunuk Australia', + 'Lumba-lumba Berpunuk Indo-Pasifik', + 'Lumba-lumba Burrunan', + 'Lumba-lumba Chili', + 'Lumba-lumba Clymene', + 'Lumba-lumba Commerson', + 'Lumba-lumba Fraser', + 'Lumba-lumba Guyana', + 'Lumba-lumba Heaviside', + 'Lumba-lumba Hector', + 'Lumba-lumba Hidung Botol', + 'Lumba-lumba Hidung Botol Indo-Pasifik', + 'Lumba-lumba Irrawaddy', + 'Lumba-lumba Jam Pasir', + 'Lumba-lumba La Plata', + 'Lumba-lumba Paruh Putih', + 'Lumba-lumba Paus Kanan Selatan', + 'Lumba-lumba Paus Kanan Utara', + 'Lumba-lumba Peale', + 'Lumba-lumba Pemutar', + 'Lumba-lumba Putih Cina', + 'Lumba-lumba Risso', + 'Lumba-lumba Senja', + 'Lumba-lumba Sisi Putih Atlantik', + 'Lumba-lumba Sisi Putih Pasifik', + 'Lumba-lumba Snubfin Australia', + 'Lumba-lumba Sungai Amazon', + 'Lumba-lumba Sungai Cina', + 'Lumba-lumba Sungai Gangga', + 'Lumba-lumba Tucuxi', + 'Lumba-lumba Umum Paruh Panjang', + 'Lumba-lumba Umum Paruh Pendek', + 'Paus Berparuh Arnoux', + 'Paus Berparuh Longman', + 'Paus Biru', + 'Paus Bryde', + 'Paus Bungkuk', + 'Paus Hidung Botol Selatan', + 'Paus Kepala Melon', + 'Paus Omura', + 'Paus Pembunuh (Orca)', + 'Paus Pembunuh Kerdil', + 'Paus Pembunuh Palsu', + 'Paus Pilot Sirip Panjang', + 'Paus Pilot Sirip Pendek', + 'Paus Sei', + 'Paus Sirip', + 'Paus Sperma', +]; diff --git a/src/locales/id_ID/animal/crocodilia.ts b/src/locales/id_ID/animal/crocodilia.ts new file mode 100644 index 00000000000..e5ec351d6f5 --- /dev/null +++ b/src/locales/id_ID/animal/crocodilia.ts @@ -0,0 +1,26 @@ +export default [ + 'Alligator Cina', + 'Alligator Mississippi', + 'Buaya Afrika Barat', + 'Buaya Air Asin', + 'Buaya Air Tawar Australia', + 'Buaya Air Tawar Papua Nugini', + 'Buaya Amerika', + 'Buaya Bermoncong Runcing Afrika', + 'Buaya Filipina', + 'Buaya Kerdil', + 'Buaya Kuba', + 'Buaya Morelet', + 'Buaya Mugger', + 'Buaya Nil', + 'Buaya Orinoco', + 'Buaya Siam', + 'Gavial / Gharial', + 'Kaiman Berkacamata', + 'Kaiman Bermoncong Halus Schneider', + 'Kaiman Bermoncong Lebar', + 'Kaiman Hitam', + 'Kaiman Kerdil Cuvier', + 'Kaiman Yacare', + 'Tomistoma', +]; diff --git a/src/locales/id_ID/animal/fish.ts b/src/locales/id_ID/animal/fish.ts new file mode 100644 index 00000000000..b253c29caaf --- /dev/null +++ b/src/locales/id_ID/animal/fish.ts @@ -0,0 +1,97 @@ +export default [ + 'Bandeng', + 'Belut rawa Asia', + 'Cumi terbang Jepang', + 'Cumi terbang jumbo', + 'Cyprinid perak', + 'Haddock', + 'Hake Pasifik Utara', + 'Ikan albakora', + 'Ikan bombay-duck', + 'Ikan bonga shad', + 'Ikan bream Wuchang', + 'Ikan capelin', + 'Ikan catla', + 'Ikan conger gigi belati', + 'Ikan croaker kuning', + 'Ikan gabus utara', + 'Ikan hake Argentina', + 'Ikan haring Araucanian', + 'Ikan haring Atlantik', + 'Ikan haring Pasifik', + 'Ikan hilsa shad', + 'Ikan kakap Tiongkok', + 'Ikan kawakawa', + 'Ikan kod Atlantik', + 'Ikan kod Pasifik', + 'Ikan layur kepala besar', + 'Ikan lemuru bulat', + 'Ikan lemuru emas', + 'Ikan mandarin', + 'Ikan mas biasa', + 'Ikan mas crucian', + 'Ikan mas hitam', + 'Ikan mas kepala besar', + 'Ikan mas mrigal', + 'Ikan mas perak', + 'Ikan mas rumput', + 'Ikan nila nil', + 'Ikan nila nilotic', + 'Ikan pollock', + 'Ikan pollock Alaska', + 'Ikan rohu', + 'Ikan sand lance Pasifik', + 'Ikan sandlance Pasifik', + 'Ikan saury Pasifik', + 'Ikan thread herring Pasifik', + 'Ikan trout pelangi', + 'Ikan whiting biru', + 'Kembung Atlantik', + 'Kembung India', + 'Kembung chub', + 'Kembung jack Chili', + 'Kembung jack Jepang', + 'Kembung kuda Atlantik', + 'Kembung kuda Cape', + 'Kembung pendek', + 'Kepiting gazami', + 'Kepiting rajungan biru', + 'Kerang Jepang', + 'Kerang asari', + 'Kerang darah', + 'Kerang littleneck Jepang', + 'Kerang venus Filipina', + 'Kura-kura lunak Tiongkok', + 'Lele Amur', + 'Lele banteng Korea', + 'Lele biasa Jepang', + 'Lele kepala kuning', + 'Lele patin', + 'Lele saluran', + 'Loach kolam', + 'Menhaden Atlantik', + 'Menhaden Teluk', + 'Salmon Atlantik', + 'Salmon chum', + 'Salmon merah muda', + 'Sardin California', + 'Sardin Eropa', + 'Sardin Jepang', + 'Sardin minyak India', + 'Sardinella Madeira', + 'Selar kuning', + 'Selar mata besar', + 'Sprat Eropa', + 'Tenggiri batang sempit', + 'Teri Afrika Selatan', + 'Teri Eropa', + 'Teri Jepang', + 'Teri Pasifik', + 'Teri Peru', + 'Tuna cakalang', + 'Tuna ekor panjang', + 'Tuna mata besar', + 'Tuna sirip kuning', + 'Udang kasar Selatan', + 'Udang vaname', +]; diff --git a/src/locales/id_ID/animal/index.ts b/src/locales/id_ID/animal/index.ts new file mode 100644 index 00000000000..ba97db84c48 --- /dev/null +++ b/src/locales/id_ID/animal/index.ts @@ -0,0 +1,30 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { AnimalDefinition } from '../../..'; +import bear from './bear'; +import cetacean from './cetacean'; +import crocodilia from './crocodilia'; +import fish from './fish'; +import insect from './insect'; +import lion from './lion'; +import pet_name from './pet_name'; +import rabbit from './rabbit'; +import rodent from './rodent'; +import type_ from './type'; + +const animal: AnimalDefinition = { + bear, + cetacean, + crocodilia, + fish, + insect, + lion, + pet_name, + rabbit, + rodent, + type: type_, +}; + +export default animal; diff --git a/src/locales/id_ID/animal/insect.ts b/src/locales/id_ID/animal/insect.ts new file mode 100644 index 00000000000..dd94c68fd75 --- /dev/null +++ b/src/locales/id_ID/animal/insect.ts @@ -0,0 +1,130 @@ +export default [ + 'Bombus (Bumblebee)', + 'Empedu Apel Ek Besar', + 'Empedu Batu', + 'Empedu Ek Bertanduk', + 'Empedu Knopper', + 'Empedu Plum Biji Ek', + 'Empedu Pohon Ek Bengkak', + 'Horntail Bertanduk Kuning', + 'Horntail Bertanduk Putih', + 'Lalat Gergaji Elm', + 'Lalat Gergaji Tunas Ek', + 'Lalat Gergaji Tunas Willow', + 'Lebah', + 'Lebah Bertanduk Panjang', + 'Lebah Bluberi Tenggara', + 'Lebah Bumble Berekor Oranye', + 'Lebah Bumble Kebun Besar', + 'Lebah Bumble Utara Emas', + 'Lebah Kebun Biru', + 'Lebah Keringat', + 'Lebah Madu', + 'Lebah Madu Afrika', + 'Lebah Mallow', + 'Lebah Pemotong Daun', + 'Lebah Resin Raksasa', + 'Lebah Tukang Timur', + 'Parasitoid Empedu Ek Hackberry', + 'Parasitoid Kumbang', + 'Parasitoid Lalat Hitam Jeruk', + 'Parasitoid Skala', + 'Pembuat Empedu Wool Sower', + 'Pembunuh Kumbang Sikada', + 'Pigeon Tremex', + 'Semut', + 'Semut Akasia', + 'Semut Api', + 'Semut Api Impor Eropa', + 'Semut Api Impor Hitam', + 'Semut Api Impor Merah', + 'Semut Api Kecil', + 'Semut Api Selatan', + 'Semut Arboreal (Pohon)', + 'Semut Argentina', + 'Semut Beludru', + 'Semut Berkaki Panjang', + 'Semut Gila', + 'Semut Gila Kuning', + 'Semut Gundukan Allegheny', + 'Semut Hantu', + 'Semut Hutan Bachac', + 'Semut Jerami Barat', + 'Semut Kayu Merah', + 'Semut Kepala Besar', + 'Semut Kuning Kecil', + 'Semut Madu Palsu', + 'Semut Merah', + 'Semut Pemanen Barat', + 'Semut Pemanen Kasar', + 'Semut Pemanen Merah', + 'Semut Pemotong Daun Texas', + 'Semut Pengembara', + 'Semut Piramid', + 'Semut Rumah Berbau', + 'Semut Sutra', + 'Semut Trotoar', + 'Semut Tukang', + 'Semut Tukang Hitam', + 'Semut Tukang Kemerahan', + 'Semut Tukang Merah', + 'Semut Valentine', + 'Tawon Batu Almond', + 'Tawon Berekor Merah', + 'Tawon Biji Mawar Multiflora', + 'Tawon Braconid', + 'Tawon Chalcid', + 'Tawon Ekor Tanduk Rasberi', + 'Tawon Empedu Apel Ek', + 'Tawon Empedu Cynipid', + 'Tawon Empedu Erythrina', + 'Tawon Empedu Kastanye Oriental', + 'Tawon Empedu Marmer', + 'Tawon Empedu Mossyrose', + 'Tawon Empedu Peluru Kasar Ek', + 'Tawon Empedu Pip', + 'Tawon Empedu Piring Ek', + 'Tawon Encyrtid', + 'Tawon Eropa', + 'Tawon Eulophid', + 'Tawon Hitam Besar', + 'Tawon Ichneumon Raksasa', + 'Tawon Ichneumonid', + 'Tawon Kayu', + 'Tawon Kayu Ekor-Tanduk Biru', + 'Tawon Kayu Raksasa', + 'Tawon Kayu Sirex', + 'Tawon Kayu Siricid', + 'Tawon Kertas', + 'Tawon Kertas Asia', + 'Tawon Kertas Barat', + 'Tawon Kertas Emas', + 'Tawon Kertas Makau', + 'Tawon Kertas Umum', + 'Tawon Kukuk', + 'Tawon Kuning Barat', + 'Tawon Kuning Hutan', + 'Tawon Kuning Jerman', + 'Tawon Kuning Padang Rumput', + 'Tawon Kuning Selatan', + 'Tawon Kuning Timur', + 'Tawon Kuning Udara', + 'Tawon Lubang Kunci', + 'Tawon Lumpur', + 'Tawon Lumpur Hitam dan Kuning', + 'Tawon Merah', + 'Tawon Muka Putih', + 'Tawon Parasit Lalat Gergaji', + 'Tawon Pembawa Rumput', + 'Tawon Pemburu', + 'Tawon Penggali Emas Besar', + 'Tawon Penjaga Kuda', + 'Tawon Pteromalid', + 'Tawon Sphecid', + 'Tawon Tiphiid', + 'Tawon Torymid', + 'Tawon Tukang', + 'Tawon Tukang Berekor Oranye', + 'Tawon Tukang Hitam dan Kuning', + 'Tawon Vespid', +]; diff --git a/src/locales/id_ID/animal/lion.ts b/src/locales/id_ID/animal/lion.ts new file mode 100644 index 00000000000..26e09c7219e --- /dev/null +++ b/src/locales/id_ID/animal/lion.ts @@ -0,0 +1,9 @@ +export default [ + 'Singa Afrika Barat', + 'Singa Asia', + 'Singa Barbary', + 'Singa Kongo Timur Laut', + 'Singa Masai', + 'Singa Tanjung', + 'Singa Transvaal', +]; diff --git a/src/locales/id_ID/animal/pet_name.ts b/src/locales/id_ID/animal/pet_name.ts new file mode 100644 index 00000000000..56f26aa0c77 --- /dev/null +++ b/src/locales/id_ID/animal/pet_name.ts @@ -0,0 +1,55 @@ +export default [ + 'Abang', + 'Belang', + 'Bima', + 'Cantik', + 'Cemong', + 'Cici', + 'Ciko', + 'Cinta', + 'Coco', + 'Dodo', + 'Empus', + 'Ganteng', + 'Gembul', + 'Gus', + 'Hera', + 'Icha', + 'Ireng', + 'Jojo', + 'Koko', + 'Lala', + 'Lulu', + 'Manis', + 'Milo', + 'Mimi', + 'Momo', + 'Mujaer', + 'Nala', + 'Nana', + 'Nina', + 'Nino', + 'Oni', + 'Oyen', + 'Putih', + 'Putri', + 'Rara', + 'Riko', + 'Sasa', + 'Si Boy', + 'Si Hitam', + 'Si Manis', + 'Si Putih', + 'Sumerlang', + 'Teddy', + 'Tomi', + 'Tutu', + 'Ucil', + 'Ujang', + 'Wendi', + 'Wira', + 'Yoyo', + 'Zara', + 'Zizi', + 'Zuzu', +]; diff --git a/src/locales/id_ID/animal/rabbit.ts b/src/locales/id_ID/animal/rabbit.ts new file mode 100644 index 00000000000..18b5322e607 --- /dev/null +++ b/src/locales/id_ID/animal/rabbit.ts @@ -0,0 +1,51 @@ +export default [ + 'Amerika', + 'Anggora Inggris', + 'Anggora Perancis', + 'Anggora Raksasa', + 'Argente Brun', + 'Belanda', + 'Beveren', + 'Blanc de Hotot', + 'Britannia Petite', + 'Champagne D’Argent', + 'Checkered Giant', + 'Chinchilla Amerika', + 'Chinchilla Raksasa', + 'Chinchilla Standar', + 'Cinnamon', + 'Crème D’Argent', + 'Dwarf Hotot', + 'Florida Putih', + 'Fuzzy Lop Amerika', + 'Harlequin', + 'Havana', + 'Himalaya', + 'Holland Lop', + 'Jersey Wooly', + 'Kalifornian', + 'Kelinci Belgian Hare', + 'Lilac', + 'Lionhead', + 'Lop Inggris', + 'Lop Perancis', + 'Marten Perak', + 'Mini Lop', + 'Mini Rex', + 'Mini Satin', + 'Netherland Dwarf', + 'Palomino', + 'Perak', + 'Polandia', + 'Raksasa Flemish', + 'Rex', + 'Rhinelander', + 'Rubah Perak', + 'Sable Amerika', + 'Satin', + 'Satin Anggora', + 'Selandia Baru', + 'Spot Inggris', + 'Tan', + 'Thrianta', +]; diff --git a/src/locales/id_ID/animal/rodent.ts b/src/locales/id_ID/animal/rodent.ts new file mode 100644 index 00000000000..909f911365d --- /dev/null +++ b/src/locales/id_ID/animal/rodent.ts @@ -0,0 +1,179 @@ +export default [ + 'Acouchi Hijau', + 'Acouchi Merah', + 'Agouti Amerika Tengah', + 'Agouti Azara', + 'Agouti Berjambul', + 'Agouti Coiba', + 'Agouti Hitam', + 'Agouti Kalinowski', + 'Agouti Meksiko', + 'Agouti Orinoco', + 'Agouti Pulau Ruatan', + 'Agouti Punggung Hitam', + 'Agouti Punggung Merah', + 'Angkis Kelabi', + 'Atherurus', + 'Babi Guinea Bergigi Kuning Brandt', + 'Babi Guinea Bergigi Kuning Spix', + 'Babi Guinea Bergigi Kuning Umum', + 'Babi Guinea Besar', + 'Babi Guinea Brasil', + 'Babi Guinea Domestik', + 'Babi Guinea Gunung Selatan', + 'Babi Guinea Gunung Shipton', + 'Babi Guinea Mengkilap', + 'Babi Guinea Pegunungan', + 'Babi Guinea Santa Catarina', + 'Bathyergus', + 'Cavia', + 'Chinchilla', + 'Chinchilla Ekor Panjang', + 'Chinchilla Ekor Pendek', + 'Coendou', + 'Coruro', + 'Ctenomys', + 'Cuniculus', + 'Cuscomys', + 'Dasyprocta', + 'Degu Bergigi Bulan', + 'Degu Bridge', + 'Degu Isla Mocha', + 'Degu Pegunungan', + 'Degu Umum', + 'Erethizon', + 'Galea', + 'Georychus', + 'Georychus capensis', + 'Heliophobius', + 'Heterocephalus', + 'Hystrix', + 'Kannabateomys', + 'Kannabateomys amblyonyx', + 'Lagidium', + 'Lagostomus', + 'Landak Amerika Utara', + 'Landak Bahia', + 'Landak Berduri Tebal', + 'Landak Berekor Sikat Asia', + 'Landak Berjambul', + 'Landak Brasil', + 'Landak Ekor Panjang', + 'Landak Ekor Sikat Afrika', + 'Landak Ekor Tumpul', + 'Landak Filipina', + 'Landak India', + 'Landak Kerdil Berbulu Cokelat', + 'Landak Kerdil Berbulu Ekor Hitam', + 'Landak Kerdil Berbulu Meksiko', + 'Landak Kerdil Berbulu Paraguay', + 'Landak Kerdil Berbulu Pucat', + 'Landak Kerdil Berduri Dua Warna', + 'Landak Kerdil Bergaris', + 'Landak Kerdil Hitam', + 'Landak Kerdil Roosmalen', + 'Landak Malaya', + 'Landak Rothschild', + 'Landak Sumatra', + 'Landak Sunda', + 'Landak Tanduk', + 'Microcavia', + 'Myoprocta', + 'Octodon', + 'Octodontomys', + 'Octomys', + 'Olallamys', + 'Paka Dataran Rendah', + 'Paka Pegunungan', + 'Pengerat (Marmut) Gunung Andes', + 'Pipanacoctomys', + 'Salinoctomys', + 'Spalacopus', + 'Tikus Bambu', + 'Tikus Bambu Amazon', + 'Tikus Bambu Bolivia', + 'Tikus Bambu Peru', + 'Tikus Batu Chili', + 'Tikus Batu Porter', + 'Tikus Batu Sage', + 'Tikus Chinchilla Abu-abu', + 'Tikus Chinchilla Arboreal Asháninka', + 'Tikus Chinchilla Bennett', + 'Tikus Chinchilla Bolivia', + 'Tikus Chinchilla Budin', + 'Tikus Chinchilla Famatina', + 'Tikus Chinchilla Punta de Vacas', + 'Tikus Chinchilla Uspallata', + 'Tikus Mol Pasir Namaqua', + 'Tikus Mol Pasir Tanjung', + 'Tikus Mondok Afrika', + 'Tikus Mondok Ansel', + 'Tikus Mondok Bergaris Somalia', + 'Tikus Mondok Bocage', + 'Tikus Mondok Damaraland', + 'Tikus Mondok Ghana', + 'Tikus Mondok Hottentot', + 'Tikus Mondok Kafu', + 'Tikus Mondok Mashona', + 'Tikus Mondok Mechow', + 'Tikus Mondok Micklem', + 'Tikus Mondok Nigeria', + 'Tikus Mondok Occlusus', + 'Tikus Mondok Oker', + 'Tikus Mondok Sutra', + 'Tikus Mondok Whyte', + 'Tikus Mondok Zambia', + 'Tikus Mondok telanjang', + 'Tikus Olalla Ekor Putih', + 'Tikus Olalla Rakus', + 'Tikus Tanah Argentina', + 'Tikus Tanah Azara', + 'Tikus Tanah Berbintik', + 'Tikus Tanah Bergigi Putih', + 'Tikus Tanah Berkalung', + 'Tikus Tanah Bolivia', + 'Tikus Tanah Bonetto', + 'Tikus Tanah Brasil', + 'Tikus Tanah Catamarca', + 'Tikus Tanah Chacoan', + 'Tikus Tanah Cokelat Kekuningan', + 'Tikus Tanah Colburn', + 'Tikus Tanah Conover', + 'Tikus Tanah Dataran Tinggi', + 'Tikus Tanah Emily', + 'Tikus Tanah Furtive', + 'Tikus Tanah Goya', + 'Tikus Tanah Haig', + 'Tikus Tanah Kecil', + 'Tikus Tanah Kemerahan', + 'Tikus Tanah Kokoh', + 'Tikus Tanah Lewis', + 'Tikus Tanah Magellan', + 'Tikus Tanah Maule', + 'Tikus Tanah Mendoza', + 'Tikus Tanah Natterer', + 'Tikus Tanah Pearson', + 'Tikus Tanah Perkasa', + 'Tikus Tanah Peru', + 'Tikus Tanah Porteous', + 'Tikus Tanah Rio Negro', + 'Tikus Tanah Salta', + 'Tikus Tanah San Luis', + 'Tikus Tanah Selatan', + 'Tikus Tanah Sosial', + 'Tikus Tanah Steinbach', + 'Tikus Tanah Sutra', + 'Tikus Tanah Talas', + 'Tikus Tanah Tucuman', + 'Tikus Viscacha Dataran', + 'Tikus Viscacha Emas', + 'Tikus Viscacha Los Chalchaleros', + 'Tikus Viscacha Pegunungan', + 'Tikus chinchilla Sierra del Tonta', + 'Tuko-Tuko', + 'Tympanoctomys', + 'Viscacha Dataran', + 'Viscacha Selatan', + 'Viscacha Utara', + 'Viscacha Wolffsohn', +]; diff --git a/src/locales/id_ID/animal/type.ts b/src/locales/id_ID/animal/type.ts new file mode 100644 index 00000000000..92a0ff99b9c --- /dev/null +++ b/src/locales/id_ID/animal/type.ts @@ -0,0 +1,75 @@ +export default [ + 'alpaka', + 'angsa', + 'anjing', + 'anjing laut', + 'armadillo', + 'ayam', + 'babi', + 'badak', + 'bajing', + 'bebek', + 'belalang', + 'beruang', + 'beruang kutub', + 'buaya', + 'burung', + 'burung unta', + 'capung', + 'cicak', + 'domba', + 'elang', + 'flamingo', + 'gajah', + 'gorila', + 'gurita', + 'hamster', + 'harimau', + 'hiu', + 'ikan', + 'ikan pari', + 'jerapah', + 'kadal', + 'kambing', + 'kancil', + 'kanguru', + 'kelelawar', + 'kelinci', + 'kepiting', + 'kerbau', + 'koala', + 'kodok', + 'komodo', + 'kucing', + 'kuda', + 'kuda nil', + 'kumbang', + 'kupu-kupu', + 'kura-kura', + 'lebah', + 'lemur', + 'lumba-lumba', + 'merak', + 'monyet', + 'nuri', + 'panda', + 'paus', + 'paus pembunuh / orca', + 'penguin', + 'platipus', + 'rubah', + 'rusa', + 'sapi', + 'semut', + 'serigala', + 'singa', + 'singa laut', + 'tapir', + 'trenggiling', + 'tupai', + 'udang', + 'ular', + 'unta', + 'walrus', + 'zebra', +]; diff --git a/src/locales/id_ID/color/human.ts b/src/locales/id_ID/color/human.ts new file mode 100644 index 00000000000..2e1b19a0cec --- /dev/null +++ b/src/locales/id_ID/color/human.ts @@ -0,0 +1,43 @@ +export default [ + 'abu muda', + 'abu tua', + 'abu-abu', + 'biru', + 'biru dongker', + 'biru langit', + 'biru laut', + 'coklat', + 'cyan', + 'emas', + 'fusia', // fuchsia + 'hijau', + 'hijau mint', + 'hijau telur asin', + 'hijau zaitun', + 'hitam', + 'indigo', + 'ivori', + 'jingga', + 'krem', + 'kuning', + 'lavender', + 'lime', + 'merah', + 'merah lembayung', // magenta + 'merah marun', + 'merah muda / pink', + 'merah muda cerah', + 'merah salmon', + 'nila', // indigo (blue-purple-ish) + 'oranye', + 'orkid', + 'perak', + 'plum', + 'pucat', + 'putih', + 'teal', + 'toska', + 'ungu', + 'ungu kebiruan pucat', + 'ungu muda', +]; diff --git a/src/locales/id_ID/color/index.ts b/src/locales/id_ID/color/index.ts new file mode 100644 index 00000000000..e7cf1e89436 --- /dev/null +++ b/src/locales/id_ID/color/index.ts @@ -0,0 +1,12 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { ColorDefinition } from '../../..'; +import human from './human'; + +const color: ColorDefinition = { + human, +}; + +export default color; diff --git a/src/locales/id_ID/commerce/department.ts b/src/locales/id_ID/commerce/department.ts new file mode 100644 index 00000000000..fa29bc2dc98 --- /dev/null +++ b/src/locales/id_ID/commerce/department.ts @@ -0,0 +1,33 @@ +export default [ + 'Alat Tulis', + 'Anak-anak', + 'Anggur & Minuman Keras', + 'Bayi', + 'Buku', + 'Elektronik', + 'Film', + 'Hadiah', + 'Hewan Peliharaan', + 'Industri', + 'Kecantikan', + 'Kesehatan', + 'Komputer', + 'Luar Ruangan & Aktivitas', + 'Mainan', + 'Makanan & Minuman', + 'Musik', + 'Olahraga', + 'Otomotif', + 'Pakaian', + 'Perabotan / Rumah Tangga', + 'Peralatan', + 'Perangkat Keras / Perkakas', + 'Perangkat Lunak', + 'Perawatan Pribadi', + 'Perhiasan', + 'Perjalanan', + 'Permainan', + 'Sembako', + 'Sepatu', + 'Taman', +]; diff --git a/src/locales/id_ID/commerce/index.ts b/src/locales/id_ID/commerce/index.ts new file mode 100644 index 00000000000..29c9eeb2006 --- /dev/null +++ b/src/locales/id_ID/commerce/index.ts @@ -0,0 +1,16 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { CommerceDefinition } from '../../..'; +import department from './department'; +import product_description from './product_description'; +import product_name from './product_name'; + +const commerce: CommerceDefinition = { + department, + product_description, + product_name, +}; + +export default commerce; diff --git a/src/locales/id_ID/commerce/product_description.ts b/src/locales/id_ID/commerce/product_description.ts new file mode 100644 index 00000000000..fb126440a17 --- /dev/null +++ b/src/locales/id_ID/commerce/product_description.ts @@ -0,0 +1,33 @@ +export default [ + 'Dapatkan pengalaman {{word.adjective}} dengan {{commerce.product}} yang terbuat dari bahan {{commerce.productMaterial}} pilihan', + 'Dengan teknologi yang ditingkatkan {{science.chemical_element.name}}, {{commerce.product}} kami menawarkan performa {{word.adjective}} yang tak tertandingi', + 'Desain modern {{commerce.product}} cocok untuk gaya hidup {{word.adjective}} masa kini', + 'Dilengkapi fitur {{word.adjective}}, {{commerce.product}} ini cocok untuk gaya hidup modern', + 'Jadikan {{commerce.product}} sebagai pilihan utama untuk kebutuhan {{word.adjective}} Anda', + 'Koleksi terbaru {{commerce.product}} kami hadir dengan warna {{color.human}} yang {{word.adjective}}', + 'Memperkenalkan {{commerce.product}} terinspirasi dari {{location.country}}, memadukan gaya {{word.adjective}} dengan keahlian lokal', + 'Model {{commerce.product}} baru dengan RAM {{number.int({"min": 1, "max": 100})}} GB, penyimpanan {{number.int({"min": 1, "max": 1000})}} GB, dan fitur {{word.adjective}}', + 'Nikmati esensi {{food.adjective}} dalam {{commerce.product}} kami, dirancang untuk petualangan kuliner yang {{word.adjective}}', + 'Rasakan kecemerlangan {{color.human}} dari {{commerce.product}} kami, ideal untuk lingkungan yang {{word.adjective}}', + 'Rasakan kenyamanan maksimal dengan {{commerce.product}} berbahan {{commerce.productMaterial}} yang {{word.adjective}}', + 'Teknologi pintar pada {{commerce.product}} memberikan kemudahan {{word.adjective}} setiap hari', + 'Teknologi {{commerce.product}} paling canggih dari {{company.name}} meningkatkan kemampuan yang {{word.adjective}}', + 'Temukan kelincahan seperti {{animal.type}} pada {{commerce.product}} kami, sempurna untuk pengguna yang {{word.adjective}}', + 'Temukan {{commerce.product}} baru yang {{word.adjective}} dengan campuran bahan {{commerce.productMaterial}} yang menarik', + '{{commerce.productAdjective}} {{commerce.product}} dirancang dengan {{commerce.productMaterial}} untuk performa yang {{word.adjective}}', + '{{commerce.product}} bergaya dirancang agar Anda tampil menonjol dengan tampilan yang {{word.adjective}}', + '{{commerce.product}} edisi terbatas terinspirasi dari {{location.country}} untuk tampilan yang {{word.adjective}}', + '{{commerce.product}} ergonomis dibuat dengan {{commerce.productMaterial}} untuk dukungan {{word.adjective}} sepanjang hari', + '{{commerce.product}} inovatif dengan teknologi {{word.adjective}} dan konstruksi {{commerce.productMaterial}}', + '{{commerce.product}} kami hadir dengan garansi {{number.int({"min": 1, "max": 5})}} tahun untuk kenyamanan {{word.adjective}} Anda', + '{{commerce.product}} kami menggunakan teknologi {{science.chemical_element.name}} untuk hasil yang {{word.adjective}}', + '{{commerce.product}} kelas profesional sempurna untuk pelatihan dan penggunaan rekreasi yang {{word.adjective}}', + '{{commerce.product}} multifungsi ini menawarkan solusi {{word.adjective}} untuk setiap kebutuhan rumah tangga', + '{{commerce.product}} ramah {{animal.type}} kami memastikan kenyamanan {{word.adjective}} untuk hewan peliharaan Anda', + '{{commerce.product}} ramping dan {{word.adjective}} ini dilengkapi pencahayaan LED {{color.human}} untuk fungsionalitas pintar', + '{{commerce.product}} terinspirasi dari {{food.adjective}} kami menghadirkan sentuhan kemewahan pada gaya hidup Anda yang {{word.adjective}}', + '{{commerce.product}} {{color.human}} baru dengan desain ergonomis untuk kenyamanan yang {{word.adjective}}', + '{{commerce.product}} {{color.human}} ini memadukan estetika {{location.country}} dengan daya tahan berbasis {{science.chemical_element.name}}', + '{{commerce.product}} {{company.catchPhrase}} menawarkan performa andal dan desain yang {{word.adjective}}', + '{{commerce.product}} {{person.firstName}} adalah produk terbaru dari rangkaian produk {{word.adjective}} dari {{company.name}}', +]; diff --git a/src/locales/id_ID/commerce/product_name.ts b/src/locales/id_ID/commerce/product_name.ts new file mode 100644 index 00000000000..d5f7c61bb2e --- /dev/null +++ b/src/locales/id_ID/commerce/product_name.ts @@ -0,0 +1,84 @@ +export default { + adjective: [ + 'Beku', + 'Berizin', + 'Buatan Sendiri', + 'Buatan Tangan', + 'Cerdas', + 'Daur Ulang', + 'Elegan', + 'Elektronik', + 'Ergonomis', + 'Fantastis', + 'Kecil', + 'Khusus', + 'Lembut', + 'Lezat', + 'Luar Biasa', + 'Menawan', + 'Mewah', + 'Modern', + 'Oriental', + 'Praktis', + 'Ramping', + 'Rapi', + 'Rustik', + 'Segar', + 'Tanpa Merek', + 'Umum', + ], + material: [ + 'Aluminium', + 'Asbestos', + 'Baja', + 'Bambu', + 'Besi', + 'Beton', + 'Emas', + 'Fiber Karbon', + 'Granit', + 'Kapas', + 'Karet', + 'Kayu', + 'Keramik', + 'Logam', + 'Marmer', + 'Perunggu', + 'Plastik', + 'Sutra', + ], + product: [ + 'Ayam', + 'Bola', + 'Celana', + 'Daging Asap', + 'Handuk', + 'Ikan', + 'Jam', + 'Kacamata', + 'Keju', + 'Kemeja', + 'Keripik', + 'Keyboard', + 'Komputer', + 'Kursi', + 'Laptop', + 'Meja', + 'Mobil', + 'Motor', + 'Mouse', + 'Pizza', + 'Sabun', + 'Salad', + 'Sarung Tangan', + 'Sepatu', + 'Sepeda', + 'Sosis', + 'Tas', + 'Topi', + 'Tuna', + ], + pattern: [ + '{{commerce.product}} {{commerce.productMaterial}} {{commerce.productAdjective}}', + ], +}; diff --git a/src/locales/id_ID/index.ts b/src/locales/id_ID/index.ts index 4b864625263..39f5a2905a7 100644 --- a/src/locales/id_ID/index.ts +++ b/src/locales/id_ID/index.ts @@ -3,6 +3,9 @@ * Run 'pnpm run generate:locales' to update. */ import type { LocaleDefinition } from '../..'; +import animal from './animal'; +import color from './color'; +import commerce from './commerce'; import company from './company'; import date from './date'; import internet from './internet'; @@ -10,6 +13,7 @@ import location from './location'; import metadata from './metadata'; import person from './person'; import phone_number from './phone_number'; +import word from './word'; /** * The locale data for the `id_ID` locale. @@ -18,6 +22,9 @@ import phone_number from './phone_number'; * - Endonym: Bahasa Indonesia (Indonesia) */ const id_ID: LocaleDefinition = { + animal, + color, + commerce, company, date, internet, @@ -25,6 +32,7 @@ const id_ID: LocaleDefinition = { metadata, person, phone_number, + word, }; export default id_ID; diff --git a/src/locales/id_ID/internet/domain_suffix.ts b/src/locales/id_ID/internet/domain_suffix.ts index 52443a7a4da..9a35d1fcd75 100644 --- a/src/locales/id_ID/internet/domain_suffix.ts +++ b/src/locales/id_ID/internet/domain_suffix.ts @@ -1,25 +1,25 @@ export default [ - 'com', - 'net', - 'org', + 'ac.id', 'asia', - 'tv', 'biz', - 'info', - 'in', - 'name', + 'biz.id', 'co', - 'id', - 'ac.id', - 'sch.id', + 'co.id', + 'com', + 'desa.id', 'go.id', + 'id', + 'in', + 'info', 'mil.id', - 'co.id', - 'or.id', - 'web.id', 'my.id', + 'name', + 'net', 'net.id', - 'biz.id', - 'desa.id', + 'or.id', + 'org', 'ponpes.id', + 'sch.id', + 'tv', + 'web.id', ]; diff --git a/src/locales/id_ID/internet/free_email.ts b/src/locales/id_ID/internet/free_email.ts index 3229a0b666f..5eeebf3574b 100644 --- a/src/locales/id_ID/internet/free_email.ts +++ b/src/locales/id_ID/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'yahoo.com', 'gmail.co.id', 'yahoo.co.id']; +export default ['gmail.co.id', 'gmail.com', 'yahoo.co.id', 'yahoo.com']; diff --git a/src/locales/id_ID/location/country.ts b/src/locales/id_ID/location/country.ts new file mode 100644 index 00000000000..94bd4649acb --- /dev/null +++ b/src/locales/id_ID/location/country.ts @@ -0,0 +1,251 @@ +export default [ + 'Afganistan', + 'Afrika Selatan', + 'Albania', + 'Aljazair', + 'Amerika Serikat', + 'Andorra', + 'Angola', + 'Anguilla', + 'Antarktika', + 'Antigua dan Barbuda', + 'Arab Saudi', + 'Argentina', + 'Armenia', + 'Aruba', + 'Australia', + 'Austria', + 'Azerbaijan', + 'Bahama', + 'Bahrain', + 'Bangladesh', + 'Barbados', + 'Belanda', + 'Belarus', + 'Belgia', + 'Belize', + 'Benin', + 'Bermuda', + 'Bhutan', + 'Bolivia', + 'Bonaire, Sint Eustatius, dan Saba', + 'Bosnia dan Herzegovina', + 'Botswana', + 'Brasil', + 'Brunei Darussalam', + 'Bulgaria', + 'Burkina Faso', + 'Burundi', + 'Ceko', + 'Chad', + 'Chili', + 'Curaçao', + 'Denmark', + 'Djibouti', + 'Dominika', + 'Ekuador', + 'El Salvador', + 'Eritrea', + 'Estonia', + 'Eswatini', + 'Ethiopia', + 'Fiji', + 'Filipina', + 'Finlandia', + 'Gabon', + 'Gambia', + 'Georgia Selatan dan Kepulauan Sandwich Selatan', + 'Georgia', + 'Ghana', + 'Gibraltar', + 'Greenland', + 'Grenada', + 'Guadeloupe', + 'Guam', + 'Guatemala', + 'Guernsey', + 'Guinea Khatulistiwa', + 'Guinea', + 'Guinea-Bissau', + 'Guyana Prancis', + 'Guyana', + 'Haiti', + 'Honduras', + 'Hong Kong', + 'Hungaria', + 'India', + 'Indonesia', + 'Inggris Raya', + 'Irak', + 'Iran', + 'Irlandia', + 'Islandia', + 'Israel', + 'Italia', + 'Jamaika', + 'Jepang', + 'Jerman', + 'Jersey', + 'Kaledonia Baru', + 'Kamboja', + 'Kamerun', + 'Kanada', + 'Kazakhstan', + 'Kenya', + 'Kepulauan Cayman', + 'Kepulauan Cocos (Keeling)', + 'Kepulauan Cook', + 'Kepulauan Falkland (Malvinas)', + 'Kepulauan Faroe', + 'Kepulauan Mariana Utara', + 'Kepulauan Marshall', + 'Kepulauan Pitcairn', + 'Kepulauan Solomon', + 'Kepulauan Terluar Kecil Amerika Serikat', + 'Kepulauan Turks dan Caicos', + 'Kepulauan Virgin Amerika Serikat', + 'Kepulauan Virgin Britania Raya', + 'Kepulauan Åland', + 'Kirgizstan', + 'Kiribati', + 'Kolombia', + 'Komoro', + 'Kongo', + 'Korea Selatan', + 'Korea Utara', + 'Kosta Rika', + 'Kroasia', + 'Kuba', + 'Kuwait', + 'Laos', + 'Latvia', + 'Lebanon', + 'Lesotho', + 'Liberia', + 'Libya', + 'Liechtenstein', + 'Lituania', + 'Luksemburg', + 'Madagaskar', + 'Makau', + 'Makedonia Utara', + 'Maladewa', + 'Malawi', + 'Malaysia', + 'Mali', + 'Malta', + 'Maroko', + 'Martinik', + 'Mauritania', + 'Mauritius', + 'Mayotte', + 'Meksiko', + 'Mesir', + 'Mikronesia', + 'Moldova', + 'Monako', + 'Mongolia', + 'Montenegro', + 'Montserrat', + 'Mozambik', + 'Myanmar', + 'Namibia', + 'Nauru', + 'Nepal', + 'Niger', + 'Nigeria', + 'Nikaragua', + 'Niue', + 'Norwegia', + 'Oman', + 'Pakistan', + 'Palau', + 'Palestina', + 'Panama', + 'Pantai Gading', + 'Papua Nugini', + 'Paraguay', + 'Peru', + 'Polandia', + 'Polinesia Prancis', + 'Portugal', + 'Prancis', + 'Puerto Riko', + 'Pulau Bouvet', + 'Pulau Heard dan Kepulauan McDonald', + 'Pulau Man', + 'Pulau Natal', + 'Pulau Norfolk', + 'Qatar', + 'Republik Afrika Tengah', + 'Republik Demokratik Kongo', + 'Republik Dominika', + 'Republik Rakyat Tiongkok', + 'Reunion', + 'Rumania', + 'Rusia', + 'Rwanda', + 'Sahara Barat', + 'Saint Barthelemy', + 'Saint Helena', + 'Saint Kitts dan Nevis', + 'Saint Lucia', + 'Saint Martin', + 'Saint Pierre dan Miquelon', + 'Saint Vincent dan Grenadines', + 'Samoa Amerika', + 'Samoa', + 'San Marino', + 'Sao Tome dan Principe', + 'Selandia Baru', + 'Senegal', + 'Serbia', + 'Seychelles', + 'Sierra Leone', + 'Singapura', + 'Sint Maarten', + 'Siprus', + 'Slovakia', + 'Slovenia', + 'Somalia', + 'Spanyol', + 'Sri Lanka', + 'Sudan Selatan', + 'Sudan', + 'Suriah', + 'Suriname', + 'Svalbard dan Jan Mayen', + 'Swedia', + 'Swiss', + 'Taiwan', + 'Tajikistan', + 'Tanjung Verde', + 'Tanzania', + 'Thailand', + 'Timor Leste', + 'Togo', + 'Tokelau', + 'Tonga', + 'Trinidad dan Tobago', + 'Tunisia', + 'Turki', + 'Turkmenistan', + 'Tuvalu', + 'Uganda', + 'Ukraina', + 'Uni Emirat Arab', + 'Uruguay', + 'Uzbekistan', + 'Vanuatu', + 'Vatikan', + 'Venezuela', + 'Vietnam', + 'Wallis dan Futuna', + 'Wilayah Samudra Hindia Britania', + 'Wilayah Selatan Prancis', + 'Yaman', + 'Yordania', + 'Yunani', + 'Zambia', + 'Zimbabwe', +]; diff --git a/src/locales/id_ID/location/index.ts b/src/locales/id_ID/location/index.ts index e2c5f4012d7..31331bfd5f8 100644 --- a/src/locales/id_ID/location/index.ts +++ b/src/locales/id_ID/location/index.ts @@ -6,6 +6,7 @@ import type { LocationDefinition } from '../../..'; import building_number from './building_number'; import city_name from './city_name'; import city_pattern from './city_pattern'; +import country from './country'; import postcode from './postcode'; import state from './state'; import street_address from './street_address'; @@ -16,6 +17,7 @@ const location: LocationDefinition = { building_number, city_name, city_pattern, + country, postcode, state, street_address, diff --git a/src/locales/id_ID/word/adjective.ts b/src/locales/id_ID/word/adjective.ts new file mode 100644 index 00000000000..e89ef10a2e9 --- /dev/null +++ b/src/locales/id_ID/word/adjective.ts @@ -0,0 +1,800 @@ +export default [ + 'abadi', // everlasting + 'abu-abu', // gray + 'adil', // fair + 'agresif', // aggressive + 'ahli', // expert + 'akrab', // familiar + 'akurat', // accurate + 'alami', // natural + 'altruistik', // altruistic + 'ambisius', // ambitious + 'aneh sekali', // oddball / outlandish + 'aneh', // weird / odd / strange / kooky + 'anggun', // graceful / elegant + 'angin puyuh', // whirlwind + 'antik', // antique + 'apa adanya', // candid + 'apapun', // any + 'apek', // musty + 'artistik', // artistic + 'asam', // acidic / sour + 'asin', // salty + 'asli', // authentic + 'atletis', // athletic + 'awal', // early + 'awet muda', // youthful + 'bahagia', // happy + 'baik hati', // good-natured + 'baik', // good / nice + 'baik-baik', // fine + 'baja keras', // ironclad + 'baja', // steel + 'bangga', // proud + 'banyak bicara', // talkative + 'baru', // new + 'baru-baru ini', // recent + 'basah kuyup', // soggy + 'basi', // stale + 'bawaan lahir', // inborn + 'bebas', // carefree / free + 'beberapa', // some + 'bego', // clueless + 'bekas', // second-hand + 'beku', // frozen + 'belakang', // back + 'belum dicoba', // untried + 'belum selesai', // unfinished + 'benar', // right / true + 'benar-benar', // downright + 'bengkok', // crooked + 'beracun', // noxious + 'berada', // well-to-do + 'berair', // watery / juicy / runny + 'berangin', // windy + 'berani', // brave / courageous + 'berantakan', // untidy / messy / cluttered / unkempt + 'berapi-api', // impassioned + 'beraroma', // perfumed / scented + 'berat', // weighty / heavy + 'berawan', // cloudy + 'berbadai', // stormy + 'berbahaya', // harmful + 'berbakat', // gifted + 'berbayang', // shadowy + 'berbeda', // different / distinct + 'berbisik', // whispered + 'berbuah', // fruitful + 'berbulu halus', // fluffy + 'berbulu', // hairy + 'berbunga', // flowery + 'berdaging', // meaty + 'berdecit', // squeaky + 'berdengung', // buzzing + 'berdosa', // sinful + 'berduri', // prickly / thorny + 'berenda', // frilly + 'bergantung', // dependent + 'bergaris', // lined + 'bergaya', // stylish + 'bergejolak', // turbulent + 'bergengsi', // prestigious + 'bergerigi', // jagged + 'bergizi', // nutritious + 'bergoyang-goyang', // wiggly + 'bergumpal', // lumpy + 'berguna', // handy + 'berharga', // valuable / precious + 'berhati hangat', // warmhearted + 'berhias', // ornate + 'berikutnya', // next + 'berisik', // blaring + 'berkabut asap', // smoggy + 'berkarat', // rusty + 'berkedip-kedip', // flickering + 'berkelok', // winding + 'berkesan', // memorable + 'berkilau', // gleaming / lustrous / shimmering + 'berkilauan', // glittering / sparkling + 'berkrim', // creamy + 'berlendir es', // icy + 'berliku seperti ular', // serpentine + 'berlimpah', // profuse + 'berlumpur salju', // slushy + 'berlumpur', // muddy + 'bermanfaat', // beneficial + 'bermasalah', // troubled + 'bermentega', // buttery + 'berminyak', // oily + 'berniat', // intent + 'bernilai', // worthwhile + 'bernoda', // stained + 'berombak', // wavy + 'berongga', // hollow + 'berpasir', // sandy + 'berpengalaman', // experienced + 'berpengetahuan', // knowledgeable + 'berputar', // rotating + 'bersalah', // guilty + 'bersayap', // winged + 'bersedia', // willing + 'berselaput', // webbed + 'bersemangat', // zealous / animated / excited / spirited + 'berseri', // radiant + 'bersih', // clean + 'bersisik', // scaly + 'bertahan lama', // lasting + 'bertanggung jawab', // responsible + 'bertaubat', // repentant + 'bertekad', // determined + 'bertele-tele', // wordy + 'bertetangga', // neighboring + 'berubah-ubah', // variable + 'beruban', // grizzled + 'beruntung', // lucky / fortunate + 'berupa gas', // gaseous + 'bervolume besar', // voluminous + 'berwarna', // colorful / tinted + 'berwarna-warni', // multicolored + 'besar dan berat', // bulky + 'besar sekali', // whopping + 'besar', // hefty / big + 'biasa saja', // mediocre + 'biasa', // mundane / ordinary + 'bijaksana', // wise / judicious / prudent + 'bingung', // puzzled / confused + 'biru', // blue + 'bisa dimakan', // edible + 'bisa', // able + 'bodoh', // foolish / ignorant + 'boros', // wasteful + 'buatan bagus', // well-made + 'buatan', // made-up + 'bulanan', // monthly + 'bulat', // round / spherical + 'bundar', // circular + 'buruk sekali', // terrible + 'buruk', // bad + 'busuk', // putrid / rotten + 'buta huruf', // illiterate + 'buta', // blind + 'butiran', // granular + 'cacat', // flawed + 'cair', // liquid + 'cakap', // apt / competent + 'campuran', // mixed + 'canggih', // sophisticated + 'cantik sekali', // gorgeous + 'cantik', // pretty + 'celaka', // ill-fated + 'cemas', // apprehensive + 'cemberut', // grumpy + 'cemburu', // jealous + 'cemerlang', // brilliant + 'cengeng', // sniveling + 'cepat tanggap', // snappy + 'cepat', // quick / rapid / brisk / swift + 'cerah', // bright / sunny + 'cerdas', // witty / intelligent / quick-witted + 'ceria', // vivacious / lighthearted / lively / perky / cheerful + 'ceroboh', // reckless / careless / clumsy + 'cokelat', // brown + 'compang-camping', // ragged / tattered + 'cukup mampu', // well-off + 'cukup', // ample + 'curam', // steep + 'dalam', // deep + 'damai', // peaceful + 'dangkal', // shallow / superficial + 'dapat diandalkan', // dependable + 'dapat digunakan', // usable + 'dapat diminum', // potable + 'dapat dipercaya', // trustworthy + 'dapat diterima', // acceptable + 'dasar', // basic / elementary + 'defensif', // defensive + 'definitif', // definitive + 'dekat', // near / close + 'dekil', // grubby + 'depan', // front + 'dermawan', // giving + 'deskriptif', // descriptive + 'dewasa', // grown / mature + 'diam tak bergerak', // motionless + 'digital', // digital + 'digunakan', // utilized + 'dihormati', // honored / esteemed + 'dikagumi', // admired + 'dikenal', // known + 'dingin menusuk', // nippy + 'dingin', // chilly + 'dipanggang', // roasted + 'dipuja', // idolized + 'diskret/terpisah', // discrete + 'disukai', // likable + 'dramatis', // dramatic + 'duniawi', // worldly + 'egois', // selfish + 'eksotis', // exotic + 'ekstrovert', // extroverted + 'elastis', // elastic + 'elips', // elliptical + 'emosional', // emotional + 'enak', // palatable / delicious + 'encer', // runny + 'energik', // energetic + 'etis', // ethical + 'fantastis', // fantastic + 'fatal', // fatal + 'favorit', // favorite + 'fisik', // physical + 'formal', // formal + 'fungsional', // functional + 'gagah', // burly + 'gagal', // failing + 'ganda', // dual + 'garing', // corny + 'gelap', // dark + 'gelisah', // agitated + 'gemilang', // glorious + 'gemuk', // plump / fat / portly + 'gesit', // nimble / agile / speedy + 'gigi', // dental + 'gila', // mad / crazy + 'girang sekali', // ecstatic + 'girang', // jubilant + 'goyah', // wobbly + 'gugup', // jittery / nervous / flustered + 'halal', // kosher + 'halus', // smooth / subtle + 'hangat', // warm + 'hanya', // only + 'harum', // fragrant + 'hati-hati', // cautious + 'hebat sekali', // stupendous + 'hebat', // great / marvelous / awesome + 'hemat', // frugal / thrifty + 'hening', // silent + 'hidup', // vivid / live / alive + 'hilang', // lost + 'hitam', // black + 'hitam-putih', // black-and-white + 'hormat', // respectful + 'ideal', // ideal + 'idealis', // idealistic + 'ikal', // curly + 'ikhtisar', // rundown + 'ilegal', // unlawful + 'ilmiah', // scientific + 'imajinatif', // imaginative + 'imut dipeluk', // cuddly + 'imut', // cute + 'indah sekali', // wonderful / splendid + 'indah', // lovely + 'ini', // these + 'instruktif', // instructive + 'internal', // internal + 'internasional', // international + 'itu', // that / those + 'jahat', // wicked / evil + 'jangka panjang', // long-term + 'jangka pendek', // short-term + 'jangkung', // lanky + 'jarang', // sparse + 'jauh sekali', // far-off + 'jauh', // distant / far + 'jelas', // obvious / clear + 'jelek', // ugly + 'jinak', // tame + 'jorok', // filthy + 'jumbo', // jumbo + 'junior', // junior + 'kabur', // fuzzy + 'kaca', // glass + 'kaku', // rigid / stiff + 'kami', // our + 'karet', // rubbery + 'kasar', // rough / coarse / scratchy + 'kaya', // wealthy / rich + 'kebapakan', // fatherly + 'kebesaran', // baggy + 'kecil sekali', // tiny + 'kecil', // little / minor / small + 'kedua', // second + 'keduanya', // both + 'keemasan', // golden + 'kejam', // violent / mean / cruel + 'kekanak-kanakan', // babyish + 'kekuningan', // yellowish + 'kelautan', // nautical + 'kembar', // twin + 'kemenangan', // victorious + 'kemerahan', // ruddy + 'kerajaan', // royal + 'keras kepala', // insistent + 'keras', // stark + 'kerdil', // puny + 'keren', // nifty / cool + 'kering kerontang', // parched + 'kering', // arid + 'keriting kusut', // frizzy + 'keruh', // murky + 'kesal', // upset + 'kesepian', // lonely + 'ketat', // strict / tight + 'keterlaluan', // outrageous + 'khatulistiwa', // equatorial + 'khayalan', // imaginary + 'kikir', // miserly + 'kiri', // left + 'klasik', // classic + 'kocak', // zany + 'kokoh', // robust / sturdy + 'kolosal', // colossal + 'kooperatif', // cooperative + 'korup', // corrupt + 'kosong', // blank / empty + 'kotor', // grimy / dirty + 'kreatif', // creative + 'kriminal', // criminal + 'kritis', // critical + 'kuat', // powerful / strong + 'kucing', // feline + 'kunci', // key + 'kuning', // yellow + 'kuno', // old-fashioned + 'kurang', // deficient + 'kusam', // drab + 'lain', // other / another + 'laki-laki', // male + 'lamban', // lumbering + 'lambat', // slow + 'langka', // rare + 'langsing', // lean / svelte + 'langsung', // direct / firsthand + 'lanjut usia', // elderly + 'lapar', // hungry + 'layak', // worthy / decent + 'layu', // wilted + 'lebar', // wide + 'lebih baik', // better / superior + 'lebih buruk', // worse + 'lebih rendah', // inferior + 'legal', // legal + 'lelah sekali', // exhausted + 'lelah', // weary / tired + 'lemah rapuh', // frail + 'lemah', // faint + 'lembap', // moist / damp + 'lembek', // mushy + 'lembut', // gentle / soft / tender / subdued + 'lendir', // slimy + 'lengkap', // complete + 'lengket', // gummy / sticky + 'lentur', // bouncy + 'lezat', // yummy / tasty / delectable + 'liar', // unruly + 'licik', // crafty / sneaky + 'linear', // linear + 'listrik', // electric + 'logam', // metallic + 'lonjong', // oblong + 'luar biasa besar', // immense + 'luar biasa', // remarkable + 'luas', // vast + 'lucu', // funny + 'lunglai', // limp + 'lurus', // straight + 'lusuh', // well-worn / shabby + 'mahal', // pricey / expensive + 'majestik', // majestic + 'maju', // advanced + 'malaikatiah', // angelic + 'malang', // unfortunate + 'malas', // indolent / lazy + 'malu', // ashamed + 'mampu', // able + 'mamut', // mammoth + 'mandiri', // self-reliant + 'manis', // sugary / sweet + 'manja', // doting + 'mantap', // sure-footed + 'marah besar', // enraged + 'marah sekali', // livid + 'masif', // massive + 'masing-masing', // each + 'masuk akal', // reasonable + 'mata terbelalak', // wide-eyed + 'matang', // ripe + 'mati rasa', // numb + 'mati', // dead + 'megah', // grandiose / magnificent / regal + 'melengkung', // bowed + 'melingkar-lingkar', // squiggly + 'melintir', // warped + 'memaksa', // pushy + 'memalukan', // humiliating / shameful + 'memantulkan', // reflecting + 'memar', // bruised + 'mematikan', // deadly + 'membantu', // helpful + 'membebani', // burdensome + 'membosankan', // boring / dull / tedious + 'membumi', // grounded + 'membutuhkan', // needy + 'memekakkan telinga', // deafening + 'mempesona', // dazzling + 'memuaskan', // rewarding + 'menakjubkan', // amazing / stunning + 'menarik', // interesting + 'menawan', // charming / enchanting + 'mencengkeram', // gripping + 'mencolok', // flashy / showy / striking + 'mendesis panas', // sizzling + 'mendidih', // boiling + 'mendukung', // supportive + 'mengagumkan', // impressive / astonishing + 'mengancam', // menacing + 'mengantuk', // sleepy + 'mengerikan', // gruesome / awful + 'menggeliat', // writhing + 'menggemaskan', // lovable + 'menggeram', // snarling + 'menggoda', // tempting + 'menggugah selera', // zesty + 'menghancurkan', // crushing + 'menghantui', // haunting + 'mengilap', // glossy / shiny + 'mengkilap', // polished + 'menguntungkan', // profitable / favorable + 'menikah', // married + 'menjengkelkan', // aggravating + 'mentah', // unripe / raw + 'menyakiti', // hurtful + 'menyedihkan', // wretched / pitiful + 'menyeluruh', // thorough + 'menyenangkan', // pleasant / pleasing / agreeable + 'menyeramkan', // scary + 'menyusup', // insidious + 'meragukan', // questionable + 'merah muda', // pink + 'merah', // red + 'merona', // rosy / blushing + 'mewah', // lavish / posh + 'mingguan', // weekly + 'mirip', // similar + 'miskin', // poor + 'misterius', // mysterious + 'monstrous', // monstrous + 'monumental', // monumental + 'moral', // moral + 'mual', // queasy + 'muda', // young + 'mudah dipengaruhi', // impressionable + 'mudah ditipu', // gullible + 'mudah pecah', // breakable + 'mudah terpicu', // excitable + 'mudah', // easy + 'mulia', // exalted + 'muluk-muluk', // quixotic + 'mungil', // wee + 'mungkin', // likely / possible / probable + 'murah', // cheap + 'murahan', // shoddy + 'muram', // gloomy / dreary / somber + 'murni', // pure + 'mustahil', // impossible + 'nakal', // impish / naughty + 'necis', // dapper + 'negatif', // negative + 'nekat', // foolhardy + 'nokturnal', // nocturnal + 'normal', // normal + 'nun jauh', // faraway + 'nyaman', // comfortable + 'nyaring', // shrill / strident + 'nyata', // concrete / tangible + 'nyeri', // sore + 'optimal', // optimal + 'optimis', // upbeat / optimistic + 'oranye', // orange + 'oval', // oval + 'padat', // dense + 'pahit', // bitter + 'paling khas', // quintessential + 'palsu', // phony / bogus / fake + 'panas', // hot + 'panjang', // long + 'parah', // severe + 'paralel', // parallel + 'parau', // hoarse + 'pastel', // pastel + 'pasti', // definite + 'patuh', // obedient / dutiful / submissive + 'patut dicatat', // noteworthy + 'pedas', // peppery + 'pedesaan', // rural + 'pelit', // stingy + 'pemalu', // shy + 'pemarah', // grouchy / ornery + 'pemberani', // intrepid + 'pendek', // short + 'pendendam', // vengeful / spiteful + 'penting', // important / essential + 'penuh amarah', // wrathful + 'penuh cemooh', // scornful + 'penuh fantasi', // whimsical + 'penuh gairah', // passionate + 'penuh harapan', // hopeful + 'penuh jiwa', // soulful + 'penuh kasih', // affectionate / compassionate + 'penuh kebencian', // hateful + 'penuh penyesalan', // remorseful + 'penuh perhitungan', // calculating + 'penuh pertimbangan', // considerate + 'penuh semangat', // vibrant + 'penuh sesak', // jam-packed / crowded / teeming + 'penuh sukacita', // joyous + 'penyayang', // caring + 'perak', // silver + 'perancis', // french + 'percaya diri', // self-assured + 'percaya', // trusting + 'perhatian', // concerned + 'perkotaan', // urban + 'perlu', // necessary + 'persegi panjang', // rectangular + 'persegi', // square + 'pertama', // first + 'pesimis', // pessimistic + 'pincang', // limping + 'pinggiran kota', // suburban + 'pinggiran', // outlying + 'pintar', // smart + 'pirang', // blond + 'politik', // political + 'polos', // plain / innocent + 'pongah', // smug + 'praktis', // practical + 'pribadi', // personal / private + 'primer', // primary + 'produktif', // productive + 'puas', // content + 'pucat', // pale + 'puncak', // ultimate + 'putih', // white + 'rahasia', // secret + 'rajin', // diligent + 'raksasa', // gigantic + 'rakus', // avaricious + 'ramah tamu', // hospitable + 'ramah', // gracious / friendly / sociable + 'ramai', // bustling + 'rapi', // neat / spiffy / tidy / trim + 'rapuh', // flimsy + 'rasa mint', // minty + 'rata-rata', // average + 'realistis', // realistic + 'redup', // muted / dim + 'reguler', // regular + 'relevan', // pertinent + 'remaja', // juvenile / adolescent + 'remeh', // frivolous / measly / paltry + 'rendah hati', // humble + 'rendah', // low + 'resmi', // official / authorized + 'rewel', // fussy + 'riang gembira', // joyful + 'riang', // jaunty / merry + 'ribut', // rowdy + 'ringan', // light / mild + 'robek', // torn + 'rumit', // complicated / tricky + 'rumit/berbelit', // cumbersome + 'rusak', // broken / damaged + 'sadar', // aware + 'sah', // lawful + 'sakit', // ill / aching / sick + 'salah', // wrong + 'sama', // same + 'samar', // vague + 'sangat baik', // excellent + 'sangat besar', // huge + 'santai', // happy-go-lucky / informal + 'sardonis', // sardonic + 'sarkastik', // sarcastic + 'sayang', // darling + 'sebagian', // partial + 'sebenarnya', // actual + 'sedang', // medium + 'sederhana', // homely / austere / simple / understated + 'sedih sekali', // woeful + 'sedih', // glum / sad / sorrowful + 'sedikit', // meager / slight + 'segera', // immediate + 'segitiga', // triangular + 'sehalus sutra', // silky + 'sekarang', // present + 'sekunder', // secondary + 'selembut beludru', // velvety + 'selesai', // finished + 'seluruh', // whole / entire + 'sempit', // narrow + 'sempurna sekali', // utter + 'sempurna', // impeccable / flawless + 'semua', // all + 'senang', // pleased + 'sendiri', // lone + 'sengsara', // miserable + 'sentimental', // sentimental + 'sepele', // negligible / petty / trivial + 'seperti gua', // cavernous + 'seperti kaleidoskop', // kaleidoscopic + 'seperti sup', // soupy + 'seragam', // uniform + 'serakah', // greedy + 'sering', // frequent + 'serius', // grave + 'setia', // devoted / trusty + 'setiap', // every + 'sia-sia', // vain / pointless + 'sial', // unlucky + 'sibuk', // busy + 'silau', // glaring + 'sinis', // wry + 'sok berkuasa', // bossy + 'sopan', // polite / courteous + 'spanyol', // spanish + 'spesifik', // specific + 'stabil', // stable + 'standar', // standard + 'suam-suam kuku', // tepid + 'suara berat', // husky + 'substansial', // substantial + 'suka bertengkar', // quarrelsome + 'suka mengeluh', // querulous + 'suka perang', // warlike + 'suka usil', // snoopy + 'suka', // fond + 'sukar digunakan', // unwieldy + 'sulit ditemukan', // hard-to-find + 'sulit', // difficult + 'sulit/rumit', // knotty + 'sungguh-sungguh', // earnest + 'supel', // outgoing + 'super besar', // extra-large + 'super', // super + 'suram', // grim / bleak / dismal + 'surgawi', // heavenly + 'susu', // milky + 'tahunan', // yearly / annual + 'tajam', // pointed + 'tak berarti', // inconsequential + 'tak berdaya', // helpless / powerless / defenseless + 'tak bernilai', // worthless + 'tak bernoda', // immaculate / spotless + 'tak berpengalaman', // inexperienced + 'tak bersalah', // innocent + 'tak berwarna', // colorless + 'tak dikenal jasanya', // unsung + 'tak kenal takut', // fearless + 'tak menyadari', // unaware + 'tak sadar', // unconscious + 'tak tahu malu', // shameless + 'tak terbatas', // infinite + 'tak terhapuskan', // indelible + 'tak tertandingi', // incomparable + 'tak tertulis', // unwritten + 'takut', // afraid / frightened / scared + 'tampan', // handsome + 'tangguh', // tough + 'tanpa pikiran', // mindless + 'tebal', // thick + 'teduh', // shady + 'tegak', // upright + 'tegang', // taut / tense + 'tegas', // clear-cut / decisive / forceful + 'teguh', // firm + 'telanjang', // bare + 'tembam', // chubby + 'tenang', // quiet / serene / staid + 'tepat waktu', // punctual / timely + 'tepat', // proper / appropriate + 'tepung', // mealy + 'terabaikan', // neglected + 'terakhir', // last + 'terampil', // accomplished + 'terang benderang', // well-lit + 'terasing', // alienated + 'teratur', // orderly + 'terawat', // well-groomed + 'terbaik', // best + 'terbatas', // limited + 'terbengkalai', // abandoned / deserted + 'terbuka', // ajar + 'terburuk', // worst + 'tercapai', // accomplished + 'tercerahkan', // enlightened + 'tercinta', // beloved / dearest + 'terdidik', // educated + 'terdistorsi', // distorted + 'terdokumentasi baik', // well-documented + 'teredam', // muffled + 'terfokus', // focused + 'tergenang air', // waterlogged + 'tergesa-gesa', // hasty + 'tergila-gila', // infatuated / delirious + 'terhibur', // amused + 'terhormat', // honorable + 'terkejut', // alarmed / shocked / surprised + 'terkemuka', // leading / eminent + 'terkenal buruk', // infamous + 'terkenal', // noted / acclaimed / celebrated + 'terkoordinasi', // coordinated + 'terkualifikasi', // qualified + 'terlalu matang', // overcooked + 'terlalu sederhana', // simplistic + 'terlambat', // late / overdue + 'terlatih', // trained + 'termashur', // illustrious + 'terpelajar', // cultivated + 'terpencil', // far-flung + 'terpisah', // separate + 'tersembunyi', // hidden + 'tersesat', // misguided + 'tersihir', // enchanted + 'tersiksa', // anguished + 'tertinggal', // forsaken + 'tertutup', // closed + 'terurai hayati', // biodegradable + 'terus terang', // frank + 'tetap', // fixed + 'tiba-tiba', // sudden + 'tidak aman', // insecure + 'tidak bahagia', // unhappy + 'tidak benar', // untrue + 'tidak bergaris', // unlined + 'tidak berguna', // useless + 'tidak bertanggungjawab', // irresponsible + 'tidak biasa', // unusual / uncommon + 'tidak cocok', // unfit + 'tidak diinginkan', // unwelcome + 'tidak diketahui', // unknown + 'tidak egois', // unselfish + 'tidak lengkap', // incomplete + 'tidak mau', // unwilling + 'tidak memihak', // impartial + 'tidak menyenangkan', // unpleasant + 'tidak mungkin', // improbable + 'tidak murni', // impure + 'tidak nyaman', // uncomfortable + 'tidak penting', // insignificant / unimportant + 'tidak praktis', // impractical + 'tidak rata', // uneven + 'tidak realistis', // unrealistic + 'tidak sedap dipandang', // unsightly + 'tidak sehat', // unhealthy + 'tidak setia', // disloyal + 'tidak sopan', // impolite + 'tidak stabil', // unsteady + 'tidak tepat waktu', // untimely + 'tidak terpakai', // unused + 'tinggi', // tall + 'tipis', // thin + 'total', // total + 'tragis', // tragic + 'triwulanan', // quarterly + 'tua', // old / aged + 'tulang belulang', // bony / skeletal + 'tulen', // genuine + 'tulus', // heartfelt + 'tumbuh', // growing + 'umum', // general / common + 'unggul', // outstanding / superb + 'ungu', // purple + 'unik', // unique + 'utama', // major / prime + 'waspada', // alert + 'yakin', // assured + 'yang', // which +]; diff --git a/src/locales/id_ID/word/adverb.ts b/src/locales/id_ID/word/adverb.ts new file mode 100644 index 00000000000..1b1e49264fa --- /dev/null +++ b/src/locales/id_ID/word/adverb.ts @@ -0,0 +1,278 @@ +export default [ + 'akhirnya', // eventually / ultimately + 'aneh', // kookily / oddly + 'bahkan', // even + 'bergerigi', // jaggedly + 'berulang kali', // repeatedly + 'besok', // tomorrow + 'biasanya', // usually + 'bulanan', // monthly + 'canggung', // awkwardly + 'cepat', // fast + 'cukup adil', // fairly + 'dalam hati', // inwardly + 'dengan adil', // justly + 'dengan aman', // safely + 'dengan anggun', // daintily / gracefully + 'dengan angkuh', // arrogantly / loftily + 'dengan bahagia', // happily + 'dengan baik', // nicely / well + 'dengan basah', // wetly + 'dengan bebas', // freely + 'dengan benar', // correctly / properly / righteously + 'dengan berani berpetualang', // adventurously + 'dengan berani', // boldly + 'dengan berat', // heavily + 'dengan bercanda', // joshingly / kiddingly + 'dengan berguna', // usefully + 'dengan berhasil', // successfully + 'dengan berpengetahuan', // knowledgeably + 'dengan bersemangat', // energetically + 'dengan berwarna', // colorfully + 'dengan bijak', // wisely + 'dengan bising', // noisily + 'dengan bodoh', // foolishly + 'dengan buas', // ferociously + 'dengan buruk', // badly / poorly + 'dengan cemas', // anxiously / worriedly + 'dengan cepat', // quickly / rapidly / speedily / swiftly + 'dengan cerdas', // cleverly + 'dengan ceroboh', // carelessly + 'dengan curiga', // suspiciously + 'dengan damai', // restfully + 'dengan dekat', // closely + 'dengan diam', // quietly / silently + 'dengan diam-diam', // stealthily + 'dengan egois', // selfishly + 'dengan elegan', // elegantly + 'dengan enggan', // reluctantly + 'dengan gagah berani', // bravely / valiantly + 'dengan garang', // fiercely + 'dengan gembira', // excitedly + 'dengan gemetar', // shakily + 'dengan gesit', // briskly + 'dengan getir', // bitterly + 'dengan gugup', // nervously + 'dengan hangat', // warmly + 'dengan hati-hati', // carefully + 'dengan heran', // quizzically + 'dengan indah', // beautifully / wonderfully + 'dengan ingin tahu', // inquisitively + 'dengan intens', // intensely + 'dengan iri hati', // jealously + 'dengan jelas', // clearly + 'dengan jujur', // truthfully + 'dengan kaku', // rigidly + 'dengan kasar', // rudely / violently + 'dengan ke atas', // upwardly + 'dengan kejam', // cruelly / viciously + 'dengan keras', // loudly / sternly + 'dengan kesal', // crossly / irritably + 'dengan khidmat', // solemnly + 'dengan kokoh', // solidly + 'dengan kosong', // vacantly + 'dengan kuat', // powerfully + 'dengan kuno', // quaintly + 'dengan kusut', // knottily + 'dengan lambat', // slowly + 'dengan lapar', // hungrily + 'dengan lebar', // broadly + 'dengan lelah', // wearily + 'dengan lembut', // gently / softly / tenderly + 'dengan liar', // wildly + 'dengan luar biasa', // tremendously + 'dengan malu', // shyly + 'dengan malu-malu', // bashfully / sheepishly + 'dengan manis', // sweetly + 'dengan marah sekali', // furiously + 'dengan marah', // angrily + 'dengan masam', // acidly + 'dengan megah', // majestically + 'dengan melamun', // dreamily + 'dengan membanggakan', // boastfully + 'dengan membantu', // helpfully + 'dengan membujuk', // coaxingly + 'dengan menakutkan', // frightfully / scarily + 'dengan menarik', // interestingly + 'dengan mencela', // reproachfully + 'dengan mendalam', // deeply + 'dengan mendesak', // urgently + 'dengan mengantuk', // sleepily + 'dengan mengejek', // mockingly + 'dengan mengejutkan', // surprisingly + 'dengan mengerikan', // terribly + 'dengan menghakimi', // judgementally + 'dengan menguatkan semangat', // upliftingly + 'dengan menipu', // deceivingly + 'dengan menyakitkan', // painfully + 'dengan menyebalkan', // obnoxiously + 'dengan menyenangkan', // delightfully + 'dengan menyinggung', // offensively + 'dengan meragukan', // questionably + 'dengan meyakinkan', // reassuringly + 'dengan misterius', // mysteriously + 'dengan mual', // queasily + 'dengan mudah', // easily + 'dengan mulus', // smoothly + 'dengan murah hati', // generously + 'dengan nyaring', // shrilly + 'dengan optimis', // optimistically + 'dengan panik', // frantically + 'dengan pasrah', // yielding + 'dengan patuh', // obediently + 'dengan penasaran', // curiously + 'dengan penuh antusias', // enthusiastically + 'dengan penuh arti', // meaningfully + 'dengan penuh bahagia', // blissfully + 'dengan penuh ciuman', // kissingly + 'dengan penuh kasih', // dearly / fondly / lovingly + 'dengan penuh kebaikan hati', // kindheartedly + 'dengan penuh keberanian', // courageously + 'dengan penuh kebutuhan', // needily + 'dengan penuh kemenangan', // jubilantly / triumphantly / victoriously + 'dengan penuh kerinduan', // yearningly + 'dengan penuh pencarian', // searchingly + 'dengan penuh perhatian', // intently / thoughtfully + 'dengan penuh semangat muda', // youthfully + 'dengan penuh semangat', // lively / vivaciously + 'dengan penuh sukacita', // joyfully + 'dengan penuh syukur', // gratefully / thankfully + 'dengan penuh tanda tanya', // questioningly + 'dengan pikiran melayang', // absentmindedly + 'dengan polos', // innocently + 'dengan putus asa', // hopelessly + 'dengan ragu-ragu', // doubtfully + 'dengan rajin', // diligently + 'dengan rakus', // greedily + 'dengan ramah', // kindly + 'dengan riang gembira', // gleefully / joyously + 'dengan riang', // cheerfully / jovially / merrily / playfully + 'dengan rindu', // longingly + 'dengan ringan', // lightly + 'dengan sabar', // patiently + 'dengan sadar', // knowingly + 'dengan sah', // rightfully + 'dengan salah', // wrongly + 'dengan sangat besar', // enormously + 'dengan sedih', // woefully + 'dengan segera', // promptly + 'dengan sembrono', // recklessly + 'dengan senang hati', // gladly + 'dengan sengaja', // deliberately / willfully + 'dengan sengsara', // miserably + 'dengan serius', // seriously + 'dengan setia', // faithfully / loyally + 'dengan sia-sia', // uselessly + 'dengan siap', // readily + 'dengan simpatik', // sympathetically + 'dengan sopan', // politely + 'dengan suka bertengkar', // quarrelsomely + 'dengan sungguh-sungguh', // fervently + 'dengan suram', // bleakly + 'dengan tajam', // keenly + 'dengan tak berdaya', // helplessly + 'dengan tegang', // tensely + 'dengan tenang', // calmly / coolly / sedately / brightly + 'dengan tergesa-gesa', // frenetically + 'dengan tergila-gila', // madly + 'dengan terkenal', // famously + 'dengan terlalu percaya diri', // overconfidently + 'dengan unik', // quirkily + 'dengan waspada', // cautiously + 'erat', // tightly + 'hampir tidak', // scarcely + 'hampir', // almost / nearly + 'hanya', // only + 'jarang', // rarely / seldom + 'jauh', // far + 'jujur', // honestly + 'kadang-kadang', // sometimes + 'kasar', // roughly + 'ke atas', // upward + 'kemarin', // yesterday + 'kurang', // less + 'lebih cepat', // quicker + 'lebih', // more + 'lemah', // weakly + 'lemas', // limply + 'licik', // knavishly + 'malas', // lazily + 'menantang', // defiantly + 'mungkin', // likely + 'optimis', // upbeat + 'rapi', // neatly + 'redup', // dimly + 'sama rata', // equally + 'sambil menguap', // yawningly + 'sangat', // extremely / very / highly / greatly / vastly + 'sayangnya', // unfortunately + 'seakan-akan', // seemingly + 'sebagian besar', // mostly + 'sebagian', // partially + 'sebenarnya', // actually + 'secara abnormal', // abnormally + 'secara alami', // naturally + 'secara fatal', // fatally + 'secara fisik', // physically + 'secara ketat', // strictly + 'secara lisan', // verbally + 'secara longgar', // loosely + 'secara mekanis', // mechanically + 'secara mematikan', // mortally + 'secara membabi buta', // blindly + 'secara menyeluruh', // thoroughly + 'secara merata', // evenly + 'secara positif', // positively + 'secara potensial', // potentially + 'secara resmi', // officially + 'secara samar', // vaguely + 'secara sehat', // healthily + 'secara singkat', // briefly + 'secara sukarela', // voluntarily + 'secara tak terduga', // unexpectedly + 'secara teratur', // regularly + 'secara terbuka', // openly + 'secara terpisah', // separately + 'secara terus-menerus', // continually + 'secara tidak etis', // unethically + 'secara tidak mengesankan', // unimpressively + 'secara tidak perlu', // unnecessarily + 'secara umum', // generally + 'sedih', // sadly + 'segera', // immediately / soon + 'seketika', // instantly + 'selalu', // always + 'sempurna', // perfectly + 'sepenuhnya', // fully / utterly / wholly + 'seperti burung hantu', // owlishly + 'sering', // often + 'sesudahnya', // afterwards + 'setiap hari', // daily + 'setiap jam', // hourly + 'setiap tahun', // annually + 'sia-sia', // vainly + 'sibuk', // busily + 'sungguh', // really + 'sungguh-sungguh', // truly + 'tahunan', // yearly + 'tajam', // sharply + 'tak tertahankan', // unbearably + 'tanpa alasan', // unaccountably + 'tanpa malu', // unabashedly + 'tanpa sengaja', // accidentally + 'tegak', // upright + 'tentu saja', // certainly + 'tepat waktu', // punctually + 'tepat', // exactly + 'terbalik', // upside-down + 'terburu-buru', // hastily + 'terlalu', // too + 'terus terang', // frankly + 'terutama', // especially + 'tiba-tiba', // suddenly + 'tidak pernah', // never + 'tidak wajar', // unnaturally + 'tidak', // not + 'umumnya', // commonly + 'untungnya', // fortunately +]; diff --git a/src/locales/id_ID/word/conjunction.ts b/src/locales/id_ID/word/conjunction.ts new file mode 100644 index 00000000000..ac493dbe750 --- /dev/null +++ b/src/locales/id_ID/word/conjunction.ts @@ -0,0 +1,56 @@ +export default [ + 'akhirnya', // finally + 'akibatnya', // consequently + 'andaikan', // supposing + 'apa', // what + 'apakah', // whether + 'asalkan', // provided + 'atau', // or + 'bagaimana', // how + 'bahkan', // even + 'bahwa', // that + 'begitu', // once + 'dan', // and + 'daripada', // than + 'demikian juga', // likewise + 'dimana', // where + 'dimanapun', // wherever + 'hingga', // till + 'jadi', // so + 'jika', // if + 'juga tidak', // nor + 'kapan', // when + 'kapanpun', // whenever + 'karena', // because + 'kebetulan', // incidentally + 'kecuali', // unless + 'memang', // indeed + 'mengapa', // why + 'meskipun', // although + 'namun', // however + 'hingga kini', // yet + 'oleh karena itu', // hence + 'saat', // as + 'sampai', // until + 'sebagai gantinya', // instead + 'sebagai', // as + 'sebelum', // before + 'sedangkan', // whereas + 'sejak', // since + 'sejauh', // inasmuch + 'sekali', // once + 'sekarang', // now + 'selain itu', // furthermore + 'selama', // as long as + 'sementara itu', // meanwhile + 'sementara', // while + 'setelah', // after + 'siapa', // who + 'siapapun', // whoever + 'supaya tidak', // lest + 'tetapi', // but + 'untuk', // for + 'walaupun', // though + 'yang mana', // which + 'yang', // whose +]; diff --git a/src/locales/id_ID/word/index.ts b/src/locales/id_ID/word/index.ts new file mode 100644 index 00000000000..3aa438b70ce --- /dev/null +++ b/src/locales/id_ID/word/index.ts @@ -0,0 +1,24 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { WordDefinition } from '../../..'; +import adjective from './adjective'; +import adverb from './adverb'; +import conjunction from './conjunction'; +import interjection from './interjection'; +import noun from './noun'; +import preposition from './preposition'; +import verb from './verb'; + +const word: WordDefinition = { + adjective, + adverb, + conjunction, + interjection, + noun, + preposition, + verb, +}; + +export default word; diff --git a/src/locales/id_ID/word/interjection.ts b/src/locales/id_ID/word/interjection.ts new file mode 100644 index 00000000000..3b3cded58b8 --- /dev/null +++ b/src/locales/id_ID/word/interjection.ts @@ -0,0 +1,58 @@ +export default [ + 'aduh', + 'aduhai', + 'ah', + 'aha', + 'ahh', + 'alah', + 'alahai', + 'alamak', + 'ampun', + 'astaga', + 'asyik', + 'aw', + 'beuh', + 'brr', + 'cie', + 'cih', + 'cis', + 'em', + 'err', + 'euh', + 'gila', + 'gubrak', + 'ha', + 'hahaha', + 'heh', + 'hehehe', + 'hiks', + 'hmm', + 'hmmm', + 'hmpf', + 'hore', + 'huft', + 'huh', + 'ih', + 'iiih', + 'iya', + 'meh', + 'nyam', + 'oh', + 'pfft', + 'psst', + 'sial', + 'syukurlah', + 'uh', + 'uhh', + 'uhuk', + 'wek', + 'wih', + 'wkwkwk', + 'woah', + 'wow', + 'ya ampun', + 'yaelah', + 'yah elah', + 'yah', + 'yee', +]; diff --git a/src/locales/id_ID/word/noun.ts b/src/locales/id_ID/word/noun.ts new file mode 100644 index 00000000000..22c1f9e389e --- /dev/null +++ b/src/locales/id_ID/word/noun.ts @@ -0,0 +1,971 @@ +export default [ + 'abu-abu', // gray + 'acara', // event + 'adaptasi', // adaptation + 'adat', // custom + 'adrenalin', // adrenalin + 'afiliasi', // affiliate + 'airbus', // airbus + 'akademisi', // academics + 'akibat', // aftermath + 'akselerator', // accelerator + 'akun', // account + 'akuntabilitas', // accountability + 'alam liar', // wilderness + 'alamat', // address + 'alasan', // rationale + 'alat', // tool + 'alat pacu jantung', // pacemaker + 'alat pembuang', // disposer + 'alba', // alb + 'aliansi', // alliance + 'aligator', // alligator + 'alis', // eyebrow + 'alokasi', // allocation + 'amandemen', // amendment + 'amnesti', // amnesty + 'anak angsa', // swanling + 'anak babi', // piglet + 'anak burung', // fledgling + 'anak perempuan', // daughter + 'anak sungai', // tributary / brook + 'anak tangga', // riser + 'analogi', // analogy + 'anggapan', // presume + 'anggar', // fencing + 'anggota dewan', // councilman + 'anggrek', // orchid + 'anggur muskat', // muscat + 'angkutan barang', // freight + 'anjing laut', // seal + 'antelop', // antelope + 'antikodon', // anticodon + 'apartemen', // flat + 'api unggun', // bonfire + 'aprikot', // apricot + 'arkade', // arcade + 'arkeologi', // archaeology + 'arus utama', // mainstream + 'asap', // smoke + 'aset', // asset + 'atraksi', // attraction + 'atrium', // atrium + 'aturan', // rule + 'awal', // outset + 'awal mula', // onset + 'ayah', // daddy + 'ayam hutan', // partridge + 'ayunan', // swing + 'babi', // swine + 'babushka', // babushka + 'bagian', // section + 'bagian bawah', // underneath + 'bahan bakar', // fuel + 'bahan makanan', // foodstuffs / comestible + 'bahasa', // language + 'bahu', // shoulder + 'bandara', // airport + 'bangku', // stool / bench + 'bangsawan wanita', // countess + 'banjir', // flood + 'bantal', // pillow + 'bantuan', // help / assist + 'bapak baptis', // godfather + 'bar', // bar + 'bara api', // cinder + 'barak', // barracks + 'barang berharga', // valuable + 'baret', // beret + 'bariton', // baritone + 'batu api', // flint + 'batu bara', // coal + 'bawahan', // minion + 'beasiswa', // scholarship + 'beban berlebih', // overload + 'begonia', // begonia + 'belati', // skean + 'benang', // thread + 'benjolan', // bump + 'benteng', // fort + 'berkembang', // developing + 'biarawati', // nun + 'biaya', // expense + 'bidan', // midwife + 'bidet', // bidet + 'biji rami', // linseed + 'bilangan bulat', // integer + 'bimbingan', // guidance + 'bintik', // freckle + 'biola', // violin + 'bioskop', // cinema + 'bisa', // venom + 'bistik', // steak + 'blewah', // cantaloupe + 'bola voli', // volleyball + 'boling', // bowling + 'boneka', // puppet + 'borjuis', // bourgeoisie + 'brankas', // safe + 'brosur', // brochure + 'buaya', // crocodile + 'buku jari', // knuckle + 'buku terlaris', // best-seller + 'buletin', // newsletter + 'bulevar', // boulevard + 'bulu', // feather + 'bulu mata', // lashes + 'bumi', // earth + 'bundaran', // roundabout + 'bunga mekar', // blossom + 'bunga poppy', // poppy + 'bungalo', // bungalow + 'buruh', // labourer + 'burung camar', // seagull + 'burung tekukur', // cuckoo + 'burung unta', // ostrich + 'cakram', // disk + 'campuran', // mixture + 'cappelletti', // cappelletti + 'cara', // manner + 'CD', // CD + 'cekikikan', // giggle + 'celana', // pants + 'celana dalam', // underpants + 'celana dalam wanita', // knickers + 'celcius', // celsius + 'cemoohan', // scorn + 'cerita', // story + 'cerita rakyat', // folklore + 'cetak timbul', // embossing + 'citah', // cheetah + 'ciuman', // kiss + 'contoh', // instance + 'cucu laki-laki', // grandson + 'cumi-cumi', // squid + 'daging gulung', // meatloaf + 'dampak', // impact + 'dana', // fund + 'dandelion', // dandelion + 'dataran', // plain + 'dedak', // bran + 'dedalu', // willow + 'deduksi', // deduction + 'deklarasi', // declaration + 'dekongestan', // decongestant + 'dekripsi', // decryption + 'denyut nadi', // pulse + 'departemen', // department + 'depo', // depot + 'derbi', // derby + 'desain', // design + 'desain ulang', // redesign + 'detak jantung', // heartbeat + 'detektif', // detective + 'dewan', // council + 'dewasa', // adult + 'diagram', // diagram + 'digit', // digit + 'direktur', // director + 'dividen', // dividend + 'dorongan', // drive + 'dorongan semangat', // encouragement + 'draf', // draft + 'duri', // thorn + 'editor', // editor + 'efektor', // effector + 'ekliptika', // ecliptic + 'ekor', // tail + 'ekspansi', // expansion + 'eksplorasi', // exploration + 'eksterior', // exterior + 'ektoderm', // ectoderm + 'elang', // hawk + 'elektronik', // electronics + 'endapan', // sediment + 'es krim', // ice-cream + 'etil', // ethyl + 'eufonium', // euphonium + 'eyeliner', // eyeliner + 'faks', // fax + 'farmakope', // pharmacopoeia + 'festival', // festival + 'final', // final + 'flu', // flu + 'formamida', // formamide + 'formasi', // formation + 'frasa', // phrase + 'futon', // futon + 'gabus', // cork + 'gading', // tusk + 'galeri', // gallery + 'gambar', // draw + 'garis-garis halus', // pinstripe + 'garpu', // fork + 'gastropoda', // gastropod + 'gaun', // dress / gown + 'gaya hidup', // lifestyle + 'gaya rambut bob', // bob + 'gazebo', // gazebo + 'geladak', // deck + 'gelang', // bracelet + 'genderang', // kettledrum + 'gerbil', // gerbil + 'gergaji', // saw + 'gerombolan', // horde + 'getaran', // vibration + 'gigi', // tooth + 'goresan', // scratch + 'gosong pasir', // sandbar + 'gradien', // gradient + 'grafiti', // graffiti + 'guacamole', // guacamole + 'gubuk', // hovel + 'gunung', // mountain + 'hadiah', // gift / reward + 'hak asuh', // custody + 'hak istimewa', // privilege + 'halilintar', // thunderbolt + 'halo', // hello + 'hama', // blight + 'hamburger', // hamburger + 'hantu', // ghost + 'harapan', // hope + 'harpa', // harp + 'hasil bumi', // produce + 'hepatitis', // hepatitis + 'hidangan', // dish + 'hidran', // hydrant + 'hidrokarbon', // hydrocarbon + 'hidrolisis', // hydrolyse / hydrolyze + 'hiena', // hyena + 'hierarki', // hierarchy + 'higienis', // hygienic + 'hipodrom', // hippodrome + 'hiu', // shark + 'horst', // horst + 'hovercraft', // hovercraft + 'humor', // humor + 'hunian', // dwell + 'hutan', // jungle + 'iblis', // devil + 'ibu', // mom + 'ibu tiri', // step-mother + 'iglo', // igloo + 'ikal', // curl + 'ikan kod', // cod + 'ikan salem asap', // lox + 'ikan todak', // swordfish + 'iklan', // ad / advertisement + 'ilahi', // divine + 'ilusi', // illusion + 'imbangan', // offset + 'impor', // import + 'individu', // individual + 'informasi', // information + 'inovasi', // innovation + 'inspeksi', // inspection + 'institut', // institute + 'instruksi', // instruction + 'instruktur', // instructor + 'intelek', // intellect + 'interior', // interior + 'intervensi', // intervention + 'inti sari', // essence + 'istilah', // term + 'isu', // issue + 'itik mallard', // mallard + 'itikad baik', // goodwill + 'izin', // license + 'jadwal', // schedule + 'jaket', // jacket + 'jalan raya', // roadway + 'jalur', // swath + 'jalur kereta', // railway + 'jam saku', // pocket-watch + 'janda', // widow + 'jangkauan', // range / reach + 'jangkrik', // cricket + 'janji', // promise + 'jari', // finger + 'jasa', // merit + 'jawawut', // millet + 'jazz', // jazz + 'jejak kondensasi', // contrail + 'jendela', // window + 'jendela atas', // transom + 'jendela tingkap', // casement + 'jenis huruf', // typeface + 'jentik', // wriggler + 'jeruk bali', // pomelo + 'jet', // jet + 'joging', // jogging + 'jubah', // vestment + 'jubah mandi', // bathrobe + 'junior', // junior + 'juri', // jury + 'juru masak', // cook + 'kabar angin', // overheard + 'kabut', // fog + 'kabut asap', // smog + 'kacang pecan', // pecan + 'kafe', // cafe + 'kakek', // grandpa + 'kaki langit', // skyline + 'kalajengking', // scorpion + 'kalkulus', // calculus + 'kalung', // necklace + 'kambing', // goat + 'kandang', // hutch / corral + 'kandang babi', // pigpen / pigsty + 'kap mesin', // bonnet + 'kapal keruk', // dredger + 'kapel', // chapel + 'kapten', // captain + 'karakter', // character + 'karakterisasi', // characterization + 'karat', // rust + 'karboksil', // carboxyl + 'kardus', // cardboard + 'karnaval', // carnival + 'kastanyet', // castanet + 'kasula', // chasuble + 'kasus', // case + 'kata', // word + 'kata ganti', // pronoun + 'katalis', // catalyst + 'kaus', // t-shirt + 'kaus kaki', // sock + 'keabadian', // eternity + 'keanggotaan', // membership + 'keangkuhan', // hubris + 'keberagaman', // diversity + 'keberuntungan', // luck + 'kebiasaan', // habit + 'kebingungan', // confusion + 'kebugaran', // fit + 'kecepatan', // velocity + 'kedelai', // soybean + 'kegembiraan', // joy + 'kehancuran', // devastation + 'kehidupan malam', // nightlife + 'keimaman', // priesthood + 'kejengkelan', // exasperation + 'keju', // cheese + 'kejuaraan', // championship + 'kejujuran', // honesty + 'kekecewaan', // disappointment + 'kekejaman', // cruelty + 'kekuatan dahsyat', // juggernaut + 'kelahiran', // birth + 'kelancangan', // insolence + 'kelebihan', // excess + 'kelembapan', // humidity + 'keliling', // circumference + 'kelopak bunga', // petal + 'kemajuan', // advancement + 'kemampuan berhitung', // numeracy + 'kemasan', // packaging + 'kembang kol', // cauliflower + 'kemerdekaan', // independence + 'kemoceng', // duster + 'kemunculan', // emergent + 'kenalan', // acquaintance + 'kepadatan', // density + 'kepatuhan', // obedience + 'kepemilikan', // ownership / possession + 'kepemimpinan', // leading + 'kepentingan', // importance + 'kepercayaan diri', // self-confidence + 'kepergian', // going + 'keponakan laki-laki', // nephew + 'keputusan', // decision + 'kerabat', // relative + 'kerahasiaan', // secrecy + 'keramik', // ceramic + 'kerangka', // skeleton + 'keranjang', // basket + 'kerapu', // grouper + 'kertas koran', // newsprint + 'kerugian', // disadvantage + 'kesadaran', // awareness + 'kesederhanaan', // simple + 'kesempurnaan', // perfection + 'kesenangan', // fun / pleasure + 'kesetiaan', // loyalty + 'kesetaraan', // equal + 'kesuraman', // gloom + 'ketentuan', // provision + 'keterangan gambar', // caption + 'ketergantungan', // dependency + 'ketersediaan', // availability + 'ketidaktahuan', // ignorance + 'ketinggian', // elevation + 'ketua', // chairperson + 'keturunan', // descendant + 'kewajiban', // obligation + 'kewarasan', // sanity + 'khotbah', // sermon + 'kielbasa', // kielbasa + 'kinase', // kinase + 'kios', // stall + 'kios koran', // newsstand + 'klem', // clamp + 'knalpot', // exhaust + 'koin', // coin + 'koin dime', // dime + 'kolaborasi', // collaboration + 'kolektivisasi', // collectivization + 'kolonialisme', // colonialism + 'koloseum', // coliseum + 'komentar', // remark + 'komersial', // commercial + 'komoditas', // commodity + 'komplikasi', // complication + 'kompromi', // compromise + 'komunitas', // community + 'konfigurasi', // configuration + 'konsentrasi', // concentration + 'konservasi', // conservation + 'konservatif', // conservative + 'konsistensi', // consistency + 'kontaminasi silang', // cross-contamination + 'kontraktor', // contractor + 'konveksi', // convection + 'koordinasi', // coordination + 'koper', // suitcase + 'kornet', // cornet + 'korporasi', // corporation + 'kostum', // costume + 'kotak bayangan', // shadowbox + 'kotak pil', // pillbox + 'kotak sulut', // tinderbox + 'kotak surat', // postbox + 'ksatria', // knight + 'kuart', // quart + 'kubah', // turret + 'kue', // cake + 'kuinoa', // quinoa + 'kuku hewan', // hoof + 'kulit mentah', // rawhide + 'kumparan', // coil + 'kursi berlengan', // armchair + 'kutu', // louse + 'label', // label + 'lada', // pepper + 'lainnya', // other + 'lalu lintas', // traffic + 'lampu', // lamp + 'landasan pacu', // runway + 'langit-langit mulut', // palate + 'langkah', // step + 'larangan', // prohibition + 'larva', // larva + 'lava', // lava + 'layar puncak', // topsail + 'lebar pita', // bandwidth + 'legenda', // legend + 'legging', // legging + 'legislatif', // legislature + 'lelucon internal', // in-joke + 'lemak', // fat + 'lemari bufet', // sideboard + 'lemari laci', // chiffonier + 'lemari pakaian', // armoire + 'lembah', // valley + 'lendir', // slime + 'lift', // elevator / lift + 'liga', // league + 'liku', // meander + 'liontin', // pendant + 'lipatan', // fold + 'lira', // lyre + 'lobster', // lobster + 'logam', // metal + 'lompatan', // jump + 'lonceng', // bell + 'longsoran salju', // avalanche + 'losion', // lotion + 'lubang sambungan', // mortise + 'maestro', // maestro + 'mahakarya', // masterpiece + 'makam', // tomb + 'makanan', // meal / chow + 'makanan laut', // seafood + 'makhluk', // creature + 'manajemen', // management + 'mantel', // overcoat + 'mantua', // mantua + 'maraton', // marathon + 'marimba', // marimba + 'marten', // marten + 'maskapai penerbangan', // airline + 'matematika', // mathematics + 'mayoritas', // majority + 'median', // median + 'meja tulis', // desk + 'memanjakan', // cosset + 'mengatasi', // cope + 'menteri', // minister + 'mentor', // mentor + 'meriam', // cannon + 'meses', // sprinkles + 'mesin tik', // typewriter + 'metabolit', // metabolite + 'mimpi', // dream + 'minor', // minor + 'minoritas', // minority + 'minyak', // oil + 'mitologi', // mythology + 'mobilitas', // mobility + 'momen', // moment + 'monastisisme', // monasticism + 'monokel', // monocle + 'monster', // monster + 'montir', // mechanic + 'morbiditas', // morbidity + 'mousse', // mousse + 'mozzarella', // mozzarella + 'mulai ulang', // reboot + 'murid', // pupil + 'musang', // ferret + 'musik pop', // pop + 'musim', // season + 'musim panas', // summer + 'musim semi', // spring + 'mutiara', // pearl + 'nampan', // platter / tray + 'negosiasi', // negotiation + 'nektarin', // nectarine + 'nelayan', // fisherman + 'nenek', // granny + 'netsuke', // netsuke + 'niat', // intent + 'nilai', // worth + 'nougat', // nougat + 'nukleotidase', // nucleotidase + 'numerik', // numeric + 'nyala api', // flame + 'nyanyian', // singing + 'obat', // drug + 'obesitas', // obesity + 'objek', // object + 'ocelot', // ocelot + 'oktaf', // octave + 'olahraga', // sport + 'opera', // opera + 'optimal', // optimal + 'orang asing', // stranger + 'orang mati', // dead + 'pacar pria', // boyfriend + 'padang rumput', // meadow + 'pagi', // morning + 'paha', // thigh + 'pahlawan wanita', // heroine + 'pakaian', // wear + 'pakan ternak', // forage + 'papa', // papa + 'papan plin', // baseboard + 'papan sentral', // switchboard + 'parit', // trench + 'pasar', // marketplace + 'pasir', // sand + 'paspor', // passport + 'pasta', // pasta + 'pastinak', // parsnip + 'patung', // statue + 'paus', // whale + 'pawai', // march / parade + 'pegangan', // handle + 'pekerjaan', // doing + 'pelaksana', // executor + 'pelaku', // perp + 'pelarian', // outrun + 'pelaut', // sailor + 'pelek', // rim + 'pelepasan', // release + 'pelindung dada', // breastplate + 'pemahaman', // understanding + 'pemain boling', // bowler + 'pemakaman', // cemetery + 'pemalsuan', // forgery + 'pemanasan', // heating / warming + 'pemandangan', // vista + 'pemandian', // bathhouse + 'pemandian burung', // birdbath + 'pemandu', // guide / scout + 'pemanfaatan', // utilization + 'pemanggang roti', // toaster + 'pemasok', // supplier + 'pembakaran balik', // backburn + 'pembekuan', // freezing + 'pemberhentian', // halt + 'pemberi pinjaman', // lender + 'pemberian tanda hubung', // hyphenation + 'pembersih', // cleaner + 'pembuat undang-undang', // lawmaker + 'pembuatan', // making + 'pembuluh darah', // vein + 'pemecah es', // icebreaker + 'pemelihara', // maintainer + 'pemerintah', // government + 'pemukim', // settler + 'pemulihan', // recovery + 'pemurni', // finer + 'pemutusan', // disconnection + 'penalaran', // reasoning + 'penangkap tikus', // mouser + 'penasihat', // adviser + 'penawaran', // bid + 'pencakar langit', // skyscraper + 'pencari makan', // forager + 'pencengkeram', // gripper + 'pencernaan', // digestive + 'pencetak', // printer + 'pencipta', // creator + 'pendakian', // climb + 'pendaran warna', // iridescence + 'pendekatan', // approach + 'penembak jitu', // marksman + 'penerbang', // airman + 'penerbangan', // flight + 'pengadaan', // procurement + 'pengalaman', // experience + 'pengaruh', // affect + 'pengecatan', // paintwork + 'pengepungan', // siege + 'pengerahan', // deployment + 'penggalangan dana', // fundraising + 'pengganti', // lieu / replacement + 'penghidupan', // sustenance + 'pengikut', // follower / following + 'penginapan', // stay + 'pengirim', // shipper / submitter + 'pengiring', // accompanist + 'pengoperasian', // operating + 'pengujian', // testing + 'pengunduran diri', // quit + 'pengungkapan', // disclosure + 'peningkatan harga', // markup + 'penipu', // fraudster / impostor / charlatan + 'penjaga', // guard + 'penjahat', // outlaw + 'penjahit', // stitcher + 'penolakan', // cop-out + 'penopang rantai', // chainstay + 'pensiun', // pension + 'penunjukan', // designation + 'penurunan', // descent + 'penyangga', // brace + 'penyangga buku', // bookend + 'penyedia', // provider + 'penyelam', // diver + 'penyelesaian', // completion + 'penyetelan', // tune-up + 'penyewa', // tenant + 'peony', // peony + 'peragu', // doubter + 'perahu panjang', // longboat + 'peralatan', // kit / tackle / apparatus + 'peralatan memanggang', // bakeware + 'peralihan', // cutover + 'peran', // role + 'perancah', // scaffold + 'perapian', // fireplace + 'perbandingan', // comparison + 'perbedaan', // distinction + 'perbuatan', // deed + 'perburuan', // hunt + 'percakapan', // conversation + 'perdana menteri', // premier + 'perencanaan', // premeditation + 'perikanan', // fishery + 'peringatan', // alert + 'perintah', // behest + 'perintah pengadilan', // injunction + 'perjalanan', // travel + 'perjanjian', // agreement + 'perkakas', // appliance + 'perkembangan', // developmental + 'permafrost', // permafrost + 'permintaan', // request + 'permukaan', // surface + 'permukaan meja', // tabletop + 'pernikahan', // wedding + 'perombakan', // makeover + 'perpanjangan', // extension + 'persimpangan', // interchange + 'persyaratan', // requirement + 'pertempuran', // battle + 'pertimbangan ulang', // reconsideration + 'pesanan', // order + 'pesawat layang', // glider + 'pesawat terbang', // aircraft + 'pesenam', // gymnast + 'pesisir', // shore / coast + 'pesona', // charm + 'petani', // farmer + 'peternakan', // farm + 'peti mati', // casket + 'petugas patroli', // patroller + 'pewawancara', // interviewer + 'pijakan kaki', // footrest + 'pijaran', // incandescence + 'pijat', // massage + 'pilihan', // pick + 'pilot', // pilot + 'pinggang', // waist + 'pintu masuk', // entry + 'pinus', // pine + 'pir', // pear + 'pita', // ribbon + 'planula', // planula + 'plastik', // plastic + 'platipus', // platypus + 'plugin', // plugin + 'pneumonia', // pneumonia + 'polarisasi', // polarisation + 'poliester', // polyester + 'popularitas', // popularity + 'populis', // populist + 'porter', // porter + 'potongan', // scrap + 'potongan daging', // chops / cutlet + 'potongan rambut', // haircut + 'premis', // premise + 'premium', // premium + 'preseden', // precedent + 'pria', // chap + 'program', // programme + 'publikasi', // publication + 'publisitas', // publicity + 'puisi', // poetry + 'pukulan', // whack + 'puncak', // crest + 'puncak menara', // steeple + 'puritan', // puritan + 'puting beliung air', // waterspout + 'ragi', // yeast + 'rahasia', // secret + 'raja', // king + 'rajutan', // knitting + 'rak buku', // bookcase + 'raksasa', // giant + 'ransel', // haversack + 'rasa lapar', // hunger + 'rasa malu', // embarrassment + 'ravioli', // ravioli + 'rawa', // bog + 'rawa-rawa', // fen + 'rawat inap', // hospitalization + 'rekan', // fellow + 'rekan produser', // co-producer + 'rekan tim', // teammate + 'rekomendasi', // recommendation + 'renang', // swim + 'renda', // lace + 'reorganisasi', // reorganisation + 'reporter', // reporter + 'representasi', // representation + 'republik', // republican + 'reruntuhan', // ruin + 'reseptor', // receptor + 'reservasi', // reservation + 'resolusi', // resolve + 'restoran', // restaurant + 'retensi', // retention + 'retrospektivitas', // retrospectivity + 'ringkasan', // summary / brief + 'roda', // wheel + 'rok dalam', // petticoat + 'rosemari', // rosemary + 'ruang', // space + 'ruang bawah tanah', // cellar + 'ruang santai', // lounge + 'ruang sidang', // courtroom + 'rubrik', // rubric + 'rumah petak', // tenement + 'rumput', // grass + 'rumus', // formula + 'rusa', // deer + 'sakit hati', // heartache + 'saklar', // switch + 'salun', // saloon + 'sampah', // litter / trash + 'sandal', // slipper + 'sandal jepit', // thongs + 'sangkar burung', // birdcage + 'sapi', // cow + 'saraf', // nerve + 'saringan', // filter + 'sarung', // sarong + 'sasana', // gym + 'sauerkraut', // sauerkraut + 'schnitzel', // schnitzel + 'sedotan', // straw + 'segenggam', // handful + 'segi enam', // hexagon + 'sekitar', // vicinity + 'selang', // hose + 'selat', // strait + 'seluncuran', // slide + 'semangat', // spirit / verve + 'semenanjung', // peninsula + 'sempoa', // abacus + 'sendok garpu', // spork + 'senggolan', // nudge + 'seni keramik', // ceramics + 'senja', // dusk + 'sepatu bot karet', // galoshes + 'sepotong roti', // loaf + 'serah terima', // handover + 'serangga', // bug + 'serat', // fibre + 'seratus', // hundred + 'serbet', // napkin + 'sertifikasi', // certification + 'siang hari', // noon + 'sidat muda', // elver + 'sikat', // brush + 'sikat gigi', // toothbrush + 'siklus', // cycle + 'sinar matahari', // sunbeam + 'sinergi', // synergy + 'singkong', // cassava + 'sisi kanan kapal', // starboard + 'siter', // dulcimer + 'skala', // scale + 'skarifikasi', // scarification + 'skenario', // scenario + 'sofa', // couch + 'solilokui', // soliloquy + 'solusi', // solution + 'solvabilitas', // solvency + 'sonar', // sonar + 'sonata', // sonata + 'soneta', // sonnet + 'status', // status + 'stiker', // sticker + 'stok', // stock + 'stoking', // pantyhose + 'strategi', // strategy + 'suami', // husband + 'suatu tempat', // someplace + 'subekspresi', // subexpression + 'subsidi', // subsidy + 'substitusi', // substitution + 'sudut', // angle + 'suku', // tribe + 'sumber daya', // resource + 'sumpit', // blowgun + 'sundae', // sundae + 'sup', // soup + 'surat udara', // airmail + 'surel', // e-mail + 'sushi', // sushi + 'suspensi', // suspension + 'sutra', // silk + 'SUV', // SUV + 'tahunan', // annual + 'takdir', // providence + 'taksi', // taxicab + 'talas', // taro + 'tanda baca', // punctuation + 'tanda hubung', // dash + 'tanda tangan', // signature + 'tang', // pliers + 'tanggung jawab', // responsibility + 'tanpa berkedip', // unblinking + 'tantangan', // challenge + 'tapioka', // tapioca + 'tarragon', // tarragon + 'tas duffel', // duffel + 'tata kelola', // governance + 'tata letak', // lay + 'tawa', // laughter + 'tawon', // hornet + 'tekanan', // pressure + 'teknisi', // technician + 'teknolog', // technologist + 'tektonik', // tectonics + 'telur dadar', // omelet + 'tempat', // place + 'tempat kerja paksa', // sweatshop + 'tempat sampah', // bin + 'tempat tidur gantung', // hammock + 'temuan', // finding + 'tendangan', // kick + 'tengah', // middle + 'tenis', // tennis + 'tentakel', // tentacle + 'tepi', // edge + 'terdakwa', // defendant + 'teriyaki', // teriyaki + 'terjemahan', // translation + 'terong', // eggplant + 'testimonial', // testimonial + 'tetes tebu', // molasses + 'tiang pintu', // doorpost + 'tikungan', // bend + 'timi', // thyme + 'tingkat', // extent + 'tomatillo', // tomatillo + 'tombak', // spear + 'tomografi', // tomography + 'tonggak sejarah', // milestone + 'tongkang', // barge + 'topi', // cap + 'topi fedora', // fedora + 'tradisionalisme', // traditionalism + 'transparansi', // transparency + 'trik', // trick + 'troli', // trolley + 'tuba', // tuba + 'tuduhan', // allegation + 'tukang ledeng', // plumber + 'tuksedo', // tuxedo + 'tulang punggung', // backbone + 'tulang selangka', // clavicle + 'tumis', // stir-fry + 'tumpukan', // pile + 'tunggul', // stump + 'tusuk gigi', // toothpick + 'tutup', // lid + 'uang tunai', // cash + 'ubur-ubur', // jellyfish + 'ulangan', // repeat + 'umbi', // tuber + 'undangan', // invite + 'unggas', // fowl + 'unibodi', // unibody + 'unik', // unique + 'unit', // unit + 'usus besar', // colon + 'valentine', // valentine + 'validitas', // validity + 'vanadil', // vanadyl + 'versi', // version + 'veto', // veto + 'viabilitas', // viability + 'vibrafon', // vibraphone + 'video', // video + 'visi', // vision + 'volume', // vol + 'wacana', // discourse + 'wafer', // wafer + 'walabi', // wallaby + 'wali baptis', // godparent + 'wanita', // lady + 'warga negara', // citizen + 'wasabi', // wasabi + 'wijen', // sesame + 'wiracarita', // epic + 'wisata', // sightseeing + 'wombat', // wombat + 'yak', // yak + 'Yang Maha Kuasa', // almighty + 'yarmulke', // yarmulke + 'yin', // yin + 'yogurt', // yogurt + 'zebra', // zebra + 'zen', // zen +]; diff --git a/src/locales/id_ID/word/preposition.ts b/src/locales/id_ID/word/preposition.ts new file mode 100644 index 00000000000..86b38f8b01d --- /dev/null +++ b/src/locales/id_ID/word/preposition.ts @@ -0,0 +1,92 @@ +export default [ + 'absen', // absent + 'antara', // between + 'anti', // anti + 'berhadapan dengan', // forenenst + 'berhadapan', // anenst + 'berharga', // worth + 'berikutnya', // next + 'berlawanan', // opposite + 'dalam', // aboard + 'dari', // from / of + 'daripada', // than + 'dekat dengan', // apud + 'dekat', // near + 'dengan langkah', // pace (Latin, jarang) + 'dengan mod', // modulo (lebih ke matematis/teknis) + 'dengan', // with + 'di antara', // among / amongst + 'di atas', // above / atop / over / upon + 'di bawah', // below / beneath / under / underneath + 'di belakang', // behind + 'di buritan', // abaft (konteks maritim) + 'di dalam', // inside / within + 'di luar', // outside + 'di samping', // aside / beside + 'di sekitar', // around + 'di seluruh', // throughout + 'di sisi', // alongside + 'di tengah', // amid + 'di tengah-tengah', // amidst / midst + 'di', // at / in + 'diberikan', // given + 'ditambah', // plus + 'gagal', // failing + 'hingga', // till / until + 'itu', // the + 'kali', // times + 'ke atas', // onto / up + 'ke dalam', // into + 'ke', // to + 'kecuali', // except + 'keluar', // out + 'kepada', // unto (archaic, alkitabiah) + 'layak', // worth + 'lepas', // off + 'lewat', // past + 'melalui', // through / via + 'melampaui', // beyond + 'melawan', // against / versus + 'melintasi', // across + 'mempertimbangkan', // considering + 'mendukung', // pro + 'mengangkangi', // astride + 'mengecualikan', // excepting + 'mengenai', // concerning / regarding + 'mengikuti', // following + 'menuju', // toward / towards + 'menyeberang', // athwart + 'meskipun', // despite / notwithstanding + 'minus', // minus + 'naik', // up + 'oleh', // by + 'pada', // on + 'per', // per + 'sebagai', // as / qua (formal/filosofis) + 'sebaliknya', // vice (contoh: vice versa) + 'sebelum', // afore / before + 'sebuah', // a / an + 'sehubungan dengan', // apropos + 'sejak', // since + 'sekitar (perkiraan)', // circa + 'sekitar', // round + 'selain', // besides + 'selama', // during + 'sepanjang', // along / throughout + 'seperti', // like + 'setelah', // after + 'simpan', // save + 'supaya tidak', // lest + 'tanpa', // sans / without + 'tengah', // mid + 'tentang', // about + 'terkecuali', // barring + 'termasuk', // including + 'terpisah', // aside + 'tetapi', // but + 'tidak seperti', // unlike + 'tidak termasuk', // excluding + 'turun', // down + 'untuk', // for + 'walaupun', // though +]; diff --git a/src/locales/id_ID/word/verb.ts b/src/locales/id_ID/word/verb.ts new file mode 100644 index 00000000000..e83bf75e631 --- /dev/null +++ b/src/locales/id_ID/word/verb.ts @@ -0,0 +1,860 @@ +export default [ + 'bangkit', // rise + 'bekerja berlebihan', // overwork + 'berakting berlebihan', // ham + 'berangkat', // depart + 'berayun', // swing + 'berbatasan', // border + 'berbelanja berlebihan', // overspend + 'berbisik', // whisper + 'berbunyi', // beep + 'berburu', // hunt + 'bercabang', // fork + 'bercakap-cakap', // converse + 'bercampur', // intermix + 'bercanda kasar', // horse + 'berdampak', // redound / impact + 'berdengung', // buzzing + 'berdentang', // chime + 'berdenting', // clinking + 'berdenyut', // throbbing + 'berdering', // ring + 'berderit', // creaking + 'berdesakan', // mosh + 'berdosa', // sin + 'bereaksi', // react + 'bereaksi berlebihan', // overreact + 'berebut', // scramble + 'beredar', // circulate + 'berfluktuasi', // fluctuate + 'berfoya-foya', // splurge + 'berfungsi', // function + 'bergabung kembali', // rejoin + 'bergantung', // depend + 'bergegas', // hotfoot + 'bergidik', // shudder + 'bergoyang', // sway + 'berhembus', // gust + 'berhenti', // quit / cease + 'berhenti sejenak', // pause + 'berhipotesis', // hypothesise / hypothesize + 'berinovasi', // innovate + 'berjanji', // covenant + 'berjemur', // sunbathe + 'berjingkrak', // prance + 'berjumlah', // amount + 'berkaitan', // pertain / appertain + 'berkedip', // blink + 'berkelahi', // scuffle + 'berkelana', // gallivant + 'berkeliaran', // gad + 'berkelip', // glimmer + 'berkembang', // progress + 'berkembang biak', // proliferate / breed + 'berkembang pesat', // burgeon + 'berkendara', // motor + 'berkendara bersama', // carpool + 'berkeringat', // perspire + 'berkerumun', // huddle + 'berkilau', // glisten + 'berkolaborasi', // collaborate + 'berkomentar', // remark + 'berkomunikasi', // communicate + 'berkumpul', // congregate / forgather + 'berlari cepat', // scamper + 'berlari kecil', // canter + 'berlari lebih cepat', // outrun + 'berlari tergesa-gesa', // scuttle + 'berlatih berlebihan', // overtrain + 'berlenggok', // sashay + 'berlibur', // vacation + 'bermain ski', // ski + 'bermain skateboard', // skateboard + 'bermain-main', // dally + 'bermalas-malasan', // idle + 'bermesraan', // neck + 'bermutasi', // mutate + 'berniat', // intend + 'berpesta pora', // carouse + 'berpikir', // think + 'berpisah', // part + 'berporos', // pivot + 'berprestasi di bawah standar', // underachieve + 'berproduksi berlebihan', // overproduce + 'berpura-pura', // pretend / sham / dissemble + 'bersahabat', // fraternise + 'bersaing', // compete + 'bersaksi', // testify + 'bersantai', // veg + 'berseloroh', // quip / wisecrack + 'bersenandung', // croon + 'bersepeda', // bicycle / cycle + 'bersikeras', // insist + 'bersinar', // glow + 'bersiul', // whistle + 'bersorak', // hoot + 'bersujud', // kowtow + 'bersumpah', // swear + 'bertarung', // battle + 'bertengkar', // quarrel / fray + 'bertentangan', // contradict + 'bertepatan', // coincide + 'berteriak', // shout + 'bervariasi', // vary + 'datang', // come + 'derit', // creak + 'duduk', // sit + 'gagal', // fail + 'gagal berfungsi', // malfunction + 'gagal menyala', // misfire + 'gagal total', // tank + 'gelisah', // fidget + 'gemetar', // quaver + 'goyah', // bobble + 'hancur', // crumble + 'hidup berdampingan', // coexist + 'jatuh', // fall + 'kabur', // scarper / vamoose + 'kacamata', // spectacles / eyeglasses + 'karam', // founder + 'kawin campur', // intermarry + 'keberatan', // object + 'kecil', // minor + 'kekurangan', // lack + 'kepanasan', // swelter + 'layu', // wilt + 'lulus', // graduate + 'mampu', // afford + 'mekar', // bloom + 'melahap', // wolf + 'melakukan debut', // debut + 'melakukan perjalanan jauh', // trek + 'melambangkan', // symbolise + 'melampaui', // transcend + 'melanggar', // contravene + 'melanjutkan', // proceed + 'melapisi', // stratify + 'melapisi agar tahan cuaca', // weatherize + 'melarikan diri', // abscond + 'melatih', // train + 'melawan', // buck + 'melayang', // hover + 'melayani', // minister / serve / service + 'melebarkan', // dilate + 'melebih-lebihkan', // overplay / exaggerate + 'melebihi jumlah', // outnumber + 'melebihi pangkat', // outrank + 'meledak', // boom / explode + 'meledak ke dalam', // implode + 'melegitimasi', // legitimize + 'melelahkan', // weary + 'melembagakan', // institute / institutionalize + 'melembapkan', // moisten / dampen + 'melengkapi', // outfit + 'melengkung', // warp + 'melepaskan', // extricate / forgo + 'meletakkan', // put + 'melibatkan', // engage + 'meliberalisasi', // liberalize + 'melihat', // see / behold + 'melindungi', // safeguard + 'melipat', // enfold + 'melipatgandakan empat kali', // quadruple + 'melipatgandakan lima kali', // quintuple + 'melisensikan', // license + 'melobotomisasi', // lobotomise + 'melolong', // howl + 'melompat', // leap + 'melonggarkan', // loose + 'melonjak', // surge + 'melubangi', // hole / hollow + 'melucuti senjata', // disarm + 'melukai', // wound + 'melumatkan', // mash + 'melumpuhkan', // paralyse / cripple + 'meluncurkan kembali', // relaunch + 'melupakan', // unlearn + 'memadatkan', // concrete + 'memagari', // fence + 'memagnetkan', // magnetize + 'memahami', // fathom + 'memahami secara dalam', // grok + 'memainkan biola', // fiddle + 'memaksakan diri', // obtrude + 'memanaskan terlebih dahulu', // preheat + 'memanen', // harvest + 'memanfaatkan', // capitalise / capitalize + 'memanggil', // convoke + 'memanipulasi', // manipulate + 'memanjat', // scale / shinny + 'memantul', // rebound + 'memarodikan', // parody + 'memasak terlalu matang', // overcook + 'memasang', // mount + 'memasang kabel', // wire + 'memasang mikrocip', // microchip + 'memaskulinisasi', // masculinize + 'memastikan', // ascertain / cinch / clinch + 'membagikan', // dispense + 'membahayakan', // jeopardise + 'membakar habis', // incinerate + 'membalas', // requite + 'membalsem', // embalm + 'membandingkan', // contrast + 'membangun kembali', // rebuild + 'membantah', // refute / confute + 'membaptis', // baptise / christen + 'membaratkan', // westernise / westernize + 'membatalkan', // quash + 'membatalkan pilihan', // deselect + 'membatasi', // stint + 'membebani berlebihan', // overload + 'membebaskan', // absolve / exempt / exonerate + 'membebat', // swathe + 'membelah', // split / cleave + 'membelenggu', // pinion + 'membelok', // swerve + 'membentangkan', // unfurl + 'membentuk', // mould / fashion / form + 'membentuk kerucut', // cone + 'membentuk tim', // team + 'memberanikan diri', // venture + 'memberi beban', // weight + 'memberi beban berlebih', // overburden + 'memberi kilap', // gloss + 'memberi kompensasi', // recompense + 'memberi makan berlebihan', // overfeed + 'memberi merek', // brand + 'memberi semangat', // hearten + 'memberi', // give + 'memberontak', // rebel + 'membersihkan gigi', // floss + 'membersihkan salju', // snowplow + 'membesar-besarkan', // hype + 'membesarkan', // rear + 'membiasakan', // familiarize / inure + 'membiaskan', // deflect + 'membiayai', // foot + 'membingkai', // rim + 'membingungkan', // mystify / bemuse / confound + 'membintiki', // fleck + 'membius', // anaesthetise / anesthetize + 'membosankan', // bore + 'membuang', // trash / dispose / ditch + 'membuat', // make + 'membuat alur', // ridge + 'membuat cetak timbul', // emboss + 'membuat marah', // enrage + 'membuat menjadi kasar', // vulgarise + 'membuat papan cerita', // storyboard + 'membuat peka', // sensitize + 'membuat penasaran', // intrigue + 'membuat skema', // schematise + 'membuat terkilir', // dislocate + 'membuat tidak seimbang', // unbalance + 'membuat-buat', // fabricate + 'membudidayakan', // culture + 'membujuk', // inveigle + 'membuka', // uncover + 'membuka kembali', // reopen + 'membuka ritsleting', // unzip + 'membuka sumbat', // uncork + 'membuktikan', // substantiate / attest + 'membumbui', // spice + 'membumbui kari', // curry + 'membungkuk', // stoop + 'membunyikan klakson', // horn + 'membusuk', // putrefy / rot + 'memecah-mecah', // chip (memotong kecil) + 'memecahkan', // break + 'memecahkan kode', // decode + 'memecat', // axe + 'memegang', // hold + 'memendek', // telescope + 'mementaskan', // stage + 'memeras', // wring + 'memercik', // spattering / splash + 'memercikkan', // spark + 'memeriksa', // vet / inspect + 'memeriksa ejaan', // spellcheck + 'memerintah', // rule / boss / govern + 'memesan', // book + 'memesinkan', // machine + 'memetabolisme', // metabolise + 'memetik', // pluck + 'memfaktorkan', // factorise / factorize + 'memfasilitasi', // facilitate + 'memfemininisasi', // feminize + 'memfiksikan', // fictionalize + 'memfitnah', // libel / traduce + 'memfokuskan', // focalise + 'memijat', // massage + 'memikat', // entice + 'memikselasi', // pixellate + 'memikul', // shoulder + 'memilih', // option + 'memilih juri', // impanel + 'memiliki', // own + 'memilin', // twine + 'memimpin', // preside + 'meminjamkan', // lend + 'meminta', // solicit + 'meminta maaf', // apologise + 'meminta-minta', // mooch + 'memiringkan', // slope + 'memisahkan', // segregate / sunder / decouple + 'memobilisasi', // mobilise / mobilize + 'memojokkan', // corner + 'memopulerkan', // popularize + 'memotivasi', // motivate + 'memperbaiki', // redress / ameliorate / better + 'memperbesar', // large + 'memperburuk', // exacerbate + 'mempercayai', // trust + 'mempercayakan', // confide + 'memperhitungkan', // reckon / account + 'memperingati', // commemorate + 'memperkaya', // enrich + 'memperkirakan', // approximate + 'memperkuat posisi', // entrench + 'memperlengkapi ulang', // retool + 'memperoleh', // acquire + 'mempersenjatai', // forearm + 'mempersonalisasi', // personalise + 'mempertanyakan', // question + 'mempertaruhkan', // stake + 'memprioritaskan', // prioritize + 'memprotes', // expostulate + 'mempublikasikan', // publicize + 'memualkan', // nauseate + 'memuaskan', // sate / satisfy + 'memuaskan dahaga', // slake + 'memuja', // revere + 'memuji', // eulogise + 'memukul', // swat / thump / bludgeon + 'memukul keras', // wallop + 'memulai ulang', // reboot + 'memulihkan diri', // convalesce + 'memumikan', // mummify + 'memuncak', // culminate + 'memuntahkan', // spew / disgorge + 'memurnikan', // refine + 'memusuhi', // antagonize + 'memutar', // twist / crank + 'memutihkan', // bleach + 'memutuskan', // decide + 'memverifikasi', // verify + 'memveto', // veto + 'menabuh drum', // drum + 'menafsirkan', // construe + 'menagih terlalu mahal', // overcharge + 'menahan', // remand / detain + 'menakut-nakuti', // scare / spook + 'menambah', // augment + 'menambahi aksesori', // accessorise + 'menambatkan', // moor + 'menampar', // slap + 'menampilkan', // display + 'menampung', // house + 'menanamkan', // embed / inculcate + 'menandai', // tag + 'menandatangani', // sign + 'menangis', // weep + 'menangkap', // nab / catch / cop + 'menarasikan', // narrate + 'menari jive', // jive + 'menari waltz', // waltz + 'menarik', // pull + 'menarik kembali', // retract + 'menavigasi', // navigate + 'menawar lebih tinggi', // outbid + 'mencabik-cabik', // maul + 'mencabut', // revoke / uproot + 'mencabut hak waris', // disinherit + 'mencabut izin praktik', // disbar + 'mencair', // deliquesce + 'mencairkan', // unfreeze + 'mencakar', // claw + 'mencampur', // blend + 'mencangkok', // transplant / graft + 'mencapai', // achieve + 'mencaplok', // annex + 'mencari', // search + 'mencari air', // dowse + 'mencatat', // log / jot + 'mencebur', // splosh + 'mencegah', // preclude + 'mencekik', // suffocate / garrote + 'mencela', // reproach + 'mencemarkan', // besmirch + 'mencemarkan nama baik', // dishonor + 'mencemooh', // scoff + 'menceramahi', // harangue + 'menceritakan kembali', // recount + 'mencetak', // print + 'mencibir', // tut + 'mencium bau', // scent + 'mencoba', // essay + 'mencondongkan', // incline + 'mencoret-coret', // doodle + 'mencuci', // wash + 'mencukup-cukupkan', // eke + 'mencukupi', // suffice + 'mencukur', // shear + 'menculik', // shanghai / spirit + 'mendaftar', // list / enlist / enroll + 'mendaftar sebelumnya', // preregister + 'mendaftar ulang', // reapply + 'mendakwa', // arraign + 'mendangkalkan', // silt + 'mendapatkan sumber', // source + 'mendayung', // row + 'mendebit', // debit + 'mendeferensi', // dereference + 'mendefrag', // defrag + 'mendekriminalisasi', // decriminalize + 'mendemobilisasi', // demob / demobilise + 'mendemokratisasi', // democratize + 'mendemonstrasikan', // demonstrate + 'mendengus', // huff + 'mendenitrifikasi', // denitrify + 'mendera', // clonk + 'mendesis', // sizzle + 'mendeskripsikan', // describe + 'mendiamkan', // shush + 'mendigitalkan', // digitize + 'mendorong', // egg / goose + 'mendramatisir', // dramatize + 'menduga', // conjecture + 'mendukung', // bolster + 'menegang', // stiffen + 'meneguk', // quaff + 'menegur', // rebuke / reprimand / reprove / admonish + 'menekankan', // accentuate / emphasise / emphasize + 'menelan', // gulp + 'menelepon', // dial + 'meneliti', // scrutinise + 'menemani', // accompany + 'menembak', // shoot + 'menembak dengan mortir', // mortar + 'menempatkan di kandang', // stable + 'menenangkan', // quiet + 'menengahi', // arbitrate + 'menenggak', // swill / guzzle + 'menentang', // militate / beard + 'menepi', // edge + 'menerapkan kunci kroma', // chromakey + 'menerima', // accept + 'menerima kembali', // readmit + 'meneror', // terrorise + 'mengabaikan', // neglect + 'mengaburkan', // obscure + 'mengabutkan', // atomize + 'mengacak', // randomize + 'mengacak-acak', // tousle + 'mengacungkan', // brandish + 'mengais', // scrabble + 'mengajak masuk agama', // proselytise + 'mengajukan', // propound / table + 'mengakali', // outfox + 'mengakses', // access + 'mengaku', // avow / fess + 'mengakui', // acknowledge + 'mengalahkan', // outdo / whup + 'mengalahkan telak', // rout + 'mengalahkan tipis', // pip + 'mengalihdayakan', // outsource + 'mengalihfungsikan', // repurpose + 'mengalihkan', // sidetrack / divert + 'mengamati', // observe + 'mengambil alih', // appropriate + 'mengambil hati', // ingratiate + 'mengambil jurusan', // major + 'menganalisis', // analyse + 'mengandung', // gestate + 'menganggap', // ascribe + 'mengangkangi', // bestride + 'mengangkat', // hoick + 'mengangkut', // haul + 'mengangkut dengan bus', // bus + 'menganiaya', // persecute + 'menganil', // anneal + 'menganji', // starch + 'menganjurkan', // advocate + 'mengantar', // usher + 'mengantongi', // trouser + 'mengantuk', // drowse + 'menganugerahi', // endow + 'mengapit', // outflank + 'mengarahkan', // orient / orientate + 'mengarahkan kembali', // reorient + 'mengarsipkan', // archive + 'mengasapi', // fumigate + 'mengasihani', // pity + 'mengasingkan', // sequester + 'mengaspal', // pave + 'mengatribusikan', // attribute + 'mengatur', // regulate / arrange + 'mengatur ulang', // rejigger + 'mengeblog mikro', // microblog + 'mengecat ulang', // respray + 'mengecilkan hati', // dishearten + 'mengejar', // chase + 'mengejutkan', // surprise + 'mengekstrak', // extract + 'mengelabui', // haze + 'mengelilingi', // circle / circumnavigate + 'mengelola', // manage + 'mengelola mikro', // micromanage + 'mengeluarkan isi perut', // gut + 'mengembangkan', // develop + 'mengembangkan kembali', // redevelop + 'mengembik', // baa + 'mengembun', // condense + 'mengemil', // snack + 'mengempiskan', // deflate + 'mengemulsi', // emulsify + 'mengencangkan', // tighten + 'mengendap-endap', // slink + 'mengendarai', // ride + 'mengendus', // sniff + 'mengental', // jell + 'mengepak', // pack + 'mengepang', // plait / braid + 'mengerahkan', // deploy + 'mengeramasi', // shampoo + 'mengeriting', // frizz + 'mengerjakan', // belabor + 'mengerti', // roger + 'mengerumuni', // mob + 'mengerutkan', // purse + 'mengerutkan kening', // scowl + 'mengesahkan wasiat', // probate + 'mengetahui', // know + 'menggabungkan', // merge + 'menggalang', // rally + 'menggali', // unearth + 'menggambar ulang', // redraw + 'menggambarkan', // portray / adumbrate + 'menggantikan', // override + 'menggebukan', // fluff + 'menggeliat', // squirm + 'menggembleng', // galvanize + 'menggembungkan kembali', // reflate + 'menggerogoti', // gnaw + 'menggertakkan', // gnash + 'menggerutu', // chunter + 'menggetarkan', // electrify + 'menggiling', // mill + 'menggoda', // rag + 'menggosok dengan damar', // rosin + 'menggoyangkan', // jiggle + 'menggumpal', // coagulate + 'menggurui', // moralise + 'menghabiskan waktu', // while + 'menghadiri', // attend + 'menghafal', // memorise + 'menghakimi', // adjudge + 'menghakimi terlebih dahulu', // prejudge + 'menghalangi', // obstruct + 'menghambat', // inhibit + 'menghambat pertumbuhan', // stunt + 'menghamburkan', // misspend + 'menghancurkan', // pulp / pulverize + 'menghanguskan', // singe / char + 'menghapus', // delete / efface + 'menghargai', // treasure / appreciate + 'menghemat', // economise + 'menghembus', // waft + 'menghembuskan', // puff + 'menghentikan', // scotch / discontinue + 'menghibur', // solace + 'menghilang', // peter / vanish + 'menghilangkan minyak', // degrease + 'menghindar', // shirk + 'menghirup', // sup + 'menghitamkan', // blacken + 'menghubungkan', // colligate / connect + 'menghujat', // blaspheme + 'menghukum', // penalise + 'menghukum di depan umum', // pillory + 'mengikat', // ligate / bind + 'mengikis', // scrape + 'mengimbangi', // offset + 'mengimprovisasi', // wing + 'mengindustrialisasi', // industrialize + 'mengingkari sumpah', // forswear + 'menginjak', // tromp + 'mengintai', // pry / snoop + 'menginternalisasi', // internalise / internalize + 'menginternasionalkan', // internationalize + 'mengintimidasi', // cow + 'menginventarisasi', // inventory + 'mengirim faks', // fax + 'mengisi', // stuff / fill + 'mengisi suara', // overdub + 'mengkanibal', // cannibalise + 'mengkatalisis', // catalyze + 'mengkatalogkan', // catalog + 'mengkategorikan', // categorise + 'mengkloning', // clone + 'mengkonfirmasi', // confirm + 'mengkonseptualisasikan', // conceptualize + 'mengkristal', // crystallize + 'mengobrol', // yak / chatter + 'mengoksidasi', // oxidise / oxidize + 'mengoksigenasi', // oxygenate + 'mengolesi mentega', // butter + 'mengolesi tebal-tebal', // slather + 'mengomel', // carp + 'mengoreksi', // proofread + 'mengorkestrasi', // orchestrate + 'mengotori', // muddy + 'mengreditkan', // accredit + 'menguap', // yawn + 'menguatkan', // tough + 'mengubah', // amend + 'mengubah bentuk', // deform + 'mengubah kata-kata', // reword + 'mengubur', // entomb + 'menguji', // trial + 'mengukir', // etch + 'mengukur', // quantify + 'mengulangi', // reiterate / iterate + 'menguliahi', // lecture + 'mengunci', // lock + 'mengunyah', // masticate + 'mengupas', // shell / husk + 'mengurai', // ravel + 'menguraikan', // unscramble / expatiate + 'mengurangi', // subtract / deduct + 'mengurangi stok', // destock + 'menguras', // drain + 'mengurung', // coop + 'mengusir', // banish + 'mengutuk', // curse + 'menikam', // knife + 'menikmati', // savour + 'menilai', // grade + 'menilai terlalu tinggi', // overvalue + 'menimbulkan', // engender + 'meninggalkan bekas luka', // scar + 'meninggikan', // exalt + 'meningkat', // ramp + 'meningkatkan', // enhance / heighten + 'menipu', // shaft + 'meniru', // ape + 'menisik', // darn + 'menitipkan', // consign + 'menjadi ayah', // father + 'menjadi berita utama', // headline + 'menjadi ciri khas', // typify + 'menjadi penting', // matter + 'menjadi pucat', // pale + 'menjadi sukarelawan', // volunteer + 'menjadi tamu', // guest + 'menjadi tiga kali lipat', // treble + 'menjadikan bergaya yuppie', // yuppify + 'menjadwal ulang', // reschedule + 'menjahit', // sew + 'menjalani', // undergo + 'menjalin', // entwine + 'menjaring', // mesh + 'menjejalkan', // wedge / cram + 'menjemur', // sun + 'menjengkelkan', // irk + 'menjenuhkan', // saturate + 'menjerit', // shrill + 'menjilat', // toady + 'menjinakkan', // tame + 'menjiplak', // plagiarise + 'menjorok', // jut + 'menjual', // sell + 'menjual lebih mahal', // upsell + 'menjual sebelumnya', // presell + 'menodai', // profane / desecrate + 'menolak', // rebuff + 'menonton', // spectate + 'menormalkan', // norm + 'menotariskan', // notarize + 'mensekulerkan', // secularize + 'menserialkan', // serialize + 'mensertifikasi', // certify + 'mensintesis', // synthesise + 'menstabilkan', // stabilise + 'menstigmatisasi', // stigmatize + 'mentabulasi', // tabulate + 'menteraformasi', // terraform + 'menugaskan', // task + 'menulis ulang', // rewrite + 'menuliskan', // inscribe + 'menumpuk', // stack + 'menunda', // tarry / adjourn + 'menunda-nunda', // procrastinate + 'menunggu', // bide + 'menunjukkan', // evince + 'menuntut', // clamor / clamour + 'menuruni tebing', // abseil + 'menurunkan gigi', // downchange / downshift + 'menusuk', // pike + 'menutup', // cap + 'menutupi', // mask + 'menutupi kesalahan', // whitewash + 'menyabuni', // soap + 'menyaingi', // rival + 'menyala', // flash + 'menyalakan', // ignite + 'menyalakan kembali', // rekindle + 'menyamakan', // equate + 'menyamar', // masquerade + 'menyamarkan', // camouflage + 'menyambung', // joint + 'menyambut', // welcome + 'menyandikan', // encode + 'menyangkal', // controvert / deny / abnegate + 'menyanyikan serenada', // serenade + 'menyapa', // apostrophize + 'menyarungkan', // sheathe / holster + 'menyatakan', // state + 'menyatukan', // federate + 'menyeberang', // cross + 'menyeberang sembarangan', // jaywalk + 'menyediakan', // provision + 'menyekolahkan di rumah', // homeschool + 'menyekrup', // screw + 'menyelesaikan', // settle + 'menyelewengkan', // misappropriate + 'menyelidiki', // probe / scope / investigate + 'menyelinap', // sneak + 'menyelundupkan', // smuggle / bootleg + 'menyembunyikan', // conceal + 'menyemprotkan cat', // airbrush + 'menyenangkan', // please / delight + 'menyendok', // scoop / shovel + 'menyengat', // sting + 'menyengaukan', // nasalise + 'menyensor', // censor + 'menyentuh dengan jari kaki', // toe + 'menyerang', // assail + 'menyerang dari samping', // broadside + 'menyeret', // schlep / drag + 'menyesali', // rue + 'menyesalkan', // deplore + 'menyesuaikan', // square / customise + 'menyesuaikan kembali', // readjust + 'menyetel', // tune + 'menyewa', // tenant / charter + 'menyiapkan', // readies / ready + 'menyiarkan', // broadcast + 'menyiarkan terbatas', // narrowcast + 'menyimpan', // mothball / store + 'menyimpan di bank', // bank + 'menyimpan di garasi', // garage + 'menyimpulkan', // conclude / deduce + 'menyinari', // floodlight + 'menyindir', // lampoon / satirise / satirize + 'menyinggung', // offend + 'menyisipkan', // insert + 'menyisir', // card / comb + 'menyita', // commandeer / confiscate + 'menyita kembali', // repossess + 'menyolder', // solder + 'menyorot', // highlight + 'menyuntik', // syringe + 'menyuntikkan', // inject + 'menyunting', // redact + 'menyusui', // suckle + 'menyusun', // structure + 'menyusun draf', // draft + 'menyusun kembali', // reconstitute + 'merajut', // knit + 'merakit kembali', // reassemble + 'meramalkan', // forecast / foretell + 'meramban', // browse + 'merancang', // devise + 'merapat', // snuggle / dock + 'merapikan', // neaten / smarten + 'merasa bahagia', // bliss + 'merasa puas', // gloat + 'merasakan', // sense + 'merasionalisasikan', // rationalise / rationalize + 'meratakan', // even + 'meratapi', // bewail + 'merayakan', // celebrate + 'meredakan', // relieve + 'mereferensikan', // reference + 'merekam', // record + 'merekatkan', // gum + 'merekayasa imajinasi', // imagineer + 'mereklasifikasi', // reclassify + 'meremehkan', // lowball / underplay + 'merencanakan', // plan / scheme + 'merendahkan', // low + 'merengek', // whine + 'merentangkan', // splay + 'merenung', // brood + 'merenungkan', // ponder + 'mereplikasi', // replicate + 'merepotkan', // hassle + 'merestrukturisasi', // restructure + 'meretak', // crackle + 'merevitalisasi', // revitalise + 'meributkan', // fuss + 'merindukan', // yearn / hunger + 'meringis', // gurn + 'meringkas', // summarise + 'merobek-robek', // shred + 'merosot', // slump / degenerate + 'merujuk', // refer + 'merumahkan', // furlough + 'merusak', // ravage + 'merusak moral', // deprave + 'mewakili', // represent + 'mewakilkan', // depute + 'mewarnai', // colorize / colour + 'mewujudkan', // embody + 'meyakinkan', // convince + 'mondar-mandir', // pace + 'muncul', // emerge + 'muntah', // chunder + 'pamer', // showboat + 'penerbangan', // flight + 'pergi', // scram + 'pernyataan', // statement + 'pulang', // home + 'ragu-ragu', // scruple / waver + 'rasa bersalah', // guilt + 'salah hitung', // miscalculate + 'salah ketik', // miskey + 'salah melaporkan', // misreport + 'salah membaca', // misread + 'salah mengucapkan', // mispronounce + 'salah menilai', // misjudge + 'saling bertautan', // intermesh + 'setangki penuh', // tankful + 'surat perintah', // writ + 'surut', // recede + 'taksi', // taxicab + 'tawar-menawar', // dicker + 'terbalik', // capsize / keel + 'terbang', // fly + 'tercengang', // boggle + 'terdampar', // maroon + 'terengah-engah', // pant + 'terhuyung-huyung', // reel + 'terkesiap', // gasp + 'terlahir kembali', // reborn + 'ternganga', // gape + 'terobsesi', // obsess + 'terpaksa melakukan', // resort + 'terpeleset', // slip + 'terurai secara hayati', // biodegrade + 'terwujud', // materialise + 'tidak cocok', // mismatch + 'tidak menghormati', // disrespect + 'tidak menyetujui', // disapprove + 'tinggal', // dwell + 'tinggal terlalu lama', // overstay + 'turun hujan es', // sleet + 'turun salju', // snow +]; diff --git a/src/locales/index.ts b/src/locales/index.ts index 281e6d698fa..95925b6cef4 100644 --- a/src/locales/index.ts +++ b/src/locales/index.ts @@ -3,81 +3,89 @@ * Run 'pnpm run generate:locales' to update. */ -import { default as af_ZA } from './af_ZA'; -import { default as ar } from './ar'; -import { default as az } from './az'; -import { default as base } from './base'; -import { default as cs_CZ } from './cs_CZ'; -import { default as da } from './da'; -import { default as de } from './de'; -import { default as de_AT } from './de_AT'; -import { default as de_CH } from './de_CH'; -import { default as dv } from './dv'; -import { default as el } from './el'; -import { default as en } from './en'; -import { default as en_AU } from './en_AU'; -import { default as en_AU_ocker } from './en_AU_ocker'; -import { default as en_BORK } from './en_BORK'; -import { default as en_CA } from './en_CA'; -import { default as en_GB } from './en_GB'; -import { default as en_GH } from './en_GH'; -import { default as en_HK } from './en_HK'; -import { default as en_IE } from './en_IE'; -import { default as en_IN } from './en_IN'; -import { default as en_NG } from './en_NG'; -import { default as en_US } from './en_US'; -import { default as en_ZA } from './en_ZA'; -import { default as eo } from './eo'; -import { default as es } from './es'; -import { default as es_MX } from './es_MX'; -import { default as fa } from './fa'; -import { default as fi } from './fi'; -import { default as fr } from './fr'; -import { default as fr_BE } from './fr_BE'; -import { default as fr_CA } from './fr_CA'; -import { default as fr_CH } from './fr_CH'; -import { default as fr_LU } from './fr_LU'; -import { default as fr_SN } from './fr_SN'; -import { default as he } from './he'; -import { default as hr } from './hr'; -import { default as hu } from './hu'; -import { default as hy } from './hy'; -import { default as id_ID } from './id_ID'; -import { default as it } from './it'; -import { default as ja } from './ja'; -import { default as ka_GE } from './ka_GE'; -import { default as ko } from './ko'; -import { default as lv } from './lv'; -import { default as mk } from './mk'; -import { default as nb_NO } from './nb_NO'; -import { default as ne } from './ne'; -import { default as nl } from './nl'; -import { default as nl_BE } from './nl_BE'; -import { default as pl } from './pl'; -import { default as pt_BR } from './pt_BR'; -import { default as pt_PT } from './pt_PT'; -import { default as ro } from './ro'; -import { default as ro_MD } from './ro_MD'; -import { default as ru } from './ru'; -import { default as sk } from './sk'; -import { default as sr_RS_latin } from './sr_RS_latin'; -import { default as sv } from './sv'; -import { default as th } from './th'; -import { default as tr } from './tr'; -import { default as uk } from './uk'; -import { default as ur } from './ur'; -import { default as uz_UZ_latin } from './uz_UZ_latin'; -import { default as vi } from './vi'; -import { default as yo_NG } from './yo_NG'; -import { default as zh_CN } from './zh_CN'; -import { default as zh_TW } from './zh_TW'; -import { default as zu_ZA } from './zu_ZA'; +import af_ZA from './af_ZA'; +import ar from './ar'; +import az from './az'; +import base from './base'; +import bn_BD from './bn_BD'; +import cs_CZ from './cs_CZ'; +import cy from './cy'; +import da from './da'; +import de from './de'; +import de_AT from './de_AT'; +import de_CH from './de_CH'; +import dv from './dv'; +import el from './el'; +import en from './en'; +import en_AU from './en_AU'; +import en_AU_ocker from './en_AU_ocker'; +import en_BORK from './en_BORK'; +import en_CA from './en_CA'; +import en_GB from './en_GB'; +import en_GH from './en_GH'; +import en_HK from './en_HK'; +import en_IE from './en_IE'; +import en_IN from './en_IN'; +import en_NG from './en_NG'; +import en_US from './en_US'; +import en_ZA from './en_ZA'; +import eo from './eo'; +import es from './es'; +import es_MX from './es_MX'; +import fa from './fa'; +import fi from './fi'; +import fr from './fr'; +import fr_BE from './fr_BE'; +import fr_CA from './fr_CA'; +import fr_CH from './fr_CH'; +import fr_LU from './fr_LU'; +import fr_SN from './fr_SN'; +import he from './he'; +import hr from './hr'; +import hu from './hu'; +import hy from './hy'; +import id_ID from './id_ID'; +import it from './it'; +import ja from './ja'; +import ka_GE from './ka_GE'; +import ko from './ko'; +import ku_ckb from './ku_ckb'; +import ku_kmr_latin from './ku_kmr_latin'; +import lv from './lv'; +import mk from './mk'; +import nb_NO from './nb_NO'; +import ne from './ne'; +import nl from './nl'; +import nl_BE from './nl_BE'; +import pl from './pl'; +import pt_BR from './pt_BR'; +import pt_PT from './pt_PT'; +import ro from './ro'; +import ro_MD from './ro_MD'; +import ru from './ru'; +import sk from './sk'; +import sl_SI from './sl_SI'; +import sr_RS_latin from './sr_RS_latin'; +import sv from './sv'; +import ta_IN from './ta_IN'; +import th from './th'; +import tr from './tr'; +import uk from './uk'; +import ur from './ur'; +import uz_UZ_latin from './uz_UZ_latin'; +import vi from './vi'; +import yo_NG from './yo_NG'; +import zh_CN from './zh_CN'; +import zh_TW from './zh_TW'; +import zu_ZA from './zu_ZA'; export { default as af_ZA } from './af_ZA'; export { default as ar } from './ar'; export { default as az } from './az'; export { default as base } from './base'; +export { default as bn_BD } from './bn_BD'; export { default as cs_CZ } from './cs_CZ'; +export { default as cy } from './cy'; export { default as da } from './da'; export { default as de } from './de'; export { default as de_AT } from './de_AT'; @@ -117,6 +125,8 @@ export { default as it } from './it'; export { default as ja } from './ja'; export { default as ka_GE } from './ka_GE'; export { default as ko } from './ko'; +export { default as ku_ckb } from './ku_ckb'; +export { default as ku_kmr_latin } from './ku_kmr_latin'; export { default as lv } from './lv'; export { default as mk } from './mk'; export { default as nb_NO } from './nb_NO'; @@ -130,8 +140,10 @@ export { default as ro } from './ro'; export { default as ro_MD } from './ro_MD'; export { default as ru } from './ru'; export { default as sk } from './sk'; +export { default as sl_SI } from './sl_SI'; export { default as sr_RS_latin } from './sr_RS_latin'; export { default as sv } from './sv'; +export { default as ta_IN } from './ta_IN'; export { default as th } from './th'; export { default as tr } from './tr'; export { default as uk } from './uk'; @@ -148,7 +160,9 @@ export const allLocales = { ar, az, base, + bn_BD, cs_CZ, + cy, da, de, de_AT, @@ -188,6 +202,8 @@ export const allLocales = { ja, ka_GE, ko, + ku_ckb, + ku_kmr_latin, lv, mk, nb_NO, @@ -201,8 +217,10 @@ export const allLocales = { ro_MD, ru, sk, + sl_SI, sr_RS_latin, sv, + ta_IN, th, tr, uk, diff --git a/src/locales/it/internet/domain_suffix.ts b/src/locales/it/internet/domain_suffix.ts index d1c0acd51df..b6b750db523 100644 --- a/src/locales/it/internet/domain_suffix.ts +++ b/src/locales/it/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com', 'net', 'org', 'it']; +export default ['com', 'it', 'net', 'org']; diff --git a/src/locales/it/internet/free_email.ts b/src/locales/it/internet/free_email.ts index 7e0a96dc87e..5b66ce4fd07 100644 --- a/src/locales/it/internet/free_email.ts +++ b/src/locales/it/internet/free_email.ts @@ -1,8 +1,8 @@ export default [ + 'email.it', 'gmail.com', - 'yahoo.com', 'hotmail.com', - 'email.it', 'libero.it', + 'yahoo.com', 'yahoo.it', ]; diff --git a/src/locales/ja/color/human.ts b/src/locales/ja/color/human.ts new file mode 100644 index 00000000000..72cf93c6366 --- /dev/null +++ b/src/locales/ja/color/human.ts @@ -0,0 +1,27 @@ +export default [ + 'オレンジ', + 'シアン', + 'ピンク', + 'ベージュ', + 'マゼンタ', + '山吹色', + '朱色', + '桜色', + '橙', + '水色', + '灰色', + '白', + '紫', + '紺', + '緑', + '若草色', + '茶色', + '藍', + '藤色', + '赤', + '金色', + '銀色', + '青', + '黄', + '黒', +]; diff --git a/src/locales/ja/color/index.ts b/src/locales/ja/color/index.ts new file mode 100644 index 00000000000..e7cf1e89436 --- /dev/null +++ b/src/locales/ja/color/index.ts @@ -0,0 +1,12 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { ColorDefinition } from '../../..'; +import human from './human'; + +const color: ColorDefinition = { + human, +}; + +export default color; diff --git a/src/locales/ja/company/category.ts b/src/locales/ja/company/category.ts index e675a9a79d3..8f8910b5bbb 100644 --- a/src/locales/ja/company/category.ts +++ b/src/locales/ja/company/category.ts @@ -1,13 +1,25 @@ export default [ 'ガス', + 'ホテル', + '不動産', '保険', + '倉庫', + '化学', '印刷', + '家具', '建設', '情報', + '放送', + '楽器', '水産', + '自動車', + '製薬', + '証券', '農林', '通信', '運輸', + '金属', + '鉄道', '鉱業', '銀行', '電気', diff --git a/src/locales/ja/company/index.ts b/src/locales/ja/company/index.ts index 290ceacffa8..000b59c311d 100644 --- a/src/locales/ja/company/index.ts +++ b/src/locales/ja/company/index.ts @@ -4,13 +4,13 @@ */ import type { CompanyDefinition } from '../../..'; import category from './category'; +import legal_entity_type from './legal_entity_type'; import name_pattern from './name_pattern'; -import type_ from './type'; const company: CompanyDefinition = { category, + legal_entity_type, name_pattern, - type: type_, }; export default company; diff --git a/src/locales/ja/company/type.ts b/src/locales/ja/company/legal_entity_type.ts similarity index 100% rename from src/locales/ja/company/type.ts rename to src/locales/ja/company/legal_entity_type.ts diff --git a/src/locales/ja/company/name_pattern.ts b/src/locales/ja/company/name_pattern.ts index d3b6941d5b1..30f2a6de098 100644 --- a/src/locales/ja/company/name_pattern.ts +++ b/src/locales/ja/company/name_pattern.ts @@ -1,4 +1,4 @@ export default [ - '{{company.type}}{{person.last_name.generic}}{{company.category}}', - '{{person.last_name.generic}}{{company.category}}{{company.type}}', + '{{company.legal_entity_type}}{{person.last_name.generic}}{{company.category}}', + '{{person.last_name.generic}}{{company.category}}{{company.legal_entity_type}}', ]; diff --git a/src/locales/ja/date/index.ts b/src/locales/ja/date/index.ts new file mode 100644 index 00000000000..a28ce823bb8 --- /dev/null +++ b/src/locales/ja/date/index.ts @@ -0,0 +1,14 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { DateDefinition } from '../../..'; +import month from './month'; +import weekday from './weekday'; + +const date: DateDefinition = { + month, + weekday, +}; + +export default date; diff --git a/src/locales/ja/date/month.ts b/src/locales/ja/date/month.ts new file mode 100644 index 00000000000..ff2d0a3198d --- /dev/null +++ b/src/locales/ja/date/month.ts @@ -0,0 +1,30 @@ +export default { + wide: [ + '一月', + '七月', + '三月', + '九月', + '二月', + '五月', + '八月', + '六月', + '十一月', + '十二月', + '十月', + '四月', + ], + abbr: [ + '10月', + '11月', + '12月', + '1月', + '2月', + '3月', + '4月', + '5月', + '6月', + '7月', + '8月', + '9月', + ], +}; diff --git a/src/locales/ja/date/weekday.ts b/src/locales/ja/date/weekday.ts new file mode 100644 index 00000000000..f2e87086ea3 --- /dev/null +++ b/src/locales/ja/date/weekday.ts @@ -0,0 +1,4 @@ +export default { + wide: ['土曜日', '日曜日', '月曜日', '木曜日', '水曜日', '火曜日', '金曜日'], + abbr: ['土', '日', '月', '木', '水', '火', '金'], +}; diff --git a/src/locales/ja/finance/account_type.ts b/src/locales/ja/finance/account_type.ts new file mode 100644 index 00000000000..711c0389df2 --- /dev/null +++ b/src/locales/ja/finance/account_type.ts @@ -0,0 +1,10 @@ +export default [ + 'クレジットカード', + 'マネーマーケット', + '住宅ローン', + '個人ローン', + '当座預金', + '投資', + '自動車ローン', + '貯蓄', +]; diff --git a/src/locales/ja/finance/currency.ts b/src/locales/ja/finance/currency.ts new file mode 100644 index 00000000000..5852134ff7e --- /dev/null +++ b/src/locales/ja/finance/currency.ts @@ -0,0 +1,926 @@ +export default [ + { + name: 'UAEディルハム', + code: 'AED', + symbol: '', + numericCode: '784', + }, + { + name: 'アフガニ', + code: 'AFN', + symbol: '؋', + numericCode: '971', + }, + { + name: 'レク', + code: 'ALL', + symbol: 'Lek', + numericCode: '008', + }, + { + name: 'ドラム', + code: 'AMD', + symbol: '', + numericCode: '051', + }, + { + name: 'アンティル・ギルダー', + code: 'ANG', + symbol: 'ƒ', + numericCode: '532', + }, + { + name: 'クワンザ', + code: 'AOA', + symbol: '', + numericCode: '973', + }, + { + name: 'アルゼンチン・ペソ', + code: 'ARS', + symbol: '$', + numericCode: '032', + }, + { + name: 'オーストラリア・ドル', + code: 'AUD', + symbol: '$', + numericCode: '036', + }, + { + name: 'アルバ・フロリン', + code: 'AWG', + symbol: 'ƒ', + numericCode: '533', + }, + { + name: 'アゼルバイジャン・マナト', + code: 'AZN', + symbol: 'ман', + numericCode: '944', + }, + { + name: '兌換マルク', + code: 'BAM', + symbol: 'KM', + numericCode: '977', + }, + { + name: 'バルバドス・ドル', + code: 'BBD', + symbol: '$', + numericCode: '052', + }, + { + name: 'タカ', + code: 'BDT', + symbol: '', + numericCode: '050', + }, + { + name: 'レフ', + code: 'BGN', + symbol: 'лв', + numericCode: '975', + }, + { + name: 'バーレーン・ディナール', + code: 'BHD', + symbol: '', + numericCode: '048', + }, + { + name: 'ブルンジ・フラン', + code: 'BIF', + symbol: '', + numericCode: '108', + }, + { + name: 'バミューダ・ドル', + code: 'BMD', + symbol: '$', + numericCode: '060', + }, + { + name: 'ブルネイ・ドル', + code: 'BND', + symbol: '$', + numericCode: '096', + }, + { + name: 'ボリビアーノ', + code: 'BOB', + symbol: 'Bs', + numericCode: '068', + }, + { + name: 'レアル', + code: 'BRL', + symbol: 'R$', + numericCode: '986', + }, + { + name: 'バハマ・ドル', + code: 'BSD', + symbol: '$', + numericCode: '044', + }, + { + name: 'プラ', + code: 'BWP', + symbol: 'P', + numericCode: '072', + }, + { + name: 'ベラルーシ・ルーブル', + code: 'BYN', + symbol: 'Rbl', + numericCode: '933', + }, + { + name: 'ベリーズ・ドル', + code: 'BZD', + symbol: 'BZ$', + numericCode: '084', + }, + { + name: 'カナダ・ドル', + code: 'CAD', + symbol: '$', + numericCode: '124', + }, + { + name: 'コンゴ・フラン', + code: 'CDF', + symbol: '', + numericCode: '976', + }, + { + name: 'スイス・フラン', + code: 'CHF', + symbol: 'CHF', + numericCode: '756', + }, + { + name: 'チリ・ペソ', + code: 'CLP', + symbol: '$', + numericCode: '152', + }, + { + name: '人民元', + code: 'CNY', + symbol: '¥', + numericCode: '156', + }, + { + name: 'コロンビア・ペソ', + code: 'COP', + symbol: '$', + numericCode: '170', + }, + { + name: 'コスタリカ・コロン', + code: 'CRC', + symbol: '₡', + numericCode: '188', + }, + { + name: 'キューバ・ペソ', + code: 'CUP', + symbol: '₱', + numericCode: '192', + }, + { + name: 'カーボベルデ・エスクード', + code: 'CVE', + symbol: '', + numericCode: '132', + }, + { + name: 'チェコ・コルナ', + code: 'CZK', + symbol: 'Kč', + numericCode: '203', + }, + { + name: 'ジブチ・フラン', + code: 'DJF', + symbol: '', + numericCode: '262', + }, + { + name: 'デンマーク・クローネ', + code: 'DKK', + symbol: 'kr', + numericCode: '208', + }, + { + name: 'ドミニカ・ペソ', + code: 'DOP', + symbol: 'RD$', + numericCode: '214', + }, + { + name: 'アルジェリア・ディナール', + code: 'DZD', + symbol: '', + numericCode: '012', + }, + { + name: 'エジプト・ポンド', + code: 'EGP', + symbol: '£', + numericCode: '818', + }, + { + name: 'ナクファ', + code: 'ERN', + symbol: '', + numericCode: '232', + }, + { + name: 'ブル', + code: 'ETB', + symbol: '', + numericCode: '230', + }, + { + name: 'ユーロ', + code: 'EUR', + symbol: '€', + numericCode: '978', + }, + { + name: 'フィジー・ドル', + code: 'FJD', + symbol: '$', + numericCode: '242', + }, + { + name: 'フォークランド諸島・ポンド', + code: 'FKP', + symbol: '£', + numericCode: '238', + }, + { + name: 'スターリング・ポンド', + code: 'GBP', + symbol: '£', + numericCode: '826', + }, + { + name: 'ラリ', + code: 'GEL', + symbol: '', + numericCode: '981', + }, + { + name: 'セディ', + code: 'GHS', + symbol: '', + numericCode: '936', + }, + { + name: 'ジブラルタル・ポンド', + code: 'GIP', + symbol: '£', + numericCode: '292', + }, + { + name: 'ダラシ', + code: 'GMD', + symbol: '', + numericCode: '270', + }, + { + name: 'ギニア・フラン', + code: 'GNF', + symbol: '', + numericCode: '324', + }, + { + name: 'ケツァル', + code: 'GTQ', + symbol: 'Q', + numericCode: '320', + }, + { + name: 'ガイアナ・ドル', + code: 'GYD', + symbol: '$', + numericCode: '328', + }, + { + name: '香港ドル', + code: 'HKD', + symbol: '$', + numericCode: '344', + }, + { + name: 'レンピラ', + code: 'HNL', + symbol: 'L', + numericCode: '340', + }, + { + name: 'グールド', + code: 'HTG', + symbol: '', + numericCode: '332', + }, + { + name: 'フォリント', + code: 'HUF', + symbol: 'Ft', + numericCode: '348', + }, + { + name: 'ルピア', + code: 'IDR', + symbol: 'Rp', + numericCode: '360', + }, + { + name: '新シェケル', + code: 'ILS', + symbol: '₪', + numericCode: '376', + }, + { + name: 'ブータン・ニュルタム', + code: 'BTN', + symbol: 'Nu', + numericCode: '064', + }, + { + name: 'インド・ルピー', + code: 'INR', + symbol: '₹', + numericCode: '356', + }, + { + name: 'イラク・ディナール', + code: 'IQD', + symbol: '', + numericCode: '368', + }, + { + name: 'イラン・リヤル', + code: 'IRR', + symbol: '﷼', + numericCode: '364', + }, + { + name: 'アイスランド・クローナ', + code: 'ISK', + symbol: 'kr', + numericCode: '352', + }, + { + name: 'ジャマイカ・ドル', + code: 'JMD', + symbol: 'J$', + numericCode: '388', + }, + { + name: 'ヨルダン・ディナール', + code: 'JOD', + symbol: '', + numericCode: '400', + }, + { + name: '円', + code: 'JPY', + symbol: '¥', + numericCode: '392', + }, + { + name: 'ケニア・シリング', + code: 'KES', + symbol: '', + numericCode: '404', + }, + { + name: 'ソム', + code: 'KGS', + symbol: 'лв', + numericCode: '417', + }, + { + name: 'リエル', + code: 'KHR', + symbol: '៛', + numericCode: '116', + }, + { + name: 'コモロ・フラン', + code: 'KMF', + symbol: '', + numericCode: '174', + }, + { + name: '北朝鮮ウォン', + code: 'KPW', + symbol: '₩', + numericCode: '408', + }, + { + name: '韓国ウォン', + code: 'KRW', + symbol: '₩', + numericCode: '410', + }, + { + name: 'クウェート・ディナール', + code: 'KWD', + symbol: '', + numericCode: '414', + }, + { + name: 'ケイマン諸島・ドル', + code: 'KYD', + symbol: '$', + numericCode: '136', + }, + { + name: 'テンゲ', + code: 'KZT', + symbol: 'лв', + numericCode: '398', + }, + { + name: 'キープ', + code: 'LAK', + symbol: '₭', + numericCode: '418', + }, + { + name: 'レバノン・ポンド', + code: 'LBP', + symbol: '£', + numericCode: '422', + }, + { + name: 'スリランカ・ルピー', + code: 'LKR', + symbol: '₨', + numericCode: '144', + }, + { + name: 'リベリア・ドル', + code: 'LRD', + symbol: '$', + numericCode: '430', + }, + { + name: 'リビア・ディナール', + code: 'LYD', + symbol: '', + numericCode: '434', + }, + { + name: 'モロッコ・ディルハム', + code: 'MAD', + symbol: '', + numericCode: '504', + }, + { + name: 'モルドバ・レウ', + code: 'MDL', + symbol: '', + numericCode: '498', + }, + { + name: 'マダガスカル・アリアリ', + code: 'MGA', + symbol: '', + numericCode: '969', + }, + { + name: 'マケドニア・デナール', + code: 'MKD', + symbol: 'ден', + numericCode: '807', + }, + { + name: 'チャット', + code: 'MMK', + symbol: '', + numericCode: '104', + }, + { + name: 'トゥグルグ', + code: 'MNT', + symbol: '₮', + numericCode: '496', + }, + { + name: 'マカオ・パタカ', + code: 'MOP', + symbol: '', + numericCode: '446', + }, + { + name: 'ウギア', + code: 'MRU', + symbol: '', + numericCode: '929', + }, + { + name: 'モーリシャス・ルピー', + code: 'MUR', + symbol: '₨', + numericCode: '480', + }, + { + name: 'ルフィヤ', + code: 'MVR', + symbol: '', + numericCode: '462', + }, + { + name: 'マラウイ・クワチャ', + code: 'MWK', + symbol: '', + numericCode: '454', + }, + { + name: 'メキシコ・ペソ', + code: 'MXN', + symbol: '$', + numericCode: '484', + }, + { + name: 'リンギット', + code: 'MYR', + symbol: 'RM', + numericCode: '458', + }, + { + name: 'メティカル', + code: 'MZN', + symbol: 'MT', + numericCode: '943', + }, + { + name: 'ナイラ', + code: 'NGN', + symbol: '₦', + numericCode: '566', + }, + { + name: 'コルドバ・オロ', + code: 'NIO', + symbol: 'C$', + numericCode: '558', + }, + { + name: 'ノルウェー・クローネ', + code: 'NOK', + symbol: 'kr', + numericCode: '578', + }, + { + name: 'ネパール・ルピー', + code: 'NPR', + symbol: '₨', + numericCode: '524', + }, + { + name: 'ニュージーランド・ドル', + code: 'NZD', + symbol: '$', + numericCode: '554', + }, + { + name: 'オマーン・リアル', + code: 'OMR', + symbol: '﷼', + numericCode: '512', + }, + { + name: 'バルボア', + code: 'PAB', + symbol: 'B/.', + numericCode: '590', + }, + { + name: 'ヌエボ・ソル', + code: 'PEN', + symbol: 'S/.', + numericCode: '604', + }, + { + name: 'キナ', + code: 'PGK', + symbol: '', + numericCode: '598', + }, + { + name: 'フィリピン・ペソ', + code: 'PHP', + symbol: 'Php', + numericCode: '608', + }, + { + name: 'パキスタン・ルピー', + code: 'PKR', + symbol: '₨', + numericCode: '586', + }, + { + name: 'ズウォティ', + code: 'PLN', + symbol: 'zł', + numericCode: '985', + }, + { + name: 'グアラニー', + code: 'PYG', + symbol: 'Gs', + numericCode: '600', + }, + { + name: 'カタール・リアル', + code: 'QAR', + symbol: '﷼', + numericCode: '634', + }, + { + name: 'ルーマニア・レウ', + code: 'RON', + symbol: 'lei', + numericCode: '946', + }, + { + name: 'セルビア・ディナール', + code: 'RSD', + symbol: 'Дин.', + numericCode: '941', + }, + { + name: 'ロシア・ルーブル', + code: 'RUB', + symbol: 'руб', + numericCode: '643', + }, + { + name: 'ルワンダ・フラン', + code: 'RWF', + symbol: '', + numericCode: '646', + }, + { + name: 'サウディ・リヤル', + code: 'SAR', + symbol: '﷼', + numericCode: '682', + }, + { + name: 'ソロモン諸島ドル', + code: 'SBD', + symbol: '$', + numericCode: '090', + }, + { + name: 'セーシェル・ルピー', + code: 'SCR', + symbol: '₨', + numericCode: '690', + }, + { + name: 'スーダン・ポンド', + code: 'SDG', + symbol: '', + numericCode: '938', + }, + { + name: 'スウェーデン・クローナ', + code: 'SEK', + symbol: 'kr', + numericCode: '752', + }, + { + name: 'シンガポール・ドル', + code: 'SGD', + symbol: '$', + numericCode: '702', + }, + { + name: 'セントヘレナ・ポンド', + code: 'SHP', + symbol: '£', + numericCode: '654', + }, + { + name: 'レオン', + code: 'SLE', + symbol: '', + numericCode: '925', + }, + { + name: 'ソマリア・シリング', + code: 'SOS', + symbol: 'S', + numericCode: '706', + }, + { + name: 'スリナム・ドル', + code: 'SRD', + symbol: '$', + numericCode: '968', + }, + { + name: '南スーダン・ポンド', + code: 'SSP', + symbol: '', + numericCode: '728', + }, + { + name: 'ドブラ', + code: 'STN', + symbol: 'Db', + numericCode: '930', + }, + { + name: 'シリア・ポンド', + code: 'SYP', + symbol: '£', + numericCode: '760', + }, + { + name: 'リランゲニ', + code: 'SZL', + symbol: '', + numericCode: '748', + }, + { + name: 'バーツ', + code: 'THB', + symbol: '฿', + numericCode: '764', + }, + { + name: 'ソモニ', + code: 'TJS', + symbol: '', + numericCode: '972', + }, + { + name: 'マナト', + code: 'TMT', + symbol: '', + numericCode: '934', + }, + { + name: 'チュニジア・ディナール', + code: 'TND', + symbol: '', + numericCode: '788', + }, + { + name: 'パアンガ', + code: 'TOP', + symbol: '', + numericCode: '776', + }, + { + name: 'トルコ・リラ', + code: 'TRY', + symbol: '₺', + numericCode: '949', + }, + { + name: 'トリニダード・トバゴ・ドル', + code: 'TTD', + symbol: 'TT$', + numericCode: '780', + }, + { + name: '新台湾ドル', + code: 'TWD', + symbol: 'NT$', + numericCode: '901', + }, + { + name: 'タンザニア・シリング', + code: 'TZS', + symbol: '', + numericCode: '834', + }, + { + name: 'フリヴニャ', + code: 'UAH', + symbol: '₴', + numericCode: '980', + }, + { + name: 'ウガンダ・シリング', + code: 'UGX', + symbol: '', + numericCode: '800', + }, + { + name: '米ドル', + code: 'USD', + symbol: '$', + numericCode: '840', + }, + { + name: 'ウルグアイ・ペソ', + code: 'UYU', + symbol: '$U', + numericCode: '858', + }, + { + name: 'ウズベキスタン・スム', + code: 'UZS', + symbol: 'лв', + numericCode: '860', + }, + { + name: 'ベネズエラ・ボリバル', + code: 'VES', + symbol: 'Bs', + numericCode: '928', + }, + { + name: 'ドン', + code: 'VND', + symbol: '₫', + numericCode: '704', + }, + { + name: 'バツ', + code: 'VUV', + symbol: '', + numericCode: '548', + }, + { + name: 'タラ', + code: 'WST', + symbol: '', + numericCode: '882', + }, + { + name: '中央アフリカCFAフラン', + code: 'XAF', + symbol: '', + numericCode: '950', + }, + { + name: '東カリブ・ドル', + code: 'XCD', + symbol: '$', + numericCode: '951', + }, + { + name: '西アフリカCFAフラン', + code: 'XOF', + symbol: '', + numericCode: '952', + }, + { + name: 'CFPフラン', + code: 'XPF', + symbol: '', + numericCode: '953', + }, + { + name: 'イエメン・リアル', + code: 'YER', + symbol: '﷼', + numericCode: '886', + }, + { + name: 'ランド', + code: 'ZAR', + symbol: 'R', + numericCode: '710', + }, + { + name: 'ロチ', + code: 'LSL', + symbol: '', + numericCode: '426', + }, + { + name: 'ナミビア・ドル', + code: 'NAD', + symbol: 'N$', + numericCode: '516', + }, + { + name: 'ザンビア・クワチャ', + code: 'ZMW', + symbol: 'K', + numericCode: '967', + }, + { + name: 'ジンバブエ・ドル', + code: 'ZWL', + symbol: '', + numericCode: '932', + }, +]; diff --git a/src/locales/ja/finance/index.ts b/src/locales/ja/finance/index.ts new file mode 100644 index 00000000000..45b6e46a0d2 --- /dev/null +++ b/src/locales/ja/finance/index.ts @@ -0,0 +1,18 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { FinanceDefinition } from '../../..'; +import account_type from './account_type'; +import currency from './currency'; +import transaction_description_pattern from './transaction_description_pattern'; +import transaction_type from './transaction_type'; + +const finance: FinanceDefinition = { + account_type, + currency, + transaction_description_pattern, + transaction_type, +}; + +export default finance; diff --git a/src/locales/ja/finance/transaction_description_pattern.ts b/src/locales/ja/finance/transaction_description_pattern.ts new file mode 100644 index 00000000000..1b989fa7f72 --- /dev/null +++ b/src/locales/ja/finance/transaction_description_pattern.ts @@ -0,0 +1,12 @@ +export default [ + '{{company.name}}での取引により、{{finance.currencyCode}} {{finance.amount}}がカード末尾****{{string.numeric(4)}}を使用して口座末尾***{{string.numeric(4)}}に請求されました。', + '{{finance.currencyCode}} {{finance.amount}}の{{finance.transactionType}}が{{company.name}}で処理されました。カード末尾****{{string.numeric(4)}}、口座末尾***{{string.numeric(4)}}が使用されています。', + '{{finance.currencyCode}} {{finance.amount}}の支払いが{{company.name}}で処理されました。この取引にはカード末尾****{{string.numeric(4)}}と口座末尾***{{string.numeric(4)}}がリンクされています。', + '{{finance.transactionType}}が{{company.name}}で確認されました。金額は{{finance.currencyCode}} {{finance.amount}}で、カード末尾****{{string.numeric(4)}}と口座末尾***{{string.numeric(4)}}が関連付けられています。', + 'あなたの取引が完了しました。{{company.name}}で{{finance.currencyCode}} {{finance.amount}}の{{finance.transactionType}}が行われ、カード末尾****{{string.numeric(4)}}と口座末尾***{{string.numeric(4)}}が利用されました。', + 'カード末尾****{{string.numeric(4)}}を使用して、{{company.name}}にて{{finance.currencyCode}} {{finance.amount}}の{{finance.transactionType}}が行われました。口座末尾***{{string.numeric(4)}}が利用されています。', + 'カード末尾****{{string.numeric(4)}}を使用して、{{finance.currencyCode}} {{finance.amount}}の{{finance.transactionType}}が{{company.name}}で実施されました。口座末尾***{{string.numeric(4)}}が利用されています。', + '取引が成功しました。{{company.name}}で{{finance.currencyCode}} {{finance.amount}}の{{finance.transactionType}}が実施され、カード末尾****{{string.numeric(4)}}と口座末尾***{{string.numeric(4)}}が使用されています。', + '取引通知: {{finance.currencyCode}} {{finance.amount}}の{{finance.transactionType}}が発生しました。{{company.name}}でカード末尾****{{string.numeric(4)}}と口座末尾***{{string.numeric(4)}}が使用されています。', + '金額{{finance.currencyCode}} {{finance.amount}}の{{finance.transactionType}}が{{company.name}}で行われました。カード末尾****{{string.numeric(4)}}と口座末尾***{{string.numeric(4)}}が使用されています。', +]; diff --git a/src/locales/ja/finance/transaction_type.ts b/src/locales/ja/finance/transaction_type.ts new file mode 100644 index 00000000000..6b67a1ad1ab --- /dev/null +++ b/src/locales/ja/finance/transaction_type.ts @@ -0,0 +1 @@ +export default ['入金', '引き落とし', '支払い', '請求']; diff --git a/src/locales/ja/food/adjective.ts b/src/locales/ja/food/adjective.ts new file mode 100644 index 00000000000..2fd04483aea --- /dev/null +++ b/src/locales/ja/food/adjective.ts @@ -0,0 +1,20 @@ +export default [ + 'あっさりした', + 'とろける', + 'なめらかな', + 'ふわふわの', + 'まろやかな', + 'コクのある', + 'サクサクの', + 'ジューシーな', + 'ピリ辛の', + '新鮮な', + '昔ながらの', + '本格的な', + '歯ごたえのある', + '濃厚な', + '特製の', + '甘辛い', + '自家製の', + '香ばしい', +]; diff --git a/src/locales/ja/food/description_pattern.ts b/src/locales/ja/food/description_pattern.ts new file mode 100644 index 00000000000..7f0fd9db0cb --- /dev/null +++ b/src/locales/ja/food/description_pattern.ts @@ -0,0 +1,8 @@ +export default [ + '{{food.adjective}}{{food.meat}}を丁寧に調理し、{{food.vegetable}}を添えた一品です。', + '{{food.adjective}}{{food.vegetable}}と{{food.meat}}を{{food.spice}}で味付けしました。', + '{{food.ethnic_category}}の伝統的な調理法で仕上げた{{food.meat}}料理。{{food.spice}}の香りが食欲をそそります。', + '{{food.fruit}}のソースをかけた{{food.adjective}}{{food.meat}}。デザート感覚でお楽しみください。', + '{{food.meat}}と{{food.vegetable}}を{{food.spice}}でじっくり煮込んだ、心温まる一品。', + '厳選した{{food.ingredient}}を使用した、{{food.adjective}}料理です。', +]; diff --git a/src/locales/ja/food/dish.ts b/src/locales/ja/food/dish.ts new file mode 100644 index 00000000000..b4b66bedd23 --- /dev/null +++ b/src/locales/ja/food/dish.ts @@ -0,0 +1,42 @@ +export default [ + 'うどん', + 'うな重', + 'おでん', + 'おにぎり', + 'お好み焼き', + 'お茶漬け', + 'から揚げ', + 'きんぴらごぼう', + 'けんちん汁', + 'しゃぶしゃぶ', + 'すき焼き', + 'そば', + 'たこ焼き', + 'とんかつ', + 'ひじきの煮物', + 'オムライス', + 'カツ丼', + 'カレーライス', + 'コロッケ', + 'チャーハン', + 'ハンバーグ', + 'ラーメン', + '冷奴', + '刺身', + '卵焼き', + '味噌汁', + '天ぷら', + '寿司', + '枝豆', + '漬物', + '焼きそば', + '焼き魚', + '煮魚', + '牛丼', + '筑前煮', + '肉じゃが', + '親子丼', + '豚汁', + '餃子', + '麻婆豆腐', +]; diff --git a/src/locales/ja/food/dish_pattern.ts b/src/locales/ja/food/dish_pattern.ts new file mode 100644 index 00000000000..b6aeb634a6e --- /dev/null +++ b/src/locales/ja/food/dish_pattern.ts @@ -0,0 +1,8 @@ +export default [ + '{{food.adjective}}{{food.meat}}', + '{{food.adjective}}{{food.vegetable}}', + '{{food.ethnic_category}}風{{food.meat}}料理', + '{{food.meat}}と{{food.vegetable}}の煮込み', + '{{food.meat}}の{{food.ethnic_category}}風', + '{{food.vegetable}}と{{food.meat}}の炒め物', +]; diff --git a/src/locales/ja/food/ethnic_category.ts b/src/locales/ja/food/ethnic_category.ts new file mode 100644 index 00000000000..e2d26040d25 --- /dev/null +++ b/src/locales/ja/food/ethnic_category.ts @@ -0,0 +1,22 @@ +export default [ + 'アメリカ', + 'イギリス', + 'イタリア', + 'インド', + 'インドネシア', + 'ギリシャ', + 'スペイン', + 'タイ', + 'トルコ', + 'ドイツ', + 'フランス', + 'ブラジル', + 'ベトナム', + 'メキシコ', + 'ロシア', + '中華', + '和風', + '地中海', + '洋風', + '韓国', +]; diff --git a/src/locales/ja/food/fruit.ts b/src/locales/ja/food/fruit.ts new file mode 100644 index 00000000000..0206e3bf8b1 --- /dev/null +++ b/src/locales/ja/food/fruit.ts @@ -0,0 +1,28 @@ +export default [ + 'あんず', + 'いちご', + 'かぼす', + 'さくらんぼ', + 'すいか', + 'すだち', + 'びわ', + 'ぶどう', + 'みかん', + 'もも', + 'ゆず', + 'りんご', + 'オレンジ', + 'キウイ', + 'グレープフルーツ', + 'バナナ', + 'パイナップル', + 'ブルーベリー', + 'プラム', + 'マンゴー', + 'メロン', + 'ライム', + 'ラズベリー', + 'レモン', + '柿', + '梨', +]; diff --git a/src/locales/ja/food/index.ts b/src/locales/ja/food/index.ts new file mode 100644 index 00000000000..65e4b8a870c --- /dev/null +++ b/src/locales/ja/food/index.ts @@ -0,0 +1,30 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { FoodDefinition } from '../../..'; +import adjective from './adjective'; +import description_pattern from './description_pattern'; +import dish from './dish'; +import dish_pattern from './dish_pattern'; +import ethnic_category from './ethnic_category'; +import fruit from './fruit'; +import ingredient from './ingredient'; +import meat from './meat'; +import spice from './spice'; +import vegetable from './vegetable'; + +const food: FoodDefinition = { + adjective, + description_pattern, + dish, + dish_pattern, + ethnic_category, + fruit, + ingredient, + meat, + spice, + vegetable, +}; + +export default food; diff --git a/src/locales/ja/food/ingredient.ts b/src/locales/ja/food/ingredient.ts new file mode 100644 index 00000000000..b0adda851e5 --- /dev/null +++ b/src/locales/ja/food/ingredient.ts @@ -0,0 +1,32 @@ +export default [ + 'うどん', + 'こんにゃく', + 'ごま油', + 'しらたき', + 'そば', + 'だし', + 'ひじき', + 'わかめ', + 'オリーブオイル', + 'チーズ', + 'バター', + 'パスタ', + 'パン', + 'パン粉', + 'ヨーグルト', + '卵', + '厚揚げ', + '味噌', + '天ぷら粉', + '小麦粉', + '昆布', + '油揚げ', + '海苔', + '片栗粉', + '牛乳', + '生クリーム', + '米', + '豆腐', + '醤油', + '鰹節', +]; diff --git a/src/locales/ja/food/meat.ts b/src/locales/ja/food/meat.ts new file mode 100644 index 00000000000..c8594999e98 --- /dev/null +++ b/src/locales/ja/food/meat.ts @@ -0,0 +1,26 @@ +export default [ + 'アジ', + 'イカ', + 'エビ', + 'カニ', + 'サバ', + 'サンマ', + 'サーモン', + 'ソーセージ', + 'タコ', + 'タラ', + 'ハム', + 'ブリ', + 'ベーコン', + 'ホタテ', + 'マグロ', + '七面鳥', + '牛肉', + '猪肉', + '羊肉', + '豚肉', + '馬肉', + '鴨肉', + '鶏肉', + '鹿肉', +]; diff --git a/src/locales/ja/food/spice.ts b/src/locales/ja/food/spice.ts new file mode 100644 index 00000000000..40851af9681 --- /dev/null +++ b/src/locales/ja/food/spice.ts @@ -0,0 +1,32 @@ +export default [ + 'からし', + 'ごま', + 'ごま油', + 'みりん', + 'わさび', + 'オレガノ', + 'カレー粉', + 'ガーリック', + 'クミン', + 'コチュジャン', + 'コリアンダー', + 'シナモン', + 'タイム', + 'ターメリック', + 'ナツメグ', + 'バジル', + 'パセリ', + 'ローズマリー', + '一味唐辛子', + '七味唐辛子', + '味噌', + '唐辛子', + '塩', + '山椒', + '砂糖', + '胡椒', + '豆板醤', + '酒', + '酢', + '醤油', +]; diff --git a/src/locales/ja/food/vegetable.ts b/src/locales/ja/food/vegetable.ts new file mode 100644 index 00000000000..21ca5ff267e --- /dev/null +++ b/src/locales/ja/food/vegetable.ts @@ -0,0 +1,38 @@ +export default [ + 'えのき', + 'かぼちゃ', + 'きのこ', + 'きゅうり', + 'ごぼう', + 'さつまいも', + 'さやいんげん', + 'しいたけ', + 'しめじ', + 'じゃがいも', + 'そら豆', + 'なす', + 'にんじん', + 'にんにく', + 'ほうれん草', + 'まいたけ', + 'もやし', + 'れんこん', + 'アスパラガス', + 'エリンギ', + 'カリフラワー', + 'キャベツ', + 'ズッキーニ', + 'トマト', + 'パプリカ', + 'ピーマン', + 'ブロッコリー', + 'レタス', + '大根', + '小松菜', + '枝豆', + '玉ねぎ', + '生姜', + '白菜', + '里芋', + '長ねぎ', +]; diff --git a/src/locales/ja/index.ts b/src/locales/ja/index.ts index 8e6730c3b34..3e84e46ea6a 100644 --- a/src/locales/ja/index.ts +++ b/src/locales/ja/index.ts @@ -4,12 +4,19 @@ */ import type { LocaleDefinition } from '../..'; import cell_phone from './cell_phone'; +import color from './color'; import company from './company'; +import date from './date'; +import finance from './finance'; +import food from './food'; +import internet from './internet'; import location from './location'; import lorem from './lorem'; import metadata from './metadata'; import person from './person'; import phone_number from './phone_number'; +import science from './science'; +import vehicle from './vehicle'; /** * The locale data for the `ja` locale. @@ -19,12 +26,19 @@ import phone_number from './phone_number'; */ const ja: LocaleDefinition = { cell_phone, + color, company, + date, + finance, + food, + internet, location, lorem, metadata, person, phone_number, + science, + vehicle, }; export default ja; diff --git a/src/locales/ja/internet/domain_suffix.ts b/src/locales/ja/internet/domain_suffix.ts new file mode 100644 index 00000000000..05af4d62f23 --- /dev/null +++ b/src/locales/ja/internet/domain_suffix.ts @@ -0,0 +1,13 @@ +export default [ + 'ac.jp', + 'co.jp', + 'com', + 'ed.jp', + 'go.jp', + 'jp', + 'lg.jp', + 'ne.jp', + 'net', + 'or.jp', + 'org', +]; diff --git a/src/locales/ja/internet/free_email.ts b/src/locales/ja/internet/free_email.ts new file mode 100644 index 00000000000..b3b9f062fd2 --- /dev/null +++ b/src/locales/ja/internet/free_email.ts @@ -0,0 +1,11 @@ +export default [ + 'docomo.ne.jp', + 'ezweb.ne.jp', + 'gmail.com', + 'hotmail.co.jp', + 'i.softbank.jp', + 'icloud.com', + 'outlook.jp', + 'softbank.ne.jp', + 'yahoo.co.jp', +]; diff --git a/src/locales/ja/internet/index.ts b/src/locales/ja/internet/index.ts new file mode 100644 index 00000000000..0b63b5f2fb5 --- /dev/null +++ b/src/locales/ja/internet/index.ts @@ -0,0 +1,14 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { InternetDefinition } from '../../..'; +import domain_suffix from './domain_suffix'; +import free_email from './free_email'; + +const internet: InternetDefinition = { + domain_suffix, + free_email, +}; + +export default internet; diff --git a/src/locales/ja/location/country.ts b/src/locales/ja/location/country.ts index 49f94fcdcfc..1fb85383c21 100644 --- a/src/locales/ja/location/country.ts +++ b/src/locales/ja/location/country.ts @@ -15,8 +15,7 @@ export default [ 'ベリーズ', 'ブータン', 'ボリビア', - 'ボスニヤ・', - 'ヘルツェゴビナ', + 'ボスニア・ヘルツェゴビナ', 'ボツワナ', 'ブラジル', 'ブルネイ', @@ -29,7 +28,8 @@ export default [ 'チリ', '中国', 'コロンビア', - 'コンゴ', + 'コンゴ共和国', + 'コンゴ民主共和国', 'コスタリカ', 'クロアチア', 'キューバ', @@ -55,10 +55,10 @@ export default [ 'グレナダ', 'グアテマラ', 'ギニア', - 'ガイヤナ', + 'ガイアナ', 'ハイチ', 'オランダ', - 'ホンジェラス', + 'ホンジュラス', '香港', 'ハンガリー', 'アイスランド', @@ -87,7 +87,7 @@ export default [ 'マラウィ', 'マレーシア', 'マルタ', - 'モルジブ', + 'モルディブ', 'モーリシャス', 'メキシコ', 'モルドバ', @@ -98,13 +98,12 @@ export default [ 'ミャンマー', 'ナミビア', 'ネパール', - 'ニューギニア', 'ニュージーランド', 'ニカラグア', 'ナイジェリア', '北朝鮮', 'ノルウェー', - 'オーマン', + 'オマーン', 'パキスタン', 'パレスチナ', 'パナマ', @@ -119,7 +118,6 @@ export default [ 'ロシア', 'ルワンダ', 'サウジアラビア', - 'スコットランド', 'セネガル', 'セイシェル', 'シンガポール', @@ -149,9 +147,7 @@ export default [ 'バチカン', 'ベネズエラ', 'ベトナム', - 'ウェールズ', 'イエメン', - 'ザイール', 'ザンビア', 'ジンバブエ', ]; diff --git a/src/locales/ja/lorem/word.ts b/src/locales/ja/lorem/word.ts index 525dab3be09..db220767a15 100644 --- a/src/locales/ja/lorem/word.ts +++ b/src/locales/ja/lorem/word.ts @@ -41,7 +41,6 @@ export default [ 'よわよわしい', '味噌', 'ぼきん', - 'くつじょく', '絹糸', 'ちきゅう', 'かぜ', @@ -72,7 +71,6 @@ export default [ 'ぶそう', 'こうつう', '逆', - '馬鹿馬鹿しい', '切迫', '不健康', '学院', @@ -89,16 +87,13 @@ export default [ 'むこう', 'ねんじゅう', '自宅', - '誘惑', 'ちえん', '太る', 'ちかく', - '奴ら', '堀川', 'ちがい', 'たいこうする', '運ぶ', - '独裁', 'はっぽう', 'とちょう', '先ず', @@ -125,7 +120,6 @@ export default [ '伐採', '牛乳', '秘める', - '右翼', '伝統', 'きひん', 'やさしい', @@ -136,7 +130,6 @@ export default [ 'むぜい', 'ごふく', 'かいたく', - '撃つ', 'しあとるし', 'シアトルし', 'ちょさくけん', @@ -147,12 +140,10 @@ export default [ '提案する', '哀れむ', '迷子', - 'きょうき', 'ごうけん', 'せんたくする', 'しゅしょう', '江戸', - '狂う', '助手', '新婚旅行', '検査', @@ -183,7 +174,6 @@ export default [ '不思議', 'この頃', 'おかね', - '殺人者', 'かいぞく', '歯を磨く', '店', @@ -205,21 +195,17 @@ export default [ '右利き', 'まほうつかい', '復旧', - 'かくじっけん', 'じきしょうそう', 'あれる', - 'きょうはんしゃ', 'たいりく', 'げんめつ', '俵', 'むらさきいろ', '病床', - '米兵', 'まつり', '塾生', '親切', 'めいがら', - '核実験', 'なおさら', '魔術', 'がいよう', @@ -259,7 +245,6 @@ export default [ 'いじん', '機嫌', '黒板', - 'えきびょう', '妥協する', 'つうやく', '乗せる', @@ -274,7 +259,6 @@ export default [ '窓', '雑音', 'きょだい', - '鈍器', '禍根', 'かたみち', '山葵', @@ -283,9 +267,7 @@ export default [ 'いっさくじつ', '救急車', '馬', - 'ころす', 'ぼくし', - 'せっぷく', 'たて', 'おどろく', 'やさい', @@ -294,13 +276,10 @@ export default [ 'いく', '自立', 'かっこう', - '脱税', '始まる', '学者', 'かい', - 'ひきさく', '長唄', - '下着', 'よくげつ', '休日', '以下', @@ -313,13 +292,11 @@ export default [ '頂く', 'よぼう', '壮年', - '斬殺', 'ちゅうもんする', 'じっかん', '境', 'つく', '活用', - 'ぶき', 'かいじゅう', '人口', 'ぼうず', @@ -336,7 +313,6 @@ export default [ '指紋', '超〜', 'つまる', - '靖国神社', 'とりあえず', 'とふ', 'たくす', @@ -344,7 +320,6 @@ export default [ '羊毛', '浅い', '閉じる', - '戦没', 'あっとうする', 'ひがい', '量', @@ -353,11 +328,9 @@ export default [ 'ほうせき', 'つばさ', '号', - 'けいむしょ', '電源', '勇気', 'ふかさ', - 'はだか', 'たいやく', 'きょうしつ', '退く', @@ -394,26 +367,22 @@ export default [ '憂い', '総括', 'もうす', - '暴力', 'しばふ', 'いたずら', '米国', '魔法', 'ことばつき', - '窒息', '唄う', '金', 'きもち', '誓い', 'どろ', '話', - '奇襲', '巡回', '失う', '隆起', '投資', '芽', - 'あくれい', '奉仕', 'ひんきゃく', 'ひんかく', @@ -436,7 +405,6 @@ export default [ '見当たる', '浸す', 'あしくび', - '弱虫', '送る', '遺失', 'あおい', @@ -446,7 +414,6 @@ export default [ 'かおつき', 'かちゅう', 'がんばる', - '芸者', '陳列室', '弥生', '明治', @@ -458,7 +425,6 @@ export default [ 'ぞくご', '掛ける', 'ほうしゅう', - '騎兵', '液体', '下さい', 'けいじばん', @@ -473,7 +439,6 @@ export default [ 'うんがいい', 'はちのす', 'ハチのす', - '色盲', '形', '希望する', 'いちだい', @@ -485,7 +450,6 @@ export default [ '大尉', '老齢', '差し上げる', - '犠牲', 'にる', '問題', '双', @@ -509,7 +473,6 @@ export default [ 'いち', 'やぶれる', '辞儀する', - '逮捕', '色彩', '妻', 'きづく', @@ -527,7 +490,6 @@ export default [ 'ごらく', '可愛い', 'ふじょ', - 'でんせんびょう', 'いちにち', 'ついたち', '彼女', @@ -557,13 +519,10 @@ export default [ 'ほんそう', '謙虚', '耐火', - 'ぼうりょく', '潔い', 'けす', '締まる', 'ちょうりょく', - 'のうし', - '暴走', '華道', '基盤', '廃棄', @@ -591,7 +550,6 @@ export default [ 'しっぷう', 'はやて', 'ほどう', - '敵', 'ひふ', '火', '壁', @@ -606,7 +564,6 @@ export default [ '輪郭', 'こづつみ', '扇', - '性病', '濃紺', '舞踏', 'つぎ', @@ -622,7 +579,6 @@ export default [ '慶弔', '疎外', 'れいてん', - '死ぬ', 'さと', '煩い', '携帯', @@ -639,11 +595,9 @@ export default [ '光年', '社員', 'もよう', - 'ぎゃくしゅう', '甲乙', 'ふくし', 'へいせい', - 'てんのう', '年次', '二巻', 'がくふ', @@ -652,7 +606,6 @@ export default [ 'おおごえ', 'かつぐ', '地下街', - 'はくじん', '間接', 'せっとく', 'つうこん', @@ -693,7 +646,6 @@ export default [ 'とうさく', '思い遣り', '鋭い', - '貞操', '原因', '象牙', '歌謡', @@ -707,15 +659,12 @@ export default [ '奔放', '非難', 'ようじ', - '錯乱', 'じこ', '前', '累進', '緊張する', 'ぎじゅく', 'うち', - '悪霊', - '枢軸', '子守歌', 'りゅうき', '雄犬', @@ -732,7 +681,6 @@ export default [ '椅子', 'いさぎよい', '枕', - '墓', '洗剤', 'たいがい', 'じしょ', @@ -759,7 +707,6 @@ export default [ 'じしん', '裏口', 'ふたたび', - '猿真似', 'しめらせる', 'みき', 'つぐなう', @@ -770,11 +717,9 @@ export default [ '指定する', '専門', '一生', - '平壌', '滝', 'じどうし', '着く', - '泥棒', '構え', 'きじゅつ', 'しょひょう', @@ -819,7 +764,6 @@ export default [ 'えんちょうする', 'こうとう', 'なげすてる', - 'なまけもの', 'あい', 'きとく', '審判', @@ -839,11 +783,9 @@ export default [ '錠', 'のうみん', '夏', - '野獣', '試験', '数詞', '毎日', - 'ぎせいしゃ', 'よくし', 'せん', 'おろし', @@ -853,8 +795,6 @@ export default [ 'ごらん', 'ばい', 'たい', - '拘置', - 'うらぎり', '競艇', 'かぐ', '悔しい', @@ -862,7 +802,6 @@ export default [ 'ために', 'ふうふ', 'ちょうせん', - '破壊', '困難', 'まんえつ', '移動', @@ -900,7 +839,6 @@ export default [ '不況', '人柄', 'はい', - '原潜', 'つみ', 'かんかつ', 'ぞうえん', @@ -927,12 +865,10 @@ export default [ '風潮', '沖縄', 'いか', - 'こうくうぼかん', 'かくれる', 'きぼうする', '媒介', 'れいぞうこ', - '冷酷', '紛らわしい', 'せんげん', '家具', @@ -942,14 +878,12 @@ export default [ '空き缶', '禅寺', '大文字', - '火葬', '雰囲気', '化粧', '忍者', 'ふんしゃ', '限る', 'ちゅうとはんぱ', - 'はずかしめる', '何度', '風船', 'こうぎょう', @@ -960,11 +894,9 @@ export default [ '教える', '程', '忘れ物', - '襲撃', 'かいころく', '月刊', 'となえる', - 'せんのう', 'ながさき', 'げんまい', '二つ', diff --git a/src/locales/ja/person/index.ts b/src/locales/ja/person/index.ts index 81ad6225b0b..732251a6a02 100644 --- a/src/locales/ja/person/index.ts +++ b/src/locales/ja/person/index.ts @@ -4,15 +4,27 @@ */ import type { PersonDefinition } from '../../..'; import first_name from './first_name'; +import job_area from './job_area'; +import job_descriptor from './job_descriptor'; +import job_title_pattern from './job_title_pattern'; +import job_type from './job_type'; import last_name from './last_name'; import last_name_pattern from './last_name_pattern'; import name_ from './name'; +import sex from './sex'; +import suffix from './suffix'; const person: PersonDefinition = { first_name, + job_area, + job_descriptor, + job_title_pattern, + job_type, last_name, last_name_pattern, name: name_, + sex, + suffix, }; export default person; diff --git a/src/locales/ja/person/job_area.ts b/src/locales/ja/person/job_area.ts new file mode 100644 index 00000000000..72d0363bf3b --- /dev/null +++ b/src/locales/ja/person/job_area.ts @@ -0,0 +1,26 @@ +export default [ + '営業', + 'マーケティング', + '人事', + '経理', + '財務', + '総務', + '法務', + '広報', + '企画', + '開発', + '研究', + '製造', + '品質管理', + '物流', + '購買', + '情報システム', + 'カスタマーサポート', + 'セールス', + 'ソリューション', + 'プロダクト', + 'インフラ', + 'セキュリティ', + 'データ', + 'クリエイティブ', +]; diff --git a/src/locales/ja/person/job_descriptor.ts b/src/locales/ja/person/job_descriptor.ts new file mode 100644 index 00000000000..5dc9cd8bb32 --- /dev/null +++ b/src/locales/ja/person/job_descriptor.ts @@ -0,0 +1,19 @@ +export default [ + 'シニア', + 'リード', + 'チーフ', + '主任', + '統括', + 'グローバル', + '国内', + '海外', + '戦略', + '事業', + '営業', + '技術', + '開発', + '製品', + '顧客', + '法人', + '個人', +]; diff --git a/src/locales/ja/person/job_title_pattern.ts b/src/locales/ja/person/job_title_pattern.ts new file mode 100644 index 00000000000..7bd182e72aa --- /dev/null +++ b/src/locales/ja/person/job_title_pattern.ts @@ -0,0 +1 @@ +export default ['{{person.jobDescriptor}}{{person.jobArea}}{{person.jobType}}']; diff --git a/src/locales/ja/person/job_type.ts b/src/locales/ja/person/job_type.ts new file mode 100644 index 00000000000..2365a87c531 --- /dev/null +++ b/src/locales/ja/person/job_type.ts @@ -0,0 +1,22 @@ +export default [ + 'マネージャー', + 'エンジニア', + 'デザイナー', + 'アナリスト', + 'コンサルタント', + 'ディレクター', + 'プロデューサー', + 'スペシャリスト', + 'コーディネーター', + 'アドバイザー', + 'プランナー', + 'アシスタント', + '担当', + '責任者', + '部長', + '課長', + '係長', + '主査', + '専門職', + '技師', +]; diff --git a/src/locales/ja/person/last_name.ts b/src/locales/ja/person/last_name.ts index 8f9a78a56ca..9bd8c0f21c2 100644 --- a/src/locales/ja/person/last_name.ts +++ b/src/locales/ja/person/last_name.ts @@ -20,5 +20,485 @@ export default { '田中', '鈴木', '高橋', + '山崎', + '森', + '池田', + '橋本', + '阿部', + '石川', + '山下', + '中島', + '石井', + '小川', + '前田', + '岡田', + '長谷川', + '藤田', + '後藤', + '近藤', + '村上', + '遠藤', + '青木', + '坂本', + '斉藤', + '福田', + '太田', + '西村', + '藤井', + '金子', + '岡本', + '藤原', + '中野', + '三浦', + '原田', + '中川', + '松田', + '竹内', + '小野', + '田村', + '中山', + '和田', + '石田', + '森田', + '上田', + '原', + '内田', + '柴田', + '酒井', + '宮崎', + '横山', + '高木', + '安藤', + '宮本', + '大野', + '小島', + '谷口', + '今井', + '工藤', + '高田', + '増田', + '丸山', + '杉山', + '村田', + '新井', + '大塚', + '小山', + '平野', + '藤本', + '野口', + '河野', + '上野', + '武田', + '松井', + '岩崎', + '千葉', + '菅原', + '木下', + '久保', + '佐野', + '野村', + '松尾', + '市川', + '菊地', + '杉本', + '島田', + '古川', + '大西', + '水野', + '桜井', + '高野', + '吉川', + '渡部', + '山内', + '飯田', + '西田', + '西川', + '菊池', + '小松', + '北村', + '安田', + '五十嵐', + '川口', + '関', + '平田', + '中田', + '久保田', + '服部', + '岩田', + '東', + '土屋', + '福島', + '川崎', + '本田', + '辻', + '樋口', + '秋山', + '永井', + '田口', + '山中', + '中西', + '吉村', + '川上', + '石原', + '大橋', + '松岡', + '馬場', + '浜田', + '森本', + '星野', + '浅野', + '矢野', + '大久保', + '松下', + '小池', + '吉岡', + '野田', + '荒木', + '内藤', + '大谷', + '松浦', + '熊谷', + '黒田', + '尾崎', + '永田', + '望月', + '荒井', + '田辺', + '川村', + '松村', + '堀', + '早川', + '栗原', + '大島', + '平井', + '西山', + '菅野', + '広瀬', + '石橋', + '横田', + '萩原', + '岩本', + '関口', + '片山', + '宮田', + '大石', + '吉野', + '高山', + '須藤', + '本間', + '岡崎', + '小田', + '伊東', + '上原', + '鎌田', + '篠原', + '小西', + '古賀', + '松原', + '福井', + '小泉', + '大森', + '奥村', + '南', + '成田', + '内山', + '川島', + '沢田', + '桑原', + '杉浦', + '三宅', + '片岡', + '富田', + '岡', + '八木', + '小沢', + '奥田', + '関根', + '松永', + '北川', + '河合', + '平山', + '牧野', + '白石', + '今村', + '寺田', + '青山', + '小倉', + '中尾', + '渋谷', + '上村', + '大山', + '小野寺', + '足立', + '岡村', + '天野', + '坂口', + '多田', + '佐久間', + '根本', + '豊田', + '田島', + '飯塚', + '角田', + '村山', + '武藤', + '白井', + '西', + '榎本', + '宮下', + '塚本', + '竹田', + '神谷', + '坂田', + '水谷', + '児玉', + '坂井', + '齋藤', + '浅井', + '岡部', + '小原', + '神田', + '森下', + '中井', + '植田', + '小笠原', + '河村', + '稲垣', + '宮川', + '前川', + '大川', + '飯島', + '松崎', + '長田', + '若林', + '谷', + '大沢', + '石塚', + '安部', + '堀内', + '田代', + '及川', + '中嶋', + '江口', + '中谷', + '山根', + '岸本', + '荒川', + '本多', + '西尾', + '森山', + '岡野', + '金井', + '細川', + '今野', + '稲葉', + '戸田', + '津田', + '安達', + '落合', + '森川', + '土井', + '村松', + '町田', + '星', + '三上', + '畠山', + '岩井', + '堤', + '長尾', + '中原', + '野崎', + '中沢', + '金田', + '米田', + '杉田', + '松山', + '堀田', + '西野', + '三好', + '山岸', + '佐伯', + '黒川', + '西岡', + '大竹', + '泉', + '甲斐', + '大木', + '笠原', + '堀江', + '岸', + '川田', + '徳永', + '須田', + '山川', + '黒木', + '榊原', + '古田', + '梅田', + '三木', + '野中', + '新田', + '大城', + '金城', + '村井', + '奥山', + '土田', + '滝沢', + '大村', + '川端', + '井口', + '梶原', + '宮城', + '大場', + '比嘉', + '長島', + '吉原', + '宮内', + '金沢', + '安井', + '庄司', + '大内', + '茂木', + '荻野', + '松島', + '日高', + '下田', + '向井', + '塚田', + '石黒', + '奥野', + '西本', + '広田', + '竹中', + '嶋田', + '栗田', + '福本', + '藤川', + '北野', + '藤野', + '宇野', + '川原', + '丹羽', + '谷川', + '小谷', + '青柳', + '吉本', + '竹下', + '竹本', + '藤岡', + '古谷', + '緒方', + '平川', + '亀井', + '藤村', + '高島', + '三輪', + '篠崎', + '藤沢', + '窪田', + '宮原', + '根岸', + '高井', + '下村', + '高瀬', + '山村', + '小澤', + '川本', + '柳沢', + '横井', + '吉沢', + '武井', + '出口', + '小森', + '竹村', + '長野', + '志村', + '宮沢', + '平松', + '臼井', + '黒沢', + '福岡', + '溝口', + '田原', + '稲田', + '浅田', + '奧村', + '柳田', + '筒井', + '永野', + '大原', + '瀬戸', + '冨田', + '林田', + '大平', + '手塚', + '篠田', + '入江', + '北原', + '福永', + '矢島', + '富永', + '小出', + '湯浅', + '鶴田', + '沼田', + '堀口', + '岩瀬', + '高松', + '長岡', + '山岡', + '大田', + '澤田', + '石崎', + '大槻', + '石山', + '池上', + '堀川', + '二宮', + '島崎', + '柏木', + '園田', + '奧田', + '相馬', + '平岡', + '花田', + '杉原', + '加納', + '村瀬', + '川野', + '内海', + '片桐', + '倉田', + '長沢', + '野沢', + '河原', + '秋元', + '福原', + '松野', + '西原', + '越智', + '笠井', + '小坂', + '田畑', + '北島', + '渡邊', + '日野', + '谷本', + '吉井', + '深沢', + '千田', + '西沢', + '相沢', + '徳田', + '原口', + '米山', + '細谷', + '小柳', + '新谷', + '田上', + '今泉', + '浜野', + '菅', + '森岡', ], }; diff --git a/src/locales/ja/person/sex.ts b/src/locales/ja/person/sex.ts new file mode 100644 index 00000000000..55eeaa45eb2 --- /dev/null +++ b/src/locales/ja/person/sex.ts @@ -0,0 +1 @@ +export default ['女性', '男性']; diff --git a/src/locales/ja/person/suffix.ts b/src/locales/ja/person/suffix.ts new file mode 100644 index 00000000000..7bf1abf8e78 --- /dev/null +++ b/src/locales/ja/person/suffix.ts @@ -0,0 +1 @@ +export default ['様', 'さん', '殿', '君', 'ちゃん', '先生', '氏']; diff --git a/src/locales/ja/science/chemical_element.ts b/src/locales/ja/science/chemical_element.ts new file mode 100644 index 00000000000..36241ee6264 --- /dev/null +++ b/src/locales/ja/science/chemical_element.ts @@ -0,0 +1,592 @@ +export default [ + { + symbol: 'H', + name: '水素', + atomicNumber: 1, + }, + { + symbol: 'He', + name: 'ヘリウム', + atomicNumber: 2, + }, + { + symbol: 'Li', + name: 'リチウム', + atomicNumber: 3, + }, + { + symbol: 'Be', + name: 'ベリリウム', + atomicNumber: 4, + }, + { + symbol: 'B', + name: 'ホウ素', + atomicNumber: 5, + }, + { + symbol: 'C', + name: '炭素', + atomicNumber: 6, + }, + { + symbol: 'N', + name: '窒素', + atomicNumber: 7, + }, + { + symbol: 'O', + name: '酸素', + atomicNumber: 8, + }, + { + symbol: 'F', + name: 'フッ素', + atomicNumber: 9, + }, + { + symbol: 'Ne', + name: 'ネオン', + atomicNumber: 10, + }, + { + symbol: 'Na', + name: 'ナトリウム', + atomicNumber: 11, + }, + { + symbol: 'Mg', + name: 'マグネシウム', + atomicNumber: 12, + }, + { + symbol: 'Al', + name: 'アルミニウム', + atomicNumber: 13, + }, + { + symbol: 'Si', + name: 'ケイ素', + atomicNumber: 14, + }, + { + symbol: 'P', + name: 'リン', + atomicNumber: 15, + }, + { + symbol: 'S', + name: '硫黄', + atomicNumber: 16, + }, + { + symbol: 'Cl', + name: '塩素', + atomicNumber: 17, + }, + { + symbol: 'Ar', + name: 'アルゴン', + atomicNumber: 18, + }, + { + symbol: 'K', + name: 'カリウム', + atomicNumber: 19, + }, + { + symbol: 'Ca', + name: 'カルシウム', + atomicNumber: 20, + }, + { + symbol: 'Sc', + name: 'スカンジウム', + atomicNumber: 21, + }, + { + symbol: 'Ti', + name: 'チタン', + atomicNumber: 22, + }, + { + symbol: 'V', + name: 'バナジウム', + atomicNumber: 23, + }, + { + symbol: 'Cr', + name: 'クロム', + atomicNumber: 24, + }, + { + symbol: 'Mn', + name: 'マンガン', + atomicNumber: 25, + }, + { + symbol: 'Fe', + name: '鉄', + atomicNumber: 26, + }, + { + symbol: 'Co', + name: 'コバルト', + atomicNumber: 27, + }, + { + symbol: 'Ni', + name: 'ニッケル', + atomicNumber: 28, + }, + { + symbol: 'Cu', + name: '銅', + atomicNumber: 29, + }, + { + symbol: 'Zn', + name: '亜鉛', + atomicNumber: 30, + }, + { + symbol: 'Ga', + name: 'ガリウム', + atomicNumber: 31, + }, + { + symbol: 'Ge', + name: 'ゲルマニウム', + atomicNumber: 32, + }, + { + symbol: 'As', + name: 'ヒ素', + atomicNumber: 33, + }, + { + symbol: 'Se', + name: 'セレン', + atomicNumber: 34, + }, + { + symbol: 'Br', + name: '臭素', + atomicNumber: 35, + }, + { + symbol: 'Kr', + name: 'クリプトン', + atomicNumber: 36, + }, + { + symbol: 'Rb', + name: 'ルビジウム', + atomicNumber: 37, + }, + { + symbol: 'Sr', + name: 'ストロンチウム', + atomicNumber: 38, + }, + { + symbol: 'Y', + name: 'イットリウム', + atomicNumber: 39, + }, + { + symbol: 'Zr', + name: 'ジルコニウム', + atomicNumber: 40, + }, + { + symbol: 'Nb', + name: 'ニオブ', + atomicNumber: 41, + }, + { + symbol: 'Mo', + name: 'モリブデン', + atomicNumber: 42, + }, + { + symbol: 'Tc', + name: 'テクネチウム', + atomicNumber: 43, + }, + { + symbol: 'Ru', + name: 'ルテニウム', + atomicNumber: 44, + }, + { + symbol: 'Rh', + name: 'ロジウム', + atomicNumber: 45, + }, + { + symbol: 'Pd', + name: 'パラジウム', + atomicNumber: 46, + }, + { + symbol: 'Ag', + name: '銀', + atomicNumber: 47, + }, + { + symbol: 'Cd', + name: 'カドミウム', + atomicNumber: 48, + }, + { + symbol: 'In', + name: 'インジウム', + atomicNumber: 49, + }, + { + symbol: 'Sn', + name: 'スズ', + atomicNumber: 50, + }, + { + symbol: 'Sb', + name: 'アンチモン', + atomicNumber: 51, + }, + { + symbol: 'Te', + name: 'テルル', + atomicNumber: 52, + }, + { + symbol: 'I', + name: 'ヨウ素', + atomicNumber: 53, + }, + { + symbol: 'Xe', + name: 'キセノン', + atomicNumber: 54, + }, + { + symbol: 'Cs', + name: 'セシウム', + atomicNumber: 55, + }, + { + symbol: 'Ba', + name: 'バリウム', + atomicNumber: 56, + }, + { + symbol: 'La', + name: 'ランタン', + atomicNumber: 57, + }, + { + symbol: 'Ce', + name: 'セリウム', + atomicNumber: 58, + }, + { + symbol: 'Pr', + name: 'プラセオジム', + atomicNumber: 59, + }, + { + symbol: 'Nd', + name: 'ネオジム', + atomicNumber: 60, + }, + { + symbol: 'Pm', + name: 'プロメチウム', + atomicNumber: 61, + }, + { + symbol: 'Sm', + name: 'サマリウム', + atomicNumber: 62, + }, + { + symbol: 'Eu', + name: 'ユウロピウム', + atomicNumber: 63, + }, + { + symbol: 'Gd', + name: 'ガドリニウム', + atomicNumber: 64, + }, + { + symbol: 'Tb', + name: 'テルビウム', + atomicNumber: 65, + }, + { + symbol: 'Dy', + name: 'ジスプロシウム', + atomicNumber: 66, + }, + { + symbol: 'Ho', + name: 'ホルミウム', + atomicNumber: 67, + }, + { + symbol: 'Er', + name: 'エルビウム', + atomicNumber: 68, + }, + { + symbol: 'Tm', + name: 'ツリウム', + atomicNumber: 69, + }, + { + symbol: 'Yb', + name: 'イッテルビウム', + atomicNumber: 70, + }, + { + symbol: 'Lu', + name: 'ルテチウム', + atomicNumber: 71, + }, + { + symbol: 'Hf', + name: 'ハフニウム', + atomicNumber: 72, + }, + { + symbol: 'Ta', + name: 'タンタル', + atomicNumber: 73, + }, + { + symbol: 'W', + name: 'タングステン', + atomicNumber: 74, + }, + { + symbol: 'Re', + name: 'レニウム', + atomicNumber: 75, + }, + { + symbol: 'Os', + name: 'オスミウム', + atomicNumber: 76, + }, + { + symbol: 'Ir', + name: 'イリジウム', + atomicNumber: 77, + }, + { + symbol: 'Pt', + name: '白金', + atomicNumber: 78, + }, + { + symbol: 'Au', + name: '金', + atomicNumber: 79, + }, + { + symbol: 'Hg', + name: '水銀', + atomicNumber: 80, + }, + { + symbol: 'Tl', + name: 'タリウム', + atomicNumber: 81, + }, + { + symbol: 'Pb', + name: '鉛', + atomicNumber: 82, + }, + { + symbol: 'Bi', + name: 'ビスマス', + atomicNumber: 83, + }, + { + symbol: 'Po', + name: 'ポロニウム', + atomicNumber: 84, + }, + { + symbol: 'At', + name: 'アスタチン', + atomicNumber: 85, + }, + { + symbol: 'Rn', + name: 'ラドン', + atomicNumber: 86, + }, + { + symbol: 'Fr', + name: 'フランシウム', + atomicNumber: 87, + }, + { + symbol: 'Ra', + name: 'ラジウム', + atomicNumber: 88, + }, + { + symbol: 'Ac', + name: 'アクチニウム', + atomicNumber: 89, + }, + { + symbol: 'Th', + name: 'トリウム', + atomicNumber: 90, + }, + { + symbol: 'Pa', + name: 'プロトアクチニウム', + atomicNumber: 91, + }, + { + symbol: 'U', + name: 'ウラン', + atomicNumber: 92, + }, + { + symbol: 'Np', + name: 'ネプツニウム', + atomicNumber: 93, + }, + { + symbol: 'Pu', + name: 'プルトニウム', + atomicNumber: 94, + }, + { + symbol: 'Am', + name: 'アメリシウム', + atomicNumber: 95, + }, + { + symbol: 'Cm', + name: 'キュリウム', + atomicNumber: 96, + }, + { + symbol: 'Bk', + name: 'バークリウム', + atomicNumber: 97, + }, + { + symbol: 'Cf', + name: 'カリフォルニウム', + atomicNumber: 98, + }, + { + symbol: 'Es', + name: 'アインスタイニウム', + atomicNumber: 99, + }, + { + symbol: 'Fm', + name: 'フェルミウム', + atomicNumber: 100, + }, + { + symbol: 'Md', + name: 'メンデレビウム', + atomicNumber: 101, + }, + { + symbol: 'No', + name: 'ノーベリウム', + atomicNumber: 102, + }, + { + symbol: 'Lr', + name: 'ローレンシウム', + atomicNumber: 103, + }, + { + symbol: 'Rf', + name: 'ラザホージウム', + atomicNumber: 104, + }, + { + symbol: 'Db', + name: 'ドブニウム', + atomicNumber: 105, + }, + { + symbol: 'Sg', + name: 'シーボーギウム', + atomicNumber: 106, + }, + { + symbol: 'Bh', + name: 'ボーリウム', + atomicNumber: 107, + }, + { + symbol: 'Hs', + name: 'ハッシウム', + atomicNumber: 108, + }, + { + symbol: 'Mt', + name: 'マイトネリウム', + atomicNumber: 109, + }, + { + symbol: 'Ds', + name: 'ダームスタチウム', + atomicNumber: 110, + }, + { + symbol: 'Rg', + name: 'レントゲニウム', + atomicNumber: 111, + }, + { + symbol: 'Cn', + name: 'コペルニシウム', + atomicNumber: 112, + }, + { + symbol: 'Nh', + name: 'ニホニウム', + atomicNumber: 113, + }, + { + symbol: 'Fl', + name: 'フレロビウム', + atomicNumber: 114, + }, + { + symbol: 'Mc', + name: 'モスコビウム', + atomicNumber: 115, + }, + { + symbol: 'Lv', + name: 'リバモリウム', + atomicNumber: 116, + }, + { + symbol: 'Ts', + name: 'テネシン', + atomicNumber: 117, + }, + { + symbol: 'Og', + name: 'オガネソン', + atomicNumber: 118, + }, +]; diff --git a/src/locales/ja/science/index.ts b/src/locales/ja/science/index.ts new file mode 100644 index 00000000000..91968423bbf --- /dev/null +++ b/src/locales/ja/science/index.ts @@ -0,0 +1,14 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { ScienceDefinition } from '../../..'; +import chemical_element from './chemical_element'; +import unit from './unit'; + +const science: ScienceDefinition = { + chemical_element, + unit, +}; + +export default science; diff --git a/src/locales/ja/science/unit.ts b/src/locales/ja/science/unit.ts new file mode 100644 index 00000000000..765054647c1 --- /dev/null +++ b/src/locales/ja/science/unit.ts @@ -0,0 +1,118 @@ +export default [ + { + name: 'メートル', + symbol: 'm', + }, + { + name: '秒', + symbol: 's', + }, + { + name: 'モル', + symbol: 'mol', + }, + { + name: 'アンペア', + symbol: 'A', + }, + { + name: 'ケルビン', + symbol: 'K', + }, + { + name: 'カンデラ', + symbol: 'cd', + }, + { + name: 'キログラム', + symbol: 'kg', + }, + { + name: 'ラジアン', + symbol: 'rad', + }, + { + name: 'ヘルツ', + symbol: 'Hz', + }, + { + name: 'ニュートン', + symbol: 'N', + }, + { + name: 'パスカル', + symbol: 'Pa', + }, + { + name: 'ジュール', + symbol: 'J', + }, + { + name: 'ワット', + symbol: 'W', + }, + { + name: 'クーロン', + symbol: 'C', + }, + { + name: 'ボルト', + symbol: 'V', + }, + { + name: 'オーム', + symbol: 'Ω', + }, + { + name: 'テスラ', + symbol: 'T', + }, + { + name: '摂氏', + symbol: '°C', + }, + { + name: 'ルーメン', + symbol: 'lm', + }, + { + name: 'ベクレル', + symbol: 'Bq', + }, + { + name: 'グレイ', + symbol: 'Gy', + }, + { + name: 'シーベルト', + symbol: 'Sv', + }, + { + name: 'ステラジアン', + symbol: 'sr', + }, + { + name: 'ファラド', + symbol: 'F', + }, + { + name: 'ジーメンス', + symbol: 'S', + }, + { + name: 'ウェーバー', + symbol: 'Wb', + }, + { + name: 'ヘンリー', + symbol: 'H', + }, + { + name: 'ルクス', + symbol: 'lx', + }, + { + name: 'カタル', + symbol: 'kat', + }, +]; diff --git a/src/locales/ja/vehicle/fuel.ts b/src/locales/ja/vehicle/fuel.ts new file mode 100644 index 00000000000..cc59e904f13 --- /dev/null +++ b/src/locales/ja/vehicle/fuel.ts @@ -0,0 +1 @@ +export default ['ガソリン', 'ディーゼル', 'ハイブリット', '電気']; diff --git a/src/locales/ja/vehicle/index.ts b/src/locales/ja/vehicle/index.ts new file mode 100644 index 00000000000..434d70c58f3 --- /dev/null +++ b/src/locales/ja/vehicle/index.ts @@ -0,0 +1,14 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { VehicleDefinition } from '../../..'; +import fuel from './fuel'; +import type_ from './type'; + +const vehicle: VehicleDefinition = { + fuel, + type: type_, +}; + +export default vehicle; diff --git a/src/locales/ja/vehicle/type.ts b/src/locales/ja/vehicle/type.ts new file mode 100644 index 00000000000..ec4dbb6f480 --- /dev/null +++ b/src/locales/ja/vehicle/type.ts @@ -0,0 +1,11 @@ +export default [ + 'オープンカー', + 'クーペ', + 'コンパクトカー', + 'ステーションワゴン', + 'セダン', + 'トラック', + 'ハッチバック', + 'ピックアップトラック', + 'ミニバン', +]; diff --git a/src/locales/ka_GE/internet/domain_suffix.ts b/src/locales/ka_GE/internet/domain_suffix.ts index 0d18d04fb0a..92a5555411d 100644 --- a/src/locales/ka_GE/internet/domain_suffix.ts +++ b/src/locales/ka_GE/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['ge', 'com', 'net', 'org', 'com.ge', 'org.ge']; +export default ['com', 'com.ge', 'ge', 'net', 'org', 'org.ge']; diff --git a/src/locales/ka_GE/internet/free_email.ts b/src/locales/ka_GE/internet/free_email.ts index f78c5313508..5db5ce7c40a 100644 --- a/src/locales/ka_GE/internet/free_email.ts +++ b/src/locales/ka_GE/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'yahoo.com', 'posta.ge']; +export default ['gmail.com', 'posta.ge', 'yahoo.com']; diff --git a/src/locales/ko/animal/bear.ts b/src/locales/ko/animal/bear.ts new file mode 100644 index 00000000000..a9e51ce6c9e --- /dev/null +++ b/src/locales/ko/animal/bear.ts @@ -0,0 +1,10 @@ +export default [ + '느림보곰', + '대왕판다', + '북극곰', + '불곰', + '아메리카흑곰', + '아시아흑곰', + '안경곰', + '태양곰', +]; diff --git a/src/locales/ko/animal/bird.ts b/src/locales/ko/animal/bird.ts new file mode 100644 index 00000000000..6faecedce41 --- /dev/null +++ b/src/locales/ko/animal/bird.ts @@ -0,0 +1,91 @@ +export default [ + '가마우지', + '검둥오리', + '검둥오리사촌', + '검은다리솔새', + '구레나룻제비갈매기', + '굴뚝새', + '금강앵무', + '기러기', + '긴꼬리도둑갈매기', + '긴발톱할미새', + '까마귀', + '까치', + '깝작도요', + '꺅도요', + '꺅도요사촌', + '꼬마오리', + '꾀꼬리', + '꿩', + '나무발발이', + '넓적부리도요', + '논병아리', + '누른도요', + '느시', + '닭', + '댕기물떼새', + '도요타조', + '독수리', + '동박새', + '두루미', + '딱따구리', + '떼까마귀', + '뜸부기', + '레아', + '물총새', + '바다꿩', + '바다제비', + '바다직박구리', + '뱀눈새', + '뱁새', + '벌새', + '병아리', + '부엉이', + '붉은머리오목눈이', + '붉은발얼가니새', + '붉은왜가리', + '비둘기', + '뻐꾸기', + '뻐꾸기파랑새', + '뿔제비갈매기', + '사막꿩', + '소쩍새', + '송골매', + '쇠딱따구리', + '쇠재두루미', + '쇠흰턱딱새', + '쏙독새', + '아비', + '알락뜸부기', + '앵무새', + '에뮤', + '열대새', + '오리', + '오목눈이', + '올빼미', + '울새', + '재두루미', + '제비', + '조롱이', + '지빠귀', + '집비둘기', + '집참새', + '참새', + '칠면조', + '코뿔새', + '쿠바홍학', + '큰까마귀', + '키위', + '타조', + '펠리칸', + '호사북방오리', + '호아친', + '홍학', + '화식조', + '황로', + '황새', + '황제펭귄', + '회색앵무', + '후투티', + '흰머리오목눈이', +]; diff --git a/src/locales/ko/animal/cat.ts b/src/locales/ko/animal/cat.ts new file mode 100644 index 00000000000..da596f6b110 --- /dev/null +++ b/src/locales/ko/animal/cat.ts @@ -0,0 +1,82 @@ +export default [ + '네벨룽', + '노르웨이 숲고양이', + '뉴질랜드 쇼트헤어', + '데본 렉스', + '돈스코이', + '드래곤 리', + '드웰프', + '라가머핀', + '라아스', + '라이코이', + '라펌', + '랙돌', + '러시안 블랙', + '러시안 블루', + '러시안 태비', + '러시안 화이트', + '만달레이', + '말레이시아 고양이', + '맹크스', + '먼치킨', + '메인쿤', + '메콩 밥테일', + '미뉴에트', + '민스킨', + '바레인 딜문', + '발리니즈', + '밤비노', + '버먼', + '버미즈', + '버밀라', + '봄베이', + '브라질리안 쇼트헤어', + '브리티시 롱헤어', + '브리티시 쇼트헤어', + '샘 사웨트', + '샤르트뢰', + '세라데 쁘띠', + '세이셸', + '시벨라', + '아나톨리', + '아라비안 마우', + '아메리칸 링테일', + '아메리칸 쇼트헤어', + '아메리칸 와이어헤어', + '아메리칸 컬', + '아비시니안', + '아시안', + '엘프', + '오리건 렉스', + '오리엔탈 롱헤어', + '오리엔탈 바이컬러', + '오리엔탈 쇼트헤어', + '오스트레일리안 티파니', + '오시캣', + '오위히 밥', + '오호스 아즐레스', + '요크 초콜릿', + '유러피안 쇼트헤어', + '유크레이니언 레브코이', + '이그저틱 롱헤어', + '이그저틱 쇼트헤어', + '이집션 마우', + '자바니즈', + '재패니즈 밥테일', + '저먼 렉스', + '카슈미르', + '카오 마니', + '캘리포니아 스팽글드', + '컬러포인트 쇼트헤어', + '코니시 렉스', + '코랏', + '쿠릴리안 밥테일', + '킴릭', + '테네시 렉스', + '페르시안', + '페르시안 친칠라', + '포린 화이트', + '피터볼드', + '픽시 밥', + '히말라얀', +]; diff --git a/src/locales/ko/animal/index.ts b/src/locales/ko/animal/index.ts new file mode 100644 index 00000000000..4145373e033 --- /dev/null +++ b/src/locales/ko/animal/index.ts @@ -0,0 +1,20 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { AnimalDefinition } from '../../..'; +import bear from './bear'; +import bird from './bird'; +import cat from './cat'; +import pet_name from './pet_name'; +import rabbit from './rabbit'; + +const animal: AnimalDefinition = { + bear, + bird, + cat, + pet_name, + rabbit, +}; + +export default animal; diff --git a/src/locales/ko/animal/pet_name.ts b/src/locales/ko/animal/pet_name.ts new file mode 100644 index 00000000000..62247a20b4f --- /dev/null +++ b/src/locales/ko/animal/pet_name.ts @@ -0,0 +1,43 @@ +export default [ + '구름이', + '까미', + '꼬미', + '나비', + '누렁이', + '두부', + '똘이', + '레오', + '루나', + '루이', + '마루', + '망고', + '메리', + '모모', + '몽이', + '뭉치', + '미미', + '백구', + '별이', + '보리', + '봄이', + '뽀삐', + '사랑이', + '순돌이', + '아리', + '짜장이', + '초롱이', + '초코', + '치즈', + '코코', + '콩이', + '쿠키', + '탄이', + '토리', + '토순이', + '토토', + '퉁이', + '포도', + '하루', + '해피', + '호두', +]; diff --git a/src/locales/ko/animal/rabbit.ts b/src/locales/ko/animal/rabbit.ts new file mode 100644 index 00000000000..1f4c36e6c70 --- /dev/null +++ b/src/locales/ko/animal/rabbit.ts @@ -0,0 +1,63 @@ +export default [ + '강토끼', + '고산토끼', + '굴토끼', + '그라나다멧토끼', + '나탈붉은바위토끼', + '눈덧신토끼', + '뉴잉글랜드솜꼬리토끼', + '늪토끼', + '다이스솜꼬리토끼', + '덤불멧토끼', + '덤불토끼', + '데이비스산맥토끼', + '동부솜꼬리토끼', + '만자노산솜꼬리토끼', + '만주토끼', + '멕시코솜꼬리토끼', + '멕시코토끼', + '멧토끼', + '버마멧토끼', + '베네수엘라저지대토끼', + '북극토끼', + '브라질토끼', + '빗자루토끼', + '사막멧토끼', + '사막솜꼬리토끼', + '산솜꼬리토끼', + '산호세덤불토끼', + '서아프리카토끼', + '수마트라줄무늬토끼', + '스미스붉은바위토끼', + '습지토끼', + '아마미검은멧토끼', + '아메리카검은멧토끼', + '아비시니아멧토끼', + '아삼털토끼', + '아프리카사바나멧토끼', + '안남줄무늬토끼', + '알래스카토끼', + '애팔래치아솜꼬리토끼', + '야르칸드멧토끼', + '에티오피아고원멧토끼', + '에티오피아멧토끼', + '영양잭토끼', + '오밀테메솜꼬리토끼', + '윈난멧토끼', + '유럽산토끼', + '인도멧토끼', + '일본멧토끼', + '제임슨붉은바위토끼', + '중국멧토끼', + '캘리포니아멧토끼', + '케이프멧토끼', + '코르시카멧토끼', + '테우안테펙잭토끼', + '톨라이멧토끼', + '트레스마리아스토끼', + '피그미토끼', + '하이난멧토끼', + '휴이트붉은바위토끼', + '흰꼬리잭토끼', + '흰줄무늬잭토끼', +]; diff --git a/src/locales/ko/index.ts b/src/locales/ko/index.ts index 3fd3a96b26d..9411dec7a06 100644 --- a/src/locales/ko/index.ts +++ b/src/locales/ko/index.ts @@ -3,6 +3,7 @@ * Run 'pnpm run generate:locales' to update. */ import type { LocaleDefinition } from '../..'; +import animal from './animal'; import color from './color'; import company from './company'; import date from './date'; @@ -21,6 +22,7 @@ import word from './word'; * - Endonym: 한국어 */ const ko: LocaleDefinition = { + animal, color, company, date, diff --git a/src/locales/ko/internet/domain_suffix.ts b/src/locales/ko/internet/domain_suffix.ts index a6685854638..d34fcce6e1a 100644 --- a/src/locales/ko/internet/domain_suffix.ts +++ b/src/locales/ko/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['co.kr', 'com', 'biz', 'info', 'ne.kr', 'net', 'or.kr', 'org']; +export default ['biz', 'co.kr', 'com', 'info', 'ne.kr', 'net', 'or.kr', 'org']; diff --git a/src/locales/ko/internet/free_email.ts b/src/locales/ko/internet/free_email.ts index b59e49ef98e..f1b895b3881 100644 --- a/src/locales/ko/internet/free_email.ts +++ b/src/locales/ko/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'yahoo.co.kr', 'hanmail.net', 'naver.com']; +export default ['gmail.com', 'hanmail.net', 'naver.com', 'yahoo.co.kr']; diff --git a/src/locales/ko/location/index.ts b/src/locales/ko/location/index.ts index b7c2f060330..4c72814ca49 100644 --- a/src/locales/ko/location/index.ts +++ b/src/locales/ko/location/index.ts @@ -10,7 +10,7 @@ import postcode from './postcode'; import secondary_address from './secondary_address'; import state from './state'; import state_abbr from './state_abbr'; -import street_name from './street_name'; +import street_name_part from './street_name_part'; import street_pattern from './street_pattern'; import street_suffix from './street_suffix'; @@ -22,7 +22,7 @@ const location: LocationDefinition = { secondary_address, state, state_abbr, - street_name, + street_name_part, street_pattern, street_suffix, }; diff --git a/src/locales/ko/location/state.ts b/src/locales/ko/location/state.ts index 38fda6a3b66..9c06cfce010 100644 --- a/src/locales/ko/location/state.ts +++ b/src/locales/ko/location/state.ts @@ -1,19 +1,19 @@ export default [ - '강원', - '경기', - '경남', - '경북', - '광주', - '대구', - '대전', - '부산', - '서울', - '울산', - '인천', - '전남', - '전북', - '제주', - '충남', - '충북', - '세종', + '강원특별자치도', + '경기도', + '경상남도', + '경상북도', + '광주광역시', + '대구광역시', + '대전광역시', + '부산광역시', + '서울특별시', + '울산광역시', + '인천광역시', + '전라남도', + '전북특별자치도', + '제주특별자치도', + '충청남도', + '충청북도', + '세종특별자치시', ]; diff --git a/src/locales/ko/location/street_name.ts b/src/locales/ko/location/street_name.ts deleted file mode 100644 index a1c055f3578..00000000000 --- a/src/locales/ko/location/street_name.ts +++ /dev/null @@ -1,29 +0,0 @@ -export default [ - '상계', - '화곡', - '신정', - '목', - '잠실', - '면목', - '주안', - '중', - '정왕', - '구로', - '신월', - '연산', - '창', - '만수', - '중계', - '검단', - '상도', - '방배', - '장유', - '상', - '광명', - '신길', - '행신', - '대명', - '동탄', - '판교', - '연무', -]; diff --git a/src/locales/ko/location/street_name_part.ts b/src/locales/ko/location/street_name_part.ts new file mode 100644 index 00000000000..ac9f6ad305e --- /dev/null +++ b/src/locales/ko/location/street_name_part.ts @@ -0,0 +1,106 @@ +export default [ + '가거리', + '능양', + '광명', + '구로', + '검단', + '나팔꽃', + '노들', + '남구청', + '능마루', + '대명', + '도덕동', + '덕구', + '동오리', + '동탄', + '둔산', + '뚝섬', + '매기', + '먼골', + '만수', + '면목', + '목', + '문현', + '밀월', + '반여울', + '방곡', + '방배', + '백장', + '병목골', + '볼무당', + '비월', + '상', + '상남', + '상계', + '상도', + '새꽃', + '신길', + '신월', + '신정', + '선원', + '소문', + '수죽', + '승달', + '신기중앙', + '신도시', + '아리산', + '안농', + '야월', + '어룡도', + '연무', + '연산', + '영암', + '예곡', + '오계화산', + '옥명', + '완도', + '용봉', + '운정', + '원당', + '원산중앙', + '위양', + '유섬', + '은행마을', + '이안천', + '입동', + '작점리', + '장안', + '점', + '조련', + '죽전앞', + '지곡', + '중', + '중계', + '정왕', + '잠실', + '장유', + '주안', + '창', + '창포', + '천을', + '초천', + '충정', + '큰들', + '큰길목', + '탑골', + '터미널', + '토정', + '판교', + '편항', + '평산남', + '평택항', + '푸름', + '피솔', + '하내천', + '하북산', + '학송', + '한림상', + '합천', + '향남', + '호수공원', + '황골', + '흥동', + '화곡', + '행신', + '힘찬', +]; diff --git a/src/locales/ko/location/street_pattern.ts b/src/locales/ko/location/street_pattern.ts index b5dd696c055..10fe02fd29c 100644 --- a/src/locales/ko/location/street_pattern.ts +++ b/src/locales/ko/location/street_pattern.ts @@ -1 +1 @@ -export default ['{{location.street_name}}{{location.street_suffix}}']; +export default ['{{location.street_name_part}}{{location.street_suffix}}']; diff --git a/src/locales/ko/location/street_suffix.ts b/src/locales/ko/location/street_suffix.ts index 2db9c1924f1..6081e6e8a51 100644 --- a/src/locales/ko/location/street_suffix.ts +++ b/src/locales/ko/location/street_suffix.ts @@ -1 +1,14 @@ -export default ['읍', '면', '동']; +export default [ + '대로', + '로', + '길', + '1길', + '2길', + '3길', + '4길', + '5길', + '6길', + '7길', + '8길', + '9길', +]; diff --git a/src/locales/ku_ckb/index.ts b/src/locales/ku_ckb/index.ts new file mode 100644 index 00000000000..1d92eea2f4b --- /dev/null +++ b/src/locales/ku_ckb/index.ts @@ -0,0 +1,22 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { LocaleDefinition } from '../..'; +import lorem from './lorem'; +import metadata from './metadata'; +import person from './person'; + +/** + * The locale data for the `ku_ckb` locale. + * + * - Language: Kurdish (Sorani) + * - Endonym: کوردی (سۆرانی) + */ +const ku_ckb: LocaleDefinition = { + lorem, + metadata, + person, +}; + +export default ku_ckb; diff --git a/src/locales/ku_ckb/lorem/index.ts b/src/locales/ku_ckb/lorem/index.ts new file mode 100644 index 00000000000..fd79f833a72 --- /dev/null +++ b/src/locales/ku_ckb/lorem/index.ts @@ -0,0 +1,12 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { LoremDefinition } from '../../..'; +import word from './word'; + +const lorem: LoremDefinition = { + word, +}; + +export default lorem; diff --git a/src/locales/ku_ckb/lorem/word.ts b/src/locales/ku_ckb/lorem/word.ts new file mode 100644 index 00000000000..efdff3a0ada --- /dev/null +++ b/src/locales/ku_ckb/lorem/word.ts @@ -0,0 +1,51 @@ +export default [ + 'سڵاو', + 'پێش', + 'ئامادە', + 'ناوچە', + 'هەواڵ', + 'زمان', + 'دوو', + 'چیرۆک', + 'هەرزان', + 'ڕۆژ', + 'کورد', + 'ناو', + 'مەزنی', + 'خێزان', + 'شەو', + 'هەوا', + 'شار', + 'کەسی', + 'دەریا', + 'گەرمی', + 'بەفر', + 'ئەو', + 'کار', + 'تایبەت', + 'وەکو', + 'دەنگ', + 'ماڵ', + 'گۆڕانکاری', + 'هەست', + 'ژمارە', + 'کۆمەڵ', + 'پێویست', + 'سەرکەوتن', + 'باش', + 'ئازادی', + 'زۆر', + 'مەریوان', + 'بوون', + 'نووسین', + 'تکایە', + 'جوان', + 'ڕەنگ', + 'هەرگیز', + 'هەموو', + 'دەست', + 'هەمووان', + 'شارۆچکە', + 'کوردستان', + 'پەیام', +]; diff --git a/src/locales/ku_ckb/metadata.ts b/src/locales/ku_ckb/metadata.ts new file mode 100644 index 00000000000..cacdc1a603d --- /dev/null +++ b/src/locales/ku_ckb/metadata.ts @@ -0,0 +1,13 @@ +import type { PreBuiltMetadataDefinition } from '../../definitions/metadata'; + +const metadata: PreBuiltMetadataDefinition = { + title: 'Kurdish (Sorani)', + code: 'ku_ckb', + language: 'ku', + variant: 'ckb', + endonym: 'کوردی (سۆرانی)', + dir: 'rtl', + script: 'Arab', +}; + +export default metadata; diff --git a/src/locales/ku_ckb/person/first_name.ts b/src/locales/ku_ckb/person/first_name.ts new file mode 100644 index 00000000000..1ff56ec7fe7 --- /dev/null +++ b/src/locales/ku_ckb/person/first_name.ts @@ -0,0 +1,1212 @@ +export default { + generic: [ + 'ئارا', + 'ئارزۆك', + 'ئارۆس', + 'ئاریا', + 'ئارین', + 'ئارێز', + 'ئازو', + 'ئاڕۆنا', + 'ئاستیاگ', + 'ئاسۆس', + 'ئاشتی', + 'ئاڤێستان', + 'ئاكار', + 'ئامانج', + 'ئاهۆرا', + 'ئاواد', + 'ئاواره‌', + 'ئاوده‌نگ', + 'ئاوه‌ز', + 'ئایار', + 'ئه‌ژی', + 'ئه‌ژین', + 'ئه‌ڤره‌س', + 'ئه‌له‌ند', + 'ئه‌نگێز', + 'ئه‌وراد', + 'ئیریه‌ن', + 'ئیلام', + 'باواجی', + 'بڕست', + 'بنار', + 'به‌تین', + 'به‌خشی', + 'به‌رات', + 'به‌رخان', + 'به‌رزا', + 'به‌كار', + 'به‌هات', + 'به‌هره‌وه‌ر', + 'بۆژین', + 'بۆكان', + 'بۆكورد', + 'بینار', + 'بێخه‌م', + 'بێخه‌و', + 'بێدار', + 'پاسار', + 'پايز', + 'په‌روه‌ر', + 'په‌روه‌رد', + 'په‌سار', + 'په‌یام', + 'په‌یمان', + 'په‌یوه‌ست', + 'پێشمه‌رگه‌', + 'پێشین', + 'تامان', + 'ته‌مه‌ن', + 'ته‌مۆ', + 'تیشك', + 'جانۆ', + 'جمان', + 'جه‌هان', + 'جوان', + 'جودی', + 'جیهان', + 'چاوڕه‌ش', + 'چاوكاڵ', + 'چاوگه‌ش', + 'چیاڤان', + 'خاپوور', + 'خاك', + 'خامه‌', + 'خانان', + 'خاوه‌ن', + 'خه‌ڵات', + 'خه‌مان', + 'خه‌ون', + 'خولیا', + 'خومار', + 'خوێندكار', + 'خۆرژین', + 'خۆرلێر', + 'خۆشبین', + 'خێڵان', + 'دارین', + 'داسۆ', + 'داهات', + 'داهێن', + 'داوه‌ر', + 'دایری', + 'دلۆ', + 'دڵان', + 'دڵبرین', + 'دڵزار', + 'دڵكورد', + 'دڵگاز', + 'ده‌روون', + 'ده‌ستان', + 'ده‌شتێو', + 'ده‌وار', + 'دواڕۆژ', + 'دوانگه‌', + 'دۆستان', + 'دیده‌م', + 'دیلان', + 'دینۆ', + 'دێریاس', + 'دێنی', + 'ره‌وێن', + 'زاموا', + 'زریان', + 'زنار', + 'زه‌نگه‌نه‌', + 'زێڕیڤان', + 'ڕاپه‌ڕین', + 'ڕازڤان', + 'ڕاژ', + 'ڕاستبین', + 'ڕاستكار', + 'ڕاڤێن', + 'ڕند', + 'ڕه‌ڤین', + 'ڕه‌ڤێن', + 'ڕه‌هێڵه‌', + 'ڕه‌وشت', + 'ڕه‌وین', + 'ڕوانین', + 'ڕوون', + 'ڕووناكبیر', + 'ڕۆژ', + 'ڕۆژاڤ', + 'ڕۆژان', + 'ڕۆژبین', + 'ڕۆژگار', + 'ڕۆژه‌ڤ', + 'ڕۆهات', + 'ڕێژوان', + 'ڕێسا', + 'ڕێناس', + 'ژارۆ', + 'ژیلۆ', + 'ژین', + 'ساڕێژ', + 'سانۆ', + 'سانیار', + 'ساوێن', + 'سلیڤان', + 'سلێڤان', + 'سمیار', + 'سنوور', + 'سه‌ربه‌خۆ', + 'سه‌رسه‌نگ', + 'سه‌مان', + 'سه‌هین', + 'سه‌وار', + 'سۆزدار', + 'سۆكار', + 'سیڤه‌ر', + 'شاد', + 'شادڵ', + 'شادمان', + 'شانۆ', + 'شانۆكار', + 'شایان', + 'شه‌به‌نگ', + 'شه‌پۆل', + 'شه‌ده‌', + 'شه‌نكار', + 'شه‌یدا', + 'شۆشمێ', + 'شیراز', + 'شیروانه‌', + 'شیلۆ', + 'شێواز', + 'فریڤان', + 'فریوان', + 'كارا', + 'كاردا', + 'كارداكا', + 'كاژاو', + 'كاژیك', + 'كاشۆ', + 'كریڤان', + 'كه‌ڤین', + 'كه‌وان', + 'كوردان', + 'كوردستان', + 'كورده‌', + 'كورده‌وان', + 'كوردۆ', + 'كوردۆس', + 'كوردۆنیا', + 'كۆچه‌ر', + 'گه‌ردوون', + 'گه‌رمێن', + 'گه‌لۆ', + 'گورده‌', + 'گۆیژه‌', + 'لاجین', + 'لازۆ', + 'لاله‌', + 'لاوباخ', + 'لاوێن', + 'له‌زگین', + 'لۆڤان', + 'لێزان', + 'ماچۆ', + 'ماد', + 'ماژین', + 'ماڤین', + 'مانۆ', + 'ماوا', + 'ماوان', + 'مه‌تین', + 'مه‌رزان', + 'مه‌ست', + 'مه‌لۆ', + 'مه‌ڵۆ', + 'مه‌هاباد', + 'موكری', + 'ميلان', + 'میترا', + 'میدیا', + 'نارا', + 'ناڤین', + 'ناوا', + 'ناوان', + 'نسار', + 'نه‌خچه‌وان', + 'نه‌واز', + 'نه‌ورۆز', + 'نه‌وڕه‌س', + 'نوێخواز', + 'نوێیار', + 'نۆشان', + 'نیاز', + 'هاژان', + 'هاژۆ', + 'هانده‌ر', + 'هاوخوان', + 'هاوده‌م', + 'هاوده‌نگ', + 'هاوڕا', + 'هاوڕاز', + 'هاوژین', + 'هه‌رزه‌', + 'هه‌ژان', + 'هه‌ژێن', + 'هه‌ست', + 'هه‌ستی', + 'هه‌ڵبه‌ست', + 'هه‌ڵێن', + 'هه‌موار', + 'هه‌وار', + 'هه‌واڵ', + 'هه‌ور', + 'هۆبه‌', + 'هۆره‌', + 'هۆری', + 'هۆرین', + 'هۆزانه‌وان', + 'هۆزه‌', + 'هۆژان', + 'هۆژین', + 'هۆشین', + 'هۆڤار', + 'هۆڤان', + 'هیژا', + 'هێدی', + 'هێما', + 'وه‌رز', + 'وه‌سان', + 'وه‌شت', + 'وه‌شتی', + 'یاد', + 'یاداشت', + 'یاسا', + 'یانۆ', + 'یه‌سنا', + ], + female: [ + 'ئاران', + 'ئاره‌زوو', + 'ئازیز', + 'ئازێ', + 'ئاسان', + 'ئاسكه‌', + 'ئاسمان', + 'ئاشنا', + 'ئاڤار', + 'ئاڤێستا', + 'ئالین', + 'ئاڵا', + 'ئامان', + 'ئامێز', + 'ئاهه‌نگ', + 'ئاوار', + 'ئاواز', + 'ئاوان', + 'ئاورنگ', + 'ئاونگ', + 'ئاوین', + 'ئاوێز', + 'ئاوێزان', + 'ئاوێزه‌', + 'ئاوێن', + 'ئه‌خته‌ر', + 'ئه‌رسین', + 'ئه‌شك', + 'ئه‌فسوس', + 'ئه‌ڤین', + 'ئه‌ڵماس', + 'ئه‌وین', + 'ئیره‌م', + 'باڵا', + 'بناو', + 'به‌راو', + 'به‌رخه‌', + 'به‌رخی', + 'به‌رزی', + 'به‌رفین', + 'به‌ڕۆژ', + 'به‌ستۆره‌', + 'به‌سۆز', + 'به‌فراو', + 'به‌فره‌', + 'به‌فرین', + 'به‌ناز', + 'به‌هار', + 'به‌هره‌', + 'به‌هه‌ست', + 'به‌هێ', + 'به‌یان', + 'بێخال', + 'بێری', + 'بێریڤان', + 'بێریوان', + 'بێگه‌رد', + 'پاراو', + 'پاریا', + 'پاكیزه‌', + 'په‌پوله‌', + 'په‌خشان', + 'په‌رژین', + 'په‌رست', + 'په‌روا', + 'په‌روانه‌', + 'په‌روین', + 'په‌رۆش', + 'په‌ری', + 'په‌ریا', + 'په‌ریخان', + 'په‌ریزاد', + 'په‌ریناز', + 'پیرۆز', + 'تابان', + 'تابلۆ', + 'تابین', + 'تادوهیبا', + 'تارا', + 'تاسه‌', + 'تاشان', + 'تاڤان', + 'تاڤگه‌', + 'تانیا', + 'تروسكه‌', + 'ترێ', + 'تكا', + 'ته‌رزه‌', + 'ته‌لار', + 'ته‌لان', + 'ته‌مه‌', + 'توێشوو', + 'تیشكان', + 'تیشۆ', + 'جریوه‌', + 'چاومه‌ست', + 'چرا', + 'چرۆ', + 'چنار', + 'چنوور', + 'چه‌مان', + 'چه‌مانه‌', + 'چه‌مه‌ن', + 'چورچرا', + 'چۆپی', + 'چۆمان', + 'چیمه‌ن', + 'چینه‌', + 'حه‌یران', + 'خاڵان', + 'خانزاد', + 'خانم', + 'خاوه‌ر', + 'خه‌ج', + 'خه‌جۆ', + 'خه‌رامان', + 'خه‌رمان', + 'خه‌زاڵ', + 'خه‌زان', + 'خه‌زێ', + 'خه‌نده‌', + 'خولدا', + 'خوناو', + 'خونچه‌', + 'خۆشه‌ویست', + 'دالیا', + 'دانیا', + 'دره‌خشان', + 'دلۆڤان', + 'دڵخواز', + 'دڵخۆش', + 'دڵڤین', + 'دڵیار', + 'ده‌ریا', + 'ده‌شنێ', + 'ده‌لال', + 'دولبه‌ر', + 'دیده‌ن', + 'دییه‌', + 'دێبه‌ر', + 'دێریڤان', + 'دێرین', + 'رێژنە', + 'زارا', + 'زاری', + 'زامبیا', + 'زه‌رێ', + 'زیلان', + 'زین', + 'زیوین', + 'ڕازناو', + 'ڕازین', + 'ڕاژان', + 'ڕاژه‌', + 'ڕه‌زان', + 'ڕه‌زێ', + 'ڕه‌نده‌', + 'ڕه‌نوو', + 'ڕه‌وشه‌ن', + 'ڕوكه‌ن', + 'ڕووبار', + 'ڕووپاك', + 'ڕووخۆش', + 'ڕوویار', + 'ڕۆز', + 'ڕۆزا', + 'ڕۆژا', + 'ڕۆژین', + 'ڕۆژێ', + 'ڕۆشنا', + 'ڕێحان', + 'ڕێحانه‌', + 'ڕێزان', + 'ڕێواس', + 'ژاڵه‌', + 'ژه‌نین', + 'ژوان', + 'ژیان', + 'ژیران', + 'ژیلا', + 'ژینا', + 'ژیناو', + 'ژینۆ', + 'ژیوار', + 'سارا', + 'ساريا', + 'سارین', + 'سازان', + 'ساڤۆ', + 'سانا', + 'ساو', + 'ساوا', + 'ساوان', + 'ساوێن', + 'سایه‌', + 'ستاره‌', + 'ستێر', + 'سروه‌', + 'سزان', + 'سه‌ما', + 'سه‌نار', + 'سه‌ناریا', + 'سه‌نگین', + 'سه‌وزه‌', + 'سه‌یران', + 'سۆز', + 'سۆزان', + 'سۆلا', + 'سۆلاڤ', + 'سۆلین', + 'سۆما', + 'سۆمان', + 'سیرین', + 'سیلۆنا', + 'سیما', + 'سینه‌', + 'سێبه‌ر', + 'سێوان', + 'سێوه‌', + 'شاتو', + 'شاجوان', + 'شازاده‌', + 'شاكار', + 'شاوین', + 'شایه‌ن', + 'شلێر', + 'شنروێ', + 'شنه‌', + 'شنه‌با', + 'شنۆ', + 'شه‌ده‌', + 'شه‌ده‌لار', + 'شه‌رمین', + 'شه‌ڵماسه', + 'شه‌م', + 'شه‌مام', + 'شه‌مه‌', + 'شه‌میله‌', + 'شه‌ن', + 'شه‌نگ', + 'شه‌نگه‌', + 'شه‌نیا', + 'شه‌هلا', + 'شه‌هێن', + 'شه‌وبۆ', + 'شۆخ', + 'شۆخان', + 'شیرین', + 'شیلا', + 'شیلان', + 'شێوه‌', + 'غه‌زاڵ', + 'غه‌زێ', + 'غه‌مگین', + 'فاتێ', + 'فرمیسك', + 'فرۆ', + 'فریشته‌', + 'ڤارونا', + 'ڤارین', + 'ڤالان', + 'ڤالیا', + 'ڤالینا', + 'ڤانا', + 'ڤانان', + 'ڤانیا', + 'ڤيان', + 'ڤین', + 'ڤینۆس', + 'كابان', + 'كارژین', + 'كاریا', + 'كازیوه‌', + 'كاسان', + 'كافێ', + 'كاكۆڵ', + 'كاڵا', + 'كاڵی', + 'كانگا', + 'كانی', + 'كانیاو', + 'كچان', + 'كه‌تان', + 'كه‌ژ', + 'كه‌ژاڵ', + 'كه‌ژان', + 'كه‌نار', + 'كه‌ویار', + 'كه‌وێ', + 'كوێستان', + 'كیژان', + 'كیژێ', + 'كیشوه‌ر', + 'گازێ', + 'گردان', + 'گزنگ', + 'گه‌رده‌', + 'گه‌زۆ', + 'گه‌زیزه‌', + 'گه‌شاو', + 'گه‌شاوه‌', + 'گه‌شبین', + 'گه‌شت', + 'گه‌لان', + 'گه‌لاوێژ', + 'گه‌ڵا', + 'گه‌نم', + 'گه‌وهه‌رێ', + 'گوڵئه‌ندام', + 'گوڵاڵه‌', + 'گوڵان', + 'گوڵبه‌ند', + 'گوڵبه‌هار', + 'گوڵچین', + 'گوڵزار', + 'گوڵژین', + 'گوڵشه‌ن', + 'گوڵه‌', + 'گوڵه‌باخ', + 'گوڵی', + 'گۆرانی', + 'گۆنا', + 'گۆیژ', + 'گیابه‌ند', + 'گێلاس', + 'لارا', + 'لارین', + 'لاڤه‌', + 'لاڤین', + 'لاله‌زار', + 'لانه‌', + 'لانۆ', + 'لانیا', + 'لاولاو', + 'لڤین', + 'له‌رێ', + 'له‌نجه‌', + 'له‌نده‌', + 'له‌نیا', + 'له‌نێ', + 'له‌یل', + 'له‌یلێ', + 'لۆكه‌', + 'لۆنا', + 'لیدیا', + 'لیسا', + 'مرواری', + 'مه‌تینا', + 'مه‌رزه‌', + 'مه‌روێ', + 'مه‌ستان', + 'مه‌ستوره‌', + 'مه‌ستی', + 'مه‌لان', + 'مه‌لین', + 'مه‌لێ', + 'مه‌ندانه‌', + 'مه‌نێ', + 'مه‌هۆ', + 'مه‌هێن', + 'مه‌یرۆ', + 'مینا', + 'میهره‌بان', + 'نارین', + 'ناز', + 'نازدار', + 'نازناز', + 'نازه‌', + 'نازه‌نین', + 'نازی', + 'نازیار', + 'نازیل', + 'نازیله‌', + 'نازیلێ', + 'نازێ', + 'ناسك', + 'ناسكه‌', + 'نالیا', + 'نالین', + 'ناهیده‌', + 'نسار', + 'نڤین', + 'نگین', + 'نمه‌', + 'نه‌خشه‌', + 'نه‌خشین', + 'نه‌رمین', + 'نه‌سرین', + 'نه‌شمیل', + 'نه‌غه‌ده‌', + 'نه‌كه‌رۆز', + 'نه‌مام', + 'نه‌وا', + 'نه‌وبه‌ش', + 'نه‌وبه‌هار', + 'نوخشه‌', + 'نیان', + 'نیشتیمان', + 'نیگار', + 'هاژه‌', + 'هاژین', + 'هانا', + 'هاوڕا', + 'هاوناز', + 'هه‌تاو', + 'هه‌ردین', + 'هه‌رمێ', + 'هه‌ژین', + 'هه‌ڤین', + 'هه‌مین', + 'هه‌نار', + 'هه‌نیسك', + 'هه‌وری', + 'هه‌وێن', + 'هۆزان', + 'هۆنیا', + 'هیران', + 'هێڤی', + 'هێلان', + 'هێلن', + 'ورشه‌', + 'وێنا', + 'یار', + 'یارا', + 'یاره‌', + ], + male: [ + 'ئاراز', + 'ئاراس', + 'ئارام', + 'ئاری', + 'ئاریاكۆ', + 'ئاریان', + 'ئاریانا', + 'ئاریانزاده‌', + 'ئاریانكۆ', + 'ئازا', + 'ئازاد', + 'ئاڕاڕات', + 'ئاسنگه‌ر', + 'ئاسۆ', + 'ئاكام', + 'ئاكۆ', + 'ئاكۆیان', + 'ئاگا', + 'ئاگری', + 'ئاگرین', + 'ئالان', + 'ئامه‌د', + 'ئانوبانینی', + 'ئاوات', + 'ئاوده‌ڵ', + 'ئاودێر', + 'ئه‌حمه‌د', + 'ئه‌رده‌ڵان', + 'ئه‌رده‌وان', + 'ئه‌رزین', + 'ئه‌رژانگ', + 'ئه‌رسه‌لان', + 'ئه‌ریوان', + 'ئه‌زمه‌ڕ', + 'ئه‌ژده‌ر', + 'ئه‌ڤداڵ', + 'ئومێد', + 'ئۆرخان', + 'ئۆردو', + 'ئیلخان', + 'ئیلیان', + 'ئێزید', + 'ئێڵبه‌گ', + 'باڵه‌ك', + 'باهۆز', + 'باهۆڤ', + 'باوان', + 'برزوو', + 'بروسك', + 'بروسكه‌', + 'بڕیار', + 'به‌ختیار', + 'به‌درخان', + 'به‌رخۆ', + 'به‌رزان', + 'به‌رزه‌', + 'به‌رهه‌م', + 'به‌ڕێز', + 'به‌شدار', + 'به‌كۆ', + 'به‌ڵێن', + 'به‌مۆ', + 'به‌نگین', + 'به‌هرۆز', + 'به‌هزاد', + 'به‌هێز', + 'بۆتان', + 'بیردۆز', + 'بیژه‌ن', + 'بێخود', + 'بێستوون', + 'بێكه‌س', + 'بێوار', + 'پاداشت', + 'پاكۆ', + 'پاڵه‌', + 'پرژه‌', + 'پشتیوان', + 'پشكۆ', + 'په‌رێز', + 'په‌سه‌ند', + 'په‌شێو', + 'په‌نهان', + 'په‌یوه‌ند', + 'پۆڵا', + 'پۆڵاين', + 'پیرۆ', + 'پیرۆت', + 'پێڕش', + 'پێشه‌نگ', + 'پێشه‌وا', + 'تاژدین', + 'تۆڵه‌', + 'تیشكۆ', + 'جه‌زا', + 'جوانڕۆ', + 'جووتكار', + 'جووتیار', + 'جێگر', + 'چاپك', + 'چالاك', + 'چه‌كۆ', + 'چیا', + 'چیاوار', + 'خاكی', + 'خاڵدی', + 'خاڵۆ', + 'خان', + 'خانی', + 'خانێ', + 'خه‌بات', + 'خه‌سره‌و', + 'خه‌یاس', + 'خورشید', + 'خۆربین', + 'خۆشناو', + 'خۆيبوون', + 'خێڵ', + 'دابان', + 'دارا', + 'داره‌شمانه‌', + 'داره‌وان', + 'دارۆ', + 'داس', + 'داستان', + 'داسن', + 'داكۆ', + 'دالان', + 'دانا', + 'دانار', + 'دانش', + 'دانه‌ر', + 'دانۆ', + 'دانیار', + 'دژوار', + 'دلاوه‌ر', + 'دلێر', + 'دڵدار', + 'دڵشاد', + 'ده‌رسیم', + 'ده‌شتی', + 'ده‌شتیوان', + 'ده‌وه‌ن', + 'دووربین', + 'دۆستی', + 'دیاری', + 'دیاكۆ', + 'دیدار', + 'دیلمان', + 'دیوانه‌', + 'دێوار', + 'زاخۆ', + 'زارۆ', + 'زاگرۆز', + 'زاگرۆس', + 'زامدار', + 'زانا', + 'زانكۆ', + 'زانوه‌ر', + 'زانیار', + 'زمناكۆ', + 'زه‌بوون', + 'زه‌رده‌شت', + 'زه‌ند', + 'زه‌نوێر', + 'زه‌هاو', + 'زه‌یتۆ', + 'زۆراب', + 'زۆزك', + 'زیره‌ك', + 'زێد', + 'زێڕۆ', + 'ڕابه‌ر', + 'ڕاسان', + 'ڕاستی', + 'ڕاڤین', + 'ڕامان', + 'ڕامته‌ن', + 'ڕامیار', + 'ڕاهۆز', + 'ڕاوه‌ن', + 'ڕاوێژ', + 'ڕزگار', + 'ڕه‌شۆ', + 'ڕه‌گه‌ز', + 'ڕه‌نج', + 'ڕه‌نجده‌ر', + 'ڕه‌نجه‌', + 'ڕه‌نجۆ', + 'ڕه‌ند', + 'ڕه‌ندۆ', + 'ڕه‌هبه‌ر', + 'ڕه‌هێڵ', + 'ڕه‌و', + 'ڕه‌وا', + 'ڕه‌وه‌ز', + 'ڕه‌وه‌ند', + 'ڕۆژڤان', + 'ڕۆسته‌م', + 'ڕۆشار', + 'ڕۆڤان', + 'ڕۆنیا', + 'ڕێبه‌ر', + 'ڕێبوار', + 'ڕێبین', + 'ڕێچكه‌', + 'ڕێكار', + 'ڕێكخه‌ر', + 'ڕێگا', + 'ڕێنوار', + 'ڕێوان', + 'ژه‌نیار', + 'ژیار', + 'ژیر', + 'ژیرۆ', + 'ژیله‌', + 'ژیله‌مۆ', + 'ساركان', + 'سارۆ', + 'سازۆ', + 'سالار', + 'ساماڵ', + 'سامان', + 'سان', + 'سمكۆ', + 'سه‌رباز', + 'سه‌ربه‌ست', + 'سه‌رپه‌ل', + 'سه‌رخێڵ', + 'سه‌رده‌شت', + 'سه‌رده‌م', + 'سه‌ركان', + 'سه‌ركه‌وت', + 'سه‌ركۆ', + 'سه‌رمه‌د', + 'سه‌رمه‌ست', + 'سه‌رناس', + 'سه‌رهه‌نگ', + 'سه‌رهۆز', + 'سه‌روان', + 'سه‌روه‌ر', + 'سه‌رۆ', + 'سه‌رۆك', + 'سه‌ریاز', + 'سه‌ریاس', + 'سه‌فین', + 'سه‌گرمه‌', + 'سه‌نگه‌ر', + 'سه‌هه‌ند', + 'سه‌یدا', + 'سه‌یدۆ', + 'سه‌یوان', + 'سوارچاك', + 'سواره‌', + 'سوپا', + 'سوپار', + 'سوركێو', + 'سوریاش', + 'سورێن', + 'سۆران', + 'سیامه‌ند', + 'سیپان', + 'سیدۆ', + 'سیروان', + 'شاباز', + 'شاخان', + 'شاخه‌', + 'شاخه‌وان', + 'شاخۆ', + 'شاخی', + 'شادۆ', + 'شادی', + 'شاره‌زوور', + 'شاروخ', + 'شارۆ', + 'شازاد', + 'شاسۆ', + 'شاكه‌ل', + 'شاكۆ', + 'شالیار', + 'شاڵاو', + 'شاهۆ', + 'شڤان', + 'شنگار', + 'شنگال', + 'شه‌پاڵ', + 'شه‌ره‌فخان', + 'شه‌ماڵ', + 'شه‌مدین', + 'شه‌مزین', + 'شه‌مۆ', + 'شه‌مێران', + 'شوان', + 'شوانكار', + 'شوانه‌', + 'شۆڕش', + 'شۆڕشگێر', + 'شۆڕه‌سوار', + 'شیروان', + 'شێر', + 'شێرزاد', + 'شێره‌', + 'شێروان', + 'شێرۆ', + 'عورفۆ', + 'غه‌مبار', + 'فریاد', + 'فه‌رمان', + 'فه‌رهاد', + 'فه‌رهه‌نگ', + 'فه‌ره‌یدوون', + 'فه‌ریاد', + 'قاره‌مان', + 'قه‌ندیل', + 'قوباد', + 'كاردۆ', + 'كاردۆخ', + 'كارزان', + 'كارمه‌ند', + 'كاروان', + 'كارۆ', + 'كاكل', + 'كاكۆ', + 'كاڵزۆ', + 'كامكار', + 'كامه‌ران', + 'كامه‌لا', + 'كامیار', + 'كامیاران', + 'كاوان', + 'كاوس', + 'كاوه‌', + 'كاوێس', + 'كریڤ', + 'كرێكار', + 'كه‌مه‌ند', + 'كه‌یخوسره‌و', + 'كورد', + 'كوردی', + 'كوردین', + 'كۆڕه‌ك', + 'كۆڕه‌و', + 'كۆژان', + 'كۆژه‌ن', + 'كۆسار', + 'كۆشش', + 'كۆشه‌ن', + 'كۆشین', + 'كۆڤان', + 'كۆمار', + 'كۆیار', + 'كیاكسار', + 'كێوبین', + 'گابار', + 'گاڤان', + 'گمۆ', + 'گه‌ردی', + 'گه‌رمیان', + 'گه‌شبیر', + 'گه‌نجۆ', + 'گورد', + 'گوردۆ', + 'گوروون', + 'گوندی', + 'گۆتی', + 'گۆران', + 'گۆڤه‌ند', + 'گیو', + 'لادێ', + 'لاز', + 'لازیان', + 'لاس', + 'لاڤۆ', + 'لالش', + 'لالۆ', + 'لاهۆ', + 'لاوچاك', + 'لاوزه‌ند', + 'لاوك', + 'لاوكۆ', + 'لاوه‌', + 'لوتكه‌', + 'لۆژین', + 'لۆلۆ', + 'لیڤا', + 'لیمۆ', + 'لێهات', + 'مادای', + 'مادۆ', + 'مازیار', + 'ماكوان', + 'ماكۆ', + 'ماكۆسان', + 'ماڵبات', + 'مامه‌سان', + 'مامۆ', + 'مانو', + 'مشكۆ', + 'مه‌به‌ست', + 'مه‌تۆ', + 'مه‌حوی', + 'مه‌رد', + 'مه‌ردان', + 'مه‌ریوان', + 'مه‌زدا', + 'مه‌زن', + 'مه‌شخه‌ڵ', + 'مه‌غدید', + 'مه‌كۆ', + 'مه‌م', + 'مه‌ملی', + 'مه‌مۆ', + 'مه‌ندان', + 'مه‌وله‌وی', + 'موكریان', + 'میتان', + 'میر', + 'میراكۆ', + 'میران', + 'میرخاس', + 'میرداد', + 'میرزا', + 'میركۆ', + 'میروان', + 'نالی', + 'نامدار', + 'نامۆ', + 'نه‌به‌رد', + 'نه‌به‌ز', + 'نه‌ریمان', + 'نه‌ژین', + 'نه‌مر', + 'نه‌وزاد', + 'نوێكار', + 'هارپاك', + 'هامنۆ', + 'هاوار', + 'هاوبیر', + 'هاوتا', + 'هاودیان', + 'هاوڕێ', + 'هاوژیر', + 'هاوكار', + 'هاوكورد', + 'هاومه‌ند', + 'هه‌رد', + 'هه‌رده‌ڤان', + 'هه‌رده‌م', + 'هه‌رده‌وان', + 'هه‌ردی', + 'هه‌رژین', + 'هه‌رمان', + 'هه‌ره‌س', + 'هه‌رێز', + 'هه‌رێم', + 'هه‌ژار', + 'هه‌ژده‌ر', + 'هه‌ژیر', + 'هه‌ستیار', + 'هه‌ڤاڵ', + 'هه‌ڵاڵه‌', + 'هه‌ڵكه‌وت', + 'هه‌ڵگورد', + 'هه‌ڵوێست', + 'هه‌ڵۆ', + 'هه‌مه‌دان', + 'هه‌ندرین', + 'هه‌وراز', + 'هه‌ورامان', + 'هوشیار', + 'هونه‌ر', + 'هۆرام', + 'هۆز', + 'هۆشمه‌ند', + 'هۆشه‌نگ', + 'هۆكار', + 'هۆگر', + 'هۆمه‌ر', + 'هۆنه‌ر', + 'هیزل', + 'هیوار', + 'هێرش', + 'هێمن', + 'وریا', + 'وڵات', + 'وه‌رزیر', + 'وه‌یس', + 'وه‌یسی', + 'یاپل', + 'یاخی', + 'یادگار', + 'یادوه‌ر', + 'یادۆ', + 'یارسان', + 'یارۆ', + 'یاوه‌ر', + 'یه‌زدانشێر', + 'یه‌زدین', + 'یه‌زید', + ], +}; diff --git a/src/locales/ku_ckb/person/index.ts b/src/locales/ku_ckb/person/index.ts new file mode 100644 index 00000000000..59b1e76e224 --- /dev/null +++ b/src/locales/ku_ckb/person/index.ts @@ -0,0 +1,26 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { PersonDefinition } from '../../..'; +import first_name from './first_name'; +import last_name from './last_name'; +import last_name_pattern from './last_name_pattern'; +import middle_name from './middle_name'; +import middle_name_pattern from './middle_name_pattern'; +import name_ from './name'; +import prefix from './prefix'; +import sex from './sex'; + +const person: PersonDefinition = { + first_name, + last_name, + last_name_pattern, + middle_name, + middle_name_pattern, + name: name_, + prefix, + sex, +}; + +export default person; diff --git a/src/locales/ku_ckb/person/last_name.ts b/src/locales/ku_ckb/person/last_name.ts new file mode 100644 index 00000000000..eef66c0943b --- /dev/null +++ b/src/locales/ku_ckb/person/last_name.ts @@ -0,0 +1,503 @@ +export default { + generic: [ + 'ئاراز', + 'ئاراس', + 'ئارام', + 'ئاری', + 'ئاریاكۆ', + 'ئاریان', + 'ئاریانا', + 'ئاریانزاده‌', + 'ئاریانكۆ', + 'ئازا', + 'ئازاد', + 'ئاڕاڕات', + 'ئاسنگه‌ر', + 'ئاسۆ', + 'ئاكام', + 'ئاكۆ', + 'ئاكۆیان', + 'ئاگا', + 'ئاگری', + 'ئاگرین', + 'ئالان', + 'ئامه‌د', + 'ئانوبانینی', + 'ئاوات', + 'ئاوده‌ڵ', + 'ئاودێر', + 'ئه‌حمه‌د', + 'ئه‌رده‌ڵان', + 'ئه‌رده‌وان', + 'ئه‌رزین', + 'ئه‌رژانگ', + 'ئه‌رسه‌لان', + 'ئه‌ریوان', + 'ئه‌زمه‌ڕ', + 'ئه‌ژده‌ر', + 'ئه‌ڤداڵ', + 'ئومێد', + 'ئۆرخان', + 'ئۆردو', + 'ئیلخان', + 'ئیلیان', + 'ئێزید', + 'ئێڵبه‌گ', + 'باڵه‌ك', + 'باهۆز', + 'باهۆڤ', + 'باوان', + 'برزوو', + 'بروسك', + 'بروسكه‌', + 'بڕیار', + 'به‌ختیار', + 'به‌درخان', + 'به‌رخۆ', + 'به‌رزان', + 'به‌رزه‌', + 'به‌رهه‌م', + 'به‌ڕێز', + 'به‌شدار', + 'به‌كۆ', + 'به‌ڵێن', + 'به‌مۆ', + 'به‌نگین', + 'به‌هرۆز', + 'به‌هزاد', + 'به‌هێز', + 'بۆتان', + 'بیردۆز', + 'بیژه‌ن', + 'بێخود', + 'بێستوون', + 'بێكه‌س', + 'بێوار', + 'پاداشت', + 'پاكۆ', + 'پاڵه‌', + 'پرژه‌', + 'پشتیوان', + 'پشكۆ', + 'په‌رێز', + 'په‌سه‌ند', + 'په‌شێو', + 'په‌نهان', + 'په‌یوه‌ند', + 'پۆڵا', + 'پۆڵاين', + 'پیرۆ', + 'پیرۆت', + 'پێڕش', + 'پێشه‌نگ', + 'پێشه‌وا', + 'تاژدین', + 'تۆڵه‌', + 'تیشكۆ', + 'جه‌زا', + 'جوانڕۆ', + 'جووتكار', + 'جووتیار', + 'جێگر', + 'چاپك', + 'چالاك', + 'چه‌كۆ', + 'چیا', + 'چیاوار', + 'خاكی', + 'خاڵدی', + 'خاڵۆ', + 'خان', + 'خانی', + 'خانێ', + 'خه‌بات', + 'خه‌سره‌و', + 'خه‌یاس', + 'خورشید', + 'خۆربین', + 'خۆشناو', + 'خۆيبوون', + 'خێڵ', + 'دابان', + 'دارا', + 'داره‌شمانه‌', + 'داره‌وان', + 'دارۆ', + 'داس', + 'داستان', + 'داسن', + 'داكۆ', + 'دالان', + 'دانا', + 'دانار', + 'دانش', + 'دانه‌ر', + 'دانۆ', + 'دانیار', + 'دژوار', + 'دلاوه‌ر', + 'دلێر', + 'دڵدار', + 'دڵشاد', + 'ده‌رسیم', + 'ده‌شتی', + 'ده‌شتیوان', + 'ده‌وه‌ن', + 'دووربین', + 'دۆستی', + 'دیاری', + 'دیاكۆ', + 'دیدار', + 'دیلمان', + 'دیوانه‌', + 'دێوار', + 'زاخۆ', + 'زارۆ', + 'زاگرۆز', + 'زاگرۆس', + 'زامدار', + 'زانا', + 'زانكۆ', + 'زانوه‌ر', + 'زانیار', + 'زمناكۆ', + 'زه‌بوون', + 'زه‌رده‌شت', + 'زه‌ند', + 'زه‌نوێر', + 'زه‌هاو', + 'زه‌یتۆ', + 'زۆراب', + 'زۆزك', + 'زیره‌ك', + 'زێد', + 'زێڕۆ', + 'ڕابه‌ر', + 'ڕاسان', + 'ڕاستی', + 'ڕاڤین', + 'ڕامان', + 'ڕامته‌ن', + 'ڕامیار', + 'ڕاهۆز', + 'ڕاوه‌ن', + 'ڕاوێژ', + 'ڕزگار', + 'ڕه‌شۆ', + 'ڕه‌گه‌ز', + 'ڕه‌نج', + 'ڕه‌نجده‌ر', + 'ڕه‌نجه‌', + 'ڕه‌نجۆ', + 'ڕه‌ند', + 'ڕه‌ندۆ', + 'ڕه‌هبه‌ر', + 'ڕه‌هێڵ', + 'ڕه‌و', + 'ڕه‌وا', + 'ڕه‌وه‌ز', + 'ڕه‌وه‌ند', + 'ڕۆژڤان', + 'ڕۆسته‌م', + 'ڕۆشار', + 'ڕۆڤان', + 'ڕۆنیا', + 'ڕێبه‌ر', + 'ڕێبوار', + 'ڕێبین', + 'ڕێچكه‌', + 'ڕێكار', + 'ڕێكخه‌ر', + 'ڕێگا', + 'ڕێنوار', + 'ڕێوان', + 'ژه‌نیار', + 'ژیار', + 'ژیر', + 'ژیرۆ', + 'ژیله‌', + 'ژیله‌مۆ', + 'ساركان', + 'سارۆ', + 'سازۆ', + 'سالار', + 'ساماڵ', + 'سامان', + 'سان', + 'سمكۆ', + 'سه‌رباز', + 'سه‌ربه‌ست', + 'سه‌رپه‌ل', + 'سه‌رخێڵ', + 'سه‌رده‌شت', + 'سه‌رده‌م', + 'سه‌ركان', + 'سه‌ركه‌وت', + 'سه‌ركۆ', + 'سه‌رمه‌د', + 'سه‌رمه‌ست', + 'سه‌رناس', + 'سه‌رهه‌نگ', + 'سه‌رهۆز', + 'سه‌روان', + 'سه‌روه‌ر', + 'سه‌رۆ', + 'سه‌رۆك', + 'سه‌ریاز', + 'سه‌ریاس', + 'سه‌فین', + 'سه‌گرمه‌', + 'سه‌نگه‌ر', + 'سه‌هه‌ند', + 'سه‌یدا', + 'سه‌یدۆ', + 'سه‌یوان', + 'سوارچاك', + 'سواره‌', + 'سوپا', + 'سوپار', + 'سوركێو', + 'سوریاش', + 'سورێن', + 'سۆران', + 'سیامه‌ند', + 'سیپان', + 'سیدۆ', + 'سیروان', + 'شاباز', + 'شاخان', + 'شاخه‌', + 'شاخه‌وان', + 'شاخۆ', + 'شاخی', + 'شادۆ', + 'شادی', + 'شاره‌زوور', + 'شاروخ', + 'شارۆ', + 'شازاد', + 'شاسۆ', + 'شاكه‌ل', + 'شاكۆ', + 'شالیار', + 'شاڵاو', + 'شاهۆ', + 'شڤان', + 'شنگار', + 'شنگال', + 'شه‌پاڵ', + 'شه‌ره‌فخان', + 'شه‌ماڵ', + 'شه‌مدین', + 'شه‌مزین', + 'شه‌مۆ', + 'شه‌مێران', + 'شوان', + 'شوانكار', + 'شوانه‌', + 'شۆڕش', + 'شۆڕشگێر', + 'شۆڕه‌سوار', + 'شیروان', + 'شێر', + 'شێرزاد', + 'شێره‌', + 'شێروان', + 'شێرۆ', + 'عورفۆ', + 'غه‌مبار', + 'فریاد', + 'فه‌رمان', + 'فه‌رهاد', + 'فه‌رهه‌نگ', + 'فه‌ره‌یدوون', + 'فه‌ریاد', + 'قاره‌مان', + 'قه‌ندیل', + 'قوباد', + 'كاردۆ', + 'كاردۆخ', + 'كارزان', + 'كارمه‌ند', + 'كاروان', + 'كارۆ', + 'كاكل', + 'كاكۆ', + 'كاڵزۆ', + 'كامكار', + 'كامه‌ران', + 'كامه‌لا', + 'كامیار', + 'كامیاران', + 'كاوان', + 'كاوس', + 'كاوه‌', + 'كاوێس', + 'كریڤ', + 'كرێكار', + 'كه‌مه‌ند', + 'كه‌یخوسره‌و', + 'كورد', + 'كوردی', + 'كوردین', + 'كۆڕه‌ك', + 'كۆڕه‌و', + 'كۆژان', + 'كۆژه‌ن', + 'كۆسار', + 'كۆشش', + 'كۆشه‌ن', + 'كۆشین', + 'كۆڤان', + 'كۆمار', + 'كۆیار', + 'كیاكسار', + 'كێوبین', + 'گابار', + 'گاڤان', + 'گمۆ', + 'گه‌ردی', + 'گه‌رمیان', + 'گه‌شبیر', + 'گه‌نجۆ', + 'گورد', + 'گوردۆ', + 'گوروون', + 'گوندی', + 'گۆتی', + 'گۆران', + 'گۆڤه‌ند', + 'گیو', + 'لادێ', + 'لاز', + 'لازیان', + 'لاس', + 'لاڤۆ', + 'لالش', + 'لالۆ', + 'لاهۆ', + 'لاوچاك', + 'لاوزه‌ند', + 'لاوك', + 'لاوكۆ', + 'لاوه‌', + 'لوتكه‌', + 'لۆژین', + 'لۆلۆ', + 'لیڤا', + 'لیمۆ', + 'لێهات', + 'مادای', + 'مادۆ', + 'مازیار', + 'ماكوان', + 'ماكۆ', + 'ماكۆسان', + 'ماڵبات', + 'مامه‌سان', + 'مامۆ', + 'مانو', + 'مشكۆ', + 'مه‌به‌ست', + 'مه‌تۆ', + 'مه‌حوی', + 'مه‌رد', + 'مه‌ردان', + 'مه‌ریوان', + 'مه‌زدا', + 'مه‌زن', + 'مه‌شخه‌ڵ', + 'مه‌غدید', + 'مه‌كۆ', + 'مه‌م', + 'مه‌ملی', + 'مه‌مۆ', + 'مه‌ندان', + 'مه‌وله‌وی', + 'موكریان', + 'میتان', + 'میر', + 'میراكۆ', + 'میران', + 'میرخاس', + 'میرداد', + 'میرزا', + 'میركۆ', + 'میروان', + 'نالی', + 'نامدار', + 'نامۆ', + 'نه‌به‌رد', + 'نه‌به‌ز', + 'نه‌ریمان', + 'نه‌ژین', + 'نه‌مر', + 'نه‌وزاد', + 'نوێكار', + 'هارپاك', + 'هامنۆ', + 'هاوار', + 'هاوبیر', + 'هاوتا', + 'هاودیان', + 'هاوڕێ', + 'هاوژیر', + 'هاوكار', + 'هاوكورد', + 'هاومه‌ند', + 'هه‌رد', + 'هه‌رده‌ڤان', + 'هه‌رده‌م', + 'هه‌رده‌وان', + 'هه‌ردی', + 'هه‌رژین', + 'هه‌رمان', + 'هه‌ره‌س', + 'هه‌رێز', + 'هه‌رێم', + 'هه‌ژار', + 'هه‌ژده‌ر', + 'هه‌ژیر', + 'هه‌ستیار', + 'هه‌ڤاڵ', + 'هه‌ڵاڵه‌', + 'هه‌ڵكه‌وت', + 'هه‌ڵگورد', + 'هه‌ڵوێست', + 'هه‌ڵۆ', + 'هه‌مه‌دان', + 'هه‌ندرین', + 'هه‌وراز', + 'هه‌ورامان', + 'هوشیار', + 'هونه‌ر', + 'هۆرام', + 'هۆز', + 'هۆشمه‌ند', + 'هۆشه‌نگ', + 'هۆكار', + 'هۆگر', + 'هۆمه‌ر', + 'هۆنه‌ر', + 'هیزل', + 'هیوار', + 'هێرش', + 'هێمن', + 'وریا', + 'وڵات', + 'وه‌رزیر', + 'وه‌یس', + 'وه‌یسی', + 'یاپل', + 'یاخی', + 'یادگار', + 'یادوه‌ر', + 'یادۆ', + 'یارسان', + 'یارۆ', + 'یاوه‌ر', + 'یه‌زدانشێر', + 'یه‌زدین', + 'یه‌زید', + ], +}; diff --git a/src/locales/ku_ckb/person/last_name_pattern.ts b/src/locales/ku_ckb/person/last_name_pattern.ts new file mode 100644 index 00000000000..3c459bdb99d --- /dev/null +++ b/src/locales/ku_ckb/person/last_name_pattern.ts @@ -0,0 +1,3 @@ +export default { + generic: [{ value: '{{person.last_name.generic}}', weight: 1 }], +}; diff --git a/src/locales/ku_ckb/person/middle_name.ts b/src/locales/ku_ckb/person/middle_name.ts new file mode 100644 index 00000000000..eef66c0943b --- /dev/null +++ b/src/locales/ku_ckb/person/middle_name.ts @@ -0,0 +1,503 @@ +export default { + generic: [ + 'ئاراز', + 'ئاراس', + 'ئارام', + 'ئاری', + 'ئاریاكۆ', + 'ئاریان', + 'ئاریانا', + 'ئاریانزاده‌', + 'ئاریانكۆ', + 'ئازا', + 'ئازاد', + 'ئاڕاڕات', + 'ئاسنگه‌ر', + 'ئاسۆ', + 'ئاكام', + 'ئاكۆ', + 'ئاكۆیان', + 'ئاگا', + 'ئاگری', + 'ئاگرین', + 'ئالان', + 'ئامه‌د', + 'ئانوبانینی', + 'ئاوات', + 'ئاوده‌ڵ', + 'ئاودێر', + 'ئه‌حمه‌د', + 'ئه‌رده‌ڵان', + 'ئه‌رده‌وان', + 'ئه‌رزین', + 'ئه‌رژانگ', + 'ئه‌رسه‌لان', + 'ئه‌ریوان', + 'ئه‌زمه‌ڕ', + 'ئه‌ژده‌ر', + 'ئه‌ڤداڵ', + 'ئومێد', + 'ئۆرخان', + 'ئۆردو', + 'ئیلخان', + 'ئیلیان', + 'ئێزید', + 'ئێڵبه‌گ', + 'باڵه‌ك', + 'باهۆز', + 'باهۆڤ', + 'باوان', + 'برزوو', + 'بروسك', + 'بروسكه‌', + 'بڕیار', + 'به‌ختیار', + 'به‌درخان', + 'به‌رخۆ', + 'به‌رزان', + 'به‌رزه‌', + 'به‌رهه‌م', + 'به‌ڕێز', + 'به‌شدار', + 'به‌كۆ', + 'به‌ڵێن', + 'به‌مۆ', + 'به‌نگین', + 'به‌هرۆز', + 'به‌هزاد', + 'به‌هێز', + 'بۆتان', + 'بیردۆز', + 'بیژه‌ن', + 'بێخود', + 'بێستوون', + 'بێكه‌س', + 'بێوار', + 'پاداشت', + 'پاكۆ', + 'پاڵه‌', + 'پرژه‌', + 'پشتیوان', + 'پشكۆ', + 'په‌رێز', + 'په‌سه‌ند', + 'په‌شێو', + 'په‌نهان', + 'په‌یوه‌ند', + 'پۆڵا', + 'پۆڵاين', + 'پیرۆ', + 'پیرۆت', + 'پێڕش', + 'پێشه‌نگ', + 'پێشه‌وا', + 'تاژدین', + 'تۆڵه‌', + 'تیشكۆ', + 'جه‌زا', + 'جوانڕۆ', + 'جووتكار', + 'جووتیار', + 'جێگر', + 'چاپك', + 'چالاك', + 'چه‌كۆ', + 'چیا', + 'چیاوار', + 'خاكی', + 'خاڵدی', + 'خاڵۆ', + 'خان', + 'خانی', + 'خانێ', + 'خه‌بات', + 'خه‌سره‌و', + 'خه‌یاس', + 'خورشید', + 'خۆربین', + 'خۆشناو', + 'خۆيبوون', + 'خێڵ', + 'دابان', + 'دارا', + 'داره‌شمانه‌', + 'داره‌وان', + 'دارۆ', + 'داس', + 'داستان', + 'داسن', + 'داكۆ', + 'دالان', + 'دانا', + 'دانار', + 'دانش', + 'دانه‌ر', + 'دانۆ', + 'دانیار', + 'دژوار', + 'دلاوه‌ر', + 'دلێر', + 'دڵدار', + 'دڵشاد', + 'ده‌رسیم', + 'ده‌شتی', + 'ده‌شتیوان', + 'ده‌وه‌ن', + 'دووربین', + 'دۆستی', + 'دیاری', + 'دیاكۆ', + 'دیدار', + 'دیلمان', + 'دیوانه‌', + 'دێوار', + 'زاخۆ', + 'زارۆ', + 'زاگرۆز', + 'زاگرۆس', + 'زامدار', + 'زانا', + 'زانكۆ', + 'زانوه‌ر', + 'زانیار', + 'زمناكۆ', + 'زه‌بوون', + 'زه‌رده‌شت', + 'زه‌ند', + 'زه‌نوێر', + 'زه‌هاو', + 'زه‌یتۆ', + 'زۆراب', + 'زۆزك', + 'زیره‌ك', + 'زێد', + 'زێڕۆ', + 'ڕابه‌ر', + 'ڕاسان', + 'ڕاستی', + 'ڕاڤین', + 'ڕامان', + 'ڕامته‌ن', + 'ڕامیار', + 'ڕاهۆز', + 'ڕاوه‌ن', + 'ڕاوێژ', + 'ڕزگار', + 'ڕه‌شۆ', + 'ڕه‌گه‌ز', + 'ڕه‌نج', + 'ڕه‌نجده‌ر', + 'ڕه‌نجه‌', + 'ڕه‌نجۆ', + 'ڕه‌ند', + 'ڕه‌ندۆ', + 'ڕه‌هبه‌ر', + 'ڕه‌هێڵ', + 'ڕه‌و', + 'ڕه‌وا', + 'ڕه‌وه‌ز', + 'ڕه‌وه‌ند', + 'ڕۆژڤان', + 'ڕۆسته‌م', + 'ڕۆشار', + 'ڕۆڤان', + 'ڕۆنیا', + 'ڕێبه‌ر', + 'ڕێبوار', + 'ڕێبین', + 'ڕێچكه‌', + 'ڕێكار', + 'ڕێكخه‌ر', + 'ڕێگا', + 'ڕێنوار', + 'ڕێوان', + 'ژه‌نیار', + 'ژیار', + 'ژیر', + 'ژیرۆ', + 'ژیله‌', + 'ژیله‌مۆ', + 'ساركان', + 'سارۆ', + 'سازۆ', + 'سالار', + 'ساماڵ', + 'سامان', + 'سان', + 'سمكۆ', + 'سه‌رباز', + 'سه‌ربه‌ست', + 'سه‌رپه‌ل', + 'سه‌رخێڵ', + 'سه‌رده‌شت', + 'سه‌رده‌م', + 'سه‌ركان', + 'سه‌ركه‌وت', + 'سه‌ركۆ', + 'سه‌رمه‌د', + 'سه‌رمه‌ست', + 'سه‌رناس', + 'سه‌رهه‌نگ', + 'سه‌رهۆز', + 'سه‌روان', + 'سه‌روه‌ر', + 'سه‌رۆ', + 'سه‌رۆك', + 'سه‌ریاز', + 'سه‌ریاس', + 'سه‌فین', + 'سه‌گرمه‌', + 'سه‌نگه‌ر', + 'سه‌هه‌ند', + 'سه‌یدا', + 'سه‌یدۆ', + 'سه‌یوان', + 'سوارچاك', + 'سواره‌', + 'سوپا', + 'سوپار', + 'سوركێو', + 'سوریاش', + 'سورێن', + 'سۆران', + 'سیامه‌ند', + 'سیپان', + 'سیدۆ', + 'سیروان', + 'شاباز', + 'شاخان', + 'شاخه‌', + 'شاخه‌وان', + 'شاخۆ', + 'شاخی', + 'شادۆ', + 'شادی', + 'شاره‌زوور', + 'شاروخ', + 'شارۆ', + 'شازاد', + 'شاسۆ', + 'شاكه‌ل', + 'شاكۆ', + 'شالیار', + 'شاڵاو', + 'شاهۆ', + 'شڤان', + 'شنگار', + 'شنگال', + 'شه‌پاڵ', + 'شه‌ره‌فخان', + 'شه‌ماڵ', + 'شه‌مدین', + 'شه‌مزین', + 'شه‌مۆ', + 'شه‌مێران', + 'شوان', + 'شوانكار', + 'شوانه‌', + 'شۆڕش', + 'شۆڕشگێر', + 'شۆڕه‌سوار', + 'شیروان', + 'شێر', + 'شێرزاد', + 'شێره‌', + 'شێروان', + 'شێرۆ', + 'عورفۆ', + 'غه‌مبار', + 'فریاد', + 'فه‌رمان', + 'فه‌رهاد', + 'فه‌رهه‌نگ', + 'فه‌ره‌یدوون', + 'فه‌ریاد', + 'قاره‌مان', + 'قه‌ندیل', + 'قوباد', + 'كاردۆ', + 'كاردۆخ', + 'كارزان', + 'كارمه‌ند', + 'كاروان', + 'كارۆ', + 'كاكل', + 'كاكۆ', + 'كاڵزۆ', + 'كامكار', + 'كامه‌ران', + 'كامه‌لا', + 'كامیار', + 'كامیاران', + 'كاوان', + 'كاوس', + 'كاوه‌', + 'كاوێس', + 'كریڤ', + 'كرێكار', + 'كه‌مه‌ند', + 'كه‌یخوسره‌و', + 'كورد', + 'كوردی', + 'كوردین', + 'كۆڕه‌ك', + 'كۆڕه‌و', + 'كۆژان', + 'كۆژه‌ن', + 'كۆسار', + 'كۆشش', + 'كۆشه‌ن', + 'كۆشین', + 'كۆڤان', + 'كۆمار', + 'كۆیار', + 'كیاكسار', + 'كێوبین', + 'گابار', + 'گاڤان', + 'گمۆ', + 'گه‌ردی', + 'گه‌رمیان', + 'گه‌شبیر', + 'گه‌نجۆ', + 'گورد', + 'گوردۆ', + 'گوروون', + 'گوندی', + 'گۆتی', + 'گۆران', + 'گۆڤه‌ند', + 'گیو', + 'لادێ', + 'لاز', + 'لازیان', + 'لاس', + 'لاڤۆ', + 'لالش', + 'لالۆ', + 'لاهۆ', + 'لاوچاك', + 'لاوزه‌ند', + 'لاوك', + 'لاوكۆ', + 'لاوه‌', + 'لوتكه‌', + 'لۆژین', + 'لۆلۆ', + 'لیڤا', + 'لیمۆ', + 'لێهات', + 'مادای', + 'مادۆ', + 'مازیار', + 'ماكوان', + 'ماكۆ', + 'ماكۆسان', + 'ماڵبات', + 'مامه‌سان', + 'مامۆ', + 'مانو', + 'مشكۆ', + 'مه‌به‌ست', + 'مه‌تۆ', + 'مه‌حوی', + 'مه‌رد', + 'مه‌ردان', + 'مه‌ریوان', + 'مه‌زدا', + 'مه‌زن', + 'مه‌شخه‌ڵ', + 'مه‌غدید', + 'مه‌كۆ', + 'مه‌م', + 'مه‌ملی', + 'مه‌مۆ', + 'مه‌ندان', + 'مه‌وله‌وی', + 'موكریان', + 'میتان', + 'میر', + 'میراكۆ', + 'میران', + 'میرخاس', + 'میرداد', + 'میرزا', + 'میركۆ', + 'میروان', + 'نالی', + 'نامدار', + 'نامۆ', + 'نه‌به‌رد', + 'نه‌به‌ز', + 'نه‌ریمان', + 'نه‌ژین', + 'نه‌مر', + 'نه‌وزاد', + 'نوێكار', + 'هارپاك', + 'هامنۆ', + 'هاوار', + 'هاوبیر', + 'هاوتا', + 'هاودیان', + 'هاوڕێ', + 'هاوژیر', + 'هاوكار', + 'هاوكورد', + 'هاومه‌ند', + 'هه‌رد', + 'هه‌رده‌ڤان', + 'هه‌رده‌م', + 'هه‌رده‌وان', + 'هه‌ردی', + 'هه‌رژین', + 'هه‌رمان', + 'هه‌ره‌س', + 'هه‌رێز', + 'هه‌رێم', + 'هه‌ژار', + 'هه‌ژده‌ر', + 'هه‌ژیر', + 'هه‌ستیار', + 'هه‌ڤاڵ', + 'هه‌ڵاڵه‌', + 'هه‌ڵكه‌وت', + 'هه‌ڵگورد', + 'هه‌ڵوێست', + 'هه‌ڵۆ', + 'هه‌مه‌دان', + 'هه‌ندرین', + 'هه‌وراز', + 'هه‌ورامان', + 'هوشیار', + 'هونه‌ر', + 'هۆرام', + 'هۆز', + 'هۆشمه‌ند', + 'هۆشه‌نگ', + 'هۆكار', + 'هۆگر', + 'هۆمه‌ر', + 'هۆنه‌ر', + 'هیزل', + 'هیوار', + 'هێرش', + 'هێمن', + 'وریا', + 'وڵات', + 'وه‌رزیر', + 'وه‌یس', + 'وه‌یسی', + 'یاپل', + 'یاخی', + 'یادگار', + 'یادوه‌ر', + 'یادۆ', + 'یارسان', + 'یارۆ', + 'یاوه‌ر', + 'یه‌زدانشێر', + 'یه‌زدین', + 'یه‌زید', + ], +}; diff --git a/src/locales/ku_ckb/person/middle_name_pattern.ts b/src/locales/ku_ckb/person/middle_name_pattern.ts new file mode 100644 index 00000000000..502560d6ab9 --- /dev/null +++ b/src/locales/ku_ckb/person/middle_name_pattern.ts @@ -0,0 +1,3 @@ +export default { + generic: [{ value: '{{person.middle_name.generic}}', weight: 1 }], +}; diff --git a/src/locales/ku_ckb/person/name.ts b/src/locales/ku_ckb/person/name.ts new file mode 100644 index 00000000000..64c6b1695da --- /dev/null +++ b/src/locales/ku_ckb/person/name.ts @@ -0,0 +1,11 @@ +export default [ + { value: '{{person.firstName}} {{person.lastName}}', weight: 25 }, + { + value: '{{person.prefix}} {{person.firstName}} {{person.lastName}}', + weight: 10, + }, + { + value: '{{person.firstName}} {{person.middleName}} {{person.lastName}}', + weight: 10, + }, +]; diff --git a/src/locales/ku_ckb/person/prefix.ts b/src/locales/ku_ckb/person/prefix.ts new file mode 100644 index 00000000000..fb333543e48 --- /dev/null +++ b/src/locales/ku_ckb/person/prefix.ts @@ -0,0 +1,4 @@ +export default { + female: ['خاتو', 'دادە'], + male: ['کاک'], +}; diff --git a/src/locales/ku_ckb/person/sex.ts b/src/locales/ku_ckb/person/sex.ts new file mode 100644 index 00000000000..55ab65219c5 --- /dev/null +++ b/src/locales/ku_ckb/person/sex.ts @@ -0,0 +1 @@ +export default ['مێ', 'نێر']; diff --git a/src/locales/ku_kmr_latin/color/human.ts b/src/locales/ku_kmr_latin/color/human.ts new file mode 100644 index 00000000000..a0b54c8f1a7 --- /dev/null +++ b/src/locales/ku_kmr_latin/color/human.ts @@ -0,0 +1,22 @@ +export default [ + 'bor', + 'gola sor', + 'grî', + 'kesk', + 'kesoka tarî', + 'krem', + 'melûl', + 'mor', + 'pembe', + 'pirteqalî', + 'qehweyî', + 'qermezî', + 'reş', + 'sor', + 'spî', + 'turuncî', + 'zer', + 'zerika zêrîn', + 'şîn', + 'şîna asîmanî', +]; diff --git a/src/locales/ku_kmr_latin/color/index.ts b/src/locales/ku_kmr_latin/color/index.ts new file mode 100644 index 00000000000..e7cf1e89436 --- /dev/null +++ b/src/locales/ku_kmr_latin/color/index.ts @@ -0,0 +1,12 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { ColorDefinition } from '../../..'; +import human from './human'; + +const color: ColorDefinition = { + human, +}; + +export default color; diff --git a/src/locales/ku_kmr_latin/index.ts b/src/locales/ku_kmr_latin/index.ts new file mode 100644 index 00000000000..047e9e62663 --- /dev/null +++ b/src/locales/ku_kmr_latin/index.ts @@ -0,0 +1,22 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { LocaleDefinition } from '../..'; +import color from './color'; +import metadata from './metadata'; +import person from './person'; + +/** + * The locale data for the `ku_kmr_latin` locale. + * + * - Language: Kurdish (Kurmanji, Latin) + * - Endonym: Kurdî (Kurmancî) + */ +const ku_kmr_latin: LocaleDefinition = { + color, + metadata, + person, +}; + +export default ku_kmr_latin; diff --git a/src/locales/ku_kmr_latin/metadata.ts b/src/locales/ku_kmr_latin/metadata.ts new file mode 100644 index 00000000000..22941c0c142 --- /dev/null +++ b/src/locales/ku_kmr_latin/metadata.ts @@ -0,0 +1,13 @@ +import type { PreBuiltMetadataDefinition } from '../../definitions/metadata'; + +const metadata: PreBuiltMetadataDefinition = { + title: 'Kurdish (Kurmanji, Latin)', + code: 'ku_kmr_latin', + language: 'ku', + variant: 'kmr_latin', + endonym: 'Kurdî (Kurmancî)', + dir: 'ltr', + script: 'Latn', +}; + +export default metadata; diff --git a/src/locales/ku_kmr_latin/person/first_name.ts b/src/locales/ku_kmr_latin/person/first_name.ts new file mode 100644 index 00000000000..f4c2d5696f4 --- /dev/null +++ b/src/locales/ku_kmr_latin/person/first_name.ts @@ -0,0 +1,183 @@ +export default { + generic: [ + 'Adar', + 'Alan', + 'Amîr', + 'Aram', + 'Ararat', + 'Arîn', + 'Arjen', + 'Avdal', + 'Awar', + 'Azad', + 'Baran', + 'Bawer', + 'Baz', + 'Berdan', + 'Berfîn', + 'Berîvan', + 'Beşar', + 'Botan', + 'Çîya', + 'Dara', + 'Dîlan', + 'Dîroj', + 'Fikret', + 'Goran', + 'Gulistan', + 'Hawar', + 'Heja', + 'Heval', + 'Hozan', + 'Jiyan', + 'Kawa', + 'Koçer', + 'Lava', + 'Lîrîk', + 'Medya', + 'Mizgîn', + 'Narin', + 'Nawroz', + 'Niştîman', + 'Nûdem', + 'Roj', + 'Ronak', + 'Roşan', + 'Serdar', + 'Serhad', + 'Şervan', + 'Şîlan', + 'Sîpan', + 'Welat', + 'Xebat', + 'Yekta', + 'Zana', + 'Zerya', + 'Zilan', + ], + female: [ + 'Adar', + 'Avan', + 'Awaz', + 'Aynur', + 'Azîme', + 'Baran', + 'Berçem', + 'Berfîn', + 'Berîtan', + 'Berîvan', + 'Bêrîtan', + 'Cana', + 'Çîya', + 'Dara', + 'Delal', + 'Dîcle', + 'Dîlan', + 'Dilara', + 'Dilber', + 'Dildar', + 'Dilovan', + 'Dîrok', + 'Evar', + 'Evîn', + 'Gula', + 'Gulbahar', + 'Gulistan', + 'Gulseren', + 'Helin', + 'Hêvî', + 'Jiyan', + 'Lava', + 'Lîlan', + 'Medya', + 'Mizgîn', + 'Narin', + 'Newroz', + 'Nûda', + 'Nûdem', + 'Perî', + 'Rênas', + 'Ronak', + 'Ronî', + 'Roşan', + 'Rûken', + 'Serhat', + 'Şîlan', + 'Şîrîn', + 'Sîma', + 'Sîpan', + 'Stêr', + 'Welat', + 'Xatûn', + 'Xezal', + 'Yekta', + 'Zerya', + 'Zîlan', + 'Zîn', + ], + male: [ + 'Adar', + 'Ahmed', + 'Alan', + 'Ali', + 'Amîr', + 'Aram', + 'Ararat', + 'Arîn', + 'Arjen', + 'Avdal', + 'Awar', + 'Azad', + 'Baran', + 'Bawer', + 'Baz', + 'Berdan', + 'Berfîn', + 'Beşar', + 'Botan', + 'Cîhan', + 'Çîya', + 'Dara', + 'Dêrsim', + 'Dîlan', + 'Dîroj', + 'Erdal', + 'Fikret', + 'Goran', + 'Hakan', + 'Hasan', + 'Hawar', + 'Heja', + 'Heval', + 'Hozan', + 'Jiyan', + 'Kawa', + 'Kemal', + 'Koçer', + 'Mazlum', + 'Mehmet', + 'Mizgîn', + 'Mustafa', + 'Nawroz', + 'Niştîman', + 'Nûredîn', + 'Ömer', + 'Reşîd', + 'Roj', + 'Ronak', + 'Roşan', + 'Serdar', + 'Serhad', + 'Serhat', + 'Şervan', + 'Şêxmus', + 'Sîpan', + 'Welat', + 'Xebat', + 'Yekta', + 'Yûsiv', + 'Zana', + 'Zerdeşt', + 'Zilan', + ], +}; diff --git a/src/locales/ku_kmr_latin/person/index.ts b/src/locales/ku_kmr_latin/person/index.ts new file mode 100644 index 00000000000..e842e52bd46 --- /dev/null +++ b/src/locales/ku_kmr_latin/person/index.ts @@ -0,0 +1,22 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { PersonDefinition } from '../../..'; +import first_name from './first_name'; +import job_type from './job_type'; +import last_name from './last_name'; +import last_name_pattern from './last_name_pattern'; +import name_ from './name'; +import prefix from './prefix'; + +const person: PersonDefinition = { + first_name, + job_type, + last_name, + last_name_pattern, + name: name_, + prefix, +}; + +export default person; diff --git a/src/locales/ku_kmr_latin/person/job_type.ts b/src/locales/ku_kmr_latin/person/job_type.ts new file mode 100644 index 00000000000..93995cd11e2 --- /dev/null +++ b/src/locales/ku_kmr_latin/person/job_type.ts @@ -0,0 +1,12 @@ +export default [ + 'Berêveber', + 'Berêveber Giştî', + 'Mühendis', + 'Berêveber Kar', + 'Dizayner', + 'Rojnamevan', + 'Berhemhêner', + 'Raheîner', + 'Yarmetî', + 'Wekîl', +]; diff --git a/src/locales/ku_kmr_latin/person/last_name.ts b/src/locales/ku_kmr_latin/person/last_name.ts new file mode 100644 index 00000000000..d9583317d12 --- /dev/null +++ b/src/locales/ku_kmr_latin/person/last_name.ts @@ -0,0 +1,62 @@ +export default { + generic: [ + 'Adar', + 'Ağa', + 'Akın', + 'Alan', + 'Aras', + 'Arslan', + 'Aydın', + 'Azad', + 'Baran', + 'Barzani', + 'Başaran', + 'Bawer', + 'Berxwedan', + 'Botan', + 'Candan', + 'Cemal', + 'Ciwan', + 'Çelik', + 'Demir', + 'Dersim', + 'Dildar', + 'Doğan', + 'Erdoğan', + 'Ferat', + 'Goran', + 'Güneş', + 'Hakan', + 'Hasan', + 'Heval', + 'Jiyan', + 'Kara', + 'Kartal', + 'Kawa', + 'Kaya', + 'Kemal', + 'Koç', + 'Kurt', + 'Mehmet', + 'Öcalan', + 'Öztürk', + 'Polat', + 'Reşo', + 'Serhat', + 'Şahin', + 'Şervan', + 'Şimşek', + 'Talabani', + 'Tekin', + 'Tunç', + 'Türk', + 'Ural', + 'Ülker', + 'Xelîl', + 'Yıldırım', + 'Yıldız', + 'Yılmaz', + 'Zana', + 'Zilan', + ], +}; diff --git a/src/locales/ku_kmr_latin/person/last_name_pattern.ts b/src/locales/ku_kmr_latin/person/last_name_pattern.ts new file mode 100644 index 00000000000..3c459bdb99d --- /dev/null +++ b/src/locales/ku_kmr_latin/person/last_name_pattern.ts @@ -0,0 +1,3 @@ +export default { + generic: [{ value: '{{person.last_name.generic}}', weight: 1 }], +}; diff --git a/src/locales/ku_kmr_latin/person/name.ts b/src/locales/ku_kmr_latin/person/name.ts new file mode 100644 index 00000000000..2b844dc786a --- /dev/null +++ b/src/locales/ku_kmr_latin/person/name.ts @@ -0,0 +1,7 @@ +export default [ + { + value: '{{person.prefix}} {{person.firstName}} {{person.lastName}}', + weight: 1, + }, + { value: '{{person.firstName}} {{person.lastName}}', weight: 5 }, +]; diff --git a/src/locales/ku_kmr_latin/person/prefix.ts b/src/locales/ku_kmr_latin/person/prefix.ts new file mode 100644 index 00000000000..2b9106f93e5 --- /dev/null +++ b/src/locales/ku_kmr_latin/person/prefix.ts @@ -0,0 +1,5 @@ +export default { + generic: ['Xatun', 'Profesor', 'Doktor', 'Doktore'], + female: ['Xatun', 'Profesor', 'Doktore'], + male: ['Kak', 'Profesor', 'Doktor'], +}; diff --git a/src/locales/lv/commerce/product_name.ts b/src/locales/lv/commerce/product_name.ts index e98f79be62f..05c51887ccd 100644 --- a/src/locales/lv/commerce/product_name.ts +++ b/src/locales/lv/commerce/product_name.ts @@ -45,4 +45,7 @@ export default { 'televizors', 'zābaks', ], + pattern: [ + '{{commerce.productAdjective}} {{commerce.productMaterial}} {{commerce.product}}', + ], }; diff --git a/src/locales/lv/internet/domain_suffix.ts b/src/locales/lv/internet/domain_suffix.ts index 549d231b0ac..18fd04873a9 100644 --- a/src/locales/lv/internet/domain_suffix.ts +++ b/src/locales/lv/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['lv', 'com', 'info', 'net', 'org']; +export default ['com', 'info', 'lv', 'net', 'org']; diff --git a/src/locales/lv/internet/free_email.ts b/src/locales/lv/internet/free_email.ts index 5837757a7d0..fdd490355a1 100644 --- a/src/locales/lv/internet/free_email.ts +++ b/src/locales/lv/internet/free_email.ts @@ -1,10 +1,10 @@ export default [ + 'apollo.lv', + 'gmail.com', + 'hotmail.com', 'inbox.lv', - 'one.lv', 'mail.lv', + 'one.lv', 'outlook.lv', - 'apollo.lv', 'yahoo.com', - 'hotmail.com', - 'gmail.com', ]; diff --git a/src/locales/mk/internet/domain_suffix.ts b/src/locales/mk/internet/domain_suffix.ts index 672fd89976e..ab6d35932f4 100644 --- a/src/locales/mk/internet/domain_suffix.ts +++ b/src/locales/mk/internet/domain_suffix.ts @@ -1,13 +1,13 @@ export default [ - 'mk', 'com', 'com.mk', - 'org.mk', + 'eu', 'gov.mk', - 'net.mk', 'inf.mk', + 'mk', 'net', + 'net.mk', 'org', - 'eu', + 'org.mk', 'мкд', ]; diff --git a/src/locales/mk/internet/free_email.ts b/src/locales/mk/internet/free_email.ts index 9aa3fc59899..0c45b2e922b 100644 --- a/src/locales/mk/internet/free_email.ts +++ b/src/locales/mk/internet/free_email.ts @@ -1 +1 @@ -export default ['t.mk', 'gmail.com', 'yahoo.com', 'hotmail.com']; +export default ['gmail.com', 'hotmail.com', 't.mk', 'yahoo.com']; diff --git a/src/locales/nb_NO/internet/domain_suffix.ts b/src/locales/nb_NO/internet/domain_suffix.ts index 09ade8c1afe..96fb9603c89 100644 --- a/src/locales/nb_NO/internet/domain_suffix.ts +++ b/src/locales/nb_NO/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['no', 'com', 'net', 'org']; +export default ['com', 'net', 'no', 'org']; diff --git a/src/locales/nb_NO/location/county.ts b/src/locales/nb_NO/location/county.ts new file mode 100644 index 00000000000..92effed2ac8 --- /dev/null +++ b/src/locales/nb_NO/location/county.ts @@ -0,0 +1,359 @@ +// As Faker's definition of top-level administrative entity corresponds to state, we can use municipalities (kommuner) for county. +// See https://en.wikipedia.org/wiki/List_of_municipalities_of_Norway +export default [ + 'Åfjord', + 'Ål', + 'Åmli', + 'Åmot', + 'Årdal', + 'Ås', + 'Åseral', + 'Åsnes', + 'Ålesund', + 'Alstahaug', + 'Alta', + 'Alvdal', + 'Alver', + 'Andøy', + 'Aremark', + 'Arendal', + 'Asker', + 'Askøy', + 'Askvoll', + 'Aukra', + 'Aure', + 'Aurland', + 'Aurskog-Høland', + 'Austevoll', + 'Austrheim', + 'Averøy', + 'Båtsfjord', + 'Bærum', + 'Balsfjord', + 'Bamble', + 'Bardu', + 'Beiarn', + 'Bergen', + 'Berlevåg', + 'Bindal', + 'Birkenes', + 'Bjerkreim', + 'Bjørnafjorden', + 'Bø', + 'Bodø', + 'Bokn', + 'Bømlo', + 'Bremanger', + 'Brønnøy', + 'Bygland', + 'Bykle', + 'Dønna', + 'Dovre', + 'Drammen', + 'Drangedal', + 'Dyrøy', + 'Eidfjord', + 'Eidskog', + 'Eidsvoll', + 'Eigersund', + 'Elverum', + 'Enebakk', + 'Engerdal', + 'Etne', + 'Etnedal', + 'Evenes', + 'Evje og Hornnes', + 'Færder', + 'Farsund', + 'Fauske', + 'Fedje', + 'Fitjar', + 'Fjaler', + 'Fjord', + 'Flå', + 'Flakstad', + 'Flatanger', + 'Flekkefjord', + 'Flesberg', + 'Folldal', + 'Fredrikstad', + 'Frogn', + 'Froland', + 'Frosta', + 'Frøya', + 'Fyresdal', + 'Gamvik', + 'Gausdal', + 'Gildeskål', + 'Giske', + 'Gjemnes', + 'Gjerdrum', + 'Gjerstad', + 'Gjesdal', + 'Gjøvik', + 'Gloppen', + 'Gol', + 'Gran', + 'Grane', + 'Gratangen', + 'Grimstad', + 'Grong', + 'Grue', + 'Gulen', + 'Hå', + 'Hadsel', + 'Hægebostad', + 'Halden', + 'Hamar', + 'Hamarøy', + 'Hammerfest', + 'Haram', + 'Hareid', + 'Harstad', + 'Hasvik', + 'Hattfjelldal', + 'Haugesund', + 'Heim', + 'Hemnes', + 'Hemsedal', + 'Herøy', + 'Hitra', + 'Hjartdal', + 'Hjelmeland', + 'Hol', + 'Hole', + 'Holmestrand', + 'Holtålen', + 'Horten', + 'Høyanger', + 'Høylandet', + 'Hurdal', + 'Hustadvika', + 'Hvaler', + 'Hyllestad', + 'Ibestad', + 'Inderøy', + 'Indre Fosen', + 'Indre Østfold', + 'Iveland', + 'Jevnaker', + 'Kåfjord', + 'Karasjok', + 'Karlsøy', + 'Karmøy', + 'Kautokeino', + 'Kinn', + 'Klepp', + 'Kongsberg', + 'Kongsvinger', + 'Kragerø', + 'Kristiansand', + 'Kristiansund', + 'Krødsherad', + 'Kvæfjord', + 'Kvænangen', + 'Kvam', + 'Kvinesdal', + 'Kvinnherad', + 'Kviteseid', + 'Kvitsøy', + 'Lærdal', + 'Larvik', + 'Lavangen', + 'Lebesby', + 'Leirfjord', + 'Leka', + 'Lesja', + 'Levanger', + 'Lier', + 'Lierne', + 'Lillehammer', + 'Lillesand', + 'Lillestrøm', + 'Lindesnes', + 'Lødingen', + 'Lom', + 'Loppa', + 'Lørenskog', + 'Løten', + 'Lund', + 'Lunner', + 'Lurøy', + 'Luster', + 'Lyngdal', + 'Lyngen', + 'Målselv', + 'Måsøy', + 'Malvik', + 'Marker', + 'Masfjorden', + 'Melhus', + 'Meløy', + 'Meråker', + 'Midt-Telemark', + 'Midtre Gauldal', + 'Modalen', + 'Modum', + 'Molde', + 'Moskenes', + 'Moss', + 'Nærøysund', + 'Namsos', + 'Namsskogan', + 'Nannestad', + 'Narvik', + 'Nes', + 'Nesbyen', + 'Nesna', + 'Nesodden', + 'Nesseby', + 'Nissedal', + 'Nittedal', + 'Nome', + 'Nord-Aurdal', + 'Nord-Fron', + 'Nord-Odal', + 'Nordkapp', + 'Nordre Follo', + 'Nordre Land', + 'Nordreisa', + 'Nore og Uvdal', + 'Notodden', + 'Øksnes', + 'Oppdal', + 'Orkland', + 'Ørland', + 'Ørsta', + 'Os', + 'Osen', + 'Oslo', + 'Osterøy', + 'Østre Toten', + 'Overhalla', + 'Øvre Eiker', + 'Øyer', + 'Øygarden', + 'Øystre Slidre', + 'Porsanger', + 'Porsgrunn', + 'Råde', + 'Rælingen', + 'Rakkestad', + 'Rana', + 'Randaberg', + 'Rauma', + 'Rendalen', + 'Rennebu', + 'Rindal', + 'Ringebu', + 'Ringerike', + 'Ringsaker', + 'Risør', + 'Rødøy', + 'Rollag', + 'Røros', + 'Røst', + 'Røyrvik', + 'Salangen', + 'Saltdal', + 'Samnanger', + 'Sande', + 'Sandefjord', + 'Sandnes', + 'Sarpsborg', + 'Sauda', + 'Sel', + 'Selbu', + 'Seljord', + 'Senja', + 'Sigdal', + 'Siljan', + 'Sirdal', + 'Skaun', + 'Skien', + 'Skiptvet', + 'Skjåk', + 'Skjervøy', + 'Smøla', + 'Snåsa', + 'Sogndal', + 'Sokndal', + 'Sola', + 'Solund', + 'Sømna', + 'Søndre Land', + 'Sør-Aurdal', + 'Sør-Fron', + 'Sør-Odal', + 'Sør-Varanger', + 'Sørfold', + 'Sørreisa', + 'Sortland', + 'Stad', + 'Stange', + 'Stavanger', + 'Steigen', + 'Steinkjer', + 'Stjørdal', + 'Stor-Elvdal', + 'Stord', + 'Storfjord', + 'Strand', + 'Stranda', + 'Stryn', + 'Sula', + 'Suldal', + 'Sunndal', + 'Sunnfjord', + 'Surnadal', + 'Sveio', + 'Sykkylven', + 'Tana', + 'Time', + 'Tingvoll', + 'Tinn', + 'Tjeldsund', + 'Tokke', + 'Tolga', + 'Tønsberg', + 'Træna', + 'Tromsø', + 'Trondheim', + 'Trysil', + 'Tvedestrand', + 'Tydal', + 'Tynset', + 'Tysnes', + 'Tysvær', + 'Ullensaker', + 'Ullensvang', + 'Ulstein', + 'Ulvik', + 'Utsira', + 'Vågå', + 'Vågan', + 'Våler', + 'Vadsø', + 'Værøy', + 'Vaksdal', + 'Valle', + 'Vang', + 'Vanylven', + 'Vardø', + 'Vefsn', + 'Vega', + 'Vegårshei', + 'Vennesla', + 'Verdal', + 'Vestby', + 'Vestnes', + 'Vestre Slidre', + 'Vestre Toten', + 'Vestvågøy', + 'Vevelstad', + 'Vik', + 'Vindafjord', + 'Vinje', + 'Volda', + 'Voss', +]; diff --git a/src/locales/nb_NO/location/index.ts b/src/locales/nb_NO/location/index.ts index 5c738b99856..7debc29efef 100644 --- a/src/locales/nb_NO/location/index.ts +++ b/src/locales/nb_NO/location/index.ts @@ -8,6 +8,7 @@ import city_name from './city_name'; import city_pattern from './city_pattern'; import city_suffix from './city_suffix'; import common_street_suffix from './common_street_suffix'; +import county from './county'; import postcode from './postcode'; import secondary_address from './secondary_address'; import state from './state'; @@ -23,6 +24,7 @@ const location: LocationDefinition = { city_pattern, city_suffix, common_street_suffix, + county, postcode, secondary_address, state, diff --git a/src/locales/nb_NO/location/state.ts b/src/locales/nb_NO/location/state.ts index 1c4f017e663..04d78fe4c56 100644 --- a/src/locales/nb_NO/location/state.ts +++ b/src/locales/nb_NO/location/state.ts @@ -1 +1,18 @@ -export default ['']; +// Using states for Norway's top-level administrative separation(fylker). see https://en.wikipedia.org/wiki/Counties_of_Norway. +export default [ + 'Agder', + 'Akershus', + 'Buskerud', + 'Innlandet', + 'Finnmark', + 'Møre og Romsdal', + 'Nordland', + 'Oslo', + 'Rogaland', + 'Vestfold', + 'Vestland', + 'Telemark', + 'Troms', + 'Trøndelag', + 'Østfold', +]; diff --git a/src/locales/nb_NO/person/index.ts b/src/locales/nb_NO/person/index.ts index 524f6c6a8a4..e1368444ce0 100644 --- a/src/locales/nb_NO/person/index.ts +++ b/src/locales/nb_NO/person/index.ts @@ -8,7 +8,9 @@ import last_name from './last_name'; import last_name_pattern from './last_name_pattern'; import name_ from './name'; import prefix from './prefix'; +import sex from './sex'; import suffix from './suffix'; +import western_zodiac_sign from './western_zodiac_sign'; const person: PersonDefinition = { first_name, @@ -16,7 +18,9 @@ const person: PersonDefinition = { last_name_pattern, name: name_, prefix, + sex, suffix, + western_zodiac_sign, }; export default person; diff --git a/src/locales/nb_NO/person/sex.ts b/src/locales/nb_NO/person/sex.ts new file mode 100644 index 00000000000..7726b0e437a --- /dev/null +++ b/src/locales/nb_NO/person/sex.ts @@ -0,0 +1 @@ +export default ['kvinne', 'mann']; diff --git a/src/locales/nb_NO/person/western_zodiac_sign.ts b/src/locales/nb_NO/person/western_zodiac_sign.ts new file mode 100644 index 00000000000..f41930b3596 --- /dev/null +++ b/src/locales/nb_NO/person/western_zodiac_sign.ts @@ -0,0 +1,14 @@ +export default [ + 'Fiskene', + 'Jomfruen', + 'Krepsen', + 'Løven', + 'Skorpionen', + 'Skytten', + 'Steinbukken', + 'Tvillingene', + 'Tyren', + 'Vannmannen', + 'Vekten', + 'Væren', +]; diff --git a/src/locales/ne/internet/domain_suffix.ts b/src/locales/ne/internet/domain_suffix.ts index b319b86ef48..44abf305a23 100644 --- a/src/locales/ne/internet/domain_suffix.ts +++ b/src/locales/ne/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['np', 'com', 'info', 'net', 'org']; +export default ['com', 'info', 'net', 'np', 'org']; diff --git a/src/locales/ne/internet/free_email.ts b/src/locales/ne/internet/free_email.ts index 2e46c83b409..6bfe4c4c7d8 100644 --- a/src/locales/ne/internet/free_email.ts +++ b/src/locales/ne/internet/free_email.ts @@ -1 +1 @@ -export default ['worldlink.com.np', 'gmail.com', 'yahoo.com', 'hotmail.com']; +export default ['gmail.com', 'hotmail.com', 'worldlink.com.np', 'yahoo.com']; diff --git a/src/locales/nl/commerce/product_name.ts b/src/locales/nl/commerce/product_name.ts index 433353ca106..94e8d0a29f1 100644 --- a/src/locales/nl/commerce/product_name.ts +++ b/src/locales/nl/commerce/product_name.ts @@ -88,4 +88,7 @@ export default { 'zak', 'zeep', ], + pattern: [ + '{{commerce.productAdjective}} {{commerce.productMaterial}} {{commerce.product}}', + ], }; diff --git a/src/locales/nl/internet/domain_suffix.ts b/src/locales/nl/internet/domain_suffix.ts index 0671776dd9a..73643c5c59a 100644 --- a/src/locales/nl/internet/domain_suffix.ts +++ b/src/locales/nl/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['nl', 'frl', 'amsterdam', 'com', 'net', 'org', 'eu']; +export default ['amsterdam', 'com', 'eu', 'frl', 'net', 'nl', 'org']; diff --git a/src/locales/nl/internet/free_email.ts b/src/locales/nl/internet/free_email.ts index 8ef7d24397b..6f46aaab244 100644 --- a/src/locales/nl/internet/free_email.ts +++ b/src/locales/nl/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'yahoo.com', 'hotmail.com']; +export default ['gmail.com', 'hotmail.com', 'yahoo.com']; diff --git a/src/locales/nl_BE/internet/domain_suffix.ts b/src/locales/nl_BE/internet/domain_suffix.ts index b234248cd12..8dbf4530896 100644 --- a/src/locales/nl_BE/internet/domain_suffix.ts +++ b/src/locales/nl_BE/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['be', 'brussels', 'vlaanderen', 'com', 'net', 'org']; +export default ['be', 'brussels', 'com', 'net', 'org', 'vlaanderen']; diff --git a/src/locales/nl_BE/internet/free_email.ts b/src/locales/nl_BE/internet/free_email.ts index effad36e044..4219d1fb394 100644 --- a/src/locales/nl_BE/internet/free_email.ts +++ b/src/locales/nl_BE/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'yahoo.com', 'hotmail.com', 'skynet.be']; +export default ['gmail.com', 'hotmail.com', 'skynet.be', 'yahoo.com']; diff --git a/src/locales/pl/color/human.ts b/src/locales/pl/color/human.ts index 4c8db818ac1..02b9fa1e1da 100644 --- a/src/locales/pl/color/human.ts +++ b/src/locales/pl/color/human.ts @@ -1,15 +1,150 @@ export default [ + 'akwamaryna', + 'alabastrowy', + 'amarantowy', + 'ametystowy', + 'antracytowy', + 'atramentowy', + 'bananowy', 'beżowy', 'biały', + 'biskupi', + 'bordowy', + 'brunatny', + 'brzoskwiniowy', 'brązowy', + 'buraczkowy', + 'burgund', + 'bursztynowy', + 'bury', + 'butelkowa zieleń', + 'błękit królewski', + 'błękit paryski', + 'błękit pruski', + 'błękitny', + 'ceglasty', + 'chabrowy', + 'cielisty', + 'cukierkowy róż', + 'cyjan', + 'cyklamen', + 'cynamonowy', + 'cynobrowy', + 'cytrynowy', 'czarny', + 'czekoladowy', 'czerwony', + 'eozyna', 'fioletowy', + 'fiołkowy', + 'fuksja', + 'gołębi', + 'grafitowy', 'granatowy', + 'groszkowy', + 'grynszpan', + 'hebanowy', + 'herbaciany', + 'indygo', + 'jagodowy', + 'jaśminowy', + 'kakaowy', + 'kanarkowy', + 'kardynalski', + 'karmazynowy', + 'karminowy', + 'kasztanowy', + 'kawowy', + 'khaki', + 'kobaltowy', + 'koniakowy', + 'koralowy', + 'kość słoniowa', + 'kremowy', + 'krwisty', + 'lapis-lazuli', + 'lawendowy', + 'lazurowy', + 'lila', + 'liliowy', + 'limonkowy', + 'magenta', + 'mahoniowy', + 'majtkowy', + 'makowy', + 'malachitowy', + 'malinowy', + 'marchewkowy', + 'marengo', + 'miedziany', + 'minia', + 'miodowy', + 'miętowy', + 'mleczny', + 'modry', + 'morelowy', + 'morska zieleń', + 'morski', + 'mosiądzowy', + 'mysi', 'niebieski', + 'oberżynowy', + 'ochra', + 'oliwkowy', + 'oranż', + 'orzechowy', + 'palisander', + 'patynowy', + 'perłowy', + 'piaskowy', + 'pistacjowy', + 'piwny', + 'platynowy', 'pomarańczowy', + 'popielaty', + 'porcelanowy', + 'poziomkowy', + 'purpurowy', + 'pąsowy', + 'płowy', + 'rdzawy', + 'rubinowy', + 'rudy', 'różowy', + 'seledynowy', + 'sepia', + 'siarkowy', + 'siny', + 'siwy', + 'smolisty', + 'spiżowy', + 'srebrny', + 'stalowy', + 'szafirowy', + 'szafranowy', 'szary', + 'szmaragdowy', + 'słomkowy', + 'tabaczkowy', + 'tango', + 'trawiasty', + 'truskawkowy', + 'turkusowy', + 'tycjan', + 'ugier', + 'ultramaryna', + 'umbra', + 'winny', + 'wiśniowy', + 'woskowy', + 'wrzosowy', + 'zgniła zieleń', 'zielony', + 'złocisty', + 'złoty', + 'écru', + 'łososiowy', + 'śliwkowy', + 'świniowy', 'żółty', ]; diff --git a/src/locales/pl/internet/free_email.ts b/src/locales/pl/internet/free_email.ts index 8ef7d24397b..6f46aaab244 100644 --- a/src/locales/pl/internet/free_email.ts +++ b/src/locales/pl/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'yahoo.com', 'hotmail.com']; +export default ['gmail.com', 'hotmail.com', 'yahoo.com']; diff --git a/src/locales/pt_BR/commerce/product_name.ts b/src/locales/pt_BR/commerce/product_name.ts index 493b4d861e7..70dccf25185 100644 --- a/src/locales/pt_BR/commerce/product_name.ts +++ b/src/locales/pt_BR/commerce/product_name.ts @@ -56,4 +56,7 @@ export default { 'Teclado', 'Toalhas', ], + pattern: [ + '{{commerce.product}} {{commerce.productAdjective}} de {{commerce.productMaterial}}', + ], }; diff --git a/src/locales/pt_BR/index.ts b/src/locales/pt_BR/index.ts index 683645317f8..279ca9024bd 100644 --- a/src/locales/pt_BR/index.ts +++ b/src/locales/pt_BR/index.ts @@ -14,6 +14,7 @@ import lorem from './lorem'; import metadata from './metadata'; import person from './person'; import phone_number from './phone_number'; +import word from './word'; /** * The locale data for the `pt_BR` locale. @@ -33,6 +34,7 @@ const pt_BR: LocaleDefinition = { metadata, person, phone_number, + word, }; export default pt_BR; diff --git a/src/locales/pt_BR/internet/domain_suffix.ts b/src/locales/pt_BR/internet/domain_suffix.ts index 549e339a07d..e9e87bab029 100644 --- a/src/locales/pt_BR/internet/domain_suffix.ts +++ b/src/locales/pt_BR/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['br', 'com', 'biz', 'info', 'name', 'net', 'org']; +export default ['biz', 'br', 'com', 'info', 'name', 'net', 'org']; diff --git a/src/locales/pt_BR/internet/free_email.ts b/src/locales/pt_BR/internet/free_email.ts index fd041cac63e..bef0d6f07bc 100644 --- a/src/locales/pt_BR/internet/free_email.ts +++ b/src/locales/pt_BR/internet/free_email.ts @@ -1,7 +1,7 @@ export default [ + 'bol.com.br', 'gmail.com', - 'yahoo.com', 'hotmail.com', 'live.com', - 'bol.com.br', + 'yahoo.com', ]; diff --git a/src/locales/pt_BR/location/index.ts b/src/locales/pt_BR/location/index.ts index 76748468ccf..e9edee7a4dd 100644 --- a/src/locales/pt_BR/location/index.ts +++ b/src/locales/pt_BR/location/index.ts @@ -13,7 +13,7 @@ import secondary_address from './secondary_address'; import state from './state'; import state_abbr from './state_abbr'; import street_pattern from './street_pattern'; -import street_suffix from './street_suffix'; +import street_prefix from './street_prefix'; const location: LocationDefinition = { building_number, @@ -26,7 +26,7 @@ const location: LocationDefinition = { state, state_abbr, street_pattern, - street_suffix, + street_prefix, }; export default location; diff --git a/src/locales/pt_BR/location/street_pattern.ts b/src/locales/pt_BR/location/street_pattern.ts index af32d0c4248..3577414e73e 100644 --- a/src/locales/pt_BR/location/street_pattern.ts +++ b/src/locales/pt_BR/location/street_pattern.ts @@ -1,4 +1,4 @@ export default [ - '{{person.firstName}} {{location.street_suffix}}', - '{{person.lastName}} {{location.street_suffix}}', + '{{location.street_prefix}} {{person.firstName}}', + '{{location.street_prefix}} {{person.lastName}}', ]; diff --git a/src/locales/pt_BR/location/street_suffix.ts b/src/locales/pt_BR/location/street_prefix.ts similarity index 100% rename from src/locales/pt_BR/location/street_suffix.ts rename to src/locales/pt_BR/location/street_prefix.ts diff --git a/src/locales/pt_BR/word/adjective.ts b/src/locales/pt_BR/word/adjective.ts new file mode 100644 index 00000000000..03a2f7c7f11 --- /dev/null +++ b/src/locales/pt_BR/word/adjective.ts @@ -0,0 +1,150 @@ +export default [ + 'aberto', + 'afiado', + 'alegre', + 'alto', + 'amargo', + 'anormal', + 'ansioso', + 'artístico', + 'ativo', + 'azedo', + 'baixo', + 'barato', + 'barulhento', + 'belo', + 'bom', + 'brilhante', + 'burro', + 'calmo', + 'cansado', + 'caro', + 'cego', + 'celestial', + 'chato', + 'cheio', + 'científico', + 'claro', + 'colorido', + 'complexo', + 'confiante', + 'consciente', + 'contente', + 'corajoso', + 'criativo', + 'curioso', + 'decidido', + 'desonesto', + 'desorganizado', + 'destrutivo', + 'difícil', + 'disposto', + 'divino', + 'doce', + 'doente', + 'duro', + 'educado', + 'egoísta', + 'energético', + 'engraçado', + 'escuro', + 'estranho', + 'estreito', + 'extrovertido', + 'falso', + 'familiar', + 'fechado', + 'feio', + 'feliz', + 'flexível', + 'forte', + 'fosco', + 'fraco', + 'frio', + 'frágil', + 'furioso', + 'fácil', + 'gasoso', + 'generoso', + 'gentil', + 'gordo', + 'grande', + 'honesto', + 'humano', + 'impaciente', + 'inconsciente', + 'indeciso', + 'indiferente', + 'insatisfeito', + 'inteligente', + 'introvertido', + 'invisível', + 'irresponsável', + 'jovem', + 'largo', + 'lento', + 'leve', + 'limpo', + 'liso', + 'livre', + 'líquido', + 'macio', + 'magro', + 'mal-educado', + 'mau', + 'medroso', + 'mentiroso', + 'molhado', + 'monocromático', + 'musculoso', + 'musical', + 'nervoso', + 'normal', + 'novo', + 'oco', + 'ocupado', + 'opaco', + 'organizado', + 'otimista', + 'oval', + 'paciente', + 'passivo', + 'pequeno', + 'perigoso', + 'pesado', + 'pessimista', + 'pobre', + 'pontudo', + 'preocupado', + 'quadrado', + 'quente', + 'quieto', + 'redondo', + 'relaxado', + 'resistente', + 'responsável', + 'retangular', + 'rico', + 'rude', + 'rápido', + 'rígido', + 'salgado', + 'satisfeito', + 'saudável', + 'seco', + 'seguro', + 'simples', + 'sincero', + 'sujo', + 'sólido', + 'terrestre', + 'transparente', + 'triangular', + 'triste', + 'tímido', + 'vazio', + 'velho', + 'verdadeiro', + 'visível', + 'áspero', +]; diff --git a/src/locales/pt_BR/word/index.ts b/src/locales/pt_BR/word/index.ts new file mode 100644 index 00000000000..44c30cb701c --- /dev/null +++ b/src/locales/pt_BR/word/index.ts @@ -0,0 +1,16 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { WordDefinition } from '../../..'; +import adjective from './adjective'; +import noun from './noun'; +import verb from './verb'; + +const word: WordDefinition = { + adjective, + noun, + verb, +}; + +export default word; diff --git a/src/locales/pt_BR/word/noun.ts b/src/locales/pt_BR/word/noun.ts new file mode 100644 index 00000000000..24299c6ef2e --- /dev/null +++ b/src/locales/pt_BR/word/noun.ts @@ -0,0 +1,329 @@ +export default [ + 'abajur', + 'advogado', + 'aeroporto', + 'agenda', + 'alumínio', + 'aluno', + 'alvorecer', + 'amigo', + 'aniversário', + 'ano', + 'aplicativo', + 'areia', + 'armário', + 'arroz', + 'artista', + 'atmosfera', + 'ator', + 'atriz', + 'avião', + 'azeite', + 'aço', + 'bairro', + 'barco', + 'barriga', + 'biblioteca', + 'bicho', + 'bicicleta', + 'blog', + 'boca', + 'boi', + 'boleto', + 'bolo', + 'bombeiro', + 'borracha', + 'braço', + 'brinquedo', + 'brisa', + 'cabeça', + 'cachoeira', + 'cachorro', + 'cadeira', + 'caderno', + 'café', + 'calendário', + 'calor', + 'calça', + 'caminhão', + 'camisa', + 'campanha', + 'caneta', + 'canoa', + 'cantor', + 'carne', + 'carro', + 'carroça', + 'carteira', + 'cartão', + 'casa', + 'cavalo', + 'chave', + 'cheque', + 'chocolate', + 'chuva', + 'chá', + 'chão', + 'cidade', + 'cimento', + 'cinema', + 'clima', + 'cobertor', + 'cobra', + 'coelho', + 'colchão', + 'computador', + 'congresso', + 'constituição', + 'conta', + 'controle', + 'copo', + 'coração', + 'costas', + 'cozinheiro', + 'crepúsculo', + 'criança', + 'crédito', + 'cérebro', + 'céu', + 'data', + 'dedo', + 'democracia', + 'dente', + 'dentista', + 'deputado', + 'desconto', + 'dia', + 'dinheiro', + 'doce', + 'débito', + 'década', + 'dívida', + 'economia', + 'edredom', + 'elefante', + 'eleição', + 'email', + 'encontro', + 'engenheiro', + 'entardecer', + 'escada', + 'escola', + 'escritório', + 'espelho', + 'estante', + 'estojo', + 'estrela', + 'estádio', + 'estômago', + 'evento', + 'fatura', + 'fazenda', + 'feijão', + 'feriado', + 'ferro', + 'festa', + 'flor', + 'fogo', + 'folha', + 'frango', + 'frio', + 'fruta', + 'furacão', + 'galinha', + 'galo', + 'garrafa', + 'garçom', + 'gasto', + 'gato', + 'gaveta', + 'giz', + 'governo', + 'grama', + 'granizo', + 'hambúrguer', + 'hardware', + 'hashtag', + 'helicóptero', + 'homem', + 'hora', + 'horizonte', + 'hospital', + 'hotel', + 'igreja', + 'imposto', + 'inimigo', + 'internet', + 'interruptor', + 'irmã', + 'irmão', + 'jacaré', + 'janela', + 'joelho', + 'juros', + 'lago', + 'lei', + 'leite', + 'lençol', + 'leão', + 'link', + 'livraria', + 'livro', + 'lixeira', + 'login', + 'loja', + 'lua', + 'lucro', + 'luz', + 'lâmpada', + 'língua', + 'macaco', + 'mandato', + 'manhã', + 'manteiga', + 'mar', + 'massa', + 'mel', + 'meme', + 'mensagem', + 'mercado', + 'mesa', + 'metrô', + 'ministro', + 'minuto', + 'mochila', + 'moeda', + 'montanha', + 'moto', + 'motorista', + 'mulher', + 'mãe', + 'mão', + 'médico', + 'mês', + 'nariz', + 'navio', + 'neblina', + 'neve', + 'noite', + 'nota', + 'notícia', + 'nuvem', + 'oceano', + 'olho', + 'ombro', + 'osso', + 'ouvido', + 'ovelha', + 'ovo', + 'padaria', + 'pai', + 'papel', + 'papelão', + 'paredes', + 'parque', + 'partido', + 'patinete', + 'pato', + 'pedra', + 'peixe', + 'pele', + 'perfil', + 'perna', + 'pescoço', + 'pix', + 'pizza', + 'plástico', + 'podcast', + 'poder', + 'policial', + 'política', + 'porco', + 'porta', + 'praia', + 'praça', + 'prefeito', + 'presidente', + 'preço', + 'professor', + 'pássaro', + 'pão', + 'pé', + 'quadro', + 'queijo', + 'raio', + 'raiz', + 'ralo', + 'rato', + 'rede', + 'refrigerante', + 'relâmpago', + 'relógio', + 'república', + 'restaurante', + 'reunião', + 'rio', + 'rocha', + 'rodoviária', + 'rosto', + 'salada', + 'salário', + 'sangue', + 'sapato', + 'segundo', + 'semana', + 'senado', + 'senha', + 'site', + 'skate', + 'software', + 'sofá', + 'sol', + 'sombra', + 'sopa', + 'sorvete', + 'streaming', + 'suco', + 'supermercado', + 'século', + 'tapete', + 'tarde', + 'tartaruga', + 'teatro', + 'tecido', + 'telefone', + 'tempestade', + 'tempo', + 'terra', + 'teto', + 'tigre', + 'tijolo', + 'tomada', + 'tornado', + 'trator', + 'travesseiro', + 'trem', + 'trovão', + 'tv', + 'táxi', + 'uber', + 'unha', + 'universidade', + 'urna', + 'urso', + 'vaca', + 'vagão', + 'vela', + 'vento', + 'vereador', + 'vidro', + 'vizinho', + 'voto', + 'vídeo', + 'vírus', + 'zebra', + 'águia', + 'árvore', + 'óculos', + 'ônibus', +]; diff --git a/src/locales/pt_BR/word/verb.ts b/src/locales/pt_BR/word/verb.ts new file mode 100644 index 00000000000..56ea442bb3e --- /dev/null +++ b/src/locales/pt_BR/word/verb.ts @@ -0,0 +1,311 @@ +export default [ + 'abraçar', + 'abrir', + 'acariciar', + 'aceitar', + 'acelerar', + 'acender', + 'acordar', + 'acreditar', + 'acusar', + 'administrar', + 'adoecer', + 'afirmar', + 'alegrar', + 'alugar', + 'amar', + 'analisar', + 'andar', + 'animar', + 'anotar', + 'anunciar', + 'apagar', + 'aparecer', + 'apertar', + 'apitar', + 'apostar', + 'aprender', + 'arrastar', + 'arremessar', + 'arrendar', + 'arrumar', + 'assar', + 'assistir', + 'atacar', + 'atirar', + 'atualizar', + 'avaliar', + 'baixar', + 'balançar', + 'beber', + 'beijar', + 'beliscar', + 'bloquear', + 'brilhar', + 'brincar', + 'brotar', + 'buscar', + 'cair', + 'calcular', + 'carregar', + 'categorizar', + 'cavar', + 'chegar', + 'cheirar', + 'chorar', + 'chutar', + 'classificar', + 'clicar', + 'cobrar', + 'colar', + 'colher', + 'colorir', + 'comentar', + 'comer', + 'comparar', + 'compartilhar', + 'competir', + 'comprar', + 'comunicar', + 'conectar', + 'confiar', + 'confirmar', + 'congelar', + 'considerar', + 'construir', + 'consultar', + 'contar', + 'conversar', + 'correr', + 'cortar', + 'cotar', + 'cozinhar', + 'coçar', + 'crescer', + 'criar', + 'cuidar', + 'cultivar', + 'curar', + 'curtir', + 'cutucar', + 'defender', + 'degustar', + 'demolir', + 'denunciar', + 'derreter', + 'derrubar', + 'desaparecer', + 'descer', + 'desconectar', + 'desconfiar', + 'descongelar', + 'descrever', + 'desenhar', + 'desinstalar', + 'desligar', + 'deslizar', + 'deslogar', + 'detestar', + 'devolver', + 'diagnosticar', + 'digitalizar', + 'dirigir', + 'dizer', + 'doar', + 'dobrar', + 'dormir', + 'driblar', + 'duvidar', + 'economizar', + 'editar', + 'eleger', + 'elogiar', + 'emocionar', + 'emprestar', + 'empurrar', + 'encaminhar', + 'encostar', + 'ensinar', + 'entrar', + 'entristecer', + 'envergonhar', + 'enviar', + 'enxergar', + 'esbarrar', + 'escanear', + 'esconder', + 'escrever', + 'esculpir', + 'escutar', + 'esperar', + 'espirrar', + 'esquecer', + 'esquentar', + 'esticar', + 'estudar', + 'examinar', + 'excluir', + 'experimentar', + 'expirar', + 'explicar', + 'falar', + 'fechar', + 'ferver', + 'ficar', + 'financiar', + 'florescer', + 'formatar', + 'frear', + 'fritar', + 'ganhar', + 'gastar', + 'germinar', + 'girar', + 'gostar', + 'governar', + 'grelhar', + 'gritar', + 'guardar', + 'identificar', + 'iluminar', + 'imaginar', + 'imprimir', + 'inspirar', + 'instalar', + 'internar', + 'investigar', + 'investir', + 'jogar', + 'julgar', + 'lamber', + 'lançar', + 'lavar', + 'legislar', + 'lembrar', + 'ler', + 'levantar', + 'ligar', + 'limpar', + 'logar', + 'manifestar', + 'marcar', + 'medir', + 'meditar', + 'melhorar', + 'memorizar', + 'mergulhar', + 'misturar', + 'modelar', + 'monitorar', + 'morder', + 'mudar', + 'multar', + 'nadar', + 'navegar', + 'negar', + 'negociar', + 'nivelar', + 'nomear', + 'notar', + 'observar', + 'odiar', + 'oferecer', + 'olhar', + 'operar', + 'organizar', + 'orgulhar', + 'ouvir', + 'pagar', + 'parar', + 'participar', + 'partir', + 'passar', + 'pensar', + 'perceber', + 'perder', + 'perguntar', + 'pesquisar', + 'pintar', + 'piorar', + 'planejar', + 'plantar', + 'pontuar', + 'postar', + 'preocupar', + 'prescrever', + 'presidir', + 'processar', + 'produzir', + 'programar', + 'projetar', + 'prometer', + 'protestar', + 'provar', + 'pular', + 'punir', + 'puxar', + 'queimar', + 'rebater', + 'receber', + 'receitar', + 'reclamar', + 'recusar', + 'refletir', + 'refogar', + 'regar', + 'reivindicar', + 'rejeitar', + 'relembrar', + 'representar', + 'resfriar', + 'resolver', + 'respirar', + 'responder', + 'resumir', + 'reunir', + 'revisar', + 'rir', + 'sair', + 'salvar', + 'sangrar', + 'secar', + 'seguir', + 'selecionar', + 'sentar', + 'sentir', + 'servir', + 'sofrer', + 'soltar', + 'sonhar', + 'suar', + 'subir', + 'sumir', + 'surpreender', + 'sussurrar', + 'temer', + 'temperar', + 'testar', + 'tirar', + 'tossir', + 'trabalhar', + 'transformar', + 'transpirar', + 'tratar', + 'treinar', + 'trocar', + 'tropeçar', + 'usar', + 'vacinar', + 'validar', + 'varrer', + 'vender', + 'ver', + 'vestir', + 'vetar', + 'viajar', + 'vibrar', + 'vigiar', + 'voar', + 'voltar', + 'votar', +]; diff --git a/src/locales/pt_PT/commerce/product_name.ts b/src/locales/pt_PT/commerce/product_name.ts index a1501116052..d2acb6ac8b3 100644 --- a/src/locales/pt_PT/commerce/product_name.ts +++ b/src/locales/pt_PT/commerce/product_name.ts @@ -57,4 +57,7 @@ export default { 'Teclado', 'Toalhas', ], + pattern: [ + '{{commerce.product}} {{commerce.productAdjective}} de {{commerce.productMaterial}}', + ], }; diff --git a/src/locales/pt_PT/index.ts b/src/locales/pt_PT/index.ts index 6f052da45f7..0ad07d95804 100644 --- a/src/locales/pt_PT/index.ts +++ b/src/locales/pt_PT/index.ts @@ -13,6 +13,7 @@ import location from './location'; import metadata from './metadata'; import person from './person'; import phone_number from './phone_number'; +import word from './word'; /** * The locale data for the `pt_PT` locale. @@ -31,6 +32,7 @@ const pt_PT: LocaleDefinition = { metadata, person, phone_number, + word, }; export default pt_PT; diff --git a/src/locales/pt_PT/internet/domain_suffix.ts b/src/locales/pt_PT/internet/domain_suffix.ts index 4849b57ffcd..217d851e35a 100644 --- a/src/locales/pt_PT/internet/domain_suffix.ts +++ b/src/locales/pt_PT/internet/domain_suffix.ts @@ -1,13 +1,13 @@ export default [ - 'pt', - 'gov.pt', + 'biz', + 'com', 'com.pt', - 'org.pt', 'eu', - 'com', - 'biz', + 'gov.pt', 'info', 'name', 'net', 'org', + 'org.pt', + 'pt', ]; diff --git a/src/locales/pt_PT/internet/free_email.ts b/src/locales/pt_PT/internet/free_email.ts index b23311c5325..b318221beaa 100644 --- a/src/locales/pt_PT/internet/free_email.ts +++ b/src/locales/pt_PT/internet/free_email.ts @@ -1,11 +1,11 @@ export default [ + 'aeiou.pt', 'gmail.com', - 'yahoo.com', 'hotmail.com', - 'outlook.com', 'live.com', - 'portugalmail.pt', 'mail.pt', + 'outlook.com', + 'portugalmail.pt', 'sapo.pt', - 'aeiou.pt', + 'yahoo.com', ]; diff --git a/src/locales/pt_PT/word/adjective.ts b/src/locales/pt_PT/word/adjective.ts new file mode 100644 index 00000000000..03a2f7c7f11 --- /dev/null +++ b/src/locales/pt_PT/word/adjective.ts @@ -0,0 +1,150 @@ +export default [ + 'aberto', + 'afiado', + 'alegre', + 'alto', + 'amargo', + 'anormal', + 'ansioso', + 'artístico', + 'ativo', + 'azedo', + 'baixo', + 'barato', + 'barulhento', + 'belo', + 'bom', + 'brilhante', + 'burro', + 'calmo', + 'cansado', + 'caro', + 'cego', + 'celestial', + 'chato', + 'cheio', + 'científico', + 'claro', + 'colorido', + 'complexo', + 'confiante', + 'consciente', + 'contente', + 'corajoso', + 'criativo', + 'curioso', + 'decidido', + 'desonesto', + 'desorganizado', + 'destrutivo', + 'difícil', + 'disposto', + 'divino', + 'doce', + 'doente', + 'duro', + 'educado', + 'egoísta', + 'energético', + 'engraçado', + 'escuro', + 'estranho', + 'estreito', + 'extrovertido', + 'falso', + 'familiar', + 'fechado', + 'feio', + 'feliz', + 'flexível', + 'forte', + 'fosco', + 'fraco', + 'frio', + 'frágil', + 'furioso', + 'fácil', + 'gasoso', + 'generoso', + 'gentil', + 'gordo', + 'grande', + 'honesto', + 'humano', + 'impaciente', + 'inconsciente', + 'indeciso', + 'indiferente', + 'insatisfeito', + 'inteligente', + 'introvertido', + 'invisível', + 'irresponsável', + 'jovem', + 'largo', + 'lento', + 'leve', + 'limpo', + 'liso', + 'livre', + 'líquido', + 'macio', + 'magro', + 'mal-educado', + 'mau', + 'medroso', + 'mentiroso', + 'molhado', + 'monocromático', + 'musculoso', + 'musical', + 'nervoso', + 'normal', + 'novo', + 'oco', + 'ocupado', + 'opaco', + 'organizado', + 'otimista', + 'oval', + 'paciente', + 'passivo', + 'pequeno', + 'perigoso', + 'pesado', + 'pessimista', + 'pobre', + 'pontudo', + 'preocupado', + 'quadrado', + 'quente', + 'quieto', + 'redondo', + 'relaxado', + 'resistente', + 'responsável', + 'retangular', + 'rico', + 'rude', + 'rápido', + 'rígido', + 'salgado', + 'satisfeito', + 'saudável', + 'seco', + 'seguro', + 'simples', + 'sincero', + 'sujo', + 'sólido', + 'terrestre', + 'transparente', + 'triangular', + 'triste', + 'tímido', + 'vazio', + 'velho', + 'verdadeiro', + 'visível', + 'áspero', +]; diff --git a/src/locales/pt_PT/word/index.ts b/src/locales/pt_PT/word/index.ts new file mode 100644 index 00000000000..44c30cb701c --- /dev/null +++ b/src/locales/pt_PT/word/index.ts @@ -0,0 +1,16 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { WordDefinition } from '../../..'; +import adjective from './adjective'; +import noun from './noun'; +import verb from './verb'; + +const word: WordDefinition = { + adjective, + noun, + verb, +}; + +export default word; diff --git a/src/locales/pt_PT/word/noun.ts b/src/locales/pt_PT/word/noun.ts new file mode 100644 index 00000000000..24299c6ef2e --- /dev/null +++ b/src/locales/pt_PT/word/noun.ts @@ -0,0 +1,329 @@ +export default [ + 'abajur', + 'advogado', + 'aeroporto', + 'agenda', + 'alumínio', + 'aluno', + 'alvorecer', + 'amigo', + 'aniversário', + 'ano', + 'aplicativo', + 'areia', + 'armário', + 'arroz', + 'artista', + 'atmosfera', + 'ator', + 'atriz', + 'avião', + 'azeite', + 'aço', + 'bairro', + 'barco', + 'barriga', + 'biblioteca', + 'bicho', + 'bicicleta', + 'blog', + 'boca', + 'boi', + 'boleto', + 'bolo', + 'bombeiro', + 'borracha', + 'braço', + 'brinquedo', + 'brisa', + 'cabeça', + 'cachoeira', + 'cachorro', + 'cadeira', + 'caderno', + 'café', + 'calendário', + 'calor', + 'calça', + 'caminhão', + 'camisa', + 'campanha', + 'caneta', + 'canoa', + 'cantor', + 'carne', + 'carro', + 'carroça', + 'carteira', + 'cartão', + 'casa', + 'cavalo', + 'chave', + 'cheque', + 'chocolate', + 'chuva', + 'chá', + 'chão', + 'cidade', + 'cimento', + 'cinema', + 'clima', + 'cobertor', + 'cobra', + 'coelho', + 'colchão', + 'computador', + 'congresso', + 'constituição', + 'conta', + 'controle', + 'copo', + 'coração', + 'costas', + 'cozinheiro', + 'crepúsculo', + 'criança', + 'crédito', + 'cérebro', + 'céu', + 'data', + 'dedo', + 'democracia', + 'dente', + 'dentista', + 'deputado', + 'desconto', + 'dia', + 'dinheiro', + 'doce', + 'débito', + 'década', + 'dívida', + 'economia', + 'edredom', + 'elefante', + 'eleição', + 'email', + 'encontro', + 'engenheiro', + 'entardecer', + 'escada', + 'escola', + 'escritório', + 'espelho', + 'estante', + 'estojo', + 'estrela', + 'estádio', + 'estômago', + 'evento', + 'fatura', + 'fazenda', + 'feijão', + 'feriado', + 'ferro', + 'festa', + 'flor', + 'fogo', + 'folha', + 'frango', + 'frio', + 'fruta', + 'furacão', + 'galinha', + 'galo', + 'garrafa', + 'garçom', + 'gasto', + 'gato', + 'gaveta', + 'giz', + 'governo', + 'grama', + 'granizo', + 'hambúrguer', + 'hardware', + 'hashtag', + 'helicóptero', + 'homem', + 'hora', + 'horizonte', + 'hospital', + 'hotel', + 'igreja', + 'imposto', + 'inimigo', + 'internet', + 'interruptor', + 'irmã', + 'irmão', + 'jacaré', + 'janela', + 'joelho', + 'juros', + 'lago', + 'lei', + 'leite', + 'lençol', + 'leão', + 'link', + 'livraria', + 'livro', + 'lixeira', + 'login', + 'loja', + 'lua', + 'lucro', + 'luz', + 'lâmpada', + 'língua', + 'macaco', + 'mandato', + 'manhã', + 'manteiga', + 'mar', + 'massa', + 'mel', + 'meme', + 'mensagem', + 'mercado', + 'mesa', + 'metrô', + 'ministro', + 'minuto', + 'mochila', + 'moeda', + 'montanha', + 'moto', + 'motorista', + 'mulher', + 'mãe', + 'mão', + 'médico', + 'mês', + 'nariz', + 'navio', + 'neblina', + 'neve', + 'noite', + 'nota', + 'notícia', + 'nuvem', + 'oceano', + 'olho', + 'ombro', + 'osso', + 'ouvido', + 'ovelha', + 'ovo', + 'padaria', + 'pai', + 'papel', + 'papelão', + 'paredes', + 'parque', + 'partido', + 'patinete', + 'pato', + 'pedra', + 'peixe', + 'pele', + 'perfil', + 'perna', + 'pescoço', + 'pix', + 'pizza', + 'plástico', + 'podcast', + 'poder', + 'policial', + 'política', + 'porco', + 'porta', + 'praia', + 'praça', + 'prefeito', + 'presidente', + 'preço', + 'professor', + 'pássaro', + 'pão', + 'pé', + 'quadro', + 'queijo', + 'raio', + 'raiz', + 'ralo', + 'rato', + 'rede', + 'refrigerante', + 'relâmpago', + 'relógio', + 'república', + 'restaurante', + 'reunião', + 'rio', + 'rocha', + 'rodoviária', + 'rosto', + 'salada', + 'salário', + 'sangue', + 'sapato', + 'segundo', + 'semana', + 'senado', + 'senha', + 'site', + 'skate', + 'software', + 'sofá', + 'sol', + 'sombra', + 'sopa', + 'sorvete', + 'streaming', + 'suco', + 'supermercado', + 'século', + 'tapete', + 'tarde', + 'tartaruga', + 'teatro', + 'tecido', + 'telefone', + 'tempestade', + 'tempo', + 'terra', + 'teto', + 'tigre', + 'tijolo', + 'tomada', + 'tornado', + 'trator', + 'travesseiro', + 'trem', + 'trovão', + 'tv', + 'táxi', + 'uber', + 'unha', + 'universidade', + 'urna', + 'urso', + 'vaca', + 'vagão', + 'vela', + 'vento', + 'vereador', + 'vidro', + 'vizinho', + 'voto', + 'vídeo', + 'vírus', + 'zebra', + 'águia', + 'árvore', + 'óculos', + 'ônibus', +]; diff --git a/src/locales/pt_PT/word/verb.ts b/src/locales/pt_PT/word/verb.ts new file mode 100644 index 00000000000..56ea442bb3e --- /dev/null +++ b/src/locales/pt_PT/word/verb.ts @@ -0,0 +1,311 @@ +export default [ + 'abraçar', + 'abrir', + 'acariciar', + 'aceitar', + 'acelerar', + 'acender', + 'acordar', + 'acreditar', + 'acusar', + 'administrar', + 'adoecer', + 'afirmar', + 'alegrar', + 'alugar', + 'amar', + 'analisar', + 'andar', + 'animar', + 'anotar', + 'anunciar', + 'apagar', + 'aparecer', + 'apertar', + 'apitar', + 'apostar', + 'aprender', + 'arrastar', + 'arremessar', + 'arrendar', + 'arrumar', + 'assar', + 'assistir', + 'atacar', + 'atirar', + 'atualizar', + 'avaliar', + 'baixar', + 'balançar', + 'beber', + 'beijar', + 'beliscar', + 'bloquear', + 'brilhar', + 'brincar', + 'brotar', + 'buscar', + 'cair', + 'calcular', + 'carregar', + 'categorizar', + 'cavar', + 'chegar', + 'cheirar', + 'chorar', + 'chutar', + 'classificar', + 'clicar', + 'cobrar', + 'colar', + 'colher', + 'colorir', + 'comentar', + 'comer', + 'comparar', + 'compartilhar', + 'competir', + 'comprar', + 'comunicar', + 'conectar', + 'confiar', + 'confirmar', + 'congelar', + 'considerar', + 'construir', + 'consultar', + 'contar', + 'conversar', + 'correr', + 'cortar', + 'cotar', + 'cozinhar', + 'coçar', + 'crescer', + 'criar', + 'cuidar', + 'cultivar', + 'curar', + 'curtir', + 'cutucar', + 'defender', + 'degustar', + 'demolir', + 'denunciar', + 'derreter', + 'derrubar', + 'desaparecer', + 'descer', + 'desconectar', + 'desconfiar', + 'descongelar', + 'descrever', + 'desenhar', + 'desinstalar', + 'desligar', + 'deslizar', + 'deslogar', + 'detestar', + 'devolver', + 'diagnosticar', + 'digitalizar', + 'dirigir', + 'dizer', + 'doar', + 'dobrar', + 'dormir', + 'driblar', + 'duvidar', + 'economizar', + 'editar', + 'eleger', + 'elogiar', + 'emocionar', + 'emprestar', + 'empurrar', + 'encaminhar', + 'encostar', + 'ensinar', + 'entrar', + 'entristecer', + 'envergonhar', + 'enviar', + 'enxergar', + 'esbarrar', + 'escanear', + 'esconder', + 'escrever', + 'esculpir', + 'escutar', + 'esperar', + 'espirrar', + 'esquecer', + 'esquentar', + 'esticar', + 'estudar', + 'examinar', + 'excluir', + 'experimentar', + 'expirar', + 'explicar', + 'falar', + 'fechar', + 'ferver', + 'ficar', + 'financiar', + 'florescer', + 'formatar', + 'frear', + 'fritar', + 'ganhar', + 'gastar', + 'germinar', + 'girar', + 'gostar', + 'governar', + 'grelhar', + 'gritar', + 'guardar', + 'identificar', + 'iluminar', + 'imaginar', + 'imprimir', + 'inspirar', + 'instalar', + 'internar', + 'investigar', + 'investir', + 'jogar', + 'julgar', + 'lamber', + 'lançar', + 'lavar', + 'legislar', + 'lembrar', + 'ler', + 'levantar', + 'ligar', + 'limpar', + 'logar', + 'manifestar', + 'marcar', + 'medir', + 'meditar', + 'melhorar', + 'memorizar', + 'mergulhar', + 'misturar', + 'modelar', + 'monitorar', + 'morder', + 'mudar', + 'multar', + 'nadar', + 'navegar', + 'negar', + 'negociar', + 'nivelar', + 'nomear', + 'notar', + 'observar', + 'odiar', + 'oferecer', + 'olhar', + 'operar', + 'organizar', + 'orgulhar', + 'ouvir', + 'pagar', + 'parar', + 'participar', + 'partir', + 'passar', + 'pensar', + 'perceber', + 'perder', + 'perguntar', + 'pesquisar', + 'pintar', + 'piorar', + 'planejar', + 'plantar', + 'pontuar', + 'postar', + 'preocupar', + 'prescrever', + 'presidir', + 'processar', + 'produzir', + 'programar', + 'projetar', + 'prometer', + 'protestar', + 'provar', + 'pular', + 'punir', + 'puxar', + 'queimar', + 'rebater', + 'receber', + 'receitar', + 'reclamar', + 'recusar', + 'refletir', + 'refogar', + 'regar', + 'reivindicar', + 'rejeitar', + 'relembrar', + 'representar', + 'resfriar', + 'resolver', + 'respirar', + 'responder', + 'resumir', + 'reunir', + 'revisar', + 'rir', + 'sair', + 'salvar', + 'sangrar', + 'secar', + 'seguir', + 'selecionar', + 'sentar', + 'sentir', + 'servir', + 'sofrer', + 'soltar', + 'sonhar', + 'suar', + 'subir', + 'sumir', + 'surpreender', + 'sussurrar', + 'temer', + 'temperar', + 'testar', + 'tirar', + 'tossir', + 'trabalhar', + 'transformar', + 'transpirar', + 'tratar', + 'treinar', + 'trocar', + 'tropeçar', + 'usar', + 'vacinar', + 'validar', + 'varrer', + 'vender', + 'ver', + 'vestir', + 'vetar', + 'viajar', + 'vibrar', + 'vigiar', + 'voar', + 'voltar', + 'votar', +]; diff --git a/src/locales/ro/internet/domain_suffix.ts b/src/locales/ro/internet/domain_suffix.ts index 06e681eaea8..714b23bdf72 100644 --- a/src/locales/ro/internet/domain_suffix.ts +++ b/src/locales/ro/internet/domain_suffix.ts @@ -1,21 +1,20 @@ export default [ - 'com', + 'arts.ro', 'biz', + 'com', + 'com.ro', + 'firm.ro', 'info', + 'info.ro', 'name', 'net', + 'nom.ro', + 'nt.ro', 'org', - // Romanian - 'ro', - 'com.ro', 'org.ro', - 'tm.ro', + 'rec.ro', + 'ro', 'store.ro', - 'info.ro', - 'nom.ro', - 'nt.ro', - 'firm.ro', + 'tm.ro', 'www.ro', - 'arts.ro', - 'rec.ro', ]; diff --git a/src/locales/ro/internet/free_email.ts b/src/locales/ro/internet/free_email.ts index 8ef7d24397b..6f46aaab244 100644 --- a/src/locales/ro/internet/free_email.ts +++ b/src/locales/ro/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'yahoo.com', 'hotmail.com']; +export default ['gmail.com', 'hotmail.com', 'yahoo.com']; diff --git a/src/locales/ro_MD/internet/domain_suffix.ts b/src/locales/ro_MD/internet/domain_suffix.ts index 686cd72937b..8837b789a26 100644 --- a/src/locales/ro_MD/internet/domain_suffix.ts +++ b/src/locales/ro_MD/internet/domain_suffix.ts @@ -1,8 +1 @@ -export default [ - 'com', - 'ru', - 'net', - 'org', - // Moldavian - 'md', -]; +export default ['com', 'md', 'net', 'org', 'ru']; diff --git a/src/locales/ro_MD/internet/free_email.ts b/src/locales/ro_MD/internet/free_email.ts index 7a5231b8508..36466bc2e99 100644 --- a/src/locales/ro_MD/internet/free_email.ts +++ b/src/locales/ro_MD/internet/free_email.ts @@ -1,9 +1,9 @@ export default [ - 'mail.ru', - 'rambler.ru', - 'yandex.ru', 'gmail.com', 'gmail.ru', - 'yahoo.com', 'hotmail.com', + 'mail.ru', + 'rambler.ru', + 'yahoo.com', + 'yandex.ru', ]; diff --git a/src/locales/ru/book/author.ts b/src/locales/ru/book/author.ts new file mode 100644 index 00000000000..951e5167be9 --- /dev/null +++ b/src/locales/ru/book/author.ts @@ -0,0 +1,42 @@ +export default [ + 'Александр Пушкин', + 'Александр Солженицын', + 'Анна Ахматова', + 'Антон Чехов', + 'Аркадий и Борис Стругацкие', + 'Борис Акунин', + 'Борис Пастернак', + 'Василий Аксёнов', + 'Василий Гроссман', + 'Венедикт Ерофеев', + 'Виктор Пелевин', + 'Владимир Высоцкий', + 'Владимир Набоков', + 'Даниил Хармс', + 'Дина Рубина', + 'Евгений Замятин', + 'Евгений Шварц', + 'Иван Бунин', + 'Иван Гончаров', + 'Иван Тургенев', + 'Илья Ильф и Евгений Петров', + 'Иосиф Бродский', + 'Корней Чуковский', + 'Лев Толстой', + 'Людмила Петрушевская', + 'Людмила Улицкая', + 'Марина Цветаева', + 'Михаил Булгаков', + 'Михаил Зощенко', + 'Михаил Лермонтов', + 'Михаил Шолохов', + 'Николай Гоголь', + 'Николай Носов', + 'Саша Соколов', + 'Сергей Довлатов', + 'Сергей Есенин', + 'Сергей Лукьяненко', + 'Татьяна Толстая', + 'Фёдор Достоевский', + 'Юрий Олеша', +]; diff --git a/src/locales/ru/book/format.ts b/src/locales/ru/book/format.ts new file mode 100644 index 00000000000..69e2e087276 --- /dev/null +++ b/src/locales/ru/book/format.ts @@ -0,0 +1,6 @@ +export default [ + 'Аудиокнига', + 'Мягкий переплёт', + 'Твёрдый переплёт', + 'Электронная книга', +]; diff --git a/src/locales/ru/book/genre.ts b/src/locales/ru/book/genre.ts new file mode 100644 index 00000000000..e053b3c8a16 --- /dev/null +++ b/src/locales/ru/book/genre.ts @@ -0,0 +1,23 @@ +export default [ + 'Биография', + 'Детектив', + 'Детская литература', + 'Драма', + 'Классика', + 'Комедия', + 'Комикс', + 'Мемуары', + 'Мистика', + 'Мифология', + 'Научная фантастика', + 'Поэзия', + 'Приключения', + 'Психология', + 'Религия', + 'Роман', + 'Триллер', + 'Ужасы', + 'Фантастика', + 'Философия', + 'Юмор', +]; diff --git a/src/locales/ru/book/index.ts b/src/locales/ru/book/index.ts new file mode 100644 index 00000000000..43ead3988d5 --- /dev/null +++ b/src/locales/ru/book/index.ts @@ -0,0 +1,22 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { BookDefinition } from '../../..'; +import author from './author'; +import format from './format'; +import genre from './genre'; +import publisher from './publisher'; +import series from './series'; +import title from './title'; + +const book: BookDefinition = { + author, + format, + genre, + publisher, + series, + title, +}; + +export default book; diff --git a/src/locales/ru/book/publisher.ts b/src/locales/ru/book/publisher.ts new file mode 100644 index 00000000000..7db07d3fdd0 --- /dev/null +++ b/src/locales/ru/book/publisher.ts @@ -0,0 +1,31 @@ +export default [ + 'АСТ', + 'Азбука', + 'Азбука-Аттикус', + 'Альпина Паблишер', + 'БИНОМ', + 'Вече', + 'Время', + 'Гелеос', + 'Детская литература', + 'Дрофа', + 'Златоуст', + 'Издательский дом Мещерякова', + 'Карьера Пресс', + 'Книжный клуб 36.6', + 'Лабиринт', + 'Литрес', + 'Манн, Иванов и Фербер', + 'Молодая гвардия', + 'ОЛМА Медиа Групп', + 'Питер', + 'Прогресс', + 'Проспект', + 'РОСМЭН', + 'Рипол Классик', + 'Самокат', + 'Терра', + 'Фантом Пресс', + 'Центрполиграф', + 'Эксмо', +]; diff --git a/src/locales/ru/book/series.ts b/src/locales/ru/book/series.ts new file mode 100644 index 00000000000..426aa3c8c89 --- /dev/null +++ b/src/locales/ru/book/series.ts @@ -0,0 +1,22 @@ +export default [ + 'Анна Каренина', + 'Братья Карамазовы', + 'Вечера на хуторе близ Диканьки', + 'Война и мир', + 'Дозоры', + 'Доктор Живаго', + 'Жизнь и судьба', + 'Земля Санникова', + 'История Российского государства', + 'Капитанская дочка', + 'Мастер и Маргарита', + 'Метро', + 'Мёртвые души', + 'Пикник на обочине', + 'Преступление и наказание', + 'Приключения Незнайки', + 'Приключения Эраста Фандорина', + 'Тихий Дон', + 'Трудно быть богом', + 'Чапаев и Пустота', +]; diff --git a/src/locales/ru/book/title.ts b/src/locales/ru/book/title.ts new file mode 100644 index 00000000000..ad83a46b1c2 --- /dev/null +++ b/src/locales/ru/book/title.ts @@ -0,0 +1,67 @@ +export default [ + 'А зори здесь тихие...', + 'Анна Каренина', + 'Архипелаг ГУЛАГ', + 'Бег', + 'Белая гвардия', + 'Белые ночи', + 'Бесы', + 'Братья Карамазовы', + 'В круге первом', + 'Вечера на хуторе близ Диканьки', + 'Война и мир', + 'Воскресение', + 'Герой нашего времени', + 'Двенадцать стульев', + 'Дни Турбиных', + 'Доктор Живаго', + 'Евгений Онегин', + 'Жизнь и судьба', + 'Записки из Мёртвого дома', + 'Записки из подполья', + 'Записки охотника', + 'Золотой телёнок', + 'Идиот', + 'Капитанская дочка', + 'Котлован', + 'Крейцерова соната', + 'Лолита', + 'Мастер и Маргарита', + 'Медный всадник', + 'Метро 2033', + 'Метро 2034', + 'Метро 2035', + 'Мы', + 'Мёртвые души', + 'На дне', + 'Непобедимое солнце', + 'Ночной дозор', + 'Обитаемый остров', + 'Обломов', + 'Один день Ивана Денисовича', + 'Отцы и дети', + 'Петербург', + 'Пикник на обочине', + 'Повести Белкина', + 'Поднятая целина', + 'Преступление и наказание', + 'Приключения Незнайки и его друзей', + 'Раковый корпус', + 'Ревизор', + 'Руслан и Людмила', + 'Собачье сердце', + 'Солярис', + 'Судьба человека', + 'Тарас Бульба', + 'Тени забытых предков', + 'Тихий Дон', + 'Трудно быть богом', + 'Улитка на склоне', + 'Хаджи-Мурат', + 'Хозяйка', + 'Чайка', + 'Чапаев и Пустота', + 'Чевенгур', + 'Человек-амфибия', + 'Шинель', +]; diff --git a/src/locales/ru/commerce/product_name.ts b/src/locales/ru/commerce/product_name.ts index c0191540471..684be861312 100644 --- a/src/locales/ru/commerce/product_name.ts +++ b/src/locales/ru/commerce/product_name.ts @@ -48,4 +48,7 @@ export default { 'Стул', 'Шарф', ], + pattern: [ + '{{commerce.productAdjective}} {{commerce.productMaterial}} {{commerce.product}}', + ], }; diff --git a/src/locales/ru/index.ts b/src/locales/ru/index.ts index a696c22fecf..fe884fc8bd5 100644 --- a/src/locales/ru/index.ts +++ b/src/locales/ru/index.ts @@ -3,6 +3,7 @@ * Run 'pnpm run generate:locales' to update. */ import type { LocaleDefinition } from '../..'; +import book from './book'; import color from './color'; import commerce from './commerce'; import company from './company'; @@ -22,6 +23,7 @@ import phone_number from './phone_number'; * - Endonym: Русский */ const ru: LocaleDefinition = { + book, color, commerce, company, diff --git a/src/locales/ru/internet/domain_suffix.ts b/src/locales/ru/internet/domain_suffix.ts index c914f9e2da8..bed88187132 100644 --- a/src/locales/ru/internet/domain_suffix.ts +++ b/src/locales/ru/internet/domain_suffix.ts @@ -3,12 +3,12 @@ export default [ 'club', 'com', 'edo', - 'info', 'host', + 'info', 'moscow', 'net', - 'org', 'online', + 'org', 'press', 'pro', 'ru', diff --git a/src/locales/ru/internet/free_email.ts b/src/locales/ru/internet/free_email.ts index 9f34ab7ae3a..414d0d3d89c 100644 --- a/src/locales/ru/internet/free_email.ts +++ b/src/locales/ru/internet/free_email.ts @@ -1,8 +1,8 @@ export default [ - 'yandex.ru', - 'ya.ru', - 'mail.ru', 'gmail.com', - 'yahoo.com', 'hotmail.com', + 'mail.ru', + 'ya.ru', + 'yahoo.com', + 'yandex.ru', ]; diff --git a/src/locales/sk/internet/domain_suffix.ts b/src/locales/sk/internet/domain_suffix.ts index 9bd47b2cbb8..e185a2738f5 100644 --- a/src/locales/sk/internet/domain_suffix.ts +++ b/src/locales/sk/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['sk', 'com', 'net', 'eu', 'org']; +export default ['com', 'eu', 'net', 'org', 'sk']; diff --git a/src/locales/sk/internet/free_email.ts b/src/locales/sk/internet/free_email.ts index a07131e0376..db915edec51 100644 --- a/src/locales/sk/internet/free_email.ts +++ b/src/locales/sk/internet/free_email.ts @@ -1 +1 @@ -export default ['gmail.com', 'zoznam.sk', 'azet.sk']; +export default ['azet.sk', 'gmail.com', 'zoznam.sk']; diff --git a/src/locales/sl_SI/index.ts b/src/locales/sl_SI/index.ts new file mode 100644 index 00000000000..40d73a36dff --- /dev/null +++ b/src/locales/sl_SI/index.ts @@ -0,0 +1,20 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { LocaleDefinition } from '../..'; +import metadata from './metadata'; +import person from './person'; + +/** + * The locale data for the `sl_SI` locale. + * + * - Language: Slovenian (Slovenia) + * - Endonym: Slovensko (Slovenia) + */ +const sl_SI: LocaleDefinition = { + metadata, + person, +}; + +export default sl_SI; diff --git a/src/locales/sl_SI/metadata.ts b/src/locales/sl_SI/metadata.ts new file mode 100644 index 00000000000..d08a22b2bdc --- /dev/null +++ b/src/locales/sl_SI/metadata.ts @@ -0,0 +1,13 @@ +import type { PreBuiltMetadataDefinitionForCountry } from '../../definitions/metadata'; + +const metadata: PreBuiltMetadataDefinitionForCountry = { + title: 'Slovenian (Slovenia)', + code: 'sl_SI', + country: 'SI', + language: 'sl', + endonym: 'Slovensko (Slovenia)', + dir: 'ltr', + script: 'Latn', +}; + +export default metadata; diff --git a/src/locales/sl_SI/person/bio_part.ts b/src/locales/sl_SI/person/bio_part.ts new file mode 100644 index 00000000000..6eb846edaa3 --- /dev/null +++ b/src/locales/sl_SI/person/bio_part.ts @@ -0,0 +1,37 @@ +export default [ + 'aktivist', + 'avtor', + 'bloger', + 'diplomant', + 'domoljub', + 'filmozof', + 'filmski ustvarjalec', + 'fotograf', + 'glasbenik', + 'igralec videoiger', + 'inženir', + 'izobraževalec', + 'izumitelj', + 'javni govorec', + 'lastnik podjetja', + 'ljubitelj filma', + 'ljubitelj hrane', + 'oseba', + 'pevec', + 'piflar', + 'pisatelj', + 'podjetnik', + 'popotnik', + 'prijatelj', + 'razvijalec', + 'starš', + 'streamer', + 'študent', + 'učitelj', + 'umetnik', + 'ustanovitelj', + 'ustvarjalec', + 'veteran', + 'vodja', + 'znanstvenik', +]; diff --git a/src/locales/sl_SI/person/bio_pattern.ts b/src/locales/sl_SI/person/bio_pattern.ts new file mode 100644 index 00000000000..80caf4edc3c --- /dev/null +++ b/src/locales/sl_SI/person/bio_pattern.ts @@ -0,0 +1,10 @@ +export default [ + '{{person.bio_part}}', + '{{person.bio_part}}, {{person.bio_part}}', + '{{person.bio_part}}, {{person.bio_part}}, {{person.bio_part}}', + '{{person.bio_part}}, {{person.bio_part}}, {{person.bio_part}} {{internet.emoji}}', + '{{word.noun}} {{person.bio_supporter}}', + '{{word.noun}} {{person.bio_supporter}} {{internet.emoji}}', + '{{word.noun}} {{person.bio_supporter}}, {{person.bio_part}}', + '{{word.noun}} {{person.bio_supporter}}, {{person.bio_part}} {{internet.emoji}}', +]; diff --git a/src/locales/sl_SI/person/bio_supporter.ts b/src/locales/sl_SI/person/bio_supporter.ts new file mode 100644 index 00000000000..488502094fd --- /dev/null +++ b/src/locales/sl_SI/person/bio_supporter.ts @@ -0,0 +1,9 @@ +export default [ + 'navdušenec', + 'oboževalec', + 'podpornik', + 'pristaš', + 'privrženec', + 'zagrizenec', + 'zanesenjak', +]; diff --git a/src/locales/sl_SI/person/first_name.ts b/src/locales/sl_SI/person/first_name.ts new file mode 100644 index 00000000000..00d8cb24035 --- /dev/null +++ b/src/locales/sl_SI/person/first_name.ts @@ -0,0 +1,418 @@ +export default { + generic: [ + 'Ajda', + 'Aleksander', + 'Aleksandra', + 'Alenka', + 'Aljaž', + 'Ana', + 'Anamarija', + 'Anastazija', + 'Andraž', + 'Andrej', + 'Andreja', + 'Anica', + 'Anja', + 'Anuška', + 'Anže', + 'Barbara', + 'Benjamin', + 'Beti', + 'Blaž', + 'Bojan', + 'Bojana', + 'Borut', + 'Branka', + 'Branko', + 'Brigita', + 'Cene', + 'Ciril', + 'Cvetka', + 'Damjan', + 'Danijel', + 'Darja', + 'Darko', + 'David', + 'Dejan', + 'Denis', + 'Domen', + 'Doroteja', + 'Drago', + 'Edvard', + 'Elizabeta', + 'Elvis', + 'Ema', + 'Emil', + 'Erik', + 'Erika', + 'Eva', + 'Fanika', + 'Filip', + 'Franc', + 'Franci', + 'Gabrijela', + 'Gašper', + 'Goran', + 'Gregor', + 'Helena', + 'Igor', + 'Irena', + 'Irma', + 'Ivana', + 'Ivanka', + 'Iza', + 'Iztok', + 'Jakob', + 'Jana', + 'Janja', + 'Janez', + 'Jan', + 'Jani', + 'Janko', + 'Jasmina', + 'Jernej', + 'Jože', + 'Jožef', + 'Jožica', + 'Julija', + 'Justina', + 'Kaja', + 'Karolina', + 'Katja', + 'Katarina', + 'Klara', + 'Klemen', + 'Kristina', + 'Kristjan', + 'Ladislav', + 'Larisa', + 'Lea', + 'Lenka', + 'Leon', + 'Lidija', + 'Lucija', + 'Lovro', + 'Luka', + 'Magdalena', + 'Majda', + 'Maks', + 'Manca', + 'Marcel', + 'Marica', + 'Marijan', + 'Marija', + 'Marjeta', + 'Marko', + 'Martin', + 'Matej', + 'Mateja', + 'Matilda', + 'Matjaž', + 'Melita', + 'Mia', + 'Miha', + 'Mija', + 'Milan', + 'Milena', + 'Minka', + 'Mira', + 'Mirjam', + 'Mirko', + 'Miro', + 'Mitja', + 'Mojca', + 'Monika', + 'Nada', + 'Nadja', + 'Nataša', + 'Neja', + 'Nejc', + 'Nevenka', + 'Nik', + 'Nika', + 'Nikola', + 'Nikolina', + 'Nina', + 'Nino', + 'Niko', + 'Olga', + 'Oskar', + 'Patricija', + 'Pavel', + 'Peter', + 'Petra', + 'Polona', + 'Primož', + 'Rado', + 'Rajko', + 'Renata', + 'Rene', + 'Romana', + 'Roman', + 'Rozalija', + 'Rok', + 'Sabina', + 'Sandra', + 'Sara', + 'Saša', + 'Sašo', + 'Sebastjan', + 'Simon', + 'Simona', + 'Slavica', + 'Slavko', + 'Sonja', + 'Srečko', + 'Stanislav', + 'Stanislava', + 'Suzana', + 'Špela', + 'Štefan', + 'Tadej', + 'Tamara', + 'Tatjana', + 'Teja', + 'Terezija', + 'Tilen', + 'Tim', + 'Timotej', + 'Tina', + 'Tine', + 'Tjaša', + 'Tomaž', + 'Toni', + 'Uroš', + 'Urban', + 'Urška', + 'Valentin', + 'Valerija', + 'Vasja', + 'Vesna', + 'Vida', + 'Vid', + 'Viktor', + 'Viktorija', + 'Viljem', + 'Vilma', + 'Vincenc', + 'Vito', + 'Zala', + 'Zdenka', + 'Zdravko', + 'Zlatka', + 'Zofija', + 'Zora', + 'Zoran', + 'Žan', + 'Žiga', + ], + female: [ + 'Ajda', + 'Aleksandra', + 'Alenka', + 'Ana', + 'Anamarija', + 'Anastazija', + 'Andreja', + 'Anica', + 'Anja', + 'Anuška', + 'Barbara', + 'Bojana', + 'Branka', + 'Brigita', + 'Cvetka', + 'Darja', + 'Doroteja', + 'Ema', + 'Elizabeta', + 'Erika', + 'Eva', + 'Fanika', + 'Gabrijela', + 'Helena', + 'Irena', + 'Irma', + 'Ivana', + 'Ivanka', + 'Iza', + 'Jana', + 'Janja', + 'Jasmina', + 'Jožica', + 'Julija', + 'Justina', + 'Kaja', + 'Karolina', + 'Katja', + 'Katarina', + 'Klara', + 'Kristina', + 'Larisa', + 'Lea', + 'Lenka', + 'Lidija', + 'Lucija', + 'Magdalena', + 'Majda', + 'Manca', + 'Marica', + 'Marija', + 'Marjeta', + 'Mateja', + 'Matilda', + 'Melita', + 'Mia', + 'Mija', + 'Milena', + 'Minka', + 'Mira', + 'Mirjam', + 'Mojca', + 'Monika', + 'Nada', + 'Nadja', + 'Nataša', + 'Neja', + 'Nevenka', + 'Nika', + 'Nikolina', + 'Nina', + 'Olga', + 'Patricija', + 'Petra', + 'Polona', + 'Renata', + 'Romana', + 'Rozalija', + 'Sabina', + 'Sandra', + 'Sara', + 'Saša', + 'Simona', + 'Slavica', + 'Sonja', + 'Špela', + 'Stanislava', + 'Suzana', + 'Tamara', + 'Tatjana', + 'Teja', + 'Terezija', + 'Tina', + 'Tjaša', + 'Urška', + 'Valerija', + 'Vesna', + 'Vida', + 'Viktorija', + 'Vilma', + 'Zala', + 'Zdenka', + 'Zlatka', + 'Zofija', + 'Zora', + ], + male: [ + 'Aleksander', + 'Aljaž', + 'Andraž', + 'Andrej', + 'Anže', + 'Benjamin', + 'Blaž', + 'Bojan', + 'Borut', + 'Branko', + 'Cene', + 'Ciril', + 'Damjan', + 'Danijel', + 'Darko', + 'David', + 'Dejan', + 'Denis', + 'Domen', + 'Drago', + 'Edvard', + 'Elvis', + 'Emil', + 'Erik', + 'Filip', + 'Franc', + 'Franci', + 'Gašper', + 'Goran', + 'Gregor', + 'Igor', + 'Iztok', + 'Jakob', + 'Janez', + 'Jan', + 'Jani', + 'Janko', + 'Jernej', + 'Jože', + 'Jožef', + 'Jure', + 'Klemen', + 'Kristjan', + 'Ladislav', + 'Leon', + 'Luka', + 'Lovro', + 'Maks', + 'Marcel', + 'Marijan', + 'Marko', + 'Martin', + 'Matej', + 'Matjaž', + 'Miha', + 'Milan', + 'Miro', + 'Mirko', + 'Mitja', + 'Nejc', + 'Nik', + 'Nikola', + 'Niko', + 'Nino', + 'Oskar', + 'Pavel', + 'Peter', + 'Primož', + 'Rado', + 'Rajko', + 'Rene', + 'Rok', + 'Roman', + 'Sašo', + 'Sebastjan', + 'Simon', + 'Slavko', + 'Srečko', + 'Stanislav', + 'Štefan', + 'Tadej', + 'Tilen', + 'Tim', + 'Timotej', + 'Tine', + 'Tomaž', + 'Toni', + 'Uroš', + 'Urban', + 'Valentin', + 'Vasja', + 'Vid', + 'Viktor', + 'Viljem', + 'Vincenc', + 'Vito', + 'Zdravko', + 'Zoran', + 'Žiga', + 'Žan', + ], +}; diff --git a/src/locales/sl_SI/person/index.ts b/src/locales/sl_SI/person/index.ts new file mode 100644 index 00000000000..594accb2f19 --- /dev/null +++ b/src/locales/sl_SI/person/index.ts @@ -0,0 +1,42 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { PersonDefinition } from '../../..'; +import bio_part from './bio_part'; +import bio_pattern from './bio_pattern'; +import bio_supporter from './bio_supporter'; +import first_name from './first_name'; +import job_area from './job_area'; +import job_descriptor from './job_descriptor'; +import job_title from './job_title'; +import job_title_pattern from './job_title_pattern'; +import job_type from './job_type'; +import last_name from './last_name'; +import last_name_pattern from './last_name_pattern'; +import name_ from './name'; +import prefix from './prefix'; +import sex from './sex'; +import suffix from './suffix'; +import western_zodiac_sign from './western_zodiac_sign'; + +const person: PersonDefinition = { + bio_part, + bio_pattern, + bio_supporter, + first_name, + job_area, + job_descriptor, + job_title, + job_title_pattern, + job_type, + last_name, + last_name_pattern, + name: name_, + prefix, + sex, + suffix, + western_zodiac_sign, +}; + +export default person; diff --git a/src/locales/sl_SI/person/job_area.ts b/src/locales/sl_SI/person/job_area.ts new file mode 100644 index 00000000000..dff561279d6 --- /dev/null +++ b/src/locales/sl_SI/person/job_area.ts @@ -0,0 +1,24 @@ +export default [ + 'aplikacije', + 'arhitektura rešitev', + 'avtentičnost', + 'implementacija', + 'infrastruktura', + 'integracija', + 'interakcije', + 'kakovost', + 'komunikacija', + 'kreativa', + 'marketing', + 'mobilnost', + 'obračuni', + 'optimizacija', + 'paradigma', + 'področje blagovne znamke', + 'podatki', + 'raziskave', + 'uporabnost', + 'varnost', + 'vsebina za splet', + 'vizualna identiteta', +]; diff --git a/src/locales/sl_SI/person/job_descriptor.ts b/src/locales/sl_SI/person/job_descriptor.ts new file mode 100644 index 00000000000..a5e9d2c6ed6 --- /dev/null +++ b/src/locales/sl_SI/person/job_descriptor.ts @@ -0,0 +1,22 @@ +export default [ + 'centralni', + 'direktni', + 'dinamični', + 'glavni', + 'globalni', + 'interni', + 'investitorski', + 'korporativni', + 'kupčev', + 'mednarodni', + 'narodni', + 'napredni', + 'nasledstveni', + 'osrednji', + 'področni', + 'prednostni', + 'produkcijski', + 'regijski', + 'starejši', + 'vodilni', +]; diff --git a/src/locales/sl_SI/person/job_title.ts b/src/locales/sl_SI/person/job_title.ts new file mode 100644 index 00000000000..b3f9399c2e7 --- /dev/null +++ b/src/locales/sl_SI/person/job_title.ts @@ -0,0 +1,20 @@ +export default [ + 'agent', + 'analitik', + 'arhitekt', + 'asistent', + 'direktor', + 'inženir', + 'koordinator', + 'nadzornik', + 'načrtovalec', + 'oblikovalec', + 'partner', + 'producent', + 'programer', + 'strokovnjak za komunikacijo', + 'strateg', + 'svetovalec', + 'tehnik', + 'vodja', +]; diff --git a/src/locales/sl_SI/person/job_title_pattern.ts b/src/locales/sl_SI/person/job_title_pattern.ts new file mode 100644 index 00000000000..ec72ae485d3 --- /dev/null +++ b/src/locales/sl_SI/person/job_title_pattern.ts @@ -0,0 +1,3 @@ +export default [ + '{{person.jobDescriptor}} {{person.jobArea}} {{person.jobType}}', +]; diff --git a/src/locales/sl_SI/person/job_type.ts b/src/locales/sl_SI/person/job_type.ts new file mode 100644 index 00000000000..a8581b8048e --- /dev/null +++ b/src/locales/sl_SI/person/job_type.ts @@ -0,0 +1,52 @@ +export default [ + 'administrator', + 'agent', + 'analitik', + 'arhitekt', + 'asistent', + 'avtor vsebin', + 'direktor', + 'ekonomist', + 'finančnik', + 'informatik', + 'inženir', + 'komercialist', + 'koordinator', + 'lektor', + 'marketinški strokovnjak', + 'mentor', + 'načrtovalec', + 'nadzornik', + 'oblikovalec', + 'operater', + 'organizator', + 'pedagog', + 'pisec vsebin', + 'podpora strankam', + 'poslovni analitik', + 'predavatelj', + 'predstavnik', + 'producent', + 'prodajni svetovalec', + 'programer', + 'projektni vodja', + 'računovodja', + 'razvijalec', + 'sekretar', + 'sistemski administrator', + 'sodelavec', + 'specialist', + 'strokovnjak', + 'strateg', + 'svetovalec', + 'tehnik', + 'tester', + 'tržnik', + 'učitelj', + 'uradnik', + 'UX oblikovalec', + 'vodja', + 'vzgojitelj', + 'zaposlovalec', + 'znanstvenik', +]; diff --git a/src/locales/sl_SI/person/last_name.ts b/src/locales/sl_SI/person/last_name.ts new file mode 100644 index 00000000000..dd311469155 --- /dev/null +++ b/src/locales/sl_SI/person/last_name.ts @@ -0,0 +1,114 @@ +export default { + generic: [ + 'Avsec', + 'Bajc', + 'Belec', + 'Bevk', + 'Bezjak', + 'Bizjak', + 'Božič', + 'Bratina', + 'Brečko', + 'Breznik', + 'Cankar', + 'Celar', + 'Cerar', + 'Cigoj', + 'Cimerman', + 'Cokan', + 'Colarič', + 'Černe', + 'Črešnik', + 'Debeljak', + 'Debenjak', + 'Dolinar', + 'Dolničar', + 'Dornik', + 'Dragan', + 'Fajdiga', + 'Ferjan', + 'Fink', + 'Fister', + 'Gabrovšek', + 'Gantar', + 'Godec', + 'Golob', + 'Gorišek', + 'Gradišar', + 'Gregorc', + 'Grgič', + 'Gril', + 'Grm', + 'Gros', + 'Hafner', + 'Herman', + 'Hočevar', + 'Hribar', + 'Hrovat', + 'Hrvatin', + 'Igličar', + 'Ilc', + 'Ivančič', + 'Jakopič', + 'Jamnik', + 'Janša', + 'Jarc', + 'Jelen', + 'Jenko', + 'Jeram', + 'Jereb', + 'Jeseničnik', + 'Juhart', + 'Kambič', + 'Kavčič', + 'Klemenčič', + 'Kmet', + 'Knez', + 'Kocjan', + 'Kokalj', + 'Kolar', + 'Kolenc', + 'Konda', + 'Koprivec', + 'Korošec', + 'Kos', + 'Kovač', + 'Krajnc', + 'Kregar', + 'Križaj', + 'Križan', + 'Krmelj', + 'Kuhar', + 'Kunc', + 'Lesjak', + 'Lipan', + 'Logar', + 'Lukić', + 'Lužar', + 'Majcen', + 'Markelj', + 'Medved', + 'Merlak', + 'Mlakar', + 'Mlinar', + 'Močnik', + 'Nagode', + 'Novak', + 'Oblak', + 'Onič', + 'Petek', + 'Potočnik', + 'Prebil', + 'Prešeren', + 'Rajh', + 'Resnik', + 'Rupnik', + 'Sever', + 'Simčič', + 'Šolar', + 'Štrukelj', + 'Trček', + 'Turk', + 'Vidmar', + ], +}; diff --git a/src/locales/sl_SI/person/last_name_pattern.ts b/src/locales/sl_SI/person/last_name_pattern.ts new file mode 100644 index 00000000000..3c459bdb99d --- /dev/null +++ b/src/locales/sl_SI/person/last_name_pattern.ts @@ -0,0 +1,3 @@ +export default { + generic: [{ value: '{{person.last_name.generic}}', weight: 1 }], +}; diff --git a/src/locales/sl_SI/person/name.ts b/src/locales/sl_SI/person/name.ts new file mode 100644 index 00000000000..45b05d925a9 --- /dev/null +++ b/src/locales/sl_SI/person/name.ts @@ -0,0 +1,7 @@ +export default [ + { value: '{{person.firstName}} {{person.lastName}}', weight: 9 }, + { + value: '{{person.prefix}} {{person.firstName}} {{person.lastName}}', + weight: 1, + }, +]; diff --git a/src/locales/sl_SI/person/prefix.ts b/src/locales/sl_SI/person/prefix.ts new file mode 100644 index 00000000000..d4d39c72762 --- /dev/null +++ b/src/locales/sl_SI/person/prefix.ts @@ -0,0 +1,33 @@ +export default { + generic: [ + 'g.', // gospod + 'ga.', // gospa + 'dr.', // doktor / doktorica + 'dr. med.', // doktor / doktorica medicine + 'univ. dipl. inž.', // univerzitetni diplomirani inženir / inženirka + 'mag.', // magister / magistrica + 'prof.', // profesor / profesorica + 'doc.', // docent / docentka + 'inž.', // inženir / inženirka + ], + female: [ + 'ga.', // gospa + 'dr.', // doktorica + 'dr. med.', // doktorica medicine + 'univ. dipl. inž.', // univerzitetna diplomirana inženirka + 'mag.', // magistrica + 'prof.', // profesorica + 'doc.', // docentka + 'inž.', // inženirka + ], + male: [ + 'g.', // gospod + 'dr.', // doktor + 'dr. med.', // doktor medicine + 'univ. dipl. inž.', // univerzitetni diplomirani inženir + 'mag.', // magister + 'prof.', // profesor + 'doc.', // docent + 'inž.', // inženir + ], +}; diff --git a/src/locales/sl_SI/person/sex.ts b/src/locales/sl_SI/person/sex.ts new file mode 100644 index 00000000000..2f452a60a1e --- /dev/null +++ b/src/locales/sl_SI/person/sex.ts @@ -0,0 +1 @@ +export default ['ženski', 'moški']; diff --git a/src/locales/sl_SI/person/suffix.ts b/src/locales/sl_SI/person/suffix.ts new file mode 100644 index 00000000000..b06280bfdf5 --- /dev/null +++ b/src/locales/sl_SI/person/suffix.ts @@ -0,0 +1,4 @@ +export default [ + 'ml.', // mlajši + 'st.', // starejši +]; diff --git a/src/locales/sl_SI/person/western_zodiac_sign.ts b/src/locales/sl_SI/person/western_zodiac_sign.ts new file mode 100644 index 00000000000..14d63625427 --- /dev/null +++ b/src/locales/sl_SI/person/western_zodiac_sign.ts @@ -0,0 +1,14 @@ +export default [ + 'bik', + 'dvojčka', + 'devica', + 'kozorog', + 'lev', + 'oven', + 'ribi', + 'rak', + 'strelec', + 'tehtnica', + 'škorpijon', + 'vodnar', +]; diff --git a/src/locales/sr_RS_latin/internet/domain_suffix.ts b/src/locales/sr_RS_latin/internet/domain_suffix.ts index d1803e9c6c2..798c7b67709 100644 --- a/src/locales/sr_RS_latin/internet/domain_suffix.ts +++ b/src/locales/sr_RS_latin/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['rs', 'com', 'co.rs', 'edu.rs', 'in.rs']; +export default ['co.rs', 'com', 'edu.rs', 'in.rs', 'rs']; diff --git a/src/locales/sv/commerce/product_name.ts b/src/locales/sv/commerce/product_name.ts index 270dc1f8ac0..038ef2e859b 100644 --- a/src/locales/sv/commerce/product_name.ts +++ b/src/locales/sv/commerce/product_name.ts @@ -33,4 +33,7 @@ export default { 'Skor', 'Stol', ], + pattern: [ + '{{commerce.productAdjective}} {{commerce.productMaterial}} {{commerce.product}}', + ], }; diff --git a/src/locales/sv/internet/domain_suffix.ts b/src/locales/sv/internet/domain_suffix.ts index 05209c78797..390665c3c08 100644 --- a/src/locales/sv/internet/domain_suffix.ts +++ b/src/locales/sv/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['se', 'nu', 'info', 'com', 'org']; +export default ['com', 'info', 'nu', 'org', 'se']; diff --git a/src/locales/ta_IN/date/index.ts b/src/locales/ta_IN/date/index.ts new file mode 100644 index 00000000000..a28ce823bb8 --- /dev/null +++ b/src/locales/ta_IN/date/index.ts @@ -0,0 +1,14 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { DateDefinition } from '../../..'; +import month from './month'; +import weekday from './weekday'; + +const date: DateDefinition = { + month, + weekday, +}; + +export default date; diff --git a/src/locales/ta_IN/date/month.ts b/src/locales/ta_IN/date/month.ts new file mode 100644 index 00000000000..d9185000d09 --- /dev/null +++ b/src/locales/ta_IN/date/month.ts @@ -0,0 +1,30 @@ +export default { + wide: [ + 'ஆடி', + 'ஆனி', + 'ஆவணி', + 'ஐப்பசி', + 'கார்த்திகை', + 'சித்திரை', + 'தை', + 'பங்குனி', + 'புரட்டாசி', + 'மாசி', + 'மார்கழி', + 'வைகாசி', + ], + abbr: [ + 'ஆடி', + 'ஆனி', + 'ஆவ', + 'ஐப்', + 'கார்', + 'சித்', + 'தை', + 'பங்', + 'புர', + 'மாசி', + 'மார்', + 'வைகா', + ], +}; diff --git a/src/locales/ta_IN/date/weekday.ts b/src/locales/ta_IN/date/weekday.ts new file mode 100644 index 00000000000..4767aca6c21 --- /dev/null +++ b/src/locales/ta_IN/date/weekday.ts @@ -0,0 +1,4 @@ +export default { + wide: ['சனி', 'செவ்வாய்', 'ஞாயிறு', 'திங்கள்', 'புதன்', 'வியாழன்', 'வெள்ளி'], + abbr: ['ச', 'செ', 'ஞா', 'தி', 'பு', 'வி', 'வெ'], +}; diff --git a/src/locales/ta_IN/index.ts b/src/locales/ta_IN/index.ts new file mode 100644 index 00000000000..fd052b27219 --- /dev/null +++ b/src/locales/ta_IN/index.ts @@ -0,0 +1,20 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { LocaleDefinition } from '../..'; +import date from './date'; +import metadata from './metadata'; + +/** + * The locale data for the `ta_IN` locale. + * + * - Language: Tamil (India) + * - Endonym: தமிழ் (இந்தியா) + */ +const ta_IN: LocaleDefinition = { + date, + metadata, +}; + +export default ta_IN; diff --git a/src/locales/ta_IN/metadata.ts b/src/locales/ta_IN/metadata.ts new file mode 100644 index 00000000000..7c5dbd333fc --- /dev/null +++ b/src/locales/ta_IN/metadata.ts @@ -0,0 +1,13 @@ +import type { PreBuiltMetadataDefinitionForCountry } from '../../definitions/metadata'; + +const metadata: PreBuiltMetadataDefinitionForCountry = { + title: 'Tamil (India)', + code: 'ta_IN', + language: 'ta', + country: 'IN', + endonym: 'தமிழ் (இந்தியா)', + dir: 'ltr', + script: 'Taml', +}; + +export default metadata; diff --git a/src/locales/tr/commerce/product_name.ts b/src/locales/tr/commerce/product_name.ts index 9698453c231..15672e5b7e2 100644 --- a/src/locales/tr/commerce/product_name.ts +++ b/src/locales/tr/commerce/product_name.ts @@ -63,4 +63,7 @@ export default { 'Tuş Takımı', 'Şapka', ], + pattern: [ + '{{commerce.productAdjective}} {{commerce.productMaterial}} {{commerce.product}}', + ], }; diff --git a/src/locales/tr/internet/domain_suffix.ts b/src/locales/tr/internet/domain_suffix.ts index 5c95e7a6053..45b91ea55ae 100644 --- a/src/locales/tr/internet/domain_suffix.ts +++ b/src/locales/tr/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com.tr', 'com', 'biz', 'info', 'name', 'gov.tr']; +export default ['biz', 'com', 'com.tr', 'gov.tr', 'info', 'name']; diff --git a/src/locales/uk/internet/domain_suffix.ts b/src/locales/uk/internet/domain_suffix.ts index 02a2f132edf..7a01aca4425 100644 --- a/src/locales/uk/internet/domain_suffix.ts +++ b/src/locales/uk/internet/domain_suffix.ts @@ -27,8 +27,8 @@ export default [ 'lg.ua', 'lt.ua', 'lugansk.ua', - 'lutsk.ua', 'lutsk.net', + 'lutsk.ua', 'lviv.ua', 'mk.ua', 'net.ua', diff --git a/src/locales/uk/internet/free_email.ts b/src/locales/uk/internet/free_email.ts index 07cc5932c01..8b5be11b3fe 100644 --- a/src/locales/uk/internet/free_email.ts +++ b/src/locales/uk/internet/free_email.ts @@ -1,9 +1,9 @@ export default [ - 'ukr.net', - 'ex.ua', 'e-mail.ua', + 'ex.ua', + 'gmail.com', 'i.ua', 'meta.ua', + 'ukr.net', 'yandex.ua', - 'gmail.com', ]; diff --git a/src/locales/ur/commerce/product_name.ts b/src/locales/ur/commerce/product_name.ts index 3f12567fb3f..6c799b3539e 100644 --- a/src/locales/ur/commerce/product_name.ts +++ b/src/locales/ur/commerce/product_name.ts @@ -36,4 +36,7 @@ export default { 'کی بورڈ', 'گاڑی', ], + pattern: [ + '{{commerce.productAdjective}} {{commerce.productMaterial}} {{commerce.product}}', + ], }; diff --git a/src/locales/uz_UZ_latin/commerce/product_name.ts b/src/locales/uz_UZ_latin/commerce/product_name.ts index 1e685e8b55c..9feb828007d 100644 --- a/src/locales/uz_UZ_latin/commerce/product_name.ts +++ b/src/locales/uz_UZ_latin/commerce/product_name.ts @@ -96,4 +96,7 @@ export default { 'Un', 'Velosiped', ], + pattern: [ + '{{commerce.productAdjective}} {{commerce.productMaterial}} {{commerce.product}}', + ], }; diff --git a/src/locales/vi/internet/domain_suffix.ts b/src/locales/vi/internet/domain_suffix.ts index b640a24f97e..ef5ce6bff60 100644 --- a/src/locales/vi/internet/domain_suffix.ts +++ b/src/locales/vi/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['com', 'net', 'info', 'vn', 'com.vn']; +export default ['com', 'com.vn', 'info', 'net', 'vn']; diff --git a/src/locales/zh_CN/airline/airline.ts b/src/locales/zh_CN/airline/airline.ts index 0105f88a000..3edbec779b1 100644 --- a/src/locales/zh_CN/airline/airline.ts +++ b/src/locales/zh_CN/airline/airline.ts @@ -94,7 +94,7 @@ export default [ { name: '西南航空公司', iataCode: 'WN' }, { name: '香料航空公司', iataCode: 'SG' }, { name: '精神航空公司', iataCode: 'NK' }, - { name: '春秋航空公司', iataCode: '9S' }, + { name: '春秋航空公司', iataCode: '9C' }, { name: '斯里兰卡航空公司', iataCode: 'UL' }, { name: '秘鲁星航空公司', iataCode: '2I' }, { name: '太阳城航空公司', iataCode: 'SY' }, diff --git a/src/locales/zh_CN/animal/bear.ts b/src/locales/zh_CN/animal/bear.ts index 7c163ab9e49..4f6711a1479 100644 --- a/src/locales/zh_CN/animal/bear.ts +++ b/src/locales/zh_CN/animal/bear.ts @@ -2,7 +2,7 @@ export default [ '亚洲黑熊', '北极熊', '大熊猫', - '太阳熊', + '小熊猫', '懒熊', '棕熊', '眼镜熊', diff --git a/src/locales/zh_CN/animal/bird.ts b/src/locales/zh_CN/animal/bird.ts new file mode 100644 index 00000000000..1733874b5a5 --- /dev/null +++ b/src/locales/zh_CN/animal/bird.ts @@ -0,0 +1,18 @@ +export default [ + '中华攀雀', + '大山雀', + '斑鸠', + '栗背短脚鹎', + '灰喜鹊', + '灰椋鸟', + '白头鹎', + '白鹭', + '红嘴蓝鹊', + '红腹锦鸡', + '绿啄木鸟', + '翠鸟', + '褐马鸡', + '鸳鸯', + '黑枕黄鹂', + '黑翅长脚鹬', +]; diff --git a/src/locales/zh_CN/animal/cat.ts b/src/locales/zh_CN/animal/cat.ts index af573bc6752..211875bee7a 100644 --- a/src/locales/zh_CN/animal/cat.ts +++ b/src/locales/zh_CN/animal/cat.ts @@ -5,6 +5,7 @@ export default [ '中国狸花猫', '加菲猫', '四川简州猫', + '奶牛猫', '山东狮子猫', '布偶猫', '德文卷毛猫', @@ -18,5 +19,4 @@ export default [ '苏格兰折耳猫', '英国短毛猫', '阿比西尼亚猫', - '黑白花猫', ]; diff --git a/src/locales/zh_CN/animal/dog.ts b/src/locales/zh_CN/animal/dog.ts index 33c1027bdbb..4511d7e364c 100644 --- a/src/locales/zh_CN/animal/dog.ts +++ b/src/locales/zh_CN/animal/dog.ts @@ -26,7 +26,7 @@ export default [ '西藏梗', '西藏狮子犬', '西藏獚', - '贵兵犬', + '贵宾犬', '边境牧羊犬', '阿富汗猎犬', ]; diff --git a/src/locales/zh_CN/animal/index.ts b/src/locales/zh_CN/animal/index.ts index e5c139b584a..f1a057cdc2b 100644 --- a/src/locales/zh_CN/animal/index.ts +++ b/src/locales/zh_CN/animal/index.ts @@ -4,18 +4,24 @@ */ import type { AnimalDefinition } from '../../..'; import bear from './bear'; +import bird from './bird'; import cat from './cat'; import dog from './dog'; import fish from './fish'; import horse from './horse'; +import insect from './insect'; +import pet_name from './pet_name'; import type_ from './type'; const animal: AnimalDefinition = { bear, + bird, cat, dog, fish, horse, + insect, + pet_name, type: type_, }; diff --git a/src/locales/zh_CN/animal/insect.ts b/src/locales/zh_CN/animal/insect.ts new file mode 100644 index 00000000000..afb6b277611 --- /dev/null +++ b/src/locales/zh_CN/animal/insect.ts @@ -0,0 +1,26 @@ +export default [ + '天牛', + '天蛾', + '屎壳郎', + '拟步甲', + '步行虫', + '水黾', + '独角仙', + '瓢虫', + '白粉蝶', + '红蜻蜓', + '绿豆蝇', + '草蛉', + '萤火虫', + '蚊子', + '蚜虫', + '蜉蝣', + '蜜蜂', + '蝉', + '蝗虫', + '螳螂', + '蟋蟀', + '跳蚤', + '金龟子', + '飞虱', +]; diff --git a/src/locales/zh_CN/animal/pet_name.ts b/src/locales/zh_CN/animal/pet_name.ts new file mode 100644 index 00000000000..526072ef18d --- /dev/null +++ b/src/locales/zh_CN/animal/pet_name.ts @@ -0,0 +1,27 @@ +export default [ + '乐乐', + '乖乖', + '可可', + '咪咪', + '团团', + '多多', + '天天', + '奶茶', + '宝宝', + '小七', + '小灰', + '小白', + '小黑', + '悠悠', + '橘子', + '毛毛', + '点点', + '球球', + '皮皮', + '糖糖', + '臭臭', + '花花', + '虎子', + '蛋蛋', + '豆豆', +]; diff --git a/src/locales/zh_CN/animal/type.ts b/src/locales/zh_CN/animal/type.ts index 420ada41388..dd3a1e3a3be 100644 --- a/src/locales/zh_CN/animal/type.ts +++ b/src/locales/zh_CN/animal/type.ts @@ -1 +1 @@ -export default ['熊', '狗', '猫', '马', '鱼']; +export default ['昆虫', '熊', '狗', '猫', '马', '鱼', '鸟']; diff --git a/src/locales/zh_CN/book/author.ts b/src/locales/zh_CN/book/author.ts new file mode 100644 index 00000000000..2fa34d62365 --- /dev/null +++ b/src/locales/zh_CN/book/author.ts @@ -0,0 +1,56 @@ +export default [ + '余华', + '余耕', + '冯骥才', + '刘慈欣', + '刘震云', + '北岛', + '双雪涛', + '史铁生', + '吴承恩', + '巴金', + '张大春', + '张承志', + '张爱玲', + '施耐庵', + '曹雪芹', + '朱天文', + '朱宥勋', + '朱自清', + '李娟', + '李锐', + '格非', + '梁实秋', + '毕飞宇', + '汪曾祺', + '沈从文', + '海子', + '王安忆', + '王小波', + '王朔', + '笛安', + '罗贯中', + '老舍', + '舒婷', + '苏童', + '茅盾', + '莫言', + '蔡崇达', + '西川', + '贾平凹', + '迟子建', + '邱华栋', + '郁达夫', + '郑执', + '钱钟书', + '铁凝', + '阎连科', + '阿乙', + '阿来', + '韩少功', + '顾城', + '骆以军', + '鲁迅', + '麦家', + '龙应台', +]; diff --git a/src/locales/zh_CN/book/format.ts b/src/locales/zh_CN/book/format.ts new file mode 100644 index 00000000000..90bccfd3c4c --- /dev/null +++ b/src/locales/zh_CN/book/format.ts @@ -0,0 +1 @@ +export default ['平装', '有声书', '电子书', '精装']; diff --git a/src/locales/zh_CN/book/genre.ts b/src/locales/zh_CN/book/genre.ts new file mode 100644 index 00000000000..ebd865c1a39 --- /dev/null +++ b/src/locales/zh_CN/book/genre.ts @@ -0,0 +1,26 @@ +export default [ + '传记', + '侦探', + '儿童文学', + '历史', + '哲学', + '商业', + '喜剧', + '回忆录', + '图像小说', + '奇幻', + '宗教', + '心理学', + '恐怖', + '悬疑', + '惊悚', + '戏剧', + '旅行', + '漫画', + '爱情', + '神话', + '科幻', + '经典', + '诗歌', + '青少年文学', +]; diff --git a/src/locales/zh_CN/book/index.ts b/src/locales/zh_CN/book/index.ts new file mode 100644 index 00000000000..43ead3988d5 --- /dev/null +++ b/src/locales/zh_CN/book/index.ts @@ -0,0 +1,22 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { BookDefinition } from '../../..'; +import author from './author'; +import format from './format'; +import genre from './genre'; +import publisher from './publisher'; +import series from './series'; +import title from './title'; + +const book: BookDefinition = { + author, + format, + genre, + publisher, + series, + title, +}; + +export default book; diff --git a/src/locales/zh_CN/book/publisher.ts b/src/locales/zh_CN/book/publisher.ts new file mode 100644 index 00000000000..d5f5e76a928 --- /dev/null +++ b/src/locales/zh_CN/book/publisher.ts @@ -0,0 +1,68 @@ +export default [ + '三联书店', + '上海交通大学出版社', + '上海译文出版社', + '中信出版社', + '中共中央党校出版社', + '中华书局', + '中国人民大学出版社', + '中国友谊出版公司', + '中国大百科全书出版社', + '中国建筑工业出版社', + '中国社会科学出版社', + '中国美术学院出版社', + '中国青年出版社', + '中央编译出版社', + '九州出版社', + '五南图书出版公司', + '人民教育出版社', + '人民文学出版社', + '作家出版社', + '北京十月文艺出版社', + '北京大学出版社', + '北京时代华文书局', + '博集天卷', + '吉林出版集团', + '吉林教育出版社', + '吉林文史出版社', + '商务印书馆', + '复旦大学出版社', + '外语教学与研究出版社', + '天地出版社', + '天津人民出版社', + '少年儿童出版社', + '广东人民出版社', + '广西师范大学出版社', + '接力出版社', + '新世界出版社', + '新星出版社', + '明天出版社', + '晨光出版社', + '未来出版社', + '机械工业出版社', + '果麦文化', + '江苏文艺出版社', + '浙江文艺出版社', + '海豚出版社', + '清华大学出版社', + '湖南文艺出版社', + '湛庐文化', + '现代出版社', + '理想国', + '生活·读书·新知三联书店', + '电子工业出版社', + '百花文艺出版社', + '磨铁图书', + '科学出版社', + '红旗出版社', + '花城出版社', + '西南师范大学出版社', + '译文出版社', + '译林出版社', + '读客文化', + '辽宁人民出版社', + '重庆出版社', + '长江少年儿童出版社', + '长江文艺出版社', + '高等教育出版社', +]; diff --git a/src/locales/zh_CN/book/series.ts b/src/locales/zh_CN/book/series.ts new file mode 100644 index 00000000000..6908c676b38 --- /dev/null +++ b/src/locales/zh_CN/book/series.ts @@ -0,0 +1,36 @@ +export default [ + '三体', + '九州缥缈录', + '人世间', + '仙逆', + '全职高手', + '凡人修仙传', + '剑来', + '司藤', + '围城', + '大奉打更人', + '天官赐福', + '将夜', + '山河表里', + '庆余年', + '悟空传', + '择天记', + '斗破苍穹', + '星辰变', + '杀破狼', + '步步惊心', + '流浪地球', + '琅琊榜', + '盗墓笔记', + '盘龙', + '红楼梦', + '苍兰诀', + '藏地密码', + '诛仙', + '诡秘之主', + '长安十二时辰', + '阳神', + '雪中悍刀行', + '鬼吹灯', + '魔道祖师', +]; diff --git a/src/locales/zh_CN/book/title.ts b/src/locales/zh_CN/book/title.ts new file mode 100644 index 00000000000..de3c3ed5790 --- /dev/null +++ b/src/locales/zh_CN/book/title.ts @@ -0,0 +1,67 @@ +export default [ + '万历十五年', + '三国演义', + '三字经', + '中国哲学简史', + '中国大历史', + '中庸', + '丰乳肥臀', + '乡土中国', + '二十年目睹之怪现状', + '倚天屠龙记', + '儒林外史', + '千字文', + '原野', + '史记', + '呐喊', + '围城', + '在人间', + '大学', + '天龙八部', + '子夜', + '孙子兵法', + '孟子', + '官场现形记', + '家', + '封神演义', + '射雕英雄传', + '山河岁月', + '山海经', + '平凡的世界', + '庄子', + '弟子规', + '彷徨', + '我们仨', + '我的大学', + '文化苦旅', + '日出', + '春', + '水浒传', + '汉书', + '活着', + '浮生六记', + '狼图腾', + '白鹿原', + '目送', + '神雕侠侣', + '秋', + '穆斯林的葬礼', + '童年', + '笑傲江湖', + '红楼梦', + '老残游记', + '聊斋志异', + '茶馆', + '西游记', + '许三观卖血记', + '论语', + '资治通鉴', + '边城', + '道德经', + '金瓶梅', + '镜花缘', + '长恨歌', + '雷雨', + '骆驼祥子', + '鹿鼎记', +]; diff --git a/src/locales/zh_CN/commerce/product_name.ts b/src/locales/zh_CN/commerce/product_name.ts index fe8f63ca158..f9e0ee009c7 100644 --- a/src/locales/zh_CN/commerce/product_name.ts +++ b/src/locales/zh_CN/commerce/product_name.ts @@ -65,4 +65,7 @@ export default { '鸡肉', '鼠标', ], + pattern: [ + '{{commerce.productMaterial}}{{commerce.productAdjective}}{{commerce.product}}', + ], }; diff --git a/src/locales/zh_CN/company/index.ts b/src/locales/zh_CN/company/index.ts index 290ceacffa8..000b59c311d 100644 --- a/src/locales/zh_CN/company/index.ts +++ b/src/locales/zh_CN/company/index.ts @@ -4,13 +4,13 @@ */ import type { CompanyDefinition } from '../../..'; import category from './category'; +import legal_entity_type from './legal_entity_type'; import name_pattern from './name_pattern'; -import type_ from './type'; const company: CompanyDefinition = { category, + legal_entity_type, name_pattern, - type: type_, }; export default company; diff --git a/src/locales/zh_CN/company/type.ts b/src/locales/zh_CN/company/legal_entity_type.ts similarity index 100% rename from src/locales/zh_CN/company/type.ts rename to src/locales/zh_CN/company/legal_entity_type.ts diff --git a/src/locales/zh_CN/company/name_pattern.ts b/src/locales/zh_CN/company/name_pattern.ts index 2325cc69b1d..0c95fd807fd 100644 --- a/src/locales/zh_CN/company/name_pattern.ts +++ b/src/locales/zh_CN/company/name_pattern.ts @@ -1,4 +1,4 @@ export default [ - '{{location.city}}{{person.first_name.generic}}{{company.category}}{{company.type}}', - '{{location.state}}{{person.first_name.generic}}{{company.category}}{{company.type}}', + '{{location.city}}{{person.first_name.generic}}{{company.category}}{{company.legal_entity_type}}', + '{{location.state}}{{person.first_name.generic}}{{company.category}}{{company.legal_entity_type}}', ]; diff --git a/src/locales/zh_CN/finance/currency.ts b/src/locales/zh_CN/finance/currency.ts index 7f3d8f766a3..e68b13bf444 100644 --- a/src/locales/zh_CN/finance/currency.ts +++ b/src/locales/zh_CN/finance/currency.ts @@ -3,775 +3,930 @@ export default [ name: '阿联酋迪拉姆', code: 'AED', symbol: '', + numericCode: '784', }, { name: '阿富汗尼', code: 'AFN', symbol: '؋', + numericCode: '971', }, { name: '列克', code: 'ALL', symbol: 'Lek', + numericCode: '008', }, { name: '亚美尼亚德拉姆', code: 'AMD', symbol: '', + numericCode: '051', }, { name: '荷属安的列斯盾', code: 'ANG', symbol: 'ƒ', + numericCode: '532', }, { name: '宽扎', code: 'AOA', symbol: '', + numericCode: '973', }, { name: '阿根廷比索', code: 'ARS', symbol: '$', + numericCode: '032', }, { name: '澳大利亚元', code: 'AUD', symbol: '$', + numericCode: '036', }, { name: '阿鲁巴弗罗林', code: 'AWG', symbol: 'ƒ', + numericCode: '533', }, { name: '阿塞拜疆马纳特', code: 'AZN', symbol: 'ман', + numericCode: '944', }, { name: '可兑换马克', code: 'BAM', symbol: 'KM', + numericCode: '977', }, { name: '巴巴多斯元', code: 'BBD', symbol: '$', + numericCode: '052', }, { name: '孟加拉塔卡', code: 'BDT', symbol: '', + numericCode: '050', }, { name: '保加利亚列弗', code: 'BGN', symbol: 'лв', + numericCode: '975', }, { name: '巴林第纳尔', code: 'BHD', symbol: '', + numericCode: '048', }, { name: '布隆迪法郎', code: 'BIF', symbol: '', + numericCode: '108', }, { name: '百慕大元(通常称为百慕大元)', code: 'BMD', symbol: '$', + numericCode: '060', }, { name: '文莱元', code: 'BND', symbol: '$', + numericCode: '096', }, { name: '玻利维亚诺', code: 'BOB', symbol: 'Bs', + numericCode: '068', }, { name: '巴西雷亚尔', code: 'BRL', symbol: 'R$', + numericCode: '986', }, { name: '巴哈马元', code: 'BSD', symbol: '$', + numericCode: '044', }, { name: '普拉', code: 'BWP', symbol: 'P', + numericCode: '072', }, { name: '白俄罗斯卢布', code: 'BYN', symbol: 'Rbl', + numericCode: '933', }, { name: '伯利兹元', code: 'BZD', symbol: 'BZ$', + numericCode: '084', }, { name: '加拿大元', code: 'CAD', symbol: '$', + numericCode: '124', }, { name: '刚果法郎', code: 'CDF', symbol: '', + numericCode: '976', }, { name: '瑞士法郎', code: 'CHF', symbol: 'CHF', + numericCode: '756', }, { name: '智利比索', code: 'CLP', symbol: '$', + numericCode: '152', }, { name: '人民币', code: 'CNY', symbol: '¥', + numericCode: '156', }, { name: '哥伦比亚比索', code: 'COP', symbol: '$', + numericCode: '170', }, { name: '哥斯达黎加科朗', code: 'CRC', symbol: '₡', + numericCode: '188', }, { name: '古巴比索', code: 'CUP', symbol: '₱', + numericCode: '192', }, { name: '佛得角埃斯库多', code: 'CVE', symbol: '', + numericCode: '132', }, { name: '捷克克朗', code: 'CZK', symbol: 'Kč', + numericCode: '203', }, { name: '吉布提法郎', code: 'DJF', symbol: '', + numericCode: '262', }, { name: '丹麦克朗', code: 'DKK', symbol: 'kr', + numericCode: '208', }, { name: '多米尼加比索', code: 'DOP', symbol: 'RD$', + numericCode: '214', }, { name: '阿尔及利亚第纳尔', code: 'DZD', symbol: '', + numericCode: '012', }, { name: '埃及镑', code: 'EGP', symbol: '£', + numericCode: '818', }, { name: '纳克法', code: 'ERN', symbol: '', + numericCode: '232', }, { name: '埃塞俄比亚比尔', code: 'ETB', symbol: '', + numericCode: '230', }, { name: '欧元', code: 'EUR', symbol: '€', + numericCode: '978', }, { name: '斐济元', code: 'FJD', symbol: '$', + numericCode: '242', }, { name: '福克兰群岛镑', code: 'FKP', symbol: '£', + numericCode: '238', }, { name: '英镑', code: 'GBP', symbol: '£', + numericCode: '826', }, { name: '格鲁吉亚拉里', code: 'GEL', symbol: '', + numericCode: '981', }, { name: '塞地', code: 'GHS', symbol: '', + numericCode: '936', }, { name: '直布罗陀镑', code: 'GIP', symbol: '£', + numericCode: '292', }, { name: '达尔西', code: 'GMD', symbol: '', + numericCode: '270', }, { name: '几内亚法郎', code: 'GNF', symbol: '', + numericCode: '324', }, { name: '格查尔', code: 'GTQ', symbol: 'Q', + numericCode: '320', }, { name: '圭亚那元', code: 'GYD', symbol: '$', + numericCode: '328', }, { name: '港元', code: 'HKD', symbol: '$', + numericCode: '344', }, { name: '伦皮拉', code: 'HNL', symbol: 'L', + numericCode: '340', }, { name: '古德', code: 'HTG', symbol: '', + numericCode: '332', }, { name: '福林特', code: 'HUF', symbol: 'Ft', + numericCode: '348', }, { name: '印度尼西亚卢比', code: 'IDR', symbol: 'Rp', + numericCode: '360', }, { name: '新以色列谢克尔', code: 'ILS', symbol: '₪', + numericCode: '376', }, { name: '不丹努扎姆', code: 'BTN', symbol: 'Nu', + numericCode: '064', }, { name: '印度卢比', code: 'INR', symbol: '₹', + numericCode: '356', }, { name: '伊拉克第纳尔', code: 'IQD', symbol: '', + numericCode: '368', }, { name: '伊朗里亚尔', code: 'IRR', symbol: '﷼', + numericCode: '364', }, { name: '冰岛克朗', code: 'ISK', symbol: 'kr', + numericCode: '352', }, { name: '牙买加元', code: 'JMD', symbol: 'J$', + numericCode: '388', }, { name: '约旦第纳尔', code: 'JOD', symbol: '', + numericCode: '400', }, { name: '日元', code: 'JPY', symbol: '¥', + numericCode: '392', }, { name: '肯尼亚先令', code: 'KES', symbol: '', + numericCode: '404', }, { name: '吉尔吉斯斯坦索姆', code: 'KGS', symbol: 'лв', + numericCode: '417', }, { name: '瑞尔', code: 'KHR', symbol: '៛', + numericCode: '116', }, { name: '科摩罗法郎', code: 'KMF', symbol: '', + numericCode: '174', }, { name: '朝鲜圆', code: 'KPW', symbol: '₩', + numericCode: '408', }, { name: '韩元', code: 'KRW', symbol: '₩', + numericCode: '410', }, { name: '科威特第纳尔', code: 'KWD', symbol: '', + numericCode: '414', }, { name: '开曼群岛元', code: 'KYD', symbol: '$', + numericCode: '136', }, { name: '坚戈', code: 'KZT', symbol: 'лв', + numericCode: '398', }, { name: '基普', code: 'LAK', symbol: '₭', + numericCode: '418', }, { name: '黎巴嫩镑', code: 'LBP', symbol: '£', + numericCode: '422', }, { name: '斯里兰卡卢比', code: 'LKR', symbol: '₨', + numericCode: '144', }, { name: '利比里亚元', code: 'LRD', symbol: '$', + numericCode: '430', }, { name: '利比亚第纳尔', code: 'LYD', symbol: '', + numericCode: '434', }, { name: '摩洛哥迪拉姆', code: 'MAD', symbol: '', + numericCode: '504', }, { name: '摩尔多瓦列伊', code: 'MDL', symbol: '', + numericCode: '498', }, { name: '马达加斯加阿里亚里', code: 'MGA', symbol: '', + numericCode: '969', }, { name: '马其顿代纳尔', code: 'MKD', symbol: 'ден', + numericCode: '807', }, { name: '缅甸元', code: 'MMK', symbol: '', + numericCode: '104', }, { name: '图格里克', code: 'MNT', symbol: '₮', + numericCode: '496', }, { name: '澳门元', code: 'MOP', symbol: '', + numericCode: '446', }, { name: '乌吉亚', code: 'MRU', symbol: '', + numericCode: '929', }, { name: '毛里求斯卢比', code: 'MUR', symbol: '₨', + numericCode: '480', }, { name: '拉菲亚', code: 'MVR', symbol: '', + numericCode: '462', }, { name: '克瓦查', code: 'MWK', symbol: '', + numericCode: '454', }, { name: '墨西哥比索', code: 'MXN', symbol: '$', + numericCode: '484', }, { name: '马来西亚林吉特', code: 'MYR', symbol: 'RM', + numericCode: '458', }, { name: '莫桑比克梅蒂卡尔', code: 'MZN', symbol: 'MT', + numericCode: '943', }, { name: '奈拉', code: 'NGN', symbol: '₦', + numericCode: '566', }, { name: '科多巴金科多巴', code: 'NIO', symbol: 'C$', + numericCode: '558', }, { name: '挪威克朗', code: 'NOK', symbol: 'kr', + numericCode: '578', }, { name: '尼泊尔卢比', code: 'NPR', symbol: '₨', + numericCode: '524', }, { name: '新西兰元', code: 'NZD', symbol: '$', + numericCode: '554', }, { name: '阿曼里亚尔', code: 'OMR', symbol: '﷼', + numericCode: '512', }, { name: '巴尔博亚', code: 'PAB', symbol: 'B/.', + numericCode: '590', }, { name: '秘鲁新索尔', code: 'PEN', symbol: 'S/.', + numericCode: '604', }, { name: '基纳', code: 'PGK', symbol: '', + numericCode: '598', }, { name: '菲律宾比索', code: 'PHP', symbol: 'Php', + numericCode: '608', }, { name: '巴基斯坦卢比', code: 'PKR', symbol: '₨', + numericCode: '586', }, { name: '兹罗提', code: 'PLN', symbol: 'zł', + numericCode: '985', }, { name: '巴拉圭瓜拉尼', code: 'PYG', symbol: 'Gs', + numericCode: '600', }, { name: '卡塔尔里亚尔', code: 'QAR', symbol: '﷼', + numericCode: '634', }, { name: '新卢', code: 'RON', symbol: 'lei', + numericCode: '946', }, { name: '塞尔维亚第纳尔', code: 'RSD', symbol: 'Дин.', + numericCode: '941', }, { name: '俄罗斯卢布', code: 'RUB', symbol: 'руб', + numericCode: '643', }, { name: '卢旺达法郎', code: 'RWF', symbol: '', + numericCode: '646', }, { name: '沙特里亚尔', code: 'SAR', symbol: '﷼', + numericCode: '682', }, { name: '所罗门群岛元', code: 'SBD', symbol: '$', + numericCode: '090', }, { name: '塞舌尔卢比', code: 'SCR', symbol: '₨', + numericCode: '690', }, { name: '苏丹镑', code: 'SDG', symbol: '', + numericCode: '938', }, { name: '瑞典克朗', code: 'SEK', symbol: 'kr', + numericCode: '752', }, { name: '新加坡元', code: 'SGD', symbol: '$', + numericCode: '702', }, { name: '圣赫勒拿镑', code: 'SHP', symbol: '£', + numericCode: '654', }, { name: '利昂', code: 'SLE', symbol: '', + numericCode: '925', }, { name: '索马里先令', code: 'SOS', symbol: 'S', + numericCode: '706', }, { name: '苏里南元', code: 'SRD', symbol: '$', + numericCode: '968', }, { name: '南苏丹镑', code: 'SSP', symbol: '', + numericCode: '728', }, { name: '多布拉', code: 'STN', symbol: 'Db', + numericCode: '930', }, { name: '叙利亚镑', code: 'SYP', symbol: '£', + numericCode: '760', }, { name: '利兰吉尼', code: 'SZL', symbol: '', + numericCode: '748', }, { name: '泰铢', code: 'THB', symbol: '฿', + numericCode: '764', }, { name: '索莫尼', code: 'TJS', symbol: '', + numericCode: '972', }, { name: '马纳特', code: 'TMT', symbol: '', + numericCode: '934', }, { name: '突尼斯第纳尔', code: 'TND', symbol: '', + numericCode: '788', }, { name: '帕安加', code: 'TOP', symbol: '', + numericCode: '776', }, { name: '土耳其里拉', code: 'TRY', symbol: '₺', + numericCode: '949', }, { name: '特立尼达和多巴哥元', code: 'TTD', symbol: 'TT$', + numericCode: '780', }, { name: '新台币', code: 'TWD', symbol: 'NT$', + numericCode: '901', }, { name: '坦桑尼亚先令', code: 'TZS', symbol: '', + numericCode: '834', }, { name: '格里夫尼亚', code: 'UAH', symbol: '₴', + numericCode: '980', }, { name: '乌干达先令', code: 'UGX', symbol: '', + numericCode: '800', }, { name: '美元', code: 'USD', symbol: '$', + numericCode: '840', }, { name: '乌拉圭比索', code: 'UYU', symbol: '$U', + numericCode: '858', }, { name: '乌兹别克索姆', code: 'UZS', symbol: 'лв', + numericCode: '860', }, { name: '委内瑞拉玻利瓦尔', code: 'VES', symbol: 'Bs', + numericCode: '928', }, { name: '越南盾', code: 'VND', symbol: '₫', + numericCode: '704', }, { name: '瓦图', code: 'VUV', symbol: '', + numericCode: '548', }, { name: '塔拉', code: 'WST', symbol: '', + numericCode: '882', }, { name: '科姆罗尔法郎', code: 'XAF', symbol: '', + numericCode: '950', }, { name: '银', code: 'XAG', symbol: 'XAG', + numericCode: '961', }, { name: '金', code: 'XAU', symbol: 'XAU', + numericCode: '959', }, { name: '东加勒比元', code: 'XCD', symbol: '$', + numericCode: '951', }, { name: '特别提款权', code: 'XDR', symbol: 'XDR', + numericCode: '960', }, { name: '中非金融合作法郎', code: 'XOF', symbol: '', + numericCode: '952', }, { name: '波利尼西亚法郎', code: 'XPF', symbol: '', + numericCode: '953', }, { name: '也门里亚尔', code: 'YER', symbol: '﷼', + numericCode: '886', }, { name: '南非兰特', code: 'ZAR', symbol: 'R', + numericCode: '710', }, { name: '赞比亚克瓦查', code: 'ZMW', symbol: 'ZK', + numericCode: '967', }, { name: '津巴布韦元', code: 'ZWL', symbol: '$', + numericCode: '932', }, ]; diff --git a/src/locales/zh_CN/food/adjective.ts b/src/locales/zh_CN/food/adjective.ts new file mode 100644 index 00000000000..ad2a5042d1f --- /dev/null +++ b/src/locales/zh_CN/food/adjective.ts @@ -0,0 +1,22 @@ +export default [ + '咸香', + '多汁', + '微苦', + '浓郁', + '清淡', + '清爽', + '滑嫩', + '焦香', + '爽口', + '甘甜', + '筋道', + '细腻', + '软糯', + '酥脆', + '酸爽', + '醇厚', + '香甜', + '香辣', + '鲜嫩', + '麻辣', +]; diff --git a/src/locales/zh_CN/food/description_pattern.ts b/src/locales/zh_CN/food/description_pattern.ts new file mode 100644 index 00000000000..dc0600c96aa --- /dev/null +++ b/src/locales/zh_CN/food/description_pattern.ts @@ -0,0 +1,16 @@ +export default [ + '{{food.ingredient}}搭配一撮{{food.spice}},上面放着焦糖化的{{food.fruit}}和一层鲜奶油。', + '{{food.meat}}牛排,外裹一层{{food.adjective}}的{{food.spice}}酥壳,配上{{food.spice}}味的捣碎{{food.vegetable}}。', + '一份经典的{{food.meat}}馅饼,搭配{{food.adjective}}的{{food.ingredient}},外皮是{{food.adjective}}的酥皮,表面烘烤出诱人的金黄色。', + '一锅浓郁的{{food.adjective}}炖菜,带有{{food.ethnic_category}}风味,融合了{{food.adjective}}的肉类、{{food.adjective}}的蔬菜与一锅{{food.adjective}}、{{food.adjective}}的浓汤。', + '丰盛的炖菜,融合{{food.ingredient}}与{{food.meat}},加入{{food.spice}}与{{food.vegetable}}慢炖成充满家常味的美食。', + '多汁的{{food.meat}},按个人喜好烤制,淋上大胆的{{food.spice}}酱汁,旁边配有烤{{food.vegetable}}。', + '新鲜的什锦蔬菜沙拉,搭配{{food.spice}}腌制过的{{food.meat}}与清爽的{{food.vegetable}}。', + '温暖人心的{{food.ethnic_category}}风味汤,选用新鲜的{{food.ingredient}}和传统香料慢炖而成。', + '烘烤过的{{food.ingredient}}填入{{food.meat}}中,撒上{{food.spice}}与{{food.adjective}}的香草,配以烤制的{{food.vegetable}}拼盘。', + '烤制的{{food.meat}}串,事先以{{food.ethnic_category}}香料腌制,配以新鲜的{{food.vegetable}}与{{food.fruit}}沙拉。', + '简单的{{food.fruit}}派。没有花哨的装饰。就是派。', + '精致的{{food.meat}}烤肉,注入{{food.fruit}}的香气,慢火烘烤至完美,佐以浓郁奶香的{{food.vegetable}}泥。', + '这是一道迷人的咸甜塔,融合了{{food.adjective}}的{{food.vegetable}}与香甜的{{food.fruit}},搭配奶香浓郁的酥皮,点缀上一点{{food.spice}}。', + '酥脆炸{{food.meat}}块,撒上{{food.spice}},搭配酸甜的{{food.fruit}}蘸酱。', +]; diff --git a/src/locales/zh_CN/food/dish.ts b/src/locales/zh_CN/food/dish.ts new file mode 100644 index 00000000000..170084284e0 --- /dev/null +++ b/src/locales/zh_CN/food/dish.ts @@ -0,0 +1,52 @@ +export default [ + '三杯鸡', + '京酱肉丝', + '凉拌黄瓜', + '凉皮', + '卤肉饭', + '叉烧包', + '口水鸡', + '咕噜肉', + '宫保鸡丁', + '小笼包', + '干煸四季豆', + '干锅花菜', + '扬州炒饭', + '春卷', + '梅菜扣肉', + '水煮牛肉', + '油焖大虾', + '泡椒凤爪', + '清蒸鲈鱼', + '炸酱面', + '烧卖', + '煎饺', + '牛杂煲', + '牛肉面', + '牛腩粉', + '狮子头', + '糖醋排骨', + '糯米鸡', + '红烧肉', + '腊味煲仔饭', + '臭豆腐', + '芙蓉蛋', + '萝卜炖牛腩', + '葱爆羊肉', + '蒜蓉西兰花', + '虾仁滑蛋', + '蚝油生菜', + '蛋炒饭', + '豆角焖面', + '酸辣汤', + '铁板豆腐', + '锅巴菜', + '锅贴', + '韭菜盒子', + '馄饨', + '香煎带鱼', + '鱼香肉丝', + '鸡蛋灌饼', + '麻婆豆腐', + '麻辣香锅', +]; diff --git a/src/locales/zh_CN/food/dish_pattern.ts b/src/locales/zh_CN/food/dish_pattern.ts new file mode 100644 index 00000000000..1ab6587be27 --- /dev/null +++ b/src/locales/zh_CN/food/dish_pattern.ts @@ -0,0 +1,18 @@ +export default [ + '{{food.adjective}}{{food.ethnic_category}}风味炖菜', + '{{food.adjective}}{{food.meat}}配{{food.vegetable}}', + '{{food.ethnic_category}}{{food.vegetable}}炒{{food.meat}}', + '{{food.ethnic_category}}{{food.vegetable}}炖{{food.vegetable}}', + '{{food.ethnic_category}}风味{{food.ingredient}}汤', + '{{food.fruit}}与{{food.fruit}}水果塔', + '{{food.fruit}}派', + '{{food.fruit}}酱烤{{food.meat}}串', + '{{food.fruit}}风味{{food.meat}}烤肉', + '{{food.ingredient}}与{{food.meat}}馅饼', + '{{food.meat}}串', + '{{food.meat}}配{{food.fruit}}酱', + '{{food.spice}}腌制{{food.meat}}', + '{{food.spice}}香料包裹的{{food.meat}}', + '{{food.vegetable}}沙拉', + '{{food.vegetable}}炒{{food.meat}}', +]; diff --git a/src/locales/zh_CN/food/ethnic_category.ts b/src/locales/zh_CN/food/ethnic_category.ts new file mode 100644 index 00000000000..d40df9e1866 --- /dev/null +++ b/src/locales/zh_CN/food/ethnic_category.ts @@ -0,0 +1,16 @@ +export default [ + '东北菜', + '云南菜', + '客家菜', + '川菜', + '徽菜', + '浙菜', + '湘菜', + '潮汕菜', + '粤菜', + '苏菜', + '西北菜', + '贵州菜', + '闽菜', + '鲁菜', +]; diff --git a/src/locales/zh_CN/food/fruit.ts b/src/locales/zh_CN/food/fruit.ts new file mode 100644 index 00000000000..72ca010d11a --- /dev/null +++ b/src/locales/zh_CN/food/fruit.ts @@ -0,0 +1,50 @@ +export default [ + '哈密瓜', + '大根', + '山竹', + '干杏', + '干梅', + '指柠檬', + '无花果', + '杏子', + '杨桃', + '枇杷', + '枣', + '枸杞', + '柑橘', + '柠檬', + '梅子', + '樱桃', + '橄榄', + '橙子', + '沙果', + '火龙果', + '甘蓝', + '番石榴', + '番茄', + '番荔枝', + '石榴', + '绿芽', + '芒果', + '苹果', + '茄子', + '草莓', + '荔枝', + '莓果', + '菠萝', + '葡萄', + '葡萄柚', + '蓝莓', + '蔓越莓', + '血橙', + '西瓜', + '费约果', + '金橘', + '雪豆', + '青柠', + '香蕉', + '鳄梨', + '黑加仑', + '黑莓', + '龙眼', +]; diff --git a/src/locales/zh_CN/food/index.ts b/src/locales/zh_CN/food/index.ts new file mode 100644 index 00000000000..65e4b8a870c --- /dev/null +++ b/src/locales/zh_CN/food/index.ts @@ -0,0 +1,30 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { FoodDefinition } from '../../..'; +import adjective from './adjective'; +import description_pattern from './description_pattern'; +import dish from './dish'; +import dish_pattern from './dish_pattern'; +import ethnic_category from './ethnic_category'; +import fruit from './fruit'; +import ingredient from './ingredient'; +import meat from './meat'; +import spice from './spice'; +import vegetable from './vegetable'; + +const food: FoodDefinition = { + adjective, + description_pattern, + dish, + dish_pattern, + ethnic_category, + fruit, + ingredient, + meat, + spice, + vegetable, +}; + +export default food; diff --git a/src/locales/zh_CN/food/ingredient.ts b/src/locales/zh_CN/food/ingredient.ts new file mode 100644 index 00000000000..6114dbb39ac --- /dev/null +++ b/src/locales/zh_CN/food/ingredient.ts @@ -0,0 +1,85 @@ +export default [ + '丝瓜', + '冬瓜', + '南瓜', + '四季豆', + '土豆', + '大白菜', + '大米', + '大葱', + '大蒜', + '娃娃菜', + '小白菜', + '小米', + '小葱', + '山药', + '干辣椒', + '平菇', + '开心果', + '木耳', + '杏仁', + '杏鲍菇', + '松子', + '枸杞', + '核桃', + '油菜', + '洋葱', + '海带', + '燕麦', + '玉米', + '玉米淀粉', + '生姜', + '番茄酱', + '白芝麻', + '百合', + '空心菜', + '糯米', + '紫甘蓝', + '紫菜', + '红枣', + '红椒', + '红薯', + '红豆', + '绿豆', + '胡萝卜', + '腐竹', + '腰果', + '芋头', + '芝麻豆酱', + '花生', + '花生酱', + '花菜', + '芹菜', + '苦瓜', + '茄子', + '茶树菇', + '荞麦', + '莲子', + '莲藕', + '莴笋', + '菠菜', + '萝卜', + '蒜苗', + '蒜蓉', + '西兰花', + '西红柿', + '西葫芦', + '豆浆', + '豆皮', + '豆腐', + '豆角', + '辣椒', + '金针菇', + '银耳', + '青椒', + '香米', + '香菇', + '香菜', + '黄椒', + '黄瓜', + '黄花菜', + '黄豆', + '黑米', + '黑芝麻', + '黑豆', +]; diff --git a/src/locales/zh_CN/food/meat.ts b/src/locales/zh_CN/food/meat.ts new file mode 100644 index 00000000000..d16b20110b5 --- /dev/null +++ b/src/locales/zh_CN/food/meat.ts @@ -0,0 +1,15 @@ +export default [ + '火鸡肉', + '牛肉', + '猪肉', + '羊肉', + '蛇肉', + '驴肉', + '鳄鱼肉', + '鸡肉', + '鸭肉', + '鸵鸟肉', + '鸽子肉', + '鹅肉', + '鹌鹑肉', +]; diff --git a/src/locales/zh_CN/food/spice.ts b/src/locales/zh_CN/food/spice.ts new file mode 100644 index 00000000000..962a5e0f8db --- /dev/null +++ b/src/locales/zh_CN/food/spice.ts @@ -0,0 +1,42 @@ +export default [ + '丁香', + '五香粉', + '八角', + '十三香', + '味精', + '咖喱粉', + '姜黄', + '孜然', + '小茴香', + '山奈', + '干姜粉', + '干辣椒', + '干香菇粉', + '桂皮', + '桂花', + '橙皮', + '沙姜粉', + '玫瑰花', + '白胡椒粉', + '紫苏', + '罗勒', + '肉豆蔻', + '芫荽', + '花椒', + '花椒粉', + '茴香籽', + '草果', + '葱白', + '葱花', + '蒜末', + '豆蔻', + '辣椒片', + '辣椒粉', + '陈皮', + '香叶', + '香茅', + '香菜籽', + '香葱', + '鸡精', + '黑胡椒粉', +]; diff --git a/src/locales/zh_CN/food/vegetable.ts b/src/locales/zh_CN/food/vegetable.ts new file mode 100644 index 00000000000..793768cce94 --- /dev/null +++ b/src/locales/zh_CN/food/vegetable.ts @@ -0,0 +1,45 @@ +export default [ + '丝瓜', + '冬瓜', + '南瓜', + '卷心菜', + '四季豆', + '土豆', + '大白菜', + '大葱', + '娃娃菜', + '小白菜', + '尖椒', + '山药', + '毛豆', + '油菜', + '洋葱', + '生菜', + '白菜', + '白萝卜', + '空心菜', + '紫甘蓝', + '红萝卜', + '绿豆芽', + '胡萝卜', + '节瓜', + '芥蓝', + '芹菜', + '苦瓜', + '茼蒿', + '菜花', + '菠菜', + '蒜苗', + '西兰花', + '西红柿', + '西葫芦', + '豆芽', + '豆角', + '豌豆', + '辣椒', + '青椒', + '韭菜', + '香菜', + '黄瓜', + '黄豆芽', +]; diff --git a/src/locales/zh_CN/index.ts b/src/locales/zh_CN/index.ts index 7f83558d578..9a690010966 100644 --- a/src/locales/zh_CN/index.ts +++ b/src/locales/zh_CN/index.ts @@ -5,12 +5,14 @@ import type { LocaleDefinition } from '../..'; import airline from './airline'; import animal from './animal'; +import book from './book'; import color from './color'; import commerce from './commerce'; import company from './company'; import database from './database'; import date from './date'; import finance from './finance'; +import food from './food'; import hacker from './hacker'; import internet from './internet'; import location from './location'; @@ -31,12 +33,14 @@ import word from './word'; const zh_CN: LocaleDefinition = { airline, animal, + book, color, commerce, company, database, date, finance, + food, hacker, internet, location, diff --git a/src/locales/zh_CN/internet/free_email.ts b/src/locales/zh_CN/internet/free_email.ts index 8fffb1f0a4e..f3efc56bf37 100644 --- a/src/locales/zh_CN/internet/free_email.ts +++ b/src/locales/zh_CN/internet/free_email.ts @@ -3,8 +3,10 @@ export default [ '139.com', '163.com', '21cn.com', + 'foxmail.com', 'gmail.com', 'hotmail.com', + 'outlook.com', 'qq.com', 'sina.com', 'sohu.com', @@ -13,6 +15,4 @@ export default [ 'yahoo.cn', 'yahoo.com.cn', 'yeah.net', - 'foxmail.com', - 'outlook.com', ]; diff --git a/src/locales/zh_CN/location/city_name.ts b/src/locales/zh_CN/location/city_name.ts new file mode 100644 index 00000000000..7e3395056f3 --- /dev/null +++ b/src/locales/zh_CN/location/city_name.ts @@ -0,0 +1,39 @@ +export default [ + '北京', + '上海', + '广州', + '深圳', + '天津', + '重庆', + '成都', + '杭州', + '南京', + '武汉', + '西安', + '苏州', + '青岛', + '宁波', + '郑州', + '长沙', + '合肥', + '福州', + '厦门', + '大连', + '沈阳', + '济南', + '哈尔滨', + '长春', + '昆明', + '南昌', + '石家庄', + '太原', + '贵阳', + '兰州', + '海口', + '乌鲁木齐', + '呼和浩特', + '南宁', + '拉萨', + '银川', + '西宁', +]; diff --git a/src/locales/zh_CN/location/continent.ts b/src/locales/zh_CN/location/continent.ts new file mode 100644 index 00000000000..6120074c497 --- /dev/null +++ b/src/locales/zh_CN/location/continent.ts @@ -0,0 +1 @@ +export default ['亚洲', '非洲', '欧洲', '北美洲', '南美洲', '大洋洲', '南极洲']; diff --git a/src/locales/zh_CN/location/country.ts b/src/locales/zh_CN/location/country.ts new file mode 100644 index 00000000000..f40bfb05b46 --- /dev/null +++ b/src/locales/zh_CN/location/country.ts @@ -0,0 +1,210 @@ +export default [ + '阿富汗', + '阿尔巴尼亚', + '阿尔及利亚', + '安道尔', + '安哥拉', + '安圭拉', + '安提瓜和巴布达', + '阿根廷', + '亚美尼亚', + '阿鲁巴', + '澳大利亚', + '奥地利', + '阿塞拜疆', + '巴哈马', + '巴林', + '孟加拉国', + '巴巴多斯', + '白俄罗斯', + '比利时', + '伯利兹', + '贝宁', + '百慕大', + '不丹', + '玻利维亚', + '波黑', + '博茨瓦纳', + '布维岛', + '巴西', + '保加利亚', + '布基纳法索', + '布隆迪', + '柬埔寨', + '喀麦隆', + '加拿大', + '佛得角', + '中非共和国', + '乍得', + '智利', + '中国', + '哥伦比亚', + '科摩罗', + '刚果', + '库克群岛', + '哥斯达黎加', + '科特迪瓦', + '克罗地亚', + '古巴', + '库拉索', + '塞浦路斯', + '捷克', + '刚果民主共和国', + '丹麦', + '吉布提', + '多米尼加', + '多米尼加共和国', + '厄瓜多尔', + '埃及', + '萨尔瓦多', + '赤道几内亚', + '厄立特里亚', + '爱沙尼亚', + '斯威士兰', + '埃塞俄比亚', + '斐济', + '芬兰', + '法国', + '加蓬', + '冈比亚', + '格鲁吉亚', + '德国', + '加纳', + '直布罗陀', + '希腊', + '格林兰', + '格林纳达', + '瓜德罗普', + '危地马拉', + '几内亚', + '圭亚那', + '海地', + '梵蒂冈', + '洪都拉斯', + '香港', + '匈牙利', + '冰岛', + '印度', + '印度尼西亚', + '伊朗', + '伊拉克', + '爱尔兰', + '以色列', + '意大利', + '牙买加', + '日本', + '约旦', + '哈萨克斯坦', + '肯尼亚', + '基里巴斯', + '朝鲜', + '大韩民国', + '科威特', + '吉尔吉斯坦', + '老挝', + '拉脱维亚', + '黎巴嫩', + '莱索托', + '利比里亚', + '利比亚', + '列支敦士登', + '立陶宛', + '卢森堡', + '马达加斯加', + '马拉维', + '马来西亚', + '马尔代夫', + '马里', + '马耳他', + '马提尼克', + '毛里塔尼亚', + '毛里求斯', + '马约特', + '墨西哥', + '摩尔多瓦', + '摩纳哥', + '蒙古', + '黑山', + '蒙特塞拉特', + '摩洛哥', + '莫桑比克', + '缅甸', + '纳米比亚', + '瑙鲁', + '尼泊尔', + '荷兰', + '新西兰', + '尼加拉瓜', + '尼日尔', + '尼日利亚', + '纽埃', + '诺福克岛', + '北马其顿', + '挪威', + '阿曼', + '巴基斯坦', + '帕劳', + '巴勒斯坦', + '巴拿马', + '巴布亚新几内亚', + '巴拉圭', + '秘鲁', + '菲律宾', + '波兰', + '葡萄牙', + '波多黎各', + '卡塔尔', + '罗马尼亚', + '俄罗斯', + '卢旺达', + '圣巴泰勒米', + '圣赫勒拿', + '圣卢西亚', + '圣马丁', + '萨摩亚', + '圣马力诺', + '沙特阿拉伯', + '塞内加尔', + '塞尔维亚', + '塞舌尔', + '塞拉利昂', + '新加坡', + '荷属圣马丁', + '斯洛伐克', + '斯洛文尼亚', + '所罗门群岛', + '索马里', + '南非', + '南苏丹', + '西班牙', + '斯里兰卡', + '苏丹', + '苏里南', + '瑞典', + '瑞士', + '叙利亚', + '塔吉克斯坦', + '坦桑尼亚', + '泰国', + '东帝汶', + '多哥', + '托克劳', + '汤加', + '突尼斯', + '土耳其', + '土库曼斯坦', + '图瓦卢', + '乌干达', + '乌克兰', + '阿联酋', + '英国', + '美国', + '乌拉圭', + '乌兹别克斯坦', + '瓦努阿图', + '委内瑞拉', + '越南', + '也门', + '赞比亚', + '津巴布韦', +]; diff --git a/src/locales/zh_CN/location/direction.ts b/src/locales/zh_CN/location/direction.ts new file mode 100644 index 00000000000..ee7fb7a0ad6 --- /dev/null +++ b/src/locales/zh_CN/location/direction.ts @@ -0,0 +1,6 @@ +export default { + cardinal: ['北', '东', '南', '西'], + cardinal_abbr: ['北', '东', '南', '西'], + ordinal: ['东北', '西北', '东南', '西南'], + ordinal_abbr: ['东北', '西北', '东南', '西南'], +}; diff --git a/src/locales/zh_CN/location/index.ts b/src/locales/zh_CN/location/index.ts index 5cc09a9d4b3..6219e766507 100644 --- a/src/locales/zh_CN/location/index.ts +++ b/src/locales/zh_CN/location/index.ts @@ -4,25 +4,39 @@ */ import type { LocationDefinition } from '../../..'; import building_number from './building_number'; +import city_name from './city_name'; import city_pattern from './city_pattern'; import city_prefix from './city_prefix'; import city_suffix from './city_suffix'; +import continent from './continent'; +import country from './country'; +import direction from './direction'; +import language from './language'; import postcode from './postcode'; +import secondary_address from './secondary_address'; import state from './state'; import state_abbr from './state_abbr'; import street_address from './street_address'; +import street_name from './street_name'; import street_pattern from './street_pattern'; import street_suffix from './street_suffix'; const location: LocationDefinition = { building_number, + city_name, city_pattern, city_prefix, city_suffix, + continent, + country, + direction, + language, postcode, + secondary_address, state, state_abbr, street_address, + street_name, street_pattern, street_suffix, }; diff --git a/src/locales/zh_CN/location/language.ts b/src/locales/zh_CN/location/language.ts new file mode 100644 index 00000000000..82d8d3527db --- /dev/null +++ b/src/locales/zh_CN/location/language.ts @@ -0,0 +1,43 @@ +export default [ + { name: '汉语', alpha2: 'zh', alpha3: 'zho' }, + { name: '英语', alpha2: 'en', alpha3: 'eng' }, + { name: '法语', alpha2: 'fr', alpha3: 'fra' }, + { name: '德语', alpha2: 'de', alpha3: 'deu' }, + { name: '西班牙语', alpha2: 'es', alpha3: 'spa' }, + { name: '俄语', alpha2: 'ru', alpha3: 'rus' }, + { name: '日语', alpha2: 'ja', alpha3: 'jpn' }, + { name: '韩语', alpha2: 'ko', alpha3: 'kor' }, + { name: '阿拉伯语', alpha2: 'ar', alpha3: 'ara' }, + { name: '葡萄牙语', alpha2: 'pt', alpha3: 'por' }, + { name: '意大利语', alpha2: 'it', alpha3: 'ita' }, + { name: '荷兰语', alpha2: 'nl', alpha3: 'nld' }, + { name: '泰语', alpha2: 'th', alpha3: 'tha' }, + { name: '印度语', alpha2: 'hi', alpha3: 'hin' }, + { name: '孟加拉语', alpha2: 'bn', alpha3: 'ben' }, + { name: '印尼语', alpha2: 'id', alpha3: 'ind' }, + { name: '马来语', alpha2: 'ms', alpha3: 'msa' }, + { name: '越南语', alpha2: 'vi', alpha3: 'vie' }, + { name: '乌尔都语', alpha2: 'ur', alpha3: 'urd' }, + { name: '芬兰语', alpha2: 'fi', alpha3: 'fin' }, + { name: '瑞典语', alpha2: 'sv', alpha3: 'swe' }, + { name: '希腊语', alpha2: 'el', alpha3: 'ell' }, + { name: '捷克语', alpha2: 'cs', alpha3: 'ces' }, + { name: '匈牙利语', alpha2: 'hu', alpha3: 'hun' }, + { name: '罗马尼亚语', alpha2: 'ro', alpha3: 'ron' }, + { name: '乌克兰语', alpha2: 'uk', alpha3: 'ukr' }, + { name: '塞尔维亚语', alpha2: 'sr', alpha3: 'srp' }, + { name: '克罗地亚语', alpha2: 'hr', alpha3: 'hrv' }, + { name: '斯洛伐克语', alpha2: 'sk', alpha3: 'slk' }, + { name: '斯洛文尼亚语', alpha2: 'sl', alpha3: 'slv' }, + { name: '爱尔兰语', alpha2: 'ga', alpha3: 'gle' }, + { name: '拉脱维亚语', alpha2: 'lv', alpha3: 'lav' }, + { name: '立陶宛语', alpha2: 'lt', alpha3: 'lit' }, + { name: '爱沙尼亚语', alpha2: 'et', alpha3: 'est' }, + { name: '马耳他语', alpha2: 'mt', alpha3: 'mlt' }, + { name: '阿尔巴尼亚语', alpha2: 'sq', alpha3: 'sqi' }, + { name: '摩尔多瓦语', alpha2: 'ro', alpha3: 'ron' }, + { name: '格鲁吉亚语', alpha2: 'ka', alpha3: 'kat' }, + { name: '亚美尼亚语', alpha2: 'hy', alpha3: 'hye' }, + { name: '哈萨克语', alpha2: 'kk', alpha3: 'kaz' }, + { name: '吉尔吉斯语', alpha2: 'ky', alpha3: 'kir' }, +]; diff --git a/src/locales/zh_CN/location/secondary_address.ts b/src/locales/zh_CN/location/secondary_address.ts new file mode 100644 index 00000000000..a2ff5974822 --- /dev/null +++ b/src/locales/zh_CN/location/secondary_address.ts @@ -0,0 +1 @@ +export default ['公寓 ###', '套房 ###']; diff --git a/src/locales/zh_CN/location/street_name.ts b/src/locales/zh_CN/location/street_name.ts new file mode 100644 index 00000000000..640cfed0b03 --- /dev/null +++ b/src/locales/zh_CN/location/street_name.ts @@ -0,0 +1,135 @@ +export default [ + '长安街', + '北京路', + '南京路', + '复兴路', + '中山路', + '人民路', + '文化路', + '东风路', + '光明路', + '解放路', + '团结路', + '天安门路', + '市场街', + '南门街', + '北大街', + '南湖路', + '紫荆路', + '交通路', + '星光街', + '陶然路', + '燕子岭路', + '南华路', + '恒大路', + '新兴路', + '红旗街', + '沿河路', + '工业路', + '莲花路', + '东方路', + '华侨路', + '绿化路', + '水泥路', + '西湖路', + '朝阳路', + '狮山路', + '文艺路', + '开放路', + '兴业街', + '齐齐哈尔街', + '建设路', + '红星路', + '山水路', + '机场路', + '星河路', + '幸福街', + '云南路', + '陆家嘴路', + '滨海路', + '东岳路', + '中兴路', + '长江路', + '富春街', + '蓝天街', + '清华路', + '阳光大道', + '广场街', + '华美路', + '人民街', + '科技街', + '西门街', + '东大街', + '永安街', + '明日路', + '上街', + '立新街', + '龙潭路', + '光明大街', + '江南大道', + '沙河路', + '回民街', + '解放大街', + '幸福路', + '南街', + '北街', + '花园路', + '嘉禾路', + '元宝街', + '桃花街', + '金秋街', + '天河路', + '海滨大道', + '和平街', + '柳树路', + '梅花街', + '桂花街', + '观音路', + '华东路', + '胜利路', + '东阳街', + '宜兴路', + '紫薇路', + '滨江路', + '保卫路', + '古城路', + '友谊街', + '烈士路', + '桃花源路', + '大成路', + '和平大道', + '华阳路', + '老街', + '东方大道', + '银川路', + '汇源路', + '辉南路', + '慈溪路', + '古道街', + '绿色大道', + '十字路', + '百步街', + '连云街', + '白银路', + '环城路', + '朝霞路', + '红旗大道', + '双林街', + '龙江路', + '永乐街', + '福源街', + '西门路', + '新荣街', + '龙山街', + '安东路', + '福田街', + '景山街', + '新街', + '枫林街', + '裕民街', + '泉水路', + '乐土街', + '环湖街', + '紫竹街', + '青年街', +]; diff --git a/src/locales/zh_CN/person/index.ts b/src/locales/zh_CN/person/index.ts index c4c25531954..c33d0d6b643 100644 --- a/src/locales/zh_CN/person/index.ts +++ b/src/locales/zh_CN/person/index.ts @@ -11,6 +11,7 @@ import last_name from './last_name'; import last_name_pattern from './last_name_pattern'; import name_ from './name'; import prefix from './prefix'; +import sex from './sex'; const person: PersonDefinition = { bio_part, @@ -21,6 +22,7 @@ const person: PersonDefinition = { last_name_pattern, name: name_, prefix, + sex, }; export default person; diff --git a/src/locales/zh_CN/person/sex.ts b/src/locales/zh_CN/person/sex.ts new file mode 100644 index 00000000000..b4f2c80da4b --- /dev/null +++ b/src/locales/zh_CN/person/sex.ts @@ -0,0 +1 @@ +export default ['女', '男']; diff --git a/src/locales/zh_CN/word/conjunction.ts b/src/locales/zh_CN/word/conjunction.ts new file mode 100644 index 00000000000..269c6cae901 --- /dev/null +++ b/src/locales/zh_CN/word/conjunction.ts @@ -0,0 +1,32 @@ +export default [ + '和', + '而', + '或者', + '但是', + '因为', + '所以', + '虽然', + '如果', + '即使', + '既然', + '无论', + '不但', + '而且', + '不仅', + '就是', + '不过', + '然而', + '而是', + '或者是', + '以便', + '除非', + '只要', + '一旦', + '以致', + '以免', + '哪怕', + '宁可', + '即便', + '乃至', + '甚至', +]; diff --git a/src/locales/zh_CN/word/index.ts b/src/locales/zh_CN/word/index.ts index 8a054c0a572..3aa438b70ce 100644 --- a/src/locales/zh_CN/word/index.ts +++ b/src/locales/zh_CN/word/index.ts @@ -5,11 +5,19 @@ import type { WordDefinition } from '../../..'; import adjective from './adjective'; import adverb from './adverb'; +import conjunction from './conjunction'; +import interjection from './interjection'; +import noun from './noun'; +import preposition from './preposition'; import verb from './verb'; const word: WordDefinition = { adjective, adverb, + conjunction, + interjection, + noun, + preposition, verb, }; diff --git a/src/locales/zh_CN/word/interjection.ts b/src/locales/zh_CN/word/interjection.ts new file mode 100644 index 00000000000..a5bd59ab109 --- /dev/null +++ b/src/locales/zh_CN/word/interjection.ts @@ -0,0 +1,32 @@ +export default [ + '啊', + '哎呀', + '哇', + '嘿', + '唉', + '哎', + '哈', + '呀', + '哦', + '呃', + '哼', + '呕', + '嗨', + '哇塞', + '咦', + '嘘', + '呜', + '呜呼', + '哟', + '呼', + '呃呃', + '喂', + '哇哦', + '哒', + '嘿嘿', + '哎哟', + '啧啧', + '咚', + '哗', + '哐', +]; diff --git a/src/locales/zh_CN/word/noun.ts b/src/locales/zh_CN/word/noun.ts new file mode 100644 index 00000000000..dd9b30b4d99 --- /dev/null +++ b/src/locales/zh_CN/word/noun.ts @@ -0,0 +1,56 @@ +export default [ + '人', + '书', + '电脑', + '学校', + '老师', + '学生', + '城市', + '国家', + '手机', + '桌子', + '椅子', + '眼镜', + '时间', + '天气', + '语言', + '文化', + '音乐', + '电影', + '食物', + '饮料', + '朋友', + '家人', + '孩子', + '工作', + '汽车', + '飞机', + '火车', + '衣服', + '河流', + '山', + '水', + '动物', + '植物', + '钱包', + '钥匙', + '门', + '窗户', + '笔', + '本子', + '电视', + '冰箱', + '洗衣机', + '公园', + '超市', + '医院', + '银行', + '道路', + '楼房', + '桥', + '海洋', + '星星', + '太阳', + '公司', + '地铁', +]; diff --git a/src/locales/zh_CN/word/preposition.ts b/src/locales/zh_CN/word/preposition.ts new file mode 100644 index 00000000000..061c58f3317 --- /dev/null +++ b/src/locales/zh_CN/word/preposition.ts @@ -0,0 +1,31 @@ +export default [ + '在', + '到', + '从', + '向', + '对', + '比', + '跟', + '给', + '往', + '自', + '朝', + '沿着', + '顺着', + '关于', + '对于', + '直到', + '除了', + '经过', + '靠近', + '接近', + '随着', + '由于', + '因为', + '依靠', + '根据', + '基于', + '围绕', + '为了', + '通过', +]; diff --git a/src/locales/zh_TW/person/index.ts b/src/locales/zh_TW/person/index.ts index f46b710ac80..08d9b1e0dec 100644 --- a/src/locales/zh_TW/person/index.ts +++ b/src/locales/zh_TW/person/index.ts @@ -8,6 +8,7 @@ import last_name from './last_name'; import last_name_pattern from './last_name_pattern'; import name_ from './name'; import prefix from './prefix'; +import sex from './sex'; const person: PersonDefinition = { first_name, @@ -15,6 +16,7 @@ const person: PersonDefinition = { last_name_pattern, name: name_, prefix, + sex, }; export default person; diff --git a/src/locales/zh_TW/person/sex.ts b/src/locales/zh_TW/person/sex.ts new file mode 100644 index 00000000000..b4f2c80da4b --- /dev/null +++ b/src/locales/zh_TW/person/sex.ts @@ -0,0 +1 @@ +export default ['女', '男']; diff --git a/src/locales/zu_ZA/internet/domain_suffix.ts b/src/locales/zu_ZA/internet/domain_suffix.ts index c2a0043b255..b4deb5cf183 100644 --- a/src/locales/zu_ZA/internet/domain_suffix.ts +++ b/src/locales/zu_ZA/internet/domain_suffix.ts @@ -1 +1 @@ -export default ['co.za', 'com', 'org.za', 'info', 'net.za']; +export default ['co.za', 'com', 'info', 'net.za', 'org.za']; diff --git a/src/modules/commerce/index.ts b/src/modules/commerce/index.ts index 70482d8008d..ef27c161e2b 100644 --- a/src/modules/commerce/index.ts +++ b/src/modules/commerce/index.ts @@ -1,5 +1,6 @@ import { FakerError } from '../../errors/faker-error'; import { ModuleBase } from '../../internal/module-base'; +import { calculateUPCCheckDigit } from './upc-check-digit'; // Source for official prefixes: https://www.isbn-international.org/range_file_generation const ISBN_LENGTH_RULES: Record< @@ -84,6 +85,8 @@ const ISBN_LENGTH_RULES: Record< * 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://fakerjs.dev/api/commerce.html#price). + * + * To work with product identifiers, generate an ISBN via [`isbn()`](https://fakerjs.dev/api/commerce.html#isbn) or a 12‑digit UPC via [`upc()`](https://fakerjs.dev/api/commerce.html#upc). */ export class CommerceModule extends ModuleBase { /** @@ -109,7 +112,8 @@ export class CommerceModule extends ModuleBase { * @since 3.0.0 */ productName(): string { - return `${this.productAdjective()} ${this.productMaterial()} ${this.product()}`; + const patterns = this.faker.definitions.commerce.product_name.pattern; + return this.faker.helpers.fake(patterns); } /** @@ -349,4 +353,51 @@ export class CommerceModule extends ModuleBase { return data.join(separator); } + + /** + * Returns a valid [UPC‑A](https://en.wikipedia.org/wiki/Universal_Product_Code) (12 digits). + * + * When a `prefix` is provided, it is padded with random digits so that the body + * has 11 digits. The 12th digit (check digit) is computed using the Modulo 10 algorithm. + * + * @param options An options object. + * @param options.prefix Optional numeric prefix for the UPC body (0–11 digits). + * + * @returns A 12‑digit UPC‑A string. + * + * @throws {FakerError} If `prefix` contains non-digit characters or more than 11 digits. + * + * @example + * faker.commerce.upc() // '036000291452' + * faker.commerce.upc({ prefix: '01234' }) // '012345678905' + * + * @since 10.2.0 + */ + upc( + options: { + /** + * Optional numeric prefix for the UPC body (0–11 digits). + */ + prefix?: string; + } = {} + ): string { + const { prefix = '' } = options; + if (prefix && /\D/.test(prefix)) { + throw new FakerError('Prefix must contain only numeric digits'); + } + + if (prefix.length > 11) { + throw new FakerError('Prefix must be at most 11 numeric digits'); + } + + const remaining = 11 - prefix.length; + const rand = this.faker.string.numeric({ + length: remaining, + allowLeadingZeros: true, + }); + + const body = `${prefix}${rand}`; // 11 digits + const check = calculateUPCCheckDigit(body); + return `${body}${check}`; // 12-digit UPC-A + } } diff --git a/src/modules/commerce/upc-check-digit.ts b/src/modules/commerce/upc-check-digit.ts new file mode 100644 index 00000000000..a3911d15a33 --- /dev/null +++ b/src/modules/commerce/upc-check-digit.ts @@ -0,0 +1,32 @@ +import { FakerError } from '../../errors/faker-error'; + +/** + * Calculates the check digit for a UPC‑A using the Modulo 10 algorithm. + * + * @param digits The first 11 digits (UPC body) as a numeric string. + * + * @returns The check digit (0–9). + * + * @throws {FakerError} If `digits` is not exactly 11 numeric characters. + * + * @see upc + * + * @since 10.2.0 + */ +export function calculateUPCCheckDigit(digits: string): number { + if (!/^\d{11}$/.test(digits)) { + throw new FakerError( + 'calculateUPCCheckDigit expects exactly 11 numeric digits' + ); + } + + let sum = 0; + let idx = 0; + for (const digit of digits) { + const n = Number.parseInt(digit, 10); + sum += n * (idx % 2 === 0 ? 3 : 1); + idx++; + } + + return (10 - (sum % 10)) % 10; +} diff --git a/src/modules/date/index.ts b/src/modules/date/index.ts index 65d4a7d9135..564e7b4d745 100644 --- a/src/modules/date/index.ts +++ b/src/modules/date/index.ts @@ -142,8 +142,8 @@ export class SimpleDateModule extends SimpleModuleBase { * @param options.from The early date boundary. * @param options.to The late date boundary. * - * @throws If `from` or `to` are not provided. - * @throws If `from` is after `to`. + * @throws {FakerError} If `from` or `to` are not provided. + * @throws {FakerError} If `from` is after `to`. * * @example * faker.date.between({ from: '2020-01-01T00:00:00.000Z', to: '2030-01-01T00:00:00.000Z' }) // '2026-05-16T02:22:53.002Z' @@ -160,13 +160,6 @@ export class SimpleDateModule extends SimpleModuleBase { */ to: string | Date | number; }): Date { - // TODO @matthewmayer 2023-03-27: Consider removing in v10 as this check is only needed in JS - if (options == null || options.from == null || options.to == null) { - throw new FakerError( - 'Must pass an options object with `from` and `to` values.' - ); - } - const { from, to } = options; const fromMs = toDate(from, 'from').getTime(); @@ -186,8 +179,8 @@ export class SimpleDateModule extends SimpleModuleBase { * @param options.to The late date boundary. * @param options.count The number of dates to generate. Defaults to `3`. * - * @throws If `from` or `to` are not provided. - * @throws If `from` is after `to`. + * @throws {FakerError} If `from` or `to` are not provided. + * @throws {FakerError} If `from` is after `to`. * * @example * faker.date.betweens({ from: '2020-01-01T00:00:00.000Z', to: '2030-01-01T00:00:00.000Z' }) @@ -234,17 +227,10 @@ export class SimpleDateModule extends SimpleModuleBase { max: number; }; }): Date[] { - // TODO @matthewmayer 2023-03-27: Consider removing in v10 as this check is only needed in JS - if (options == null || options.from == null || options.to == null) { - throw new FakerError( - 'Must pass an options object with `from` and `to` values.' - ); - } - const { from, to, count = 3 } = options; return this.faker.helpers .multiple(() => this.between({ from, to }), { count }) - .sort((a, b) => a.getTime() - b.getTime()); + .toSorted((a, b) => a.getTime() - b.getTime()); } /** @@ -486,21 +472,8 @@ export class SimpleDateModule extends SimpleModuleBase { min = 18, max = 80, refDate: rawRefDate = this.faker.defaultRefDate(), - mode: originalMode, - min: originalMin, - max: originalMax, } = options; - // TODO @ST-DDT 2024-03-17: Remove check in v10 - const optionsSet = [originalMin, originalMax, originalMode].filter( - (x) => x != null - ).length; - if (optionsSet % 3 !== 0) { - throw new FakerError( - "The 'min', 'max', and 'mode' options must be set together." - ); - } - const refDate = toDate(rawRefDate); const refYear = refDate.getUTCFullYear(); diff --git a/src/modules/finance/iban.ts b/src/modules/finance/iban.ts index b730d3655c8..c4ca0e7f1fc 100644 --- a/src/modules/finance/iban.ts +++ b/src/modules/finance/iban.ts @@ -500,7 +500,7 @@ const iban: Iban = { total: 22, bban: [ { - type: 'c', + type: 'a', count: 4, }, { @@ -529,6 +529,17 @@ const iban: Iban = { ], format: 'ILkk bbbn nncc cccc cccc ccc', }, + { + country: 'IR', + total: 26, + bban: [ + { + type: 'n', + count: 22, + }, + ], + format: 'IRkk bbbb cccc cccc cccc cccc cc', + }, { country: 'IT', total: 27, @@ -862,7 +873,7 @@ const iban: Iban = { total: 29, bban: [ { - type: 'c', + type: 'a', count: 4, }, { diff --git a/src/modules/finance/index.ts b/src/modules/finance/index.ts index dd8ded5384e..743d9acbcf3 100644 --- a/src/modules/finance/index.ts +++ b/src/modules/finance/index.ts @@ -1,5 +1,4 @@ import { FakerError } from '../../errors/faker-error'; -import { deprecated } from '../../internal/deprecated'; import { ModuleBase } from '../../internal/module-base'; import type { BitcoinAddressFamilyType, BitcoinNetworkType } from './bitcoin'; import { @@ -27,6 +26,11 @@ export interface Currency { * The symbol for the currency (e.g. `$`). */ symbol: string; + + /** + * The ISO 4217 numeric code for the currency (e.g. `840`). + */ + numericCode: string; } /** @@ -201,171 +205,6 @@ export class FinanceModule extends ModuleBase { return `${routingNumber}${Math.ceil(sum / 10) * 10 - sum}`; } - /** - * Generates a random masked number. - * - * @param length The length of the unmasked number. Defaults to `4`. - * - * @example - * faker.finance.maskedNumber() // '(...9711)' - * faker.finance.maskedNumber(3) // '(...342)' - * - * @since 8.0.0 - * - * @deprecated Use `faker.finance.iban().replace(/(?<=.{4})\w(?=.{2})/g, '*')` or a similar approach instead. - */ - maskedNumber(length?: number): string; - /** - * Generates a random masked number. - * - * @param options An options object. - * @param options.length The length of the unmasked number. Defaults to `4`. - * @param options.parens Whether to use surrounding parenthesis. Defaults to `true`. - * @param options.ellipsis Whether to prefix the numbers with an ellipsis. Defaults to `true`. - * - * @example - * faker.finance.maskedNumber() // '(...9711)' - * faker.finance.maskedNumber({ length: 3 }) // '(...342)' - * faker.finance.maskedNumber({ length: 3, parens: false }) // '...236' - * faker.finance.maskedNumber({ length: 3, parens: false, ellipsis: false }) // '298' - * - * @since 8.0.0 - * - * @deprecated Use `faker.finance.iban().replace(/(?<=.{4})\w(?=.{2})/g, '*')` or a similar approach instead. - */ - maskedNumber(options?: { - /** - * The length of the unmasked number. - * - * @default 4 - */ - length?: number; - /** - * Whether to use surrounding parenthesis. - * - * @default true - */ - parens?: boolean; - /** - * Whether to prefix the numbers with an ellipsis. - * - * @default true - */ - ellipsis?: boolean; - }): string; - /** - * Generates a random masked number. - * - * @param optionsOrLength An options object or the length of the unmask number. - * @param optionsOrLength.length The length of the unmasked number. Defaults to `4`. - * @param optionsOrLength.parens Whether to use surrounding parenthesis. Defaults to `true`. - * @param optionsOrLength.ellipsis Whether to prefix the numbers with an ellipsis. Defaults to `true`. - * - * @example - * faker.finance.maskedNumber() // '(...9711)' - * faker.finance.maskedNumber(3) // '(...342)' - * faker.finance.maskedNumber({ length: 3 }) // '(...342)' - * faker.finance.maskedNumber({ length: 3, parens: false }) // '...236' - * faker.finance.maskedNumber({ length: 3, parens: false, ellipsis: false }) // '298' - * - * @since 8.0.0 - * - * @deprecated Use `faker.finance.iban().replace(/(?<=.{4})\w(?=.{2})/g, '*')` or a similar approach instead. - */ - maskedNumber( - optionsOrLength?: - | number - | { - /** - * The length of the unmasked number. - * - * @default 4 - */ - length?: number; - /** - * Whether to use surrounding parenthesis. - * - * @default true - */ - parens?: boolean; - /** - * Whether to prefix the numbers with an ellipsis. - * - * @default true - */ - ellipsis?: boolean; - } - ): string; - /** - * Generates a random masked number. - * - * @param options An options object. - * @param options.length The length of the unmasked number. Defaults to `4`. - * @param options.parens Whether to use surrounding parenthesis. Defaults to `true`. - * @param options.ellipsis Whether to prefix the numbers with an ellipsis. Defaults to `true`. - * - * @example - * faker.finance.maskedNumber() // '(...9711)' - * faker.finance.maskedNumber(3) // '(...342)' - * faker.finance.maskedNumber({ length: 3 }) // '(...342)' - * faker.finance.maskedNumber({ length: 3, parens: false }) // '...236' - * faker.finance.maskedNumber({ length: 3, parens: false, ellipsis: false }) // '298' - * - * @since 8.0.0 - * - * @deprecated Use `faker.finance.iban().replace(/(?<=.{4})\w(?=.{2})/g, '*')` or a similar approach instead. - */ - maskedNumber( - options: - | number - | { - /** - * The length of the unmasked number. - * - * @default 4 - */ - length?: number; - /** - * Whether to use surrounding parenthesis. - * - * @default true - */ - parens?: boolean; - /** - * Whether to prefix the numbers with an ellipsis. - * - * @default true - */ - ellipsis?: boolean; - } = {} - ): string { - deprecated({ - deprecated: 'faker.finance.maskedNumber()', - proposed: - "faker.finance.iban().replace(/(?<=.{4})\\w(?=.{2})/g, '*') or a similar approach", - since: '9.3.0', - until: '10.0.0', - }); - - if (typeof options === 'number') { - options = { length: options }; - } - - const { ellipsis = true, length = 4, parens = true } = options; - - let template = this.faker.string.numeric({ length }); - - if (ellipsis) { - template = `...${template}`; - } - - if (parens) { - template = `(${template})`; - } - - return template; - } - /** * Generates a random amount between the given bounds (inclusive). * @@ -457,14 +296,15 @@ export class FinanceModule extends ModuleBase { } /** - * Returns a random currency object, containing `code`, `name `and `symbol` properties. + * Returns a random currency object, containing `code`, `name`, `symbol`, and `numericCode` properties. * * @see faker.finance.currencyCode(): For generating specifically the currency code. * @see faker.finance.currencyName(): For generating specifically the currency name. * @see faker.finance.currencySymbol(): For generating specifically the currency symbol. + * @see faker.finance.currencyNumericCode(): For generating specifically the currency numeric code. * * @example - * faker.finance.currency() // { code: 'USD', name: 'US Dollar', symbol: '$' } + * faker.finance.currency() // { code: 'USD', name: 'US Dollar', symbol: '$', numericCode: '840' } * * @since 8.0.0 */ @@ -516,6 +356,19 @@ export class FinanceModule extends ModuleBase { return symbol; } + /** + * Returns a random currency numeric code. + * (The ISO 4217 numerical code for a currency (e.g. `US Dollar` -> `840` )) + * + * @example + * faker.finance.currencyNumericCode() // '840' + * + * @since 9.6.0 + */ + currencyNumericCode(): string { + return this.currency().numericCode; + } + /** * Generates a random Bitcoin address. * @@ -726,7 +579,7 @@ export class FinanceModule extends ModuleBase { * * @param length The length of the PIN to generate. Defaults to `4`. * - * @throws Will throw an error if length is less than 1. + * @throws {FakerError} Will throw an error if length is less than 1. * * @see faker.string.numeric(): For generating the pin with greater control. * @@ -743,7 +596,7 @@ export class FinanceModule extends ModuleBase { * @param options An options object. * @param options.length The length of the PIN to generate. Defaults to `4`. * - * @throws Will throw an error if length is less than 1. + * @throws {FakerError} Will throw an error if length is less than 1. * * @see faker.string.numeric(): For generating the pin with greater control. * @@ -767,7 +620,7 @@ export class FinanceModule extends ModuleBase { * @param options An options object or the length of the PIN. * @param options.length The length of the PIN to generate. Defaults to `4`. * - * @throws Will throw an error if length is less than 1. + * @throws {FakerError} Will throw an error if length is less than 1. * * @see faker.string.numeric(): For generating the pin with greater control. * @@ -796,7 +649,7 @@ export class FinanceModule extends ModuleBase { * @param options An options object or the length of the PIN. * @param options.length The length of the PIN to generate. Defaults to `4`. * - * @throws Will throw an error if length is less than 1. + * @throws {FakerError} Will throw an error if length is less than 1. * * @see faker.string.numeric(): For generating the pin with greater control. * @@ -859,7 +712,7 @@ export class FinanceModule extends ModuleBase { * @param options.formatted Return a formatted version of the generated IBAN. Defaults to `false`. * @param options.countryCode The country code from which you want to generate an IBAN, if none is provided a random country will be used. * - * @throws Will throw an error if the passed country code is not supported. + * @throws {FakerError} Will throw an error if the passed country code is not supported. * * @example * faker.finance.iban() // 'TR736918640040966092800056' diff --git a/src/modules/helpers/eval.ts b/src/modules/helpers/eval.ts index e04575bc115..739f5af8e77 100644 --- a/src/modules/helpers/eval.ts +++ b/src/modules/helpers/eval.ts @@ -81,7 +81,7 @@ export function fakeEval( do { let index: number; if (remaining.startsWith('(')) { - [index, current] = evalProcessFunction(remaining, current, expression); + [index, current] = evalProcessFunction(remaining, current); } else { [index, current] = evalProcessExpression(remaining, current); } @@ -109,12 +109,10 @@ export function fakeEval( * * @param input The input string to parse. * @param entrypoints The entrypoints to attempt the call on. - * @param expression The full expression to use in errors. */ function evalProcessFunction( input: string, - entrypoints: ReadonlyArray, - expression: string + entrypoints: ReadonlyArray ): [continueIndex: number, mapped: unknown[]] { const [index, params] = findParams(input); const nextChar = input[index + 1]; @@ -135,23 +133,7 @@ function evalProcessFunction( return [ index + (nextChar === '.' ? 2 : 1), // one for the closing bracket, one for the dot entrypoints.map((entrypoint): unknown => - // TODO @ST-DDT 2023-12-11: Replace in v10 - // typeof entrypoint === 'function' ? entrypoint(...params) : undefined - { - if (typeof entrypoint === 'function') { - return entrypoint(...params); - } - - // eslint-disable-next-line no-undef - console.warn( - `[@faker-js/faker]: Invoking expressions which are not functions is deprecated since v9.0 and will be removed in v10.0. -Please remove the parentheses or replace the expression with an actual function. -${expression} -${' '.repeat(expression.length - input.length)}^` - ); - - return entrypoint; - } + typeof entrypoint === 'function' ? entrypoint(...params) : undefined ), ]; } diff --git a/src/modules/helpers/index.ts b/src/modules/helpers/index.ts index 6bb7e1ba977..17f824c6935 100644 --- a/src/modules/helpers/index.ts +++ b/src/modules/helpers/index.ts @@ -344,8 +344,8 @@ export class SimpleHelpersModule extends SimpleModuleBase { * * @param pattern The template string/RegExp to generate a matching string for. * - * @throws If min value is more than max value in quantifier, e.g. `#{10,5}`. - * @throws If an invalid quantifier symbol is passed in. + * @throws {FakerError} If min value is more than max value in quantifier, e.g. `#{10,5}`. + * @throws {FakerError} If an invalid quantifier symbol is passed in. * * @example * faker.helpers.fromRegExp('#{5}') // '#####' @@ -789,7 +789,7 @@ export class SimpleHelpersModule extends SimpleModuleBase { * * @param object The object to be used. * - * @throws If the given object is empty. + * @throws {FakerError} If the given object is empty. * * @example * faker.helpers.objectKey({ Cheetah: 120, Falcon: 390, Snail: 0.03 }) // 'Falcon' @@ -808,7 +808,7 @@ export class SimpleHelpersModule extends SimpleModuleBase { * * @param object The object to be used. * - * @throws If the given object is empty. + * @throws {FakerError} If the given object is empty. * * @example * faker.helpers.objectValue({ Cheetah: 120, Falcon: 390, Snail: 0.03 }) // 390 @@ -827,7 +827,7 @@ export class SimpleHelpersModule extends SimpleModuleBase { * * @param object The object to be used. * - * @throws If the given object is empty. + * @throws {FakerError} If the given object is empty. * * @example * faker.helpers.objectEntry({ Cheetah: 120, Falcon: 390, Snail: 0.03 }) // ['Snail', 0.03] @@ -848,7 +848,7 @@ export class SimpleHelpersModule extends SimpleModuleBase { * * @param array The array to pick the value from. * - * @throws If the given array is empty. + * @throws {FakerError} If the given array is empty. * * @example * faker.helpers.arrayElement(['cat', 'dog', 'mouse']) // 'dog' diff --git a/src/modules/image/index.ts b/src/modules/image/index.ts index 6b0a70171f8..bf42d3345c5 100644 --- a/src/modules/image/index.ts +++ b/src/modules/image/index.ts @@ -8,9 +8,9 @@ import type { SexType } from '../person'; * * ### Overview * - * 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 image, use [`url()`](https://fakerjs.dev/api/image.html#url). This will not return the image directly but an URL pointing to an image from an image provider like "Picsum". Other providers may be added in future versions. You can request an image specifically from this provider, with additional options using [`urlPicsumPhotos()`](https://fakerjs.dev/api/image.html#urlpicsumphotos). * - * 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 placeholder image containing only solid color and text, use [`dataUri()`](https://fakerjs.dev/api/image.html#datauri) (returns a SVG string). * * For a random user avatar image, use [`avatar()`](https://fakerjs.dev/api/image.html#avatar), or [`personPortrait()`](https://fakerjs.dev/api/image.html#personportrait) which has more control over the size and sex of the person. * @@ -20,6 +20,8 @@ export class ImageModule extends ModuleBase { /** * Generates a random avatar image url. * + * @remark This method sometimes generates a random string representing an URL from GitHub by using a random user ID. Faker is not responsible for the content of the image or the service providing it. + * * @example * faker.image.avatar() * // 'https://avatars.githubusercontent.com/u/97165289' @@ -38,6 +40,8 @@ export class ImageModule extends ModuleBase { /** * Generates a random avatar from GitHub. * + * @remark This method generates a random string representing an URL from GitHub by using a random user ID. Faker is not responsible for the content of the image or the service providing it. + * * @example * faker.image.avatarGitHub() * // 'https://avatars.githubusercontent.com/u/97165289' @@ -56,7 +60,7 @@ export class ImageModule extends ModuleBase { * The image URLs are served via the JSDelivr CDN and subject to their [terms of use](https://www.jsdelivr.com/terms). * * @param options Options for generating an AI avatar. - * @param options.sex The sex of the person for the avatar. Can be `'female'` or `'male'`. If not provided, defaults to a random selection. + * @param options.sex The sex of the person for the avatar. Can be `'female'` or `'male'`. If not provided or `'generic'`, defaults to a random selection. * @param options.size The size of the image. Can be `512`, `256`, `128`, `64` or `32`. If not provided, defaults to `512`. * * @example @@ -69,7 +73,7 @@ export class ImageModule extends ModuleBase { options: { /** * The sex of the person for the avatar. - * Can be `'female'` or `'male'`. + * Can be `'female'` or `'male'`. `'generic'` uses a random selection. * * @default faker.person.sexType() */ @@ -83,45 +87,29 @@ export class ImageModule extends ModuleBase { size?: 512 | 256 | 128 | 64 | 32; } = {} ): string { - const { sex = this.faker.person.sexType(), size = 512 } = options; + const { size = 512 } = options; + let { sex = this.faker.person.sexType() } = options; + + if (sex === 'generic') { + sex = this.faker.person.sexType(); + } + const baseURL = 'https://cdn.jsdelivr.net/gh/faker-js/assets-person-portrait'; return `${baseURL}/${sex}/${size}/${this.faker.number.int({ min: 0, max: 99 })}.jpg`; } - /** - * Generates a random avatar from `https://cloudflare-ipfs.com/ipfs/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye/avatar`. - * - * @example - * faker.image.avatarLegacy() - * // 'https://cloudflare-ipfs.com/ipfs/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye/avatar/170.jpg' - * - * @since 8.0.0 - * - * @deprecated The links are no longer working. Use `avatar()` instead. - */ - avatarLegacy(): string { - deprecated({ - deprecated: 'faker.image.avatarLegacy()', - proposed: 'faker.image.avatar() or faker.image.personPortrait()', - since: '9.0.2', - until: '10.0.0', - }); - - return `https://cloudflare-ipfs.com/ipfs/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye/avatar/${this.faker.number.int( - 1249 - )}.jpg`; - } - /** * Generates a random image url. * + * @remark This method generates a random string representing an URL from an external provider. Faker is not responsible for the content of the image or the service providing it. + * * @param options Options for generating a URL for an image. * @param options.width The width of the image. Defaults to a random integer between `1` and `3999`. * @param options.height The height of the image. Defaults to a random integer between `1` and `3999`. * * @example - * faker.image.url() // 'https://loremflickr.com/640/480?lock=1234' + * faker.image.url() // 'https://picsum.photos/seed/NWbJM2B/640/480' * * @since 8.0.0 */ @@ -147,9 +135,9 @@ export class ImageModule extends ModuleBase { } = options; const urlMethod = this.faker.helpers.arrayElement([ - this.urlLoremFlickr, ({ width, height }: { width?: number; height?: number }) => this.urlPicsumPhotos({ width, height, grayscale: false, blur: 0 }), + // Other providers may be added back here in future versions. ]); return urlMethod({ width, height }); @@ -158,6 +146,8 @@ export class ImageModule extends ModuleBase { /** * Generates a random image url provided via https://loremflickr.com. * + * @remark This method generates a random string representing an URL from loremflickr. Faker is not responsible for the content of the image or the service providing it. + * * @param options Options for generating a URL for an image. * @param options.width The width of the image. Defaults to a random integer between `1` and `3999`. * @param options.height The height of the image. Defaults to a random integer between `1` and `3999`. @@ -170,6 +160,8 @@ export class ImageModule extends ModuleBase { * faker.image.urlLoremFlickr({ category: 'nature' }) // 'https://loremflickr.com/640/480/nature?lock=1234' * * @since 8.0.0 + * + * @deprecated LoremFlickr is no longer available, and image links will be broken. Use `faker.image.url()` instead. */ urlLoremFlickr( options: { @@ -191,6 +183,13 @@ export class ImageModule extends ModuleBase { category?: string; } = {} ): string { + deprecated({ + deprecated: 'faker.image.urlLoremFlickr()', + proposed: 'faker.image.url()', + since: '10.1.0', + until: '11.0.0', + }); + const { width = this.faker.number.int({ min: 1, max: 3999 }), height = this.faker.number.int({ min: 1, max: 3999 }), @@ -205,6 +204,8 @@ export class ImageModule extends ModuleBase { /** * Generates a random image url provided via https://picsum.photos. * + * @remark This method generates a random string representing an URL from picsum.photos. Faker is not responsible for the content of the image or the service providing it. + * * @param options Options for generating a URL for an image. * @param options.width The width of the image. Defaults to a random integer between `1` and `3999`. * @param options.height The height of the image. Defaults to a random integer between `1` and `3999`. @@ -281,108 +282,6 @@ export class ImageModule extends ModuleBase { return url; } - /** - * Generates a random image url provided via https://via.placeholder.com/. - * - * @param options Options for generating a URL for an image. - * @param options.width The width of the image. Defaults to a random number between 1 and 3500. - * @param options.height The height of the image. Defaults to a random number between 1 and 3500. - * @param options.backgroundColor The background color of the image. Defaults to a random hex color. - * @param options.textColor The text color of the image. Defaults to a random hex color. - * @param options.format The format of the image. Defaults to a random format. - * @param options.text The text to display on the image. Defaults to a random string. - * - * @example - * faker.image.urlPlaceholder() // 'https://via.placeholder.com/150x180/FF0000/FFFFFF.webp?text=lorem' - * faker.image.urlPlaceholder({ width: 128 }) // 'https://via.placeholder.com/128x180/FF0000/FFFFFF.webp?text=lorem' - * faker.image.urlPlaceholder({ height: 128 }) // 'https://via.placeholder.com/150x128/FF0000/FFFFFF.webp?text=lorem' - * faker.image.urlPlaceholder({ backgroundColor: '000000' }) // 'https://via.placeholder.com/150x180/000000/FFFFFF.webp?text=lorem' - * faker.image.urlPlaceholder({ textColor: '000000' }) // 'https://via.placeholder.com/150x180/FF0000/000000.webp?text=lorem' - * faker.image.urlPlaceholder({ format: 'png' }) // 'https://via.placeholder.com/150x180/FF0000/FFFFFF.png?text=lorem' - * faker.image.urlPlaceholder({ text: 'lorem ipsum' }) // 'https://via.placeholder.com/150x180/FF0000/FFFFFF.webp?text=lorem+ipsum' - * faker.image.urlPlaceholder({ width: 128, height: 128, backgroundColor: '000000', textColor: 'FF0000', format: 'png', text: 'lorem ipsum' }) // 'https://via.placeholder.com/128x128/000000/FF0000.png?text=lorem+ipsum' - * - * @since 8.0.0 - * - * @deprecated The service has bad uptime. Use `faker.image.url()` or `faker.image.dataUri()` instead. - */ - urlPlaceholder( - options: { - /** - * The width of the image. - * - * @default faker.number.int({ min: 1, max: 3500 }) - */ - width?: number; - /** - * The height of the image. - * - * @default faker.number.int({ min: 1, max: 3500 }) - */ - height?: number; - /** - * The background color of the image. - * - * @default faker.color.rgb({ format: 'hex', prefix: '' }) - */ - backgroundColor?: string; - /** - * The text color of the image. - * - * @default faker.color.rgb({ format: 'hex', prefix: '' }) - */ - textColor?: string; - /** - * The format of the image. - * - * @default faker.helpers.arrayElement(['gif', 'jpeg', 'jpg', 'png', 'webp']) - */ - format?: 'gif' | 'jpeg' | 'jpg' | 'png' | 'webp'; - /** - * The text to display on the image. - * - * @default faker.lorem.words() - */ - text?: string; - } = {} - ): string { - deprecated({ - deprecated: 'faker.image.urlPlaceholder()', - proposed: 'faker.image.url() or faker.image.dataUri()', - since: '9.4.0', - until: '10.0.0', - }); - - const { - width = this.faker.number.int({ min: 1, max: 3500 }), - height = this.faker.number.int({ min: 1, max: 3500 }), - backgroundColor = this.faker.color.rgb({ format: 'hex', prefix: '' }), - textColor = this.faker.color.rgb({ format: 'hex', prefix: '' }), - format = this.faker.helpers.arrayElement([ - 'gif', - 'jpeg', - 'jpg', - 'png', - 'webp', - ]), - text = this.faker.lorem.words(), - } = options; - - let url = `https://via.placeholder.com`; - - url += `/${width}`; - url += `x${height}`; - - url += `/${backgroundColor}`; - url += `/${textColor}`; - - url += `.${format}`; - - url += `?text=${encodeURIComponent(text)}`; - - return url; - } - /** * Generates a random data uri containing an URL-encoded SVG image or a Base64-encoded SVG image. * diff --git a/src/modules/internet/index.ts b/src/modules/internet/index.ts index 3be0f2926e6..bcf28909a3a 100644 --- a/src/modules/internet/index.ts +++ b/src/modules/internet/index.ts @@ -1,7 +1,6 @@ import { FakerError } from '../../errors/faker-error'; import type { Faker } from '../../faker'; import { toBase64Url } from '../../internal/base64'; -import { deprecated } from '../../internal/deprecated'; import { ModuleBase } from '../../internal/module-base'; import { charMapping } from './char-mappings'; @@ -134,18 +133,6 @@ function makeValidDomainWordSlug(faker: Faker, word: string): string { }); } -/** - * Generates a random color in hex format with the given base color. - * - * @param faker The faker instance to use. - * @param base The base color to use. - */ -function colorFromBase(faker: Faker, base: number): string { - return Math.floor((faker.number.int(256) + base) / 2) - .toString(16) - .padStart(2, '0'); -} - /** * Module to generate internet related entries. * @@ -296,58 +283,6 @@ export class InternetModule extends ModuleBase { }); } - /** - * Generates a username using the given person's name as base. - * The resulting username may use neither, one or both of the names provided. - * This will always return a plain ASCII string. - * Some basic stripping of accents and transliteration of characters will be done. - * - * @param options An options object. - * @param options.firstName The optional first name to use. If not specified, a random one will be chosen. - * @param options.lastName The optional last name to use. If not specified, a random one will be chosen. - * - * @see faker.internet.displayName(): For generating an Unicode display name. - * - * @example - * faker.internet.userName() // 'Nettie_Zboncak40' - * faker.internet.userName({ firstName: 'Jeanne' }) // 'Jeanne98' - * faker.internet.userName({ firstName: 'Jeanne' }) // 'Jeanne.Smith98' - * faker.internet.userName({ firstName: 'Jeanne', lastName: 'Doe'}) // 'Jeanne_Doe98' - * faker.internet.userName({ firstName: 'John', lastName: 'Doe' }) // 'John.Doe' - * faker.internet.userName({ firstName: 'Hélene', lastName: 'Müller' }) // 'Helene_Muller11' - * faker.internet.userName({ firstName: 'Фёдор', lastName: 'Достоевский' }) // 'Fedor.Dostoevskii50' - * faker.internet.userName({ firstName: '大羽', lastName: '陳' }) // 'hlzp8d.tpv45' - note neither name is used - * - * @since 2.0.1 - * - * @deprecated Use `faker.internet.username()` instead. - */ - userName( - options: { - /** - * The optional first name to use. - * - * @default faker.person.firstName() - */ - firstName?: string; - /** - * The optional last name to use. - * - * @default faker.person.lastName() - */ - lastName?: string; - } = {} - ): string { - deprecated({ - deprecated: 'faker.internet.userName()', - proposed: 'faker.internet.username()', - since: '9.1.0', - until: '10.0.0', - }); - - return this.username(options); - } - /** * Generates a username using the given person's name as base. * The resulting username may use neither, one or both of the names provided. @@ -430,7 +365,7 @@ export class InternetModule extends ModuleBase { return charCode.toString(36); }) .join(''); - result = result.toString().replaceAll("'", ''); + result = result.replaceAll("'", ''); result = result.replaceAll(' ', ''); return result; @@ -488,7 +423,7 @@ export class InternetModule extends ModuleBase { ]; let result = this.faker.helpers.arrayElement(strategies)(); - result = result.toString().replaceAll("'", ''); + result = result.replaceAll("'", ''); result = result.replaceAll(' ', ''); return result; } @@ -806,54 +741,6 @@ export class InternetModule extends ModuleBase { ); } - /** - * Generates a random css hex color code in aesthetically pleasing color palette. - * - * Based on - * http://stackoverflow.com/questions/43044/algorithm-to-randomly-generate-an-aesthetically-pleasing-color-palette - * - * @param options An options object. - * @param options.redBase The optional base red in range between `0` and `255`. Defaults to `0`. - * @param options.greenBase The optional base green in range between `0` and `255`. Defaults to `0`. - * @param options.blueBase The optional base blue in range between `0` and `255`. Defaults to `0`. - * - * @example - * faker.internet.color() // '#30686e' - * faker.internet.color({ redBase: 100, greenBase: 100, blueBase: 100 }) // '#4e5f8b' - * - * @since 2.0.1 - */ - color( - options: { - /** - * The optional base red in range between `0` and `255`. - * - * @default 0 - */ - redBase?: number; - /** - * The optional base green in range between `0` and `255`. - * - * @default 0 - */ - greenBase?: number; - /** - * The optional base blue in range between `0` and `255`. - * - * @default 0 - */ - blueBase?: number; - } = {} - ): string { - const { redBase = 0, greenBase = 0, blueBase = 0 } = options; - - const red = colorFromBase(this.faker, redBase); - const green = colorFromBase(this.faker, greenBase); - const blue = colorFromBase(this.faker, blueBase); - - return `#${red}${green}${blue}`; - } - /** * Generates a random mac address. * diff --git a/src/modules/location/index.ts b/src/modules/location/index.ts index 29267eb1a44..40d065b0d5a 100644 --- a/src/modules/location/index.ts +++ b/src/modules/location/index.ts @@ -1,5 +1,6 @@ +import type { Faker } from '../..'; import { FakerError } from '../../errors/faker-error'; -import { ModuleBase } from '../../internal/module-base'; +import { SimpleModuleBase } from '../../internal/module-base'; /** * Represents a language with its full name, 2 character ISO 639-1 code, and 3 character ISO 639-2 code. @@ -21,6 +22,178 @@ export interface Language { alpha3: string; } +/** + * Module with location functions that don't require localized data + */ +export class SimpleLocationModule extends SimpleModuleBase { + /** + * Generates a random latitude. + * + * @param options An options object. + * @param options.max The upper bound for the latitude to generate. Defaults to `90`. + * @param options.min The lower bound for the latitude to generate. Defaults to `-90`. + * @param options.precision The number of decimal points of precision for the latitude. Defaults to `4`. + * + * @example + * faker.location.latitude() // -30.9501 + * faker.location.latitude({ max: 10 }) // 5.7225 + * faker.location.latitude({ max: 10, min: -10 }) // -9.6273 + * faker.location.latitude({ max: 10, min: -10, precision: 5 }) // 2.68452 + * + * @since 8.0.0 + */ + latitude( + options: { + /** + * The upper bound for the latitude to generate. + * + * @default 90 + */ + max?: number; + /** + * The lower bound for the latitude to generate. + * + * @default -90 + */ + min?: number; + /** + * The number of decimal points of precision for the latitude. + * + * @default 4 + */ + precision?: number; + } = {} + ): number { + const { max = 90, min = -90, precision = 4 } = options; + + return this.faker.number.float({ min, max, fractionDigits: precision }); + } + + /** + * Generates a random longitude. + * + * @param options An options object. + * @param options.max The upper bound for the longitude to generate. Defaults to `180`. + * @param options.min The lower bound for the longitude to generate. Defaults to `-180`. + * @param options.precision The number of decimal points of precision for the longitude. Defaults to `4`. + * + * @example + * faker.location.longitude() // -30.9501 + * faker.location.longitude({ max: 10 }) // 5.7225 + * faker.location.longitude({ max: 10, min: -10 }) // -9.6273 + * faker.location.longitude({ max: 10, min: -10, precision: 5 }) // 2.68452 + * + * @since 8.0.0 + */ + longitude( + options: { + /** + * The upper bound for the longitude to generate. + * + * @default 180 + */ + max?: number; + /** + * The lower bound for the longitude to generate. + * + * @default -180 + */ + min?: number; + /** + * The number of decimal points of precision for the longitude. + * + * @default 4 + */ + precision?: number; + } = {} + ): number { + const { max = 180, min = -180, precision = 4 } = options; + + return this.faker.number.float({ max, min, fractionDigits: precision }); + } + + /** + * Generates a random GPS coordinate within the specified radius from the given coordinate. + * + * @param options The options for generating a GPS coordinate. + * @param options.origin The original coordinate to get a new coordinate close to. + * If no coordinate is given, a random one will be chosen. + * @param options.radius The maximum distance from the given coordinate to the new coordinate. Defaults to `10`. + * @param options.isMetric If `true` assume the radius to be in kilometers. If `false` for miles. Defaults to `false`. + * + * @example + * faker.location.nearbyGPSCoordinate() // [ 33.8475, -170.5953 ] + * faker.location.nearbyGPSCoordinate({ origin: [33, -170] }) // [ 33.0165, -170.0636 ] + * faker.location.nearbyGPSCoordinate({ origin: [33, -170], radius: 1000, isMetric: true }) // [ 37.9163, -179.2408 ] + * + * @since 8.0.0 + */ + nearbyGPSCoordinate( + options: { + /** + * The original coordinate to get a new coordinate close to. + */ + origin?: [latitude: number, longitude: number]; + /** + * The maximum distance from the given coordinate to the new coordinate. + * + * @default 10 + */ + radius?: number; + /** + * If `true` assume the radius to be in kilometers. If `false` for miles. + * + * @default false + */ + isMetric?: boolean; + } = {} + ): [latitude: number, longitude: number] { + const { origin, radius = 10, isMetric = false } = options; + + // If there is no origin, the best we can do is return a random GPS coordinate. + if (origin == null) { + return [this.latitude(), this.longitude()]; + } + + const angleRadians = this.faker.number.float({ + max: 2 * Math.PI, + fractionDigits: 5, + }); // in ° radians + + const radiusMetric = isMetric ? radius : radius * 1.60934; // in km + const errorCorrection = 0.995; // avoid float issues + const distanceInKm = + this.faker.number.float({ + max: radiusMetric, + fractionDigits: 3, + }) * errorCorrection; // in km + + /** + * The distance in km per degree for earth. + */ + const kmPerDegree = 40_000 / 360; // in km/° + + const distanceInDegree = distanceInKm / kmPerDegree; // in ° + + const coordinate: [latitude: number, longitude: number] = [ + origin[0] + Math.sin(angleRadians) * distanceInDegree, + origin[1] + Math.cos(angleRadians) * distanceInDegree, + ]; + + // Box latitude [-90°, 90°] + coordinate[0] = coordinate[0] % 180; + if (coordinate[0] < -90 || coordinate[0] > 90) { + coordinate[0] = Math.sign(coordinate[0]) * 180 - coordinate[0]; + coordinate[1] += 180; + } + + // Box longitude [-180°, 180°] + coordinate[1] = (((coordinate[1] % 360) + 540) % 360) - 180; + + return [coordinate[0], coordinate[1]]; + } +} + /** * Module to generate addresses and locations. Prior to Faker 8.0.0, this module was known as `faker.address`. * @@ -32,7 +205,11 @@ export interface Language { * * 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 extends ModuleBase { +export class LocationModule extends SimpleLocationModule { + constructor(protected readonly faker: Faker) { + super(faker); + } + /** * Generates random zip code from specified format. If format is not specified, * the locale's zip format is used. @@ -350,92 +527,6 @@ export class LocationModule extends ModuleBase { return this.faker.helpers.arrayElement(stateDataSet); } - /** - * Generates a random latitude. - * - * @param options An options object. - * @param options.max The upper bound for the latitude to generate. Defaults to `90`. - * @param options.min The lower bound for the latitude to generate. Defaults to `-90`. - * @param options.precision The number of decimal points of precision for the latitude. Defaults to `4`. - * - * @example - * faker.location.latitude() // -30.9501 - * faker.location.latitude({ max: 10 }) // 5.7225 - * faker.location.latitude({ max: 10, min: -10 }) // -9.6273 - * faker.location.latitude({ max: 10, min: -10, precision: 5 }) // 2.68452 - * - * @since 8.0.0 - */ - latitude( - options: { - /** - * The upper bound for the latitude to generate. - * - * @default 90 - */ - max?: number; - /** - * The lower bound for the latitude to generate. - * - * @default -90 - */ - min?: number; - /** - * The number of decimal points of precision for the latitude. - * - * @default 4 - */ - precision?: number; - } = {} - ): number { - const { max = 90, min = -90, precision = 4 } = options; - - return this.faker.number.float({ min, max, fractionDigits: precision }); - } - - /** - * Generates a random longitude. - * - * @param options An options object. - * @param options.max The upper bound for the longitude to generate. Defaults to `180`. - * @param options.min The lower bound for the longitude to generate. Defaults to `-180`. - * @param options.precision The number of decimal points of precision for the longitude. Defaults to `4`. - * - * @example - * faker.location.longitude() // -30.9501 - * faker.location.longitude({ max: 10 }) // 5.7225 - * faker.location.longitude({ max: 10, min: -10 }) // -9.6273 - * faker.location.longitude({ max: 10, min: -10, precision: 5 }) // 2.68452 - * - * @since 8.0.0 - */ - longitude( - options: { - /** - * The upper bound for the longitude to generate. - * - * @default 180 - */ - max?: number; - /** - * The lower bound for the longitude to generate. - * - * @default -180 - */ - min?: number; - /** - * The number of decimal points of precision for the longitude. - * - * @default 4 - */ - precision?: number; - } = {} - ): number { - const { max = 180, min = -180, precision = 4 } = options; - - return this.faker.number.float({ max, min, fractionDigits: precision }); - } - /** * Returns a random direction (cardinal and ordinal; northwest, east, etc). * @@ -549,87 +640,6 @@ export class LocationModule extends ModuleBase { ); } - /** - * Generates a random GPS coordinate within the specified radius from the given coordinate. - * - * @param options The options for generating a GPS coordinate. - * @param options.origin The original coordinate to get a new coordinate close to. - * If no coordinate is given, a random one will be chosen. - * @param options.radius The maximum distance from the given coordinate to the new coordinate. Defaults to `10`. - * @param options.isMetric If `true` assume the radius to be in kilometers. If `false` for miles. Defaults to `false`. - * - * @example - * faker.location.nearbyGPSCoordinate() // [ 33.8475, -170.5953 ] - * faker.location.nearbyGPSCoordinate({ origin: [33, -170] }) // [ 33.0165, -170.0636 ] - * faker.location.nearbyGPSCoordinate({ origin: [33, -170], radius: 1000, isMetric: true }) // [ 37.9163, -179.2408 ] - * - * @since 8.0.0 - */ - nearbyGPSCoordinate( - options: { - /** - * The original coordinate to get a new coordinate close to. - */ - origin?: [latitude: number, longitude: number]; - /** - * The maximum distance from the given coordinate to the new coordinate. - * - * @default 10 - */ - radius?: number; - /** - * If `true` assume the radius to be in kilometers. If `false` for miles. - * - * @default false - */ - isMetric?: boolean; - } = {} - ): [latitude: number, longitude: number] { - const { origin, radius = 10, isMetric = false } = options; - - // If there is no origin, the best we can do is return a random GPS coordinate. - if (origin == null) { - return [this.latitude(), this.longitude()]; - } - - const angleRadians = this.faker.number.float({ - max: 2 * Math.PI, - fractionDigits: 5, - }); // in ° radians - - const radiusMetric = isMetric ? radius : radius * 1.60934; // in km - const errorCorrection = 0.995; // avoid float issues - const distanceInKm = - this.faker.number.float({ - max: radiusMetric, - fractionDigits: 3, - }) * errorCorrection; // in km - - /** - * The distance in km per degree for earth. - */ - const kmPerDegree = 40_000 / 360; // in km/° - - const distanceInDegree = distanceInKm / kmPerDegree; // in ° - - const coordinate: [latitude: number, longitude: number] = [ - origin[0] + Math.sin(angleRadians) * distanceInDegree, - origin[1] + Math.cos(angleRadians) * distanceInDegree, - ]; - - // Box latitude [-90°, 90°] - coordinate[0] = coordinate[0] % 180; - if (coordinate[0] < -90 || coordinate[0] > 90) { - coordinate[0] = Math.sign(coordinate[0]) * 180 - coordinate[0]; - coordinate[1] += 180; - } - - // Box longitude [-180°, 180°] - coordinate[1] = (((coordinate[1] % 360) + 540) % 360) - 180; - - return [coordinate[0], coordinate[1]]; - } - /** * Returns a random IANA time zone relevant to this locale. * diff --git a/src/modules/number/index.ts b/src/modules/number/index.ts index f5f5c27fab6..05ce591ecf8 100644 --- a/src/modules/number/index.ts +++ b/src/modules/number/index.ts @@ -25,9 +25,9 @@ export class NumberModule extends SimpleModuleBase { * @param options.max Upper bound for generated number. Defaults to `Number.MAX_SAFE_INTEGER`. * @param options.multipleOf Generated number will be a multiple of the given integer. Defaults to `1`. * - * @throws When `min` is greater than `max`. - * @throws When there are no suitable integers between `min` and `max`. - * @throws When `multipleOf` is not a positive integer. + * @throws {FakerError} When `min` is greater than `max`. + * @throws {FakerError} When there are no suitable integers between `min` and `max`. + * @throws {FakerError} When `multipleOf` is not a positive integer. * * @see faker.string.numeric(): For generating a `string` of digits with a given length (range). * @@ -112,10 +112,10 @@ export class NumberModule extends SimpleModuleBase { * @param options.multipleOf The generated number will be a multiple of this parameter. Only one of `multipleOf` or `fractionDigits` should be passed. * @param options.fractionDigits The maximum number of digits to appear after the decimal point, for example `2` will round to 2 decimal points. Only one of `multipleOf` or `fractionDigits` should be passed. * - * @throws When `min` is greater than `max`. - * @throws When `multipleOf` is negative. - * @throws When `fractionDigits` is negative. - * @throws When `fractionDigits` and `multipleOf` is passed in the same options object. + * @throws {FakerError} When `min` is greater than `max`. + * @throws {FakerError} When `multipleOf` is not a positive number. + * @throws {FakerError} When `fractionDigits` is negative. + * @throws {FakerError} When `fractionDigits` and `multipleOf` is passed in the same options object. * * @example * faker.number.float() // 0.5688541042618454 @@ -170,10 +170,6 @@ export class NumberModule extends SimpleModuleBase { multipleOf = fractionDigits == null ? undefined : 10 ** -fractionDigits, } = options; - if (max === min) { - return min; - } - if (max < min) { throw new FakerError(`Max ${max} should be greater than min ${min}.`); } @@ -228,8 +224,8 @@ export class NumberModule extends SimpleModuleBase { * @param options.min Lower bound for generated number. Defaults to `0`. * @param options.max Upper bound for generated number. Defaults to `1`. * - * @throws When `min` is greater than `max`. - * @throws When there are no integers between `min` and `max`. + * @throws {FakerError} When `min` is greater than `max`. + * @throws {FakerError} When there are no integers between `min` and `max`. * * @see faker.string.binary(): For generating a `binary string` with a given length (range). * @@ -278,8 +274,8 @@ export class NumberModule extends SimpleModuleBase { * @param options.min Lower bound for generated number. Defaults to `0`. * @param options.max Upper bound for generated number. Defaults to `7`. * - * @throws When `min` is greater than `max`. - * @throws When there are no integers between `min` and `max`. + * @throws {FakerError} When `min` is greater than `max`. + * @throws {FakerError} When there are no integers between `min` and `max`. * * @see faker.string.octal(): For generating an `octal string` with a given length (range). * @@ -328,8 +324,8 @@ export class NumberModule extends SimpleModuleBase { * @param options.min Lower bound for generated number. Defaults to `0`. * @param options.max Upper bound for generated number. Defaults to `15`. * - * @throws When `min` is greater than `max`. - * @throws When there are no integers between `min` and `max`. + * @throws {FakerError} When `min` is greater than `max`. + * @throws {FakerError} When there are no integers between `min` and `max`. * * @example * faker.number.hex() // 'b' @@ -375,14 +371,18 @@ export class NumberModule extends SimpleModuleBase { * @param options Maximum value or options object. * @param options.min Lower bound for generated bigint. Defaults to `0n`. * @param options.max Upper bound for generated bigint. Defaults to `min + 999999999999999n`. + * @param options.multipleOf The generated bigint will be a multiple of this parameter. Defaults to `1n`. * - * @throws When `min` is greater than `max`. + * @throws {FakerError} When `min` is greater than `max`. + * @throws {FakerError} When there are no suitable bigint between `min` and `max`. + * @throws {FakerError} When `multipleOf` is not a positive bigint. * * @example * faker.number.bigInt() // 55422n * faker.number.bigInt(100n) // 52n * faker.number.bigInt({ min: 1000000n }) // 431433n * faker.number.bigInt({ max: 100n }) // 42n + * faker.number.bigInt({ multipleOf: 7n }) // 35n * faker.number.bigInt({ min: 10n, max: 100n }) // 36n * * @since 8.0.0 @@ -406,6 +406,12 @@ export class NumberModule extends SimpleModuleBase { * @default min + 999999999999999n */ max?: bigint | number | string | boolean; + /** + * The generated bigint will be a multiple of this parameter. + * + * @default 1n + */ + multipleOf?: bigint | number | string | boolean; } = {} ): bigint { if ( @@ -421,27 +427,38 @@ export class NumberModule extends SimpleModuleBase { const min = BigInt(options.min ?? 0); const max = BigInt(options.max ?? min + BigInt(999999999999999)); + const multipleOf = BigInt(options.multipleOf ?? 1); - if (max === min) { - return min; + if (max < min) { + throw new FakerError(`Max ${max} should be larger than min ${min}.`); } - if (max < min) { - throw new FakerError(`Max ${max} should be larger then min ${min}.`); + if (multipleOf <= BigInt(0)) { + throw new FakerError(`multipleOf should be greater than 0.`); + } + + const effectiveMin = min / multipleOf + (min % multipleOf > 0n ? 1n : 0n); // Math.ceil(min / multipleOf) + const effectiveMax = max / multipleOf - (max % multipleOf < 0n ? 1n : 0n); // Math.floor(max / multipleOf) + + if (effectiveMin === effectiveMax) { + return effectiveMin * multipleOf; } - const delta = max - min; + if (effectiveMax < effectiveMin) { + throw new FakerError( + `No suitable bigint value between ${min} and ${max} found.` + ); + } + const delta = effectiveMax - effectiveMin + 1n; // +1 for inclusive max bounds and even distribution const offset = BigInt( this.faker.string.numeric({ length: delta.toString(10).length, allowLeadingZeros: true, }) - ) % - (delta + BigInt(1)); - - return min + offset; + ) % delta; + return (effectiveMin + offset) * multipleOf; } /** @@ -452,10 +469,10 @@ export class NumberModule extends SimpleModuleBase { * @param options.min Lower bound for generated roman numerals. Defaults to `1`. * @param options.max Upper bound for generated roman numerals. Defaults to `3999`. * - * @throws When `min` is greater than `max`. - * @throws When `min`, `max` is not a number. - * @throws When `min` is less than `1`. - * @throws When `max` is greater than `3999`. + * @throws {FakerError} When `min` is greater than `max`. + * @throws {FakerError} When `min`, `max` is not a number. + * @throws {FakerError} When `min` is less than `1`. + * @throws {FakerError} When `max` is greater than `3999`. * * @example * faker.number.romanNumeral() // "CMXCIII" diff --git a/src/modules/person/index.ts b/src/modules/person/index.ts index 4baf1274769..85154c35ff9 100644 --- a/src/modules/person/index.ts +++ b/src/modules/person/index.ts @@ -2,11 +2,27 @@ import type { Faker } from '../..'; import type { PersonEntryDefinition } from '../../definitions/person'; import { ModuleBase } from '../../internal/module-base'; +/** + * The enum for values corresponding to a person's sex. + */ export enum Sex { + /** + * Is used for values that are primarily attributable to only females. + */ Female = 'female', + /** + * Is used for values that cannot clearly be attributed to a specific sex or are used for both sexes. + */ + Generic = 'generic', + /** + * Is used for values that are primarily attributable to only males. + */ Male = 'male', } +/** + * The parameter type for values corresponding to a person's sex. + */ export type SexType = `${Sex}`; /** @@ -20,30 +36,48 @@ export type SexType = `${Sex}`; */ function selectDefinition( faker: Faker, - sex: SexType | undefined, + sex: SexType = faker.person.sexType(), personEntry: PersonEntryDefinition ): T[] { const { generic, female, male } = personEntry; - switch (sex) { - case Sex.Female: { - return female ?? generic; - } - case Sex.Male: { - return male ?? generic; - } + if (sex === 'generic') { + return ( + generic ?? + faker.helpers.arrayElement([female, male]) ?? + // The last statement should never happen at run time. At this point in time, + // the entry will satisfy at least (generic || (female && male)). + // TS is not able to infer the type correctly. + [] + ); + } - default: { - return ( - generic ?? - faker.helpers.arrayElement([female, male]) ?? - // The last statement should never happen at run time. At this point in time, - // the entry will satisfy at least (generic || (female && male)). - // TS is not able to infer the type correctly. - [] - ); + const binary = sex === 'female' ? female : male; + + if (binary != null) { + if (generic != null) { + return faker.helpers.weightedArrayElement([ + { + weight: 3 * Math.sqrt(binary.length), + value: binary, + }, + { + weight: Math.sqrt(generic.length), + value: generic, + }, + ]); } + + return binary; } + + return ( + generic ?? + // The last statement should never happen at run time. At this point in time, + // the entry will satisfy at least (generic || (female && male)). + // TS is not able to infer the type correctly. + [] + ); } /** @@ -238,16 +272,38 @@ export class PersonModule extends ModuleBase { /** * Returns a random sex type. The `SexType` is intended to be used in parameters and conditions. * + * @param options The optional options object. + * @param options.includeGeneric Whether `'generic'` should be included in the potential outputs. + * If `false`, this method only returns `'female'` and `'male'`. + * Default is `false`. + * * @see faker.person.gender(): For generating a gender related value in forms. * @see faker.person.sex(): For generating a binary-gender value in forms. * * @example * faker.person.sexType() // Sex.Female + * faker.person.sexType({ includeGeneric: true }) // Sex.Generic * * @since 8.0.0 */ - sexType(): SexType { - return this.faker.helpers.enumValue(Sex); + sexType( + options: { + /** + * Whether `'generic'` should be included in the potential outputs. + * If `false`, this method only returns `'female'` and `'male'`. + * + * @default false + */ + includeGeneric?: boolean; + } = {} + ): SexType { + const { includeGeneric = false } = options; + + if (includeGeneric) { + return this.faker.helpers.enumValue(Sex); + } + + return this.faker.helpers.arrayElement([Sex.Female, Sex.Male]); } /** diff --git a/src/modules/string/index.ts b/src/modules/string/index.ts index ac41238c47e..efd029741f1 100644 --- a/src/modules/string/index.ts +++ b/src/modules/string/index.ts @@ -3,6 +3,7 @@ import { CROCKFORDS_BASE32, dateToBase32 } from '../../internal/base32'; import { toDate } from '../../internal/date'; import { SimpleModuleBase } from '../../internal/module-base'; import type { LiteralUnion } from '../../internal/types'; +import { uuidV4, uuidV7 } from './uuid'; export type Casing = 'upper' | 'lower' | 'mixed'; @@ -692,18 +693,105 @@ export class StringModule extends SimpleModuleBase { return returnString; } + /** + * Returns a UUID ([Universally Unique Identifier](https://en.wikipedia.org/wiki/Universally_unique_identifier)). + * + * @example + * faker.string.uuid() // '4136cd0b-d90b-4af7-b485-5d1ded8db252' + * + * @since 8.0.0 + */ + uuid(): string; /** * Returns a UUID v4 ([Universally Unique Identifier](https://en.wikipedia.org/wiki/Universally_unique_identifier)). * + * @param options An options object. + * @param options.version The specific UUID version to use. + * + * @example + * faker.string.uuid({ version: 4 }) // '4136cd0b-d90b-4af7-b485-5d1ded8db252' + * + * @since 8.0.0 + */ + uuid(options: { + /** + * The specific UUID version to use. + */ + version: 4; + }): string; + /** + * Returns a UUID v7 ([Universally Unique Identifier](https://en.wikipedia.org/wiki/Universally_unique_identifier)). + * + * @param options An options object. + * @param options.version The specific UUID version to use. + * @param options.refDate The timestamp to encode into the uuid. + * The encoded timestamp is represented by the first 12 characters of the result. + * Defaults to `faker.defaultRefDate()`. + * + * @example + * faker.string.uuid() // '019be2c5-58de-70fe-a693-2ccbff1f0780' + * + * @since 10.3.0 + */ + uuid(options: { + /** + * The specific UUID version to use. + */ + version: 7; + /** + * The timestamp to encode into the uuid. + * The encoded timestamp is represented by the first 12 characters of the result. + * + * @default faker.defaultRefDate() + */ + refDate: string | Date | number; + }): string; + /** + * Returns a UUID ([Universally Unique Identifier](https://en.wikipedia.org/wiki/Universally_unique_identifier)). + * + * @param options An optional options object. + * @param options.version The specific UUID version to use. Defaults to `4`. + * @param options.refDate The timestamp to encode into the UUID. + * This parameter is only relevant for UUID v7. + * Defaults to `faker.defaultRefDate()`. + * * @example * faker.string.uuid() // '4136cd0b-d90b-4af7-b485-5d1ded8db252' + * faker.string.uuid({ version: 4 }) // 'd5482c1f-c30d-4bbc-b151-d95145bae71b' + * faker.string.uuid({ version: 7 }) // '01948b54-1b78-75fb-9922-0d9b0fd32248' + * faker.string.uuid({ version: 7, refDate: '2020-01-01T00:00:00.000Z' }) // '016f5e66-e800-725e-b078-f413f23aaff0' * * @since 8.0.0 */ - uuid(): string { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' - .replaceAll('x', () => this.faker.number.hex({ min: 0x0, max: 0xf })) - .replaceAll('y', () => this.faker.number.hex({ min: 0x8, max: 0xb })); + uuid(options?: { + /** + * The specific UUID version to use. + */ + version?: 4 | 7; + /** + * The timestamp to encode into the UUID. + * This parameter is only relevant for UUID v7. + * + * @default faker.defaultRefDate() + */ + refDate?: string | Date | number; + }): string; + uuid( + options: { + version?: 4 | 7; + refDate?: string | Date | number; + } = {} + ): string { + const { version = 4, refDate = this.faker.defaultRefDate() } = options; + switch (version) { + case 7: { + return uuidV7(this.faker, toDate(refDate)); + } + + default: { + return uuidV4(this.faker); + } + } } /** diff --git a/src/modules/string/uuid.ts b/src/modules/string/uuid.ts new file mode 100644 index 00000000000..f24561dd4f3 --- /dev/null +++ b/src/modules/string/uuid.ts @@ -0,0 +1,42 @@ +import type { SimpleFaker } from '../../'; + +/** + * Returns a UUID v4 ([Universally Unique Identifier](https://en.wikipedia.org/wiki/Universally_unique_identifier)). + * + * @internal + * + * @param faker The faker instance to use. + */ +export function uuidV4(faker: SimpleFaker): string { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' + .replaceAll('x', () => faker.number.hex({ min: 0x0, max: 0xf })) + .replaceAll('y', () => faker.number.hex({ min: 0x8, max: 0xb })); +} + +/** + * Returns a UUID v7 ([Universally Unique Identifier](https://en.wikipedia.org/wiki/Universally_unique_identifier)). + * + * @internal + * + * @param faker The faker instance to use. + * @param refDate The reference date to retrieve the unix timestamp from. + */ +export function uuidV7(faker: SimpleFaker, refDate: Date): string { + const unixTimeMs = refDate.valueOf(); + const unixTimeMsNormalized = Math.max(unixTimeMs, 0); + const unixTimeMsHex = unixTimeMsNormalized + .toString(16) + .padStart(12, '0') + .slice(-12); + + const unixTimePart = [ + unixTimeMsHex.substring(0, 8), + unixTimeMsHex.substring(8), + ].join('-'); + + const randomPart = '7xxx-yxxx-xxxxxxxxxxxx' + .replaceAll('x', () => faker.number.hex({ min: 0x0, max: 0xf })) + .replaceAll('y', () => faker.number.hex({ min: 0x8, max: 0xb })); + + return `${unixTimePart}-${randomPart}`; +} diff --git a/src/modules/word/filter-word-list-by-length.ts b/src/modules/word/filter-word-list-by-length.ts index 6c1b25bf39d..c4e5999e6e8 100644 --- a/src/modules/word/filter-word-list-by-length.ts +++ b/src/modules/word/filter-word-list-by-length.ts @@ -51,7 +51,7 @@ const STRATEGIES = { * @param options The options to provide. * @param options.wordList A list of words to filter. * @param options.length The exact or the range of lengths the words should have. - * @param options.strategy The strategy to apply when no words with a matching length are found. Defaults to `'any-length'`. + * @param options.strategy The strategy to apply when no words with a matching length are found. Defaults to `'fail'`. * * Available error handling strategies: * @@ -66,7 +66,7 @@ export function filterWordListByLength(options: { length?: number | { min: number; max: number }; strategy?: 'fail' | 'closest' | 'shortest' | 'longest' | 'any-length'; }): string[] { - const { wordList, length, strategy = 'any-length' } = options; + const { wordList, length, strategy = 'fail' } = options; if (length != null) { const filter: (word: string) => boolean = diff --git a/src/modules/word/index.ts b/src/modules/word/index.ts index 6713eec06cb..cf5719b23d6 100644 --- a/src/modules/word/index.ts +++ b/src/modules/word/index.ts @@ -21,12 +21,11 @@ export class WordModule extends ModuleBase { * - `longest`: Returns any of the longest words. * - `any-length`: Returns a word with any length. * - * Defaults to `'any-length'`. + * Defaults to `'fail'`. * * @example * faker.word.adjective() // 'pungent' * faker.word.adjective(5) // 'slimy' - * faker.word.adjective(100) // 'complete' * faker.word.adjective({ strategy: 'shortest' }) // 'icy' * faker.word.adjective({ length: { min: 5, max: 7 }, strategy: "fail" }) // 'distant' * @@ -62,7 +61,7 @@ export class WordModule extends ModuleBase { * - `longest`: Returns any of the longest words. * - `any-length`: Returns a word with any length. * - * @default 'any-length' + * @default 'fail' */ strategy?: 'fail' | 'closest' | 'shortest' | 'longest' | 'any-length'; } = {} @@ -94,12 +93,11 @@ export class WordModule extends ModuleBase { * - `longest`: Returns any of the longest words. * - `any-length`: Returns a word with any length. * - * Defaults to `'any-length'`. + * Defaults to `'fail'`. * * @example * faker.word.adverb() // 'quarrelsomely' * faker.word.adverb(5) // 'madly' - * faker.word.adverb(100) // 'sadly' * faker.word.adverb({ strategy: 'shortest' }) // 'too' * faker.word.adverb({ length: { min: 5, max: 7 }, strategy: "fail" }) // 'sweetly' * @@ -135,7 +133,7 @@ export class WordModule extends ModuleBase { * - `longest`: Returns any of the longest words. * - `any-length`: Returns a word with any length. * - * @default 'any-length' + * @default 'fail' */ strategy?: 'fail' | 'closest' | 'shortest' | 'longest' | 'any-length'; } = {} @@ -167,12 +165,11 @@ export class WordModule extends ModuleBase { * - `longest`: Returns any of the longest words. * - `any-length`: Returns a word with any length. * - * Defaults to `'any-length'`. + * Defaults to `'fail'`. * * @example * faker.word.conjunction() // 'in order that' * faker.word.conjunction(5) // 'since' - * faker.word.conjunction(100) // 'as long as' * faker.word.conjunction({ strategy: 'shortest' }) // 'or' * faker.word.conjunction({ length: { min: 5, max: 7 }, strategy: "fail" }) // 'hence' * @@ -208,7 +205,7 @@ export class WordModule extends ModuleBase { * - `longest`: Returns any of the longest words. * - `any-length`: Returns a word with any length. * - * @default 'any-length' + * @default 'fail' */ strategy?: 'fail' | 'closest' | 'shortest' | 'longest' | 'any-length'; } = {} @@ -240,12 +237,11 @@ export class WordModule extends ModuleBase { * - `longest`: Returns any of the longest words. * - `any-length`: Returns a word with any length. * - * Defaults to `'any-length'`. + * Defaults to `'fail'`. * * @example * faker.word.interjection() // 'gah' * faker.word.interjection(5) // 'fooey' - * faker.word.interjection(100) // 'yowza' * faker.word.interjection({ strategy: 'shortest' }) // 'hm' * faker.word.interjection({ length: { min: 5, max: 7 }, strategy: "fail" }) // 'boohoo' * @@ -281,7 +277,7 @@ export class WordModule extends ModuleBase { * - `longest`: Returns any of the longest words. * - `any-length`: Returns a word with any length. * - * @default 'any-length' + * @default 'fail' */ strategy?: 'fail' | 'closest' | 'shortest' | 'longest' | 'any-length'; } = {} @@ -313,12 +309,11 @@ export class WordModule extends ModuleBase { * - `longest`: Returns any of the longest words. * - `any-length`: Returns a word with any length. * - * Defaults to `'any-length'`. + * Defaults to `'fail'`. * * @example * faker.word.noun() // 'external' * faker.word.noun(5) // 'front' - * faker.word.noun(100) // 'care' * faker.word.noun({ strategy: 'shortest' }) // 'ad' * faker.word.noun({ length: { min: 5, max: 7 }, strategy: "fail" }) // 'average' * @@ -354,7 +349,7 @@ export class WordModule extends ModuleBase { * - `longest`: Returns any of the longest words. * - `any-length`: Returns a word with any length. * - * @default 'any-length' + * @default 'fail' */ strategy?: 'fail' | 'closest' | 'shortest' | 'longest' | 'any-length'; } = {} @@ -386,12 +381,11 @@ export class WordModule extends ModuleBase { * - `longest`: Returns any of the longest words. * - `any-length`: Returns a word with any length. * - * Defaults to `'any-length'`. + * Defaults to `'fail'`. * * @example * faker.word.preposition() // 'without' * faker.word.preposition(5) // 'abaft' - * faker.word.preposition(100) // 'an' * faker.word.preposition({ strategy: 'shortest' }) // 'a' * faker.word.preposition({ length: { min: 5, max: 7 }, strategy: "fail" }) // 'given' * @@ -427,7 +421,7 @@ export class WordModule extends ModuleBase { * - `longest`: Returns any of the longest words. * - `any-length`: Returns a word with any length. * - * @default 'any-length' + * @default 'fail' */ strategy?: 'fail' | 'closest' | 'shortest' | 'longest' | 'any-length'; } = {} @@ -459,12 +453,11 @@ export class WordModule extends ModuleBase { * - `longest`: Returns any of the longest words. * - `any-length`: Returns a word with any length. * - * Defaults to `'any-length'`. + * Defaults to `'fail'`. * * @example * faker.word.verb() // 'act' * faker.word.verb(5) // 'tinge' - * faker.word.verb(100) // 'mess' * faker.word.verb({ strategy: 'shortest' }) // 'do' * faker.word.verb({ length: { min: 5, max: 7 }, strategy: "fail" }) // 'vault' * @@ -500,7 +493,7 @@ export class WordModule extends ModuleBase { * - `longest`: Returns any of the longest words. * - `any-length`: Returns a word with any length. * - * @default 'any-length' + * @default 'fail' */ strategy?: 'fail' | 'closest' | 'shortest' | 'longest' | 'any-length'; } = {} @@ -532,7 +525,7 @@ export class WordModule extends ModuleBase { * - `longest`: Returns any of the longest words. * - `any-length`: Returns a word with any length. * - * Defaults to `'any-length'`. + * Defaults to `'fail'`. * * @example * faker.word.sample() // 'incidentally' @@ -570,7 +563,7 @@ export class WordModule extends ModuleBase { * - `longest`: Returns any of the longest words. * - `any-length`: Returns a word with any length. * - * @default 'any-length' + * @default 'fail' */ strategy?: 'fail' | 'closest' | 'shortest' | 'longest' | 'any-length'; } = {} diff --git a/src/simple-faker.ts b/src/simple-faker.ts index 35fbc866a97..1573444745d 100644 --- a/src/simple-faker.ts +++ b/src/simple-faker.ts @@ -2,6 +2,7 @@ import { randomSeed } from './internal/seed'; import { DatatypeModule } from './modules/datatype'; import { SimpleDateModule } from './modules/date'; import { SimpleHelpersModule } from './modules/helpers'; +import { SimpleLocationModule } from './modules/location'; import { NumberModule } from './modules/number'; import { StringModule } from './modules/string'; import type { Randomizer } from './randomizer'; @@ -14,6 +15,7 @@ import { generateMersenne53Randomizer } from './utils/mersenne'; * - `datatype` * - `date` (without `month` and `weekday`) * - `helpers` (without `fake`) + * - `location` (`latitude`, `longitude` and `nearbyGPSCoordinate` only) * - `number` * - `string` * @@ -85,6 +87,7 @@ export class SimpleFaker { readonly datatype: DatatypeModule = new DatatypeModule(this); readonly date: SimpleDateModule = new SimpleDateModule(this); readonly helpers: SimpleHelpersModule = new SimpleHelpersModule(this); + readonly location: SimpleLocationModule = new SimpleLocationModule(this); readonly number: NumberModule = new NumberModule(this); readonly string: StringModule = new StringModule(this); @@ -150,7 +153,8 @@ export class SimpleFaker { * Sets the seed or generates a new one. * * Please note that generated values are dependent on both the seed and the - * number of calls that have been made since it was set. + * number of calls that have been made since it was set. If you are using dates, + * you will also need to configure them separately. * * This method is intended to allow for consistent values in tests, so you * might want to use hardcoded values as the seed. diff --git a/test/__snapshots__/locale-data.spec.ts.snap b/test/__snapshots__/locale-data.spec.ts.snap new file mode 100644 index 00000000000..7e8bff4cfc6 --- /dev/null +++ b/test/__snapshots__/locale-data.spec.ts.snap @@ -0,0 +1,81 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`locale-data > should only have known characters 1`] = ` +{ + "af_ZA": " #+-ABCDEFGHIJKLMNOPRSTUVWYZabcdefghijklmnopqrstuvwxyz", + "ar": " #()-.T،ءآأؤإئابةتثجحخدذرزسشصضطظعغـفقكلمنهوىيًٍَُِّْٱ", + "az": " #()+,-.ABCDEFGHJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyzÇÖÜçöüğİıŞşƏəабвгдеийклмнопрстуфцчьюя’", + "base": " ()+,-./:;ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz", + "bn_BD": " (),-ঁংঅআইঈউএওকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহ়ািীুূৃেৈোৌ্ড়য়", + "cs_CZ": " #()+-.ABCDEFGHIJKLMNOPRSTUVWXZabcdefghijklmnopqrstuvwxyzÁÍÚáéíóöúüýČčĎďěňŘřŠšťůűŽž", + "cy": "ACEGHILMRSTabcdefghilnorstuwy", + "da": " !"#()+,-./ABCDEFGHIJKLMNOPQRSTUVWYZabcdefghijklmnopqrstuvwxyzÅÆØãåæçéíø", + "de": " #&'()+,-.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÄÖÜßàãäéíöúü", + "de_AT": " #&()+,-.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÄÖÜßãäéíöúü", + "de_CH": " #&+,-./ABCDEFGHIJKLMNOPRSTUVWYZabcdefghijklmnopqrstuvwxyzÖäçèéôöü", + "dv": " #&+-.ހށނރބޅކއވމފދތލގޏސޑޒޓޔޕޖޗޘޙޚޛޝޞޟޠޡޢޣޤަާިީުޫެޭޮޯް", + "el": " #&()+,-./ABCDEFGHILMNOPRSTUVWXYabcdefghiklmnopqrstuvwxyΆΈΌΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩάέήίαβγδεζηθικλμνξοπρςστυφχψωϊόύώ", + "en": " !"#$&'()*+,-./:<=?ABCDEFGHIJKLMNOPQRSTUVWXYZ[]abcdefghijklmnopqrstuvwxyzÅÉØáãäåçèéëíïñóôöøùüýăđēńőřşŠšţūŻŽž’…", + "en_AU": " #'()+-ABCDEFGHIJKLMNOPQRSTVWXYZabcdefghijklmnopqrstuvwxyz", + "en_AU_ocker": " #()+-ABCDEFGHIJKLMNOPQRSTVWXYZabcdefghijklmnopqrstuvwxyz", + "en_BORK": "-BINTUabcdefghijklmnopqrstuvxyz", + "en_CA": " !#()+-.?ABCDEFGHIJKLMNOPQRSTUVWXYabcdefghijklmnopqrstuvwxyÎâèéô–’", + "en_GB": " #'+-.?ABCDEFGHIJKLMNOPQRSTUVWYabcdefghiklmnopqrstuvwxyz", + "en_GH": " #+-.?ABCDEFGHIJKLMNOPQRSTUVWYZabcdefghijklmnoprstuvwxyzɔε", + "en_HK": " #'+-.ABCDEFGHIJKLMNOPRSTUVWXYZabcdeghiklmnoprstuvwxyz", + "en_IE": " #()*+-ACDEFGHKLMNOPRSTVWXYabcdefghiklmnoprstuvwxy", + "en_IN": " #'()+,-.ABCDEFGHIJKLMNOPQRSTUVWYZabcdefghijklmnopqrstuvwxyz", + "en_NG": " #+-ABCDEFGHIJKLMNOPRSTUVWYZabcdefghijklmnopqrstuvwxyz", + "en_US": " -ABCDEFGHJKLMNOPRSTUVWabcdefghiklmnoprstuvwy", + "en_ZA": " #'()+-ABCDEFGHIJKLMNOPRSTVWXYZabcdefghijklmnopqrstuvwxyz", + "eo": " !#(),-.ABCDEFGHIJKLMNOPRSTUVWZabcdefghijklmnoprstuvwxyzäéëöüĈĉĜĝĤĥĴĵŜŝŭ", + "es": " #+,-./ABCDEFGHIJKLMNOPQRSTUVWYZabcdefghijklmnopqrstuvwxyzÁÓáéíñóúüý", + "es_MX": " #+,-./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÁÑÓáéíñóúü", + "fa": " #+,-./،ءآئابتثجحخدذرزسشصضطظعغفقلمنهوئًَِپچژکگی‌", + "fi": " #-ABCEHIJKLMNOPRSTUVabefghijklmnoprstuvyä", + "fr": " #%'()+,-./:;?ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÆÇÈÉÎÑØàáâãäåçèéêëíîïñóôøùúûüāđğıłńœŽ’“”", + "fr_BE": " #'+-/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÈÉàâçèéêëîïôû", + "fr_CA": " #()+,-?ABCEGHJKLMNOPQRSTUVXYabcdehiklmnopqrstuvwÉÎé", + "fr_CH": " #'+-.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÉÎàáâãäçèéêëîïôöûüÿšſ’", + "fr_LU": " #+-ACDEGLMRVWabcdefghiklmnoprstuvxz", + "fr_SN": " #'-.ABCDEFGHIJKLMNOPQRSTVWYZabcdefghijklmnopqrstuvwxyzÉèéëïÿ", + "he": " "#%&'()+,-./ABCDEFGHIJKLMNOPRSTUVWXYZ_abcefgilmnoprstuvyְִַָֹּאבגדהוזחטיךכלםמןנסעףפץצקרשת׳״", + "hr": " #()+,-.ABCDEFGHIJKLMNOPRSTUVWYZabcdefghijklmnopqrstuvwyzäöĆćČčĐ𩹮ž", + "hu": " #%&()+,-./:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÁÉÍÓÖÚÜáãäåçèéíóöúüŐőű–’", + "hy": " #'()+-./ԱԲԳԴԵԶԷԹԻԼԽԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՓՔՕՖաբգդեզէըթժիլխծկհձղճմյնշոչպջռսվտրցւփքօֆև․", + "id_ID": " #&()+,-./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÅáçè’", + "it": " #&'()+,-./ABCDEFGHIJKLMNOPQRSTUVWYZabcdefghijklmnopqrstuvwxyz°àèéìòù", + "ja": " #*+-:、。々〜あいうえおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろわをんァアィイウェエォオカガキギクグケゲコゴサザシジスズセゼソタダチッツテデトドナニネノハバパヒビピフブプヘベペホボポマミムメモャュユョヨラリルレロワン・ー一丁七丈三上下不世並中丸丹主丼乃久之乗乙九也乳乾亀了事二五井亜交京亭亮人仁今介仏仕付代以仰任企伊伐休会伝伯住佐体何作佳使依価係保信修俵俸倉個倒値健傑備僚儀優元先光児入全八公六共兵具典内写冨冬冷凛凜凝処出分切刊列初判利制刷券刺則前剛剤副割劇力功加助勇勉動務勝勲化北匠区匿十千半協南博印卵厚原厳及友双反取受口古可台右号司合吉同名向君否吹味命和咲哀品哉員哲哺唄唐問啓喜営嘉噌器四回因困囲図固国園土地坂型垣城基埼堀堤報場塚塩塾境増墟墨壁壊壮夏外多夢大天太夫央失奇奈奉奔奥奧奨女奴好妃妥妻始姓委姜娘婆婚媒媛嫌子字孝学宅宇守安完官定宜宝実客室宮家富察寧審寮寺対寿封専尉尋小尚尾屈屋属山岐岡岩岸島崇崎嵐嶋川巡工左差巻市布希帝師帯帳幣平年幸広庄床序底店府度座庫康廃廉延建式弔引弘弥弱張当形彦彩彼待律後復徳徹心忍志忘応怒怖思急性恥恨恵悔悠悦悪悲情愛感慮慶憂憶懇成戦戸所扇手払承技抑投担拒拓括持指掛採接推提揚揺携摂摘擬支放敏救教敬数敵文斉斎斐斗料断新方施旅既日旧早昆昇明昔星春昭普智暇暗曜曲書月有服望朝木未末本朱杉杏材村来東松板枕林果枝架柄柏柱柳柴査柿栃栄栗栞株根格桃案桐桑桜梅梨梶棄森椅植椒検楓業楽榊榎構様槻樋模横樹橋橙機欠次欧欲歌正武歩歯殊残段殻殿母毎比毛氏民気水永汁求汚江池沖沙没沢河油治沼況泉法波泰泳洋洗津活流浅浜浦浩浮海浸消液涼深淳添清済渋減渡渦温測港湊湖湯湾満源溝溶滋滝漂漠漬潔潟潮澤濃濯瀬火灰炒炭点無焦然焼照煩煮熊燃燥片版牙牛牧物特犬犯状猪玉玲理琴瑛瓶甘生産用田由甲男町画畑畠略番異疎疾病発白百的皇盆盛盤目直相県真着瞬瞳矢知石砂研破硫碁確磨礎社祉祐神禅禍福秀秋秒秘移程稔稲穂積究空窒窓窪立竜端競竹笠筑筒管箸節篠簿米粉粧糖糸系紀約紋納純紛素紫紬累細紺終経結統絵絹継緊総緑緒締縄縛縮繁織缶羊美群義羽翔翼老者耐聡聴職肉育胃背胡腐腸自臭臼舞船艇良色芋花芳芽苔若英茂茜茨茶草荒荻莉菅菊菜華萌萩落葉葵蒼蓄蓮薬藍藤虚蛇血行術街衣装裏裕製西見視覚親観角解設証評詞試詰話誇誉認誓語誠誤説課調談請諸謙謡譜警議譲谷豆豊豚象豪貞財貨貫責貯貴買費賀資賓賛賢質購赤走起超越足路踏身車軒較輔輝輪輸辛辞辰農辺辻込近返迫迷退送逆通造連週進遇運道達違遠遣遥遮選遺避邊邦郎部郭都配酒酢酸醤里重野量金鈴鉄鉛鉱銀銅鋭錠錯鍋鎌鎮長門閉開間関阜阪防阿限院陳陸険陽隆隔雄雅雇雑難雰零電青静非面韓音頂頃順須預頑領頭題額顧風颯食飯飽餃館首香馬駄駆駿験騰高髪魅魔魚鮮鰹鳥鳴鴨鶏鶴鹿麦麻黄黒黙齋齢龍", + "ka_GE": " #()+-.აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰ’", + "ko": " #+,-.·가간갈감강같개거건검겁게겨격견결겸경계고곡곤골곰공과곽관광굉교구국군굴굵권귀귄규그극글금급긋기긴길김깊까깝깨꺅꼬꽃꾀꾸꿩끄끊끔끗끼나난날남내냉널넓네년노논놀농뇌누눈뉴느는늘늙능늪늬니닉다단닫달닭담답당대댑댕더덕덤덧데도독돈돌동되된될두둑둔둘둥드든들듭딜따딱때떼또똑똘뚝뚤뛰뜸띠라락란람랏랑래랙랜략량러럽렁레렉려력련렬로록롭롱뢰료룡루룩룹룻룽류률륭르른를름릉리릭린릴림릿링마막만많말맛망매맥맹머먹먼멍메멕멧며면멸명모목몬몹몽무문물뭉뮤미민밀바박반받발밝밤밥방배백뱀뱁버벌범법베벨벳벽변별병보복본볼봄봉부북분불붉붐붙브블비빈빗빠빨빼뻐뽀뿔쁘쁜삐사산살삼상새색샘생샤서석선설섬성세센션셰셸소속손솔솜송쇠쇼수숙순술숲쉬슈스슨슬습승시식신실심싼쌍써쏙씬아악안알암앙앞애앨앵야약얀양어억언얼엄업없엉에엔엘여역연열염영예오옥온올옹와완왕왜외요욕용우욱운울움웅워원월웨웰위윈윙유육윤율으은을음응의이익인일임입있잉자작잔잠잡장재잭저적전절젊점정제젠조족존종좋좌죄주죽준줄중즈즐증지직진질집짜짧쩍찍차착찬참창채처천철청체초촌총최추출충취치친칠침카칸캘캣컬케코콜콩쾌쿠쿤쿨크큰키킨킴타탁탄탈탐탑태택터턱털테토톨톱통투퉁트특티틱파판팔패팽펌페펙펠펭편평포표푸품풍프픈피픽핀필하학한할함합항해행향허헌험헤혁현형혜호혹혼홍화확환활황회효후훈훌휴흑흔흥희흰히힌힘", + "ku_ckb": " ئابتجحخدرزسشعغفقكلمنهويپچڕژڤکگڵۆیێە‌", + "ku_kmr_latin": " ABCDEFGHJKLMNPRSTUWXYZabcdefghijklmnopqrstuvwxyzÇÖÜçêîûüğıŞş", + "lv": " #()+,-.ABCDEFGHIJKLMNOPRSTUVZabcdefghijklmnopqrstuvxyzĀāČčĒēĢģĪīĶķĻļņŠšŪūŽžайкнопрсуы", + "mk": " #()+,-.IcejЃЅЈЉЊЌЏАБВГДЕЖЗИКЛМНОПРСТУФХЦЧШабвгдежзиклмнопрстуфхцчшѓјљњќџ’", + "nb_NO": " #+,-.ABCDEFGHIJKLMNOPRSTUVWXYZabcdefghijklmnopqrstuvwxyzÅØåæéø", + "ne": " #+-ABCDGHIJKLMNPRSTabcdefghijklmnoprstuvwxy", + "nl": " !#%&'()+,-.;?ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz–Ãâãéêëïöúû", + "nl_BE": " #'+-./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzéë", + "pl": " !"#'()+,-./ABCDEFGHIJKLMNOPQRSTUVWYZ[]abcdefghijklmnopqrstuvwxyzäçéóöüąĆćꣳńŚśźŻż–…", + "pt_BR": " #&()+,-.:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÁÍÓàáâãçéêíóôõú", + "pt_PT": " #()+-./ABCDEFGHIJKLMNOPQRSTUVWXZabcdefghijklmnopqrstuvwxyzªºÁÂÉÍàáâãçéêíóôõú", + "ro": " #+,-.ABCDEFGHIJKLMNOPRSTUVXZabcdefghijklmnoprstuvxyzÎâăȘșȚț", + "ro_MD": " #+,-./ABCDEFGHIJKLMNOPRSTUVXZabcdefghijklmnoprstuvxyzâîăȘșț", + "ru": " !#'()+,-.AOАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяё—", + "sk": " "#()+-./ABCDEFGHIJKLMNOPRSTUVWXZabcdefghijklmnopqrstuvwxyzÍÚáäéíóôöúýČčĎď켾ňŕřŠšťŽž", + "sl_SI": " ,.ABCDEFGHIJKLMNOPRSTUVXZabcdefghijklmnoprstuvzćČčŠšŽž", + "sr_RS_latin": " #()+.ABCDEFGHIJKLMNOPRSTUVWZabcdefghijklmnopqrstuvwyzĆćČčĐ𩹮ž", + "sv": " #+,-.ABCDEFGHIJKLMNOPQRSTUVWYZabcdefghijklmnopqrstuvwxyzÄÅÖãäåçéíö", + "ta_IN": "ஆஐகஙசஞடணதனபமயரறளழவாிுெை்", + "th": " !#+-.;กขคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลวศษสหฬอฮฯะัาำิีึืุูเแโใไ็่้๊๋์", + "tr": " #%&'()+,-.ABCDEFGHIJKLMNOPRSTUVWYZabcdefghijklmnopqrstuvwxyzÂÇÖÜâçéîöûüğİıŞş", + "uk": " #()+,-.ЄІАБВГДЕЖЗЙКЛМНОПРСТУФХЦЧШЩЮЯабвгдежзийклмнопрстуфхцчшщьюяєіїґ’", + "ur": " #&+-.ABCDGIJKPSTabcdefghijklmnoprstuvwyzؑءئابتثجحخدرزسشصطظعغفقلمنهوَُْٰٓٗٹپچڈڑژکگںھہیے‎", + "uz_UZ_latin": " #',-.ABCDEFGHIJKLMNOPQRSTUVWXYZ\`abcdefghijklmnopqrstuvwxyz‘’", + "vi": " #+-.ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyzÁÂÚÝàáâãèéêìíòóôõùúýăĐđĩũơưạẢảẤấầẨẩẫậắằẵặẽếềểễệỉịọỏốồổỗộớờởợụủứừửữựỳỷỹ", + "yo_NG": "ABDEFGIJKLMNOPRSTWYabdefghijklmnoprstuwy", + "zh_CN": " #()+-./ABCDEGHIJKLMOPQRSTUXYZabcdefghijklmnopqrstuvwxyz·、。【】一丁七万三上下不与丑专且世丘丙业丛东丝严个中丰串丹为主丽举乃久么义之乌乍乎乐乔乖乘乙乜九也习乡书买乳乾了事二于亏云互亓五井亚些亢交亥产亨享京亭人什仁仅仆仇仉介仍从仑仔他付仙仝代令以仨仪们仰仲仵任份仿企伊伍伏伐休众优会伟传伤伦伯似但位佐体何佘余佛作佟你佩佳佴佼使侍依侠侣侦侨侬侯侵便俄俊俎保俞俟信修倒倘候倚倡倩倪偏做健偶傅储傲像僧僪儒儿允元充兆先光克免党入全八公六兰共关兴兵其具典兹养冀内冈冉再冒冗写军农冠冬冯冰况冶冷冻冼净凉凌凝几凡凤凭凯凰凹出击函刀刁分切刑列刘刚创初利别到制刷前剑剧剪劈力办功加务动助努励劳势勇勋勒勤勾包匈化北匙匠匡区医十千半华协卑卓单卖南博卜卞占卡卢卤卧卫卯印危即却卷卿厄历厉压厍厚原厦去县叉及友双反发叔取受变叙叠口古只召可台史叶号司吃各合吉同名后吐向吕君吞听吮启吴吸吹吾呀呃呈告呐呕员呜周味呼咀和咎咕咖咚咦咪咬咸哀品哇哈哎哐哒哗哟哥哦哨哪哭哲哼唉唐唱啃啄商啊啧啸喀喂善喇喊喜喝喱喷喻嗨嘉嘘嘴嘻嘿噜器嚼四回因团园围固国图圆土圣在圭地圳场坎坏坐块坚坞坡坦埃城埔培基堂堕堡堪堵塑塔塞填境墓墙墨壕士壬壮声壳备复夏夔夕外夙多夜大天太夫央头夷奇奈奉契奔奕套奚奢奥女奶她好如妄妈妍妫姆始姒姓委姚姜姬威娃娄娇娜娟婆婷媒嫩嬴子孔字存孙孛孜孝孟季孤学孩宁宅宇守安宋完宏宓宗官定宛宜宝实客宣宥宦宫宰家宸容宽宾宿密寇富寒寓察寨寸对寻导寿封射将尉小少尔尖尘尚尝尤尧就尹尼尽尾局层居屈屋屎屏展属屠山岁岑岗岛岩岭岳岸峻崇崔嵇川州巡巢工左巧巨巩巫差己已巴巷巾币市布帅师希帕帖帛帝带席常帽幕干平年幸幻幽广庄庆序庐库应底店庚府庞废度座庵康庸庹庾廉廊廖延廷建开异式弓引弗弘弟张弥弦弧弭弹强归当录形彤彩彪彬彭影彷往很律徐徒得御徨徭微德徽心必忆忍志忙忠快念忻怀态怕怖思怡性怪总恐恒恨恩恭恽悉悍悚悟悠悦悬悲情惊惟惠想愈意愚感慈慎慕慢慧懒懿戈戊戎戏成我或战戚戢戴户房所扈手才打扔托扣执扬扭扶承技抄把抓投抗折抚抛报披抬抱抽抿拆拉拌拍拎拔拖招拜拟拣拧拨择拱拼拿持指按挑挖挝挡挥挪振捉捏捡捣捧据捶捷捺掀掌掐排掘探接控推掷揍提插握揭揽搀搁搂搔搜搡搭携摄摇摊摔摘摩摸撑撒撕撞撬播撮擅操擎擒擦攀攥支收改放政敏敖教敛敢敦敬数敲整文斋斌斐斑斗料斛断斯新方於施旁旅族旗无既日旦旧旭时旷旺昂昆昊昌明易昔昕昝星春是显晁晋晏晓晚晟晨普景晴晶智暖暗暨暴暹曲更曹曼曾最月有朋服朔朗望朝期木未末本术朱朴机杀杂权杉李杏材村杜杞束条来杨杭杯杰杷松板极枇析枕林枚果枝枣枪枫枸柏柑柔柚柠查柬柯柳柴柿标栈栋树栗校核根格栾桂桃桌桐桑桓桥梁梅梓梗梦梨梭械梵检棉棕森椅椋植椒楚楠楷楼概榄榕榜榴樊樟模樱橄橘橙橡檀檬次欣欧款歌止正此步武歧殇残殳段殷毅毋母毓比毕毛氏民气氖氙氟氡氢氦氧氩氪氮氯水永汁求汇汉汐汕汗汝汞江池汤汪汲汶汽沃沈沐沙没沫河油治沿泉泊法泡波泣泥注泪泰泷泽洁洋洗洛津洪洲活派流浅浆济浑浒浓浙浦浩浪浮海涂涛液涵淀淋淡淦深淳混淼清渊渐渠温港游湖湘湛湾源溜溥溪溴溺滑滕滚满滨漆演漫潇潘潜潭潮澄澳澹濮濯瀚灌火灯灰灵炎炒炖炫炬炸点烈烘烟烤烧烨热焉焖焦焱然煊煎煜照煮煲煸熊熙熟熠燃燕爆爪爬爱爵父爷爽片版牌牙牛牟牢牧物牵特犁犬状犹狂狄狐狗独狮狸狼猎猛猪猫献獒獚玄玉王玛玥玩玫环现玲玳玻珀珈珊珍珠班球琅理琊琦琪琴瑁瑙瑚瑜瑞瑰瑶瑾璩瓜瓢瓦瓮瓶瓷甄甘甚甜生用甫田由甲申电男甸画畅界畔留略番疆疏疑痣癸登白百皂的皇皋皓皮盈益盍监盒盖盗盘盛目直相盾省真眭眼着睢督睦睫睹睿瞿知矩矫短石矶矿码砂研破砷砹硅硒硕硫硬硼碌碎碘碧碲碳磊磨磷示礼社祁祈祖祝神祢祥票祭祺禄福禚禹离禽禾秀秋种科秒秘秦称移程稍税稻稽穆穰究穹空穿突窗窦立竞章童竭端竹竺笃笋笑笔笛符笪第笼等筋筑答简箕算管箱籍米类籽粉粗粘粟粤精糖糜糯系素索紫累綦繁红约级纪纲纳纵纽线练组细终绍经绒结绕给络绝统绪续绳维绿缀缅缈缑编缘缥缩缪网罕罗羊美群羽羿翁翅翊翟翠翦翰耀老考者而耐耕耳耶耿聂聊职联聪肃肇肉肖肠股肥肯育胆背胜胡胤胥胭胶能脂脆脑脚脱腊腌腐腓腩腰腹腻腾臀臧自臭至致舌舍舒舜舞航般舰良色艳艺艾节芋芒芙芝芥芦芫芬芮芯花芳芹芽苌苍苏苑苗苟苡若苦英苹茂范茄茅茆茗茨茴茶茹茼荀荆草荔荞荣荤药荷荽莎莓莘莫莱莲莴获莽菅菇菊菜菠菱菲萄萍萝萤营萧萨萱葛葡董葫葬葱蒂蒉蒋蒙蒜蒯蒲蒸蒿蓄蓉蓝蓟蓬蔓蔚蔡蔬蔺蔻蕉薄薇薛薯藏藕藤藩蘸虎虚虞虢虫虱虹虽虾蚁蚊蚜蚝蚤蛇蛉蛋蛮蛾蜂蜉蜓蜜蜻蝇蝉蝗蝣蝴蝶螂融螳蟀蟋蠕血衅行街衡衣表衫衬衷袁袖袭裂装裔裕裘裤裴裹褐褒褚西要覃覆见观规视觉角解触言訾詹謇警计认让议记许论设诀识译试诗诚诛话诡该语诱说诸诺读课调谈谊谌谏谢谣谬谭谯谷豆豌豚象豪豹貊贝贡责货质贯贰贲贴贵贷贸费贺贼贾资赏赐赖赛赞赠赤赧赫走赵起超越足跑跟跨路跳蹇蹉身车轨轩转轮软轻载轿较辅辉辑输辕辛辜辟辣辰边辽达迅过迈运近还这进远连迟迦迪迮迷迹退送适逄逆选逊逐途通速造逢逮逯遇道邓邗邛邝邢那邬邮邰邱邴邵邶邸邹郁郎郏郑郗郜郝郦部郭郯郸都鄂鄞鄢酆酋配酒酥酪酱酷酸醇醋释里重野量金鉴鑫钆钇针钊钋钌钍钐钒钔钕钙钚钛钞钟钠钡钢钥钦钨钪钫钬钭钮钯钰钱钴钷钼钽钾铀铁铂铃铅铈铊铋铌铍铎铑铒铕铜铝铟铥铪铬铯铱银铷铹铼铽链锁锂锅锆锇锋锌锎锐锑锔锕锗锘错锝锡锦锫键锰锶锺锿镁镄镅镆镇镉镍镎镓镜镝镤镥镧镨镭镱长门闪闫闭问闳间闵闻闽闾阎阙阚阮防阳阴阵阿陀际陆陈限陕院除险陶隆隋随隐隗隽难雀雄雅集雍雕雨雪雯零雷雾需震霍霖霜霞青靖静靛非靠面革靳鞋鞠韦韩韬韭音韶页项顺须顾顿领频颖题颜风飘飞食饨饭饮饰饶饺饼馄馅馆首香馥馨马驰驱驴驶驹驼驾骆骑骞骥骨高鬼魂魏魔鱼鲁鲈鲍鲜鲟鲤鲫鲶鳄鳙鸟鸠鸡鸭鸯鸳鸵鸽鸿鹂鹅鹊鹌鹎鹏鹑鹤鹬鹭鹰鹿麦麴麻黄黎黑默黾鼎鼠齐齿龙龚龟鿏鿔鿫鿬鿭𫓧𫟷𫟼𬬭𬬻𬭊𬭛𬭳𬭶!(),", + "zh_TW": " #+-一丁三中乳二五任何侯俊修偉健傅傑六凱劉化北南博台史君吳呂哲唐嘉嘯嚴四園城基堂堯夏天女姚姜子孔孟孫宇宋宜家宸尹屏展峻崔市廖建弘張強彤彬彭彰徐志思愚懿戴投振擎文新方於日旭昊明昕星晉晟晨智曉曹曾月期朱李杜杰東松林果柏栗桃梁梓棕楊楷榮樂橙檸正武段毛江汪沈洋洪浩涵淡淵淺淼湖源潔潘澎澤濤瀚瀟灣灰炎炫焱然煊煜熊熙熠燁王琪瑜瑞瑾田男白皓盧省睿石磊祥祺福秦程立竹笑範粉紅紫紹綠縣羅義翊耀聰胡胤致臺航色花苑苗荷莫華萬葉董蒼蓮蔡蔣蕭薄薛藍蘇蘭號街袁褐西覃許語誠謝譚豪賀賈賴超越趙路軒輝連週遠邱邵郝郭鄒鄧鄭金鈺銀錢錦鐘鑫門閻陳陶陸隆雄雨雪雲雷霖青靖靛韋韓顧風飛餘馬馮馳駒騫高魏鴻鵬鶴鷺黃黎黑默齊龍龔", + "zu_ZA": " #+-ABCDEFGHIJKLMNPRSTUVWYZabcdefghijklmnopqrstuvwyz", +} +`; diff --git a/test/all-functional.spec.ts b/test/all-functional.spec.ts index 33d89312d5e..7a6825e293a 100644 --- a/test/all-functional.spec.ts +++ b/test/all-functional.spec.ts @@ -15,7 +15,7 @@ function getMethodNamesByModules(faker: Faker): { [module: string]: string[] } { return Object.fromEntries( Object.keys(faker) .filter(isTestableModule) - .sort() + .toSorted() .map<[string, string[]]>((moduleName) => [ moduleName, getMethodNamesOf(faker[moduleName]), @@ -50,7 +50,7 @@ const BROKEN_LOCALE_METHODS = { betweens: '*', }, location: { - state: ['az', 'nb_NO', 'ro_MD'], + state: ['az', 'ro_MD'], zipCode: ['en_HK'], }, string: { diff --git a/test/faker.spec.ts b/test/faker.spec.ts index dba19421912..9cb2f4c0cdc 100644 --- a/test/faker.spec.ts +++ b/test/faker.spec.ts @@ -55,16 +55,16 @@ describe('faker', () => { // Non-existing module expect(faker.definitions.missing).toBeDefined(); // Non-existing definition in a non-existing module - expect(() => faker.definitions.missing?.missing).toThrow(); + expect(() => faker.definitions.missing?.missing).toThrowError(); // Non-existing definition in an existing module - expect(() => faker.definitions.location.missing).toThrow(); + expect(() => faker.definitions.location.missing).toThrowError(); }); }); describe('constructor()', () => { describe('locale', () => { it('should throw error if no locales passed', () => { - expect(() => new Faker({ locale: [] })).toThrow( + expect(() => new Faker({ locale: [] })).toThrowError( new FakerError( 'The locale option must contain at least one locale definition.' ) diff --git a/test/integration/modules/image.spec.ts b/test/integration/modules/image.spec.ts index f9d5cabdb2c..d1ce44d2eb9 100644 --- a/test/integration/modules/image.spec.ts +++ b/test/integration/modules/image.spec.ts @@ -22,8 +22,8 @@ import { faker } from '../../../src'; */ async function assertWorkingUrl(address: string): Promise { expect(address).toBeTypeOf('string'); - expect(address).toMatch(/^https:\/\//); - expect(() => new URL(address)).not.toThrow(); + expect(address).toStartWith('https://'); + expect(() => new URL(address)).not.toThrowError(); await expect( new Promise((resolve, reject) => { diff --git a/test/internal/bind-this-to-member-functions.spec.ts b/test/internal/bind-this-to-member-functions.spec.ts index 93b0a9cbf42..d7fc25f34e4 100644 --- a/test/internal/bind-this-to-member-functions.spec.ts +++ b/test/internal/bind-this-to-member-functions.spec.ts @@ -18,7 +18,7 @@ describe('internal', () => { const someMethodWithoutBind = someModule.someMethod; - expect(() => someMethodWithoutBind()).toThrow( + expect(() => someMethodWithoutBind()).toThrowError( new TypeError("Cannot read properties of undefined (reading 'faker')") ); @@ -26,7 +26,7 @@ describe('internal', () => { const someMethod = someModule.someMethod; - expect(() => someMethod()).not.toThrow(); + expect(() => someMethod()).not.toThrowError(); }); }); }); diff --git a/test/internal/date.spec.ts b/test/internal/date.spec.ts index 453dae792e8..59b52e3ea8b 100644 --- a/test/internal/date.spec.ts +++ b/test/internal/date.spec.ts @@ -15,7 +15,7 @@ describe('toDate()', () => { it('should throw a FakerError for an invalid date string', () => { const timestamp = 'aaaa-07-05T15:49:19+0000'; - expect(() => toDate(timestamp)).toThrow( + expect(() => toDate(timestamp)).toThrowError( new FakerError(`Invalid refDate date: ${timestamp}`) ); }); diff --git a/test/internal/locale-proxy.spec.ts b/test/internal/locale-proxy.spec.ts index 1b6e060b9ca..06f2680c138 100644 --- a/test/internal/locale-proxy.spec.ts +++ b/test/internal/locale-proxy.spec.ts @@ -37,7 +37,7 @@ describe('LocaleProxy', () => { expect(() => { // @ts-expect-error: LocaleProxy is read-only. locale.category = {}; - }).toThrow( + }).toThrowError( new FakerError('You cannot edit the locale data on the faker instance') ); }); @@ -46,7 +46,7 @@ describe('LocaleProxy', () => { expect(() => { // @ts-expect-error: LocaleProxy is read-only. locale.airline = {}; - }).toThrow( + }).toThrowError( new FakerError('You cannot edit the locale data on the faker instance') ); }); @@ -55,7 +55,7 @@ describe('LocaleProxy', () => { expect(() => { // @ts-expect-error: LocaleProxy is read-only. delete locale.category; - }).toThrow( + }).toThrowError( new FakerError('You cannot edit the locale data on the faker instance') ); }); @@ -64,7 +64,7 @@ describe('LocaleProxy', () => { expect(() => { // @ts-expect-error: LocaleProxy is read-only. delete locale.airline; - }).toThrow( + }).toThrowError( new FakerError('You cannot edit the locale data on the faker instance') ); }); @@ -76,7 +76,9 @@ describe('LocaleProxy', () => { }); it('should be possible to get all categories keys on actual locale', () => { - expect(Object.keys(locale).sort()).toEqual(Object.keys(en).sort()); + expect(Object.keys(locale).toSorted()).toEqual( + Object.keys(en).toSorted() + ); }); }); @@ -94,9 +96,10 @@ describe('LocaleProxy', () => { }); it('should not be possible to access a missing entry in a missing category', () => { - expect(() => locale.category.missing).toThrow( + expect(() => locale.category.missing).toThrowError( new FakerError( `The locale data for 'category.missing' are missing in this locale. + If this is a custom Faker instance, please make sure all required locales are used e.g. '[de_AT, de, en, base]'. Please contribute the missing data to the project or use a locale/Faker instance that has these data. For more information see https://fakerjs.dev/guide/localization.html` ) @@ -104,9 +107,10 @@ describe('LocaleProxy', () => { }); it('should not be possible to access a missing entry in a present category', () => { - expect(() => locale.airline.missing).toThrow( + expect(() => locale.airline.missing).toThrowError( new FakerError( `The locale data for 'airline.missing' are missing in this locale. + If this is a custom Faker instance, please make sure all required locales are used e.g. '[de_AT, de, en, base]'. Please contribute the missing data to the project or use a locale/Faker instance that has these data. For more information see https://fakerjs.dev/guide/localization.html` ) @@ -122,7 +126,7 @@ describe('LocaleProxy', () => { airline: { airline: null }, }); - expect(() => unavailable.airline.airline).toThrow( + expect(() => unavailable.airline.airline).toThrowError( new FakerError( `The locale data for 'airline.airline' aren't applicable to this locale. If you think this is a bug, please report it at: https://github.com/faker-js/faker` @@ -134,7 +138,7 @@ describe('LocaleProxy', () => { expect(() => { // @ts-expect-error: LocaleProxy is read-only. locale.category.missing = {}; - }).toThrow( + }).toThrowError( new FakerError('You cannot edit the locale data on the faker instance') ); }); @@ -143,7 +147,7 @@ describe('LocaleProxy', () => { expect(() => { // @ts-expect-error: LocaleProxy is read-only. locale.airline.missing = {}; - }).toThrow( + }).toThrowError( new FakerError('You cannot edit the locale data on the faker instance') ); }); @@ -152,7 +156,7 @@ describe('LocaleProxy', () => { expect(() => { // @ts-expect-error: LocaleProxy is read-only. locale.airline.airline = ['dummy']; - }).toThrow( + }).toThrowError( new FakerError('You cannot edit the locale data on the faker instance') ); }); @@ -161,7 +165,7 @@ describe('LocaleProxy', () => { expect(() => { // @ts-expect-error: LocaleProxy is read-only. delete locale.category.missing; - }).toThrow( + }).toThrowError( new FakerError('You cannot edit the locale data on the faker instance') ); }); @@ -170,7 +174,7 @@ describe('LocaleProxy', () => { expect(() => { // @ts-expect-error: LocaleProxy is read-only. delete locale.airline.missing; - }).toThrow( + }).toThrowError( new FakerError('You cannot edit the locale data on the faker instance') ); }); @@ -179,7 +183,7 @@ describe('LocaleProxy', () => { expect(() => { // @ts-expect-error: LocaleProxy is read-only. delete locale.airline.airline; - }).toThrow( + }).toThrowError( new FakerError('You cannot edit the locale data on the faker instance') ); }); @@ -189,8 +193,8 @@ describe('LocaleProxy', () => { }); it('should be possible to get all keys from existing category', () => { - expect(Object.keys(locale.airline).sort()).toEqual( - Object.keys(enAirline).sort() + expect(Object.keys(locale.airline).toSorted()).toEqual( + Object.keys(enAirline).toSorted() ); }); }); diff --git a/test/locale-data.spec.ts b/test/locale-data.spec.ts index f3332f0f80b..32688702463 100644 --- a/test/locale-data.spec.ts +++ b/test/locale-data.spec.ts @@ -1,6 +1,5 @@ import { describe, expect, it } from 'vitest'; import { allLocales } from '../src'; -import './vitest-extensions'; function checkLocaleData(data: unknown) { if (Array.isArray(data)) { @@ -16,6 +15,67 @@ function checkLocaleData(data: unknown) { } } +/** + * A set of locale data paths that should be ignored when checking for characters. + * Because these usually contain data using Latin characters that are otherwise not relevant to the locale. + */ +const ignoredCharacterData = new Set([ + '.airline.airline[].iataCode', + '.airline.airplane[].iataTypeCode', + '.airline.airport[].iataCode', + '.finance.currency', + '.finance.credit_card', + '.hacker.abbreviation', + '.internet.domain_suffix', + '.internet.emoji', + '.internet.example_email', + '.internet.free_email', + '.location.country_code', + '.metadata', + '.science.chemical_element[].symbol', + '.science.unit[].symbol', + '.system.directory_path', + '.system.mime_type', +]); + +function uniqueCharacters(data: string | string[]): string[] { + return [...new Set(data)]; +} + +function allCharacters(data: unknown, path: string = ''): string[] { + if (ignoredCharacterData.has(path)) { + return []; + } else if (Array.isArray(data)) { + return uniqueCharacters(data.flatMap((e) => allCharacters(e, `${path}[]`))); + } else if (typeof data === 'object' && data != null) { + return uniqueCharacters( + Object.entries(data).flatMap(([key, entry]) => + allCharacters(entry, `${path}.${key}`) + ) + ); + } else if (typeof data === 'string') { + return uniqueCharacters( + data + .replaceAll(/{{(?:[^{]|{(?!{))*?}}/g, '') // remove placeholders + .replaceAll(/\d+/g, '') // remove numbers + ); + } + + return []; +} + describe('locale-data', () => { checkLocaleData(allLocales); + + // This test exists to keep track of the characters used in each locale. + // It doesn't matter if new characters are added as long as they belong to that language. + it('should only have known characters', () => { + const characterSets = Object.fromEntries( + Object.entries(allLocales).map(([locale, data]) => [ + locale, + allCharacters(data).toSorted().join(''), + ]) + ); + expect(characterSets).toMatchSnapshot(); + }); }); diff --git a/test/locale-imports.spec.ts b/test/locale-imports.spec.ts index f501946c8b7..6813dfe7860 100644 --- a/test/locale-imports.spec.ts +++ b/test/locale-imports.spec.ts @@ -1,22 +1,10 @@ +import isISO15924 from 'validator/lib/isISO15924'; import { describe, expect, it } from 'vitest'; import type { Faker } from '../src'; import { allLocales } from '../src'; import { keys } from '../src/internal/keys'; describe.each(keys(allLocales))('locale imports', (locale) => { - it(`should be possible to directly require('@faker-js/faker/locale/${locale}')`, () => { - // eslint-disable-next-line @typescript-eslint/no-require-imports, unicorn/prefer-module - const { faker } = require(`../dist/locale/${locale}.cjs`) 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/locale/${locale}.js`)) as { faker: Faker; @@ -43,22 +31,7 @@ describe.each(keys(allLocales))('locale imports', (locale) => { 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.script).toSatisfy(isISO15924); expect(metadata.endonym).toBeTypeOf('string'); expect(metadata.dir).toBeTypeOf('string'); expect(['ltr', 'rtl']).toContain(metadata.dir); diff --git a/test/modules/__snapshots__/airline.spec.ts.snap b/test/modules/__snapshots__/airline.spec.ts.snap index f304193aa8f..ce150c502b6 100644 --- a/test/modules/__snapshots__/airline.spec.ts.snap +++ b/test/modules/__snapshots__/airline.spec.ts.snap @@ -4,8 +4,8 @@ exports[`airline > 42 > aircraftType 1`] = `"regional"`; exports[`airline > 42 > airline 1`] = ` { - "iataCode": "ET", - "name": "Ethiopian Airlines", + "iataCode": "EY", + "name": "Etihad Airways", } `; @@ -55,8 +55,8 @@ exports[`airline > 1211 > aircraftType 1`] = `"widebody"`; exports[`airline > 1211 > airline 1`] = ` { - "iataCode": "VN", - "name": "Vietnam Airlines", + "iataCode": "VJ", + "name": "VietJet Air", } `; @@ -106,8 +106,8 @@ exports[`airline > 1337 > aircraftType 1`] = `"narrowbody"`; exports[`airline > 1337 > airline 1`] = ` { - "iataCode": "CX", - "name": "Cathay Pacific", + "iataCode": "5J", + "name": "Cebu Pacific Air", } `; diff --git a/test/modules/__snapshots__/commerce.spec.ts.snap b/test/modules/__snapshots__/commerce.spec.ts.snap index 8873ae360a4..c085ab9642b 100644 --- a/test/modules/__snapshots__/commerce.spec.ts.snap +++ b/test/modules/__snapshots__/commerce.spec.ts.snap @@ -36,6 +36,16 @@ exports[`commerce > 42 > productMaterial 1`] = `"Cotton"`; exports[`commerce > 42 > productName 1`] = `"Handcrafted Wooden Sausages"`; +exports[`commerce > 42 > upc > noArgs 1`] = `"397511086709"`; + +exports[`commerce > 42 > upc > with 5 digit prefix 1`] = `"012343975112"`; + +exports[`commerce > 42 > upc > with 11 digit prefix 1`] = `"012345678905"`; + +exports[`commerce > 42 > upc > with empty prefix 1`] = `"397511086709"`; + +exports[`commerce > 42 > upc > with single digit prefix 1`] = `"039751108673"`; + exports[`commerce > 1211 > department 1`] = `"Tools"`; exports[`commerce > 1211 > isbn > noArgs 1`] = `"978-1-82966-736-0"`; @@ -72,6 +82,16 @@ exports[`commerce > 1211 > productMaterial 1`] = `"Steel"`; exports[`commerce > 1211 > productName 1`] = `"Tasty Steel Cheese"`; +exports[`commerce > 1211 > upc > noArgs 1`] = `"982966736875"`; + +exports[`commerce > 1211 > upc > with 5 digit prefix 1`] = `"012349829662"`; + +exports[`commerce > 1211 > upc > with 11 digit prefix 1`] = `"012345678905"`; + +exports[`commerce > 1211 > upc > with empty prefix 1`] = `"982966736875"`; + +exports[`commerce > 1211 > upc > with single digit prefix 1`] = `"098296673688"`; + exports[`commerce > 1337 > department 1`] = `"Computers"`; exports[`commerce > 1337 > isbn > noArgs 1`] = `"978-0-12-435297-1"`; @@ -107,3 +127,13 @@ exports[`commerce > 1337 > productDescription 1`] = `"Innovative Car featuring l exports[`commerce > 1337 > productMaterial 1`] = `"Ceramic"`; exports[`commerce > 1337 > productName 1`] = `"Frozen Bronze Chicken"`; + +exports[`commerce > 1337 > upc > noArgs 1`] = `"212435297133"`; + +exports[`commerce > 1337 > upc > with 5 digit prefix 1`] = `"012342124351"`; + +exports[`commerce > 1337 > upc > with 11 digit prefix 1`] = `"012345678905"`; + +exports[`commerce > 1337 > upc > with empty prefix 1`] = `"212435297133"`; + +exports[`commerce > 1337 > upc > with single digit prefix 1`] = `"021243529714"`; diff --git a/test/modules/__snapshots__/finance.spec.ts.snap b/test/modules/__snapshots__/finance.spec.ts.snap index 7d65732251a..2e7c173eae0 100644 --- a/test/modules/__snapshots__/finance.spec.ts.snap +++ b/test/modules/__snapshots__/finance.spec.ts.snap @@ -46,6 +46,7 @@ exports[`finance > 42 > currency 1`] = ` { "code": "ILS", "name": "New Israeli Sheqel", + "numericCode": "376", "symbol": "₪", } `; @@ -54,6 +55,8 @@ exports[`finance > 42 > currencyCode 1`] = `"ILS"`; exports[`finance > 42 > currencyName 1`] = `"New Israeli Sheqel"`; +exports[`finance > 42 > currencyNumericCode 1`] = `"376"`; + exports[`finance > 42 > currencySymbol 1`] = `"₪"`; exports[`finance > 42 > ethereumAddress 1`] = `"0x8ead331ddf0fc4446b96d368ab4bd1d31efb62f9"`; @@ -66,16 +69,6 @@ exports[`finance > 42 > iban > with formatted option 1`] = `"GT69 T10P 0V13 4624 exports[`finance > 42 > litecoinAddress 1`] = `"3JAaa4SAH2YQdbbiwrhB9hnsMcvA"`; -exports[`finance > 42 > maskedNumber > noArgs 1`] = `"(...3975)"`; - -exports[`finance > 42 > maskedNumber > with length 1`] = `"(...39751)"`; - -exports[`finance > 42 > maskedNumber > with length and parenthesis option 1`] = `"...39751"`; - -exports[`finance > 42 > maskedNumber > with length option 1`] = `"(...39751)"`; - -exports[`finance > 42 > maskedNumber > with length, parenthesis and ellipsis option 1`] = `"...39751"`; - exports[`finance > 42 > pin > noArgs 1`] = `"3975"`; exports[`finance > 42 > pin > with length 1`] = `"3975110867"`; @@ -134,6 +127,7 @@ exports[`finance > 1211 > currency 1`] = ` { "code": "VUV", "name": "Vatu", + "numericCode": "548", "symbol": "", } `; @@ -142,6 +136,8 @@ exports[`finance > 1211 > currencyCode 1`] = `"VUV"`; exports[`finance > 1211 > currencyName 1`] = `"Vatu"`; +exports[`finance > 1211 > currencyNumericCode 1`] = `"548"`; + exports[`finance > 1211 > currencySymbol 1`] = `"$"`; exports[`finance > 1211 > ethereumAddress 1`] = `"0xed4fefa7fbaec9dc4c48fa8ebf46fb7c8563cf3f"`; @@ -154,16 +150,6 @@ exports[`finance > 1211 > iban > with formatted option 1`] = `"TN83 2673 6788 21 exports[`finance > 1211 > litecoinAddress 1`] = `"3eZEFLmGPLEQrSRdAcnZLoWwYeiHwmRog"`; -exports[`finance > 1211 > maskedNumber > noArgs 1`] = `"(...9829)"`; - -exports[`finance > 1211 > maskedNumber > with length 1`] = `"(...98296)"`; - -exports[`finance > 1211 > maskedNumber > with length and parenthesis option 1`] = `"...98296"`; - -exports[`finance > 1211 > maskedNumber > with length option 1`] = `"(...98296)"`; - -exports[`finance > 1211 > maskedNumber > with length, parenthesis and ellipsis option 1`] = `"...98296"`; - exports[`finance > 1211 > pin > noArgs 1`] = `"9829"`; exports[`finance > 1211 > pin > with length 1`] = `"9829667368"`; @@ -222,6 +208,7 @@ exports[`finance > 1337 > currency 1`] = ` { "code": "ETB", "name": "Ethiopian Birr", + "numericCode": "230", "symbol": "", } `; @@ -230,28 +217,20 @@ exports[`finance > 1337 > currencyCode 1`] = `"ETB"`; exports[`finance > 1337 > currencyName 1`] = `"Ethiopian Birr"`; +exports[`finance > 1337 > currencyNumericCode 1`] = `"230"`; + exports[`finance > 1337 > currencySymbol 1`] = `"$"`; exports[`finance > 1337 > ethereumAddress 1`] = `"0x536a7b5fa28d2f9bb79ca46ea394bc4f9bb0af32"`; -exports[`finance > 1337 > iban > noArgs 1`] = `"FO2200532700604734"`; +exports[`finance > 1337 > iban > noArgs 1`] = `"FI1300552916047457"`; exports[`finance > 1337 > iban > with formatted and countryCode option 1`] = `"DE04 0033 2713 1474 7007 41"`; -exports[`finance > 1337 > iban > with formatted option 1`] = `"FO22 0053 2700 6047 34"`; +exports[`finance > 1337 > iban > with formatted option 1`] = `"FI13 0055 2916 0474 57"`; exports[`finance > 1337 > litecoinAddress 1`] = `"LhsjwgYJ7oC8ZrMNmqzLbhEubpcw"`; -exports[`finance > 1337 > maskedNumber > noArgs 1`] = `"(...2124)"`; - -exports[`finance > 1337 > maskedNumber > with length 1`] = `"(...21243)"`; - -exports[`finance > 1337 > maskedNumber > with length and parenthesis option 1`] = `"...21243"`; - -exports[`finance > 1337 > maskedNumber > with length option 1`] = `"(...21243)"`; - -exports[`finance > 1337 > maskedNumber > with length, parenthesis and ellipsis option 1`] = `"...21243"`; - exports[`finance > 1337 > pin > noArgs 1`] = `"2124"`; exports[`finance > 1337 > pin > with length 1`] = `"2124352971"`; diff --git a/test/modules/__snapshots__/food.spec.ts.snap b/test/modules/__snapshots__/food.spec.ts.snap index d786d250921..1ca6f55c34b 100644 --- a/test/modules/__snapshots__/food.spec.ts.snap +++ b/test/modules/__snapshots__/food.spec.ts.snap @@ -8,7 +8,7 @@ exports[`food > 42 > dish 1`] = `"Moses's Special Buckwheat Flour"`; exports[`food > 42 > ethnicCategory 1`] = `"Gujarati"`; -exports[`food > 42 > fruit 1`] = `"fig"`; +exports[`food > 42 > fruit 1`] = `"fingerlime"`; exports[`food > 42 > ingredient 1`] = `"flathead"`; @@ -20,13 +20,13 @@ exports[`food > 42 > vegetable 1`] = `"cos lettuce"`; exports[`food > 1211 > adjective 1`] = `"tender"`; -exports[`food > 1211 > description 1`] = `"Three cherries with onion, pumpkin, parsnip, purple carrot and soy beans. With a side of baked prune, and your choice of celery or capsicum."`; +exports[`food > 1211 > description 1`] = `"Three cherries with okra, pumpkin, onion, pumpkin and soy beans. With a side of baked raspberry, and your choice of celery or capsicum."`; exports[`food > 1211 > dish 1`] = `"Sushi"`; exports[`food > 1211 > ethnicCategory 1`] = `"Texan"`; -exports[`food > 1211 > fruit 1`] = `"strawberry"`; +exports[`food > 1211 > fruit 1`] = `"starfruit"`; exports[`food > 1211 > ingredient 1`] = `"turmeric"`; @@ -38,7 +38,7 @@ exports[`food > 1211 > vegetable 1`] = `"sun dried tomatoes"`; exports[`food > 1337 > adjective 1`] = `"fluffy"`; -exports[`food > 1337 > description 1`] = `"A slow-roasted Cory's Shearwater with a fresh, fluffy exterior. Stuffed with orange and covered in fingerlime sauce. Sides with bok choy puree and wild english spinach."`; +exports[`food > 1337 > description 1`] = `"A slow-roasted Cory's Shearwater with a fresh, fluffy exterior. Stuffed with papaw and covered in goji berry sauce. Sides with beetroot puree and wild endive."`; exports[`food > 1337 > dish 1`] = `"Egyptian Dill Soup"`; diff --git a/test/modules/__snapshots__/git.spec.ts.snap b/test/modules/__snapshots__/git.spec.ts.snap index 7ffa380e63f..ca30330c86b 100644 --- a/test/modules/__snapshots__/git.spec.ts.snap +++ b/test/modules/__snapshots__/git.spec.ts.snap @@ -10,28 +10,28 @@ exports[`git > 42 > commitDate > with only string refDate 1`] = `"Tue Dec 31 08: exports[`git > 42 > commitEntry > with only Date refDate 1`] = ` "commit ead331ddf0fc4446b96d368ab4bd1d31efb62f92 -Author: Jerome Vandervort -Date: Tue Dec 31 14:20:57 2019 +1100 +Author: Suzanne.Hahn +Date: Tue Dec 31 04:42:12 2019 -1000 -    bypass bluetooth application +    copy haptic card " `; exports[`git > 42 > commitEntry > with only number refDate 1`] = ` "commit ead331ddf0fc4446b96d368ab4bd1d31efb62f92 -Author: Jerome Vandervort -Date: Tue Dec 31 14:20:57 2019 +1100 +Author: Suzanne.Hahn +Date: Tue Dec 31 04:42:12 2019 -1000 -    bypass bluetooth application +    copy haptic card " `; exports[`git > 42 > commitEntry > with only string refDate 1`] = ` "commit ead331ddf0fc4446b96d368ab4bd1d31efb62f92 -Author: Jerome Vandervort -Date: Tue Dec 31 14:20:57 2019 +1100 +Author: Suzanne.Hahn +Date: Tue Dec 31 04:42:12 2019 -1000 -    bypass bluetooth application +    copy haptic card " `; @@ -53,28 +53,28 @@ exports[`git > 1211 > commitDate > with only string refDate 1`] = `"Tue Dec 31 2 exports[`git > 1211 > commitEntry > with only Date refDate 1`] = ` "commit d4fefa7fbaec9dc4c48fa8ebf46fb7c8563cf3fa -Author: Deion Durgan -Date: Tue Dec 31 11:08:15 2019 -0600 +Author: Debbie.Kshlerin70 +Date: Tue Dec 31 20:55:12 2019 -0900 -    override solid state array +    reboot multi-byte feed " `; exports[`git > 1211 > commitEntry > with only number refDate 1`] = ` "commit d4fefa7fbaec9dc4c48fa8ebf46fb7c8563cf3fa -Author: Deion Durgan -Date: Tue Dec 31 11:08:15 2019 -0600 +Author: Debbie.Kshlerin70 +Date: Tue Dec 31 20:55:12 2019 -0900 -    override solid state array +    reboot multi-byte feed " `; exports[`git > 1211 > commitEntry > with only string refDate 1`] = ` "commit d4fefa7fbaec9dc4c48fa8ebf46fb7c8563cf3fa -Author: Deion Durgan -Date: Tue Dec 31 11:08:15 2019 -0600 +Author: Debbie.Kshlerin70 +Date: Tue Dec 31 20:55:12 2019 -0900 -    override solid state array +    reboot multi-byte feed " `; @@ -96,28 +96,28 @@ exports[`git > 1337 > commitDate > with only string refDate 1`] = `"Tue Dec 31 0 exports[`git > 1337 > commitEntry > with only Date refDate 1`] = ` "commit 36a7b5fa28d2f9bb79ca46ea394bc4f9bb0af328 -Author: Matt_Hills -Date: Tue Dec 31 00:20:42 2019 -0900 +Author: Gene_Heller +Date: Tue Dec 31 22:32:07 2019 +1200 -    synthesize wireless hard drive +    index haptic pixel " `; exports[`git > 1337 > commitEntry > with only number refDate 1`] = ` "commit 36a7b5fa28d2f9bb79ca46ea394bc4f9bb0af328 -Author: Matt_Hills -Date: Tue Dec 31 00:20:42 2019 -0900 +Author: Gene_Heller +Date: Tue Dec 31 22:32:07 2019 +1200 -    synthesize wireless hard drive +    index haptic pixel " `; exports[`git > 1337 > commitEntry > with only string refDate 1`] = ` "commit 36a7b5fa28d2f9bb79ca46ea394bc4f9bb0af328 -Author: Matt_Hills -Date: Tue Dec 31 00:20:42 2019 -0900 +Author: Gene_Heller +Date: Tue Dec 31 22:32:07 2019 +1200 -    synthesize wireless hard drive +    index haptic pixel " `; diff --git a/test/modules/__snapshots__/image.spec.ts.snap b/test/modules/__snapshots__/image.spec.ts.snap index 2bcbe1a3340..31da1f90d4d 100644 --- a/test/modules/__snapshots__/image.spec.ts.snap +++ b/test/modules/__snapshots__/image.spec.ts.snap @@ -4,8 +4,6 @@ exports[`image > 42 > avatar 1`] = `"https://cdn.jsdelivr.net/gh/faker-js/assets exports[`image > 42 > avatarGitHub 1`] = `"https://avatars.githubusercontent.com/u/37454012"`; -exports[`image > 42 > avatarLegacy 1`] = `"https://cloudflare-ipfs.com/ipfs/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye/avatar/468.jpg"`; - exports[`image > 42 > dataUri > noArgs 1`] = `"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgYmFzZVByb2ZpbGU9ImZ1bGwiIHdpZHRoPSIxNDk4IiBoZWlnaHQ9IjM4MDIiPjxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9IiNhZDMzMWQiLz48dGV4dCB4PSI3NDkiIHk9IjE5MDEiIGZvbnQtc2l6ZT0iMjAiIGFsaWdubWVudC1iYXNlbGluZT0ibWlkZGxlIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSJ3aGl0ZSI+MTQ5OHgzODAyPC90ZXh0Pjwvc3ZnPg=="`; exports[`image > 42 > dataUri > with all options+base64 1`] = `"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgYmFzZVByb2ZpbGU9ImZ1bGwiIHdpZHRoPSIyIiBoZWlnaHQ9IjEzMzciPjxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9IiM2NDMyMTgiLz48dGV4dCB4PSIxIiB5PSI2NjguNSIgZm9udC1zaXplPSIyMCIgYWxpZ25tZW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IndoaXRlIj4yeDEzMzc8L3RleHQ+PC9zdmc+"`; @@ -30,13 +28,13 @@ exports[`image > 42 > personPortrait > with sex and size 1`] = `"https://cdn.jsd exports[`image > 42 > personPortrait > with size 1`] = `"https://cdn.jsdelivr.net/gh/faker-js/assets-person-portrait/female/128/95.jpg"`; -exports[`image > 42 > url > noArgs 1`] = `"https://picsum.photos/seed/993RBH1Y/1498/3802"`; +exports[`image > 42 > url > noArgs 1`] = `"https://picsum.photos/seed/B993RBH1Y/1498/3802"`; -exports[`image > 42 > url > with height 1`] = `"https://picsum.photos/seed/B993RBH1Y/1498/128"`; +exports[`image > 42 > url > with height 1`] = `"https://picsum.photos/seed/JB993RBH1Y/1498/128"`; -exports[`image > 42 > url > with width 1`] = `"https://picsum.photos/seed/B993RBH1Y/128/1498"`; +exports[`image > 42 > url > with width 1`] = `"https://picsum.photos/seed/JB993RBH1Y/128/1498"`; -exports[`image > 42 > url > with width and height 1`] = `"https://loremflickr.com/128/128?lock=8563273192166996"`; +exports[`image > 42 > url > with width and height 1`] = `"https://picsum.photos/seed/WJB993R/128/128"`; exports[`image > 42 > urlLoremFlickr > noArgs 1`] = `"https://loremflickr.com/1498/3802?lock=6593215287158609"`; @@ -64,32 +62,10 @@ exports[`image > 42 > urlPicsumPhotos > with width 1`] = `"https://picsum.photos exports[`image > 42 > urlPicsumPhotos > with width and height 1`] = `"https://picsum.photos/seed/B993RBH1Y/128/128?grayscale&blur=10"`; -exports[`image > 42 > urlPlaceholder > noArgs 1`] = `"https://via.placeholder.com/1311x3328/ad331d/df0fc4.gif?text=auctus%20cognomen%20esse"`; - -exports[`image > 42 > urlPlaceholder > with all options 1`] = `"https://via.placeholder.com/128x128/FF0000/0000FF.png?text=hello"`; - -exports[`image > 42 > urlPlaceholder > with backgroundColor 1`] = `"https://via.placeholder.com/1311x3328/FF0000/ad331d.png?text=suggero%20accusator%20volubilis"`; - -exports[`image > 42 > urlPlaceholder > with empty colors and text 1`] = `"https://via.placeholder.com/128x128//.png?text="`; - -exports[`image > 42 > urlPlaceholder > with format 1`] = `"https://via.placeholder.com/1311x3328/ad331d/df0fc4.webp?text=attonbitus%20auctus%20cognomen"`; - -exports[`image > 42 > urlPlaceholder > with height 1`] = `"https://via.placeholder.com/1311x128/ead331/ddf0fc.jpeg?text=attonbitus%20auctus%20cognomen"`; - -exports[`image > 42 > urlPlaceholder > with text 1`] = `"https://via.placeholder.com/1311x3328/ad331d/df0fc4.gif?text=Hello"`; - -exports[`image > 42 > urlPlaceholder > with textColor 1`] = `"https://via.placeholder.com/1311x3328/ad331d/0000FF.png?text=suggero%20accusator%20volubilis"`; - -exports[`image > 42 > urlPlaceholder > with width 1`] = `"https://via.placeholder.com/128x1311/ead331/ddf0fc.jpeg?text=attonbitus%20auctus%20cognomen"`; - -exports[`image > 42 > urlPlaceholder > with width and height 1`] = `"https://via.placeholder.com/128x128/8ead33/1ddf0f.webp?text=benevolentia%20attonbitus%20auctus"`; - exports[`image > 1211 > avatar 1`] = `"https://avatars.githubusercontent.com/u/89347165"`; exports[`image > 1211 > avatarGitHub 1`] = `"https://avatars.githubusercontent.com/u/92852016"`; -exports[`image > 1211 > avatarLegacy 1`] = `"https://cloudflare-ipfs.com/ipfs/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye/avatar/1160.jpg"`; - exports[`image > 1211 > dataUri > noArgs 1`] = `"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgYmFzZVByb2ZpbGU9ImZ1bGwiIHdpZHRoPSIzNzE0IiBoZWlnaHQ9IjM1NzMiPjxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9IiM0ZmVmYTciLz48dGV4dCB4PSIxODU3IiB5PSIxNzg2LjUiIGZvbnQtc2l6ZT0iMjAiIGFsaWdubWVudC1iYXNlbGluZT0ibWlkZGxlIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSJ3aGl0ZSI+MzcxNHgzNTczPC90ZXh0Pjwvc3ZnPg=="`; exports[`image > 1211 > dataUri > with all options+base64 1`] = `"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgYmFzZVByb2ZpbGU9ImZ1bGwiIHdpZHRoPSIyIiBoZWlnaHQ9IjEzMzciPjxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9IiM2NDMyMTgiLz48dGV4dCB4PSIxIiB5PSI2NjguNSIgZm9udC1zaXplPSIyMCIgYWxpZ25tZW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IndoaXRlIj4yeDEzMzc8L3RleHQ+PC9zdmc+"`; @@ -114,13 +90,13 @@ exports[`image > 1211 > personPortrait > with sex and size 1`] = `"https://cdn.j exports[`image > 1211 > personPortrait > with size 1`] = `"https://cdn.jsdelivr.net/gh/faker-js/assets-person-portrait/male/128/89.jpg"`; -exports[`image > 1211 > url > noArgs 1`] = `"https://loremflickr.com/3714/3573?lock=8982492793493979"`; +exports[`image > 1211 > url > noArgs 1`] = `"https://picsum.photos/seed/ZFGLlH/3714/3573"`; -exports[`image > 1211 > url > with height 1`] = `"https://picsum.photos/seed/ZFGLlH/3714/128"`; +exports[`image > 1211 > url > with height 1`] = `"https://picsum.photos/seed/dZFGLlHOLE/3714/128"`; -exports[`image > 1211 > url > with width 1`] = `"https://picsum.photos/seed/ZFGLlH/128/3714"`; +exports[`image > 1211 > url > with width 1`] = `"https://picsum.photos/seed/dZFGLlHOLE/128/3714"`; -exports[`image > 1211 > url > with width and height 1`] = `"https://picsum.photos/seed/dZFGLlHOLE/128/128"`; +exports[`image > 1211 > url > with width and height 1`] = `"https://picsum.photos/seed/TdZFGLlHOL/128/128"`; exports[`image > 1211 > urlLoremFlickr > noArgs 1`] = `"https://loremflickr.com/3714/3573?lock=2031760796090808"`; @@ -148,32 +124,10 @@ exports[`image > 1211 > urlPicsumPhotos > with width 1`] = `"https://picsum.phot exports[`image > 1211 > urlPicsumPhotos > with width and height 1`] = `"https://picsum.photos/seed/ZFGLlH/128/128?blur=9"`; -exports[`image > 1211 > urlPlaceholder > noArgs 1`] = `"https://via.placeholder.com/3250x3128/4fefa7/fbaec9.webp?text=unde%20blanditiis%20officia"`; - -exports[`image > 1211 > urlPlaceholder > with all options 1`] = `"https://via.placeholder.com/128x128/FF0000/0000FF.png?text=hello"`; - -exports[`image > 1211 > urlPlaceholder > with backgroundColor 1`] = `"https://via.placeholder.com/3250x3128/FF0000/4fefa7.png?text=tonsor%20tenuis%20sollers"`; - -exports[`image > 1211 > urlPlaceholder > with empty colors and text 1`] = `"https://via.placeholder.com/128x128//.png?text="`; - -exports[`image > 1211 > urlPlaceholder > with format 1`] = `"https://via.placeholder.com/3250x3128/4fefa7/fbaec9.webp?text=usque%20unde%20blanditiis"`; - -exports[`image > 1211 > urlPlaceholder > with height 1`] = `"https://via.placeholder.com/3250x128/d4fefa/7fbaec.jpg?text=usque%20unde%20blanditiis"`; - -exports[`image > 1211 > urlPlaceholder > with text 1`] = `"https://via.placeholder.com/3250x3128/4fefa7/fbaec9.webp?text=Hello"`; - -exports[`image > 1211 > urlPlaceholder > with textColor 1`] = `"https://via.placeholder.com/3250x3128/4fefa7/0000FF.png?text=tonsor%20tenuis%20sollers"`; - -exports[`image > 1211 > urlPlaceholder > with width 1`] = `"https://via.placeholder.com/128x3250/d4fefa/7fbaec.jpg?text=usque%20unde%20blanditiis"`; - -exports[`image > 1211 > urlPlaceholder > with width and height 1`] = `"https://via.placeholder.com/128x128/ed4fef/a7fbae.webp?text=dapifer%20usque%20unde"`; - exports[`image > 1337 > avatar 1`] = `"https://cdn.jsdelivr.net/gh/faker-js/assets-person-portrait/female/512/27.jpg"`; exports[`image > 1337 > avatarGitHub 1`] = `"https://avatars.githubusercontent.com/u/26202467"`; -exports[`image > 1337 > avatarLegacy 1`] = `"https://cloudflare-ipfs.com/ipfs/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye/avatar/327.jpg"`; - exports[`image > 1337 > dataUri > noArgs 1`] = `"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgYmFzZVByb2ZpbGU9ImZ1bGwiIHdpZHRoPSIxMDQ4IiBoZWlnaHQ9IjYzNSI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iIzZhN2I1ZiIvPjx0ZXh0IHg9IjUyNCIgeT0iMzE3LjUiIGZvbnQtc2l6ZT0iMjAiIGFsaWdubWVudC1iYXNlbGluZT0ibWlkZGxlIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSJ3aGl0ZSI+MTA0OHg2MzU8L3RleHQ+PC9zdmc+"`; exports[`image > 1337 > dataUri > with all options+base64 1`] = `"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgYmFzZVByb2ZpbGU9ImZ1bGwiIHdpZHRoPSIyIiBoZWlnaHQ9IjEzMzciPjxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9IiM2NDMyMTgiLz48dGV4dCB4PSIxIiB5PSI2NjguNSIgZm9udC1zaXplPSIyMCIgYWxpZ25tZW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IndoaXRlIj4yeDEzMzc8L3RleHQ+PC9zdmc+"`; @@ -198,13 +152,13 @@ exports[`image > 1337 > personPortrait > with sex and size 1`] = `"https://cdn.j exports[`image > 1337 > personPortrait > with size 1`] = `"https://cdn.jsdelivr.net/gh/faker-js/assets-person-portrait/female/128/15.jpg"`; -exports[`image > 1337 > url > noArgs 1`] = `"https://loremflickr.com/1048/635?lock=4137158724208997"`; +exports[`image > 1337 > url > noArgs 1`] = `"https://picsum.photos/seed/sjwgYJ/1048/635"`; -exports[`image > 1337 > url > with height 1`] = `"https://loremflickr.com/1048/128?lock=2505140979113303"`; +exports[`image > 1337 > url > with height 1`] = `"https://picsum.photos/seed/hsjwg/1048/128"`; -exports[`image > 1337 > url > with width 1`] = `"https://loremflickr.com/128/1048?lock=2505140979113303"`; +exports[`image > 1337 > url > with width 1`] = `"https://picsum.photos/seed/hsjwg/128/1048"`; -exports[`image > 1337 > url > with width and height 1`] = `"https://loremflickr.com/128/128?lock=1429298155729043"`; +exports[`image > 1337 > url > with width and height 1`] = `"https://picsum.photos/seed/9hsjwg/128/128"`; exports[`image > 1337 > urlLoremFlickr > noArgs 1`] = `"https://loremflickr.com/1048/635?lock=2505140979113303"`; @@ -231,23 +185,3 @@ exports[`image > 1337 > urlPicsumPhotos > with height 1`] = `"https://picsum.pho exports[`image > 1337 > urlPicsumPhotos > with width 1`] = `"https://picsum.photos/seed/jwgYJ7n/128/1048?grayscale&blur=3"`; exports[`image > 1337 > urlPicsumPhotos > with width and height 1`] = `"https://picsum.photos/seed/sjwgYJ/128/128?grayscale&blur=1"`; - -exports[`image > 1337 > urlPlaceholder > noArgs 1`] = `"https://via.placeholder.com/918x556/6a7b5f/a28d2f.jpg?text=testimonium%20thalassinus%20contra"`; - -exports[`image > 1337 > urlPlaceholder > with all options 1`] = `"https://via.placeholder.com/128x128/FF0000/0000FF.png?text=hello"`; - -exports[`image > 1337 > urlPlaceholder > with backgroundColor 1`] = `"https://via.placeholder.com/918x556/FF0000/6a7b5f.png?text=ancilla%20creptio%20quisquam"`; - -exports[`image > 1337 > urlPlaceholder > with empty colors and text 1`] = `"https://via.placeholder.com/128x128//.png?text="`; - -exports[`image > 1337 > urlPlaceholder > with format 1`] = `"https://via.placeholder.com/918x556/6a7b5f/a28d2f.webp?text=decipio%20testimonium%20thalassinus"`; - -exports[`image > 1337 > urlPlaceholder > with height 1`] = `"https://via.placeholder.com/918x128/36a7b5/fa28d2.webp?text=decipio%20testimonium%20thalassinus"`; - -exports[`image > 1337 > urlPlaceholder > with text 1`] = `"https://via.placeholder.com/918x556/6a7b5f/a28d2f.jpg?text=Hello"`; - -exports[`image > 1337 > urlPlaceholder > with textColor 1`] = `"https://via.placeholder.com/918x556/6a7b5f/0000FF.png?text=ancilla%20creptio%20quisquam"`; - -exports[`image > 1337 > urlPlaceholder > with width 1`] = `"https://via.placeholder.com/128x918/36a7b5/fa28d2.webp?text=decipio%20testimonium%20thalassinus"`; - -exports[`image > 1337 > urlPlaceholder > with width and height 1`] = `"https://via.placeholder.com/128x128/536a7b/5fa28d.gif?text=vorago%20decipio%20testimonium"`; diff --git a/test/modules/__snapshots__/internet.spec.ts.snap b/test/modules/__snapshots__/internet.spec.ts.snap index 3389a20ee62..611d6851735 100644 --- a/test/modules/__snapshots__/internet.spec.ts.snap +++ b/test/modules/__snapshots__/internet.spec.ts.snap @@ -1,16 +1,6 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`internet > 42 > color > noArgs 1`] = `"#307a5e"`; - -exports[`internet > 42 > color > with all options 1`] = `"#62ac90"`; - -exports[`internet > 42 > color > with blueBase option 1`] = `"#307a90"`; - -exports[`internet > 42 > color > with greenBase option 1`] = `"#30ac5e"`; - -exports[`internet > 42 > color > with redBase option 1`] = `"#627a5e"`; - -exports[`internet > 42 > displayName > noArgs 1`] = `"Garnet15"`; +exports[`internet > 42 > displayName > noArgs 1`] = `"Moses.Crist"`; exports[`internet > 42 > displayName > with Chinese names 1`] = `"大羽.陳95"`; @@ -22,9 +12,9 @@ exports[`internet > 42 > displayName > with accented names 1`] = `"Hélene.Müll exports[`internet > 42 > displayName > with all option 1`] = `"Jane.Doe95"`; -exports[`internet > 42 > displayName > with firstName option 1`] = `"Jane59"`; +exports[`internet > 42 > displayName > with firstName option 1`] = `"Jane15"`; -exports[`internet > 42 > displayName > with lastName option 1`] = `"Garnet_Doe"`; +exports[`internet > 42 > displayName > with lastName option 1`] = `"Moses15"`; exports[`internet > 42 > domainName 1`] = `"hospitable-unit.net"`; @@ -32,31 +22,31 @@ exports[`internet > 42 > domainSuffix 1`] = `"info"`; exports[`internet > 42 > domainWord 1`] = `"hospitable-unit"`; -exports[`internet > 42 > email > noArgs 1`] = `"Valentine.Miller15@yahoo.com"`; +exports[`internet > 42 > email > noArgs 1`] = `"Lavinia60@hotmail.com"`; exports[`internet > 42 > email > with all options 1`] = `"Jane.Doe@fakerjs.dev"`; -exports[`internet > 42 > email > with allowSpecialCharacters option 1`] = `"Valentine.Miller15@yahoo.com"`; +exports[`internet > 42 > email > with allowSpecialCharacters option 1`] = `"Lavinia60@hotmail.com"`; -exports[`internet > 42 > email > with firstName option 1`] = `"Jane.Reynolds-Miller15@yahoo.com"`; +exports[`internet > 42 > email > with firstName option 1`] = `"Jane.Miller15@hotmail.com"`; -exports[`internet > 42 > email > with lastName option 1`] = `"Valentine_Doe59@yahoo.com"`; +exports[`internet > 42 > email > with lastName option 1`] = `"Lavinia.Doe15@hotmail.com"`; -exports[`internet > 42 > email > with provider option 1`] = `"Garnet.Reynolds-Miller15@fakerjs.dev"`; +exports[`internet > 42 > email > with provider option 1`] = `"Moses.Crist@fakerjs.dev"`; -exports[`internet > 42 > emoji > noArgs 1`] = `"🌾"`; +exports[`internet > 42 > emoji > noArgs 1`] = `"🦮"`; -exports[`internet > 42 > emoji > with options 1`] = `"🦔"`; +exports[`internet > 42 > emoji > with options 1`] = `"🐟"`; -exports[`internet > 42 > exampleEmail > noArgs 1`] = `"Valentine.Miller15@example.com"`; +exports[`internet > 42 > exampleEmail > noArgs 1`] = `"Lavinia60@example.net"`; -exports[`internet > 42 > exampleEmail > with all options 1`] = `"Jane_Doe@example.com"`; +exports[`internet > 42 > exampleEmail > with all options 1`] = `"Jane_Doe@example.net"`; -exports[`internet > 42 > exampleEmail > with allowSpecialCharacters option 1`] = `"Valentine.Miller15@example.com"`; +exports[`internet > 42 > exampleEmail > with allowSpecialCharacters option 1`] = `"Lavinia60@example.net"`; -exports[`internet > 42 > exampleEmail > with firstName option 1`] = `"Jane.Reynolds-Miller15@example.com"`; +exports[`internet > 42 > exampleEmail > with firstName option 1`] = `"Jane.Miller15@example.net"`; -exports[`internet > 42 > exampleEmail > with lastName option 1`] = `"Valentine_Doe59@example.com"`; +exports[`internet > 42 > exampleEmail > with lastName option 1`] = `"Lavinia.Doe15@example.net"`; exports[`internet > 42 > httpMethod 1`] = `"POST"`; @@ -80,7 +70,7 @@ exports[`internet > 42 > jwt > with custom header 1`] = `"eyJhbGciOiJFUzI1NiJ9.e exports[`internet > 42 > jwt > with custom payload 1`] = `"eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJpc3MiOiJBY21lIn0.JB993RBH1YPdbbiwqiB8imsMcvA2Ba4WXOi6Gr7u2UgFjwxbYMWTBV5c2kogPmhx"`; -exports[`internet > 42 > jwtAlgorithm 1`] = `"RS384"`; +exports[`internet > 42 > jwtAlgorithm 1`] = `"HS384"`; exports[`internet > 42 > mac > noArgs 1`] = `"5f:b9:22:0d:9b:0f"`; @@ -112,23 +102,7 @@ exports[`internet > 42 > url > without slash appended and with http protocol 1`] exports[`internet > 42 > userAgent 1`] = `"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:131.0) Gecko/20100101 Firefox/118.0"`; -exports[`internet > 42 > userName > noArgs 1`] = `"Garnet.Reynolds-Miller15"`; - -exports[`internet > 42 > userName > with Chinese names 1`] = `"hlzp8d.tpv"`; - -exports[`internet > 42 > userName > with Cyrillic names 1`] = `"Fedor.Dostoevskii"`; - -exports[`internet > 42 > userName > with Latin names 1`] = `"Jane.Doe"`; - -exports[`internet > 42 > userName > with accented names 1`] = `"Helene.Muller"`; - -exports[`internet > 42 > userName > with all option 1`] = `"Jane.Doe"`; - -exports[`internet > 42 > userName > with firstName option 1`] = `"Jane_Wiegand59"`; - -exports[`internet > 42 > userName > with lastName option 1`] = `"Garnet_Doe"`; - -exports[`internet > 42 > username > noArgs 1`] = `"Garnet.Reynolds-Miller15"`; +exports[`internet > 42 > username > noArgs 1`] = `"Moses.Crist"`; exports[`internet > 42 > username > with Chinese names 1`] = `"hlzp8d.tpv"`; @@ -140,21 +114,11 @@ exports[`internet > 42 > username > with accented names 1`] = `"Helene.Muller"`; exports[`internet > 42 > username > with all option 1`] = `"Jane.Doe"`; -exports[`internet > 42 > username > with firstName option 1`] = `"Jane_Wiegand59"`; - -exports[`internet > 42 > username > with lastName option 1`] = `"Garnet_Doe"`; - -exports[`internet > 1211 > color > noArgs 1`] = `"#77721c"`; +exports[`internet > 42 > username > with firstName option 1`] = `"Jane.Reynolds-Miller15"`; -exports[`internet > 1211 > color > with all options 1`] = `"#a9a44e"`; +exports[`internet > 42 > username > with lastName option 1`] = `"Moses_Doe15"`; -exports[`internet > 1211 > color > with blueBase option 1`] = `"#77724e"`; - -exports[`internet > 1211 > color > with greenBase option 1`] = `"#77a41c"`; - -exports[`internet > 1211 > color > with redBase option 1`] = `"#a9721c"`; - -exports[`internet > 1211 > displayName > noArgs 1`] = `"Tito_Fahey67"`; +exports[`internet > 1211 > displayName > noArgs 1`] = `"Dane_Paucek35"`; exports[`internet > 1211 > displayName > with Chinese names 1`] = `"大羽89"`; @@ -166,41 +130,41 @@ exports[`internet > 1211 > displayName > with accented names 1`] = `"Hélene89"` exports[`internet > 1211 > displayName > with all option 1`] = `"Jane89"`; -exports[`internet > 1211 > displayName > with firstName option 1`] = `"Jane.Trantow99"`; +exports[`internet > 1211 > displayName > with firstName option 1`] = `"Jane_Fahey67"`; -exports[`internet > 1211 > displayName > with lastName option 1`] = `"Tito_Doe22"`; +exports[`internet > 1211 > displayName > with lastName option 1`] = `"Dane_Doe67"`; -exports[`internet > 1211 > domainName 1`] = `"velvety-tarragon.biz"`; +exports[`internet > 1211 > domainName 1`] = `"velvety-tarragon.com"`; exports[`internet > 1211 > domainSuffix 1`] = `"org"`; exports[`internet > 1211 > domainWord 1`] = `"velvety-tarragon"`; -exports[`internet > 1211 > email > noArgs 1`] = `"Skye68@hotmail.com"`; +exports[`internet > 1211 > email > noArgs 1`] = `"Woodrow69@yahoo.com"`; exports[`internet > 1211 > email > with all options 1`] = `"Jane_Doe89@fakerjs.dev"`; -exports[`internet > 1211 > email > with allowSpecialCharacters option 1`] = `"Skye68@hotmail.com"`; +exports[`internet > 1211 > email > with allowSpecialCharacters option 1`] = `"Woodrow69@yahoo.com"`; -exports[`internet > 1211 > email > with firstName option 1`] = `"Jane67@hotmail.com"`; +exports[`internet > 1211 > email > with firstName option 1`] = `"Jane68@yahoo.com"`; -exports[`internet > 1211 > email > with lastName option 1`] = `"Skye.Doe@hotmail.com"`; +exports[`internet > 1211 > email > with lastName option 1`] = `"Woodrow_Doe@yahoo.com"`; -exports[`internet > 1211 > email > with provider option 1`] = `"Tito67@fakerjs.dev"`; +exports[`internet > 1211 > email > with provider option 1`] = `"Dane35@fakerjs.dev"`; -exports[`internet > 1211 > emoji > noArgs 1`] = `"🇹🇳"`; +exports[`internet > 1211 > emoji > noArgs 1`] = `"🇺🇬"`; -exports[`internet > 1211 > emoji > with options 1`] = `"🌲"`; +exports[`internet > 1211 > emoji > with options 1`] = `"🦩"`; -exports[`internet > 1211 > exampleEmail > noArgs 1`] = `"Skye68@example.net"`; +exports[`internet > 1211 > exampleEmail > noArgs 1`] = `"Woodrow69@example.org"`; -exports[`internet > 1211 > exampleEmail > with all options 1`] = `"Jane_Doe@example.net"`; +exports[`internet > 1211 > exampleEmail > with all options 1`] = `"Jane_Doe@example.org"`; -exports[`internet > 1211 > exampleEmail > with allowSpecialCharacters option 1`] = `"Skye68@example.net"`; +exports[`internet > 1211 > exampleEmail > with allowSpecialCharacters option 1`] = `"Woodrow69@example.org"`; -exports[`internet > 1211 > exampleEmail > with firstName option 1`] = `"Jane67@example.net"`; +exports[`internet > 1211 > exampleEmail > with firstName option 1`] = `"Jane68@example.org"`; -exports[`internet > 1211 > exampleEmail > with lastName option 1`] = `"Skye.Doe@example.net"`; +exports[`internet > 1211 > exampleEmail > with lastName option 1`] = `"Woodrow_Doe@example.org"`; exports[`internet > 1211 > httpMethod 1`] = `"PATCH"`; @@ -218,11 +182,11 @@ exports[`internet > 1211 > ipv4 > with network 1`] = `"238.219.55.242"`; exports[`internet > 1211 > ipv6 1`] = `"ed4f:efa7:fbae:c9dc:4c48:fa8e:bf46:fb7c"`; -exports[`internet > 1211 > jwt > noArgs 1`] = `"eyJhbGciOiJQUzUxMiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1Nzc4MzA2MjMsImV4cCI6MTU3Nzg1MDExMywibmJmIjoxNjA5MTk5Nzk2LCJpc3MiOiJQYXVjZWssIFJ1bm9sZnNkb3R0aXIgYW5kIEhlcm1hbm4iLCJzdWIiOiJiZGNhZDZkZC0zOTM1LTRmYzYtOGU4Zi0zNGI4NWQ2NDQyOGIiLCJhdWQiOiJiNzM2M2Q5Ny0wYjJiLTQ0YzgtYjczOS1kMWQ3Njc5YzhlZmQiLCJqdGkiOiIzYmQ1ZTA4Yy03MTQyLTQ0M2UtYWY2My05OTk5ZGFkY2RlODUifQ.rlPcW5f2VqUAXZlCKU8wGJfPV9H4qDj1eeVBExFATrtOy1ztr5Cp9avVZNMtsWSD"`; +exports[`internet > 1211 > jwt > noArgs 1`] = `"eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1Nzc4MzA2MjMsImV4cCI6MTU3Nzg1MDExMywibmJmIjoxNjA5MTk5Nzk2LCJpc3MiOiJQYXVjZWssIFJ1bm9sZnNkb3R0aXIgYW5kIEhlcm1hbm4iLCJzdWIiOiJiZGNhZDZkZC0zOTM1LTRmYzYtOGU4Zi0zNGI4NWQ2NDQyOGIiLCJhdWQiOiJiNzM2M2Q5Ny0wYjJiLTQ0YzgtYjczOS1kMWQ3Njc5YzhlZmQiLCJqdGkiOiIzYmQ1ZTA4Yy03MTQyLTQ0M2UtYWY2My05OTk5ZGFkY2RlODUifQ.rlPcW5f2VqUAXZlCKU8wGJfPV9H4qDj1eeVBExFATrtOy1ztr5Cp9avVZNMtsWSD"`; exports[`internet > 1211 > jwt > with custom header 1`] = `"eyJhbGciOiJFUzI1NiJ9.eyJpYXQiOjE1Nzc4MzA2MjMsImV4cCI6MTU3NzkwNzgxOSwibmJmIjoxNTYwNTI3OTk5LCJpc3MiOiJPc2luc2tpLCBQYXVjZWsgYW5kIFJ1bm9sZnNkb3R0aXIiLCJzdWIiOiI1YmRjYWQ2ZC1kMzkzLTQ1ZmMtYTZlOC1mMzRiODVkNjQ0MjgiLCJhdWQiOiIyYjczNjNkOS03MGIyLTRiNGMtYjg3My05ZDFkNzY3OWM4ZWYiLCJqdGkiOiJkM2JkNWUwOC1jNzE0LTQyNDMtOWVmNi0zOTk5OWRhZGNkZTgifQ.xrlPcW5f2VqUAXZlCKU8wGJfPV9H4qDj1eeVBExFATrtOy1ztr5Cp9avVZNMtsWS"`; -exports[`internet > 1211 > jwt > with custom payload 1`] = `"eyJhbGciOiJQUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJBY21lIn0.dZFGLlHOLEPqRRdAcmZLoWxYdiHwlQngjayH8HufpcQzt2HbHhMvsdBS6QsntzOx"`; +exports[`internet > 1211 > jwt > with custom payload 1`] = `"eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJBY21lIn0.dZFGLlHOLEPqRRdAcmZLoWxYdiHwlQngjayH8HufpcQzt2HbHhMvsdBS6QsntzOx"`; exports[`internet > 1211 > jwtAlgorithm 1`] = `"none"`; @@ -250,29 +214,13 @@ exports[`internet > 1211 > protocol 1`] = `"https"`; exports[`internet > 1211 > url > noArgs 1`] = `"https://unknown-decongestant.org"`; -exports[`internet > 1211 > url > with slash appended 1`] = `"https://velvety-tarragon.biz/"`; - -exports[`internet > 1211 > url > without slash appended and with http protocol 1`] = `"http://velvety-tarragon.biz"`; - -exports[`internet > 1211 > userAgent 1`] = `"Mozilla/5.0 (Linux; Android 13; SM-G998B) AppleWebKit/605.67 (KHTML, like Gecko) Chrome/107.7.7.14 Mobile Safari/592.76"`; +exports[`internet > 1211 > url > with slash appended 1`] = `"https://velvety-tarragon.com/"`; -exports[`internet > 1211 > userName > noArgs 1`] = `"Tito67"`; +exports[`internet > 1211 > url > without slash appended and with http protocol 1`] = `"http://velvety-tarragon.com"`; -exports[`internet > 1211 > userName > with Chinese names 1`] = `"hlzp8d_tpv89"`; +exports[`internet > 1211 > userAgent 1`] = `"Mozilla/5.0 (iPhone; CPU iPhone OS 18_1 like Mac OS X) AppleWebKit/605.67.68 (KHTML, like Gecko) Version/16_1 Mobile/15E148 Safari/584.81"`; -exports[`internet > 1211 > userName > with Cyrillic names 1`] = `"Fedor_Dostoevskii89"`; - -exports[`internet > 1211 > userName > with Latin names 1`] = `"Jane_Doe89"`; - -exports[`internet > 1211 > userName > with accented names 1`] = `"Helene_Muller89"`; - -exports[`internet > 1211 > userName > with all option 1`] = `"Jane_Doe89"`; - -exports[`internet > 1211 > userName > with firstName option 1`] = `"Jane99"`; - -exports[`internet > 1211 > userName > with lastName option 1`] = `"Tito_Doe"`; - -exports[`internet > 1211 > username > noArgs 1`] = `"Tito67"`; +exports[`internet > 1211 > username > noArgs 1`] = `"Dane35"`; exports[`internet > 1211 > username > with Chinese names 1`] = `"hlzp8d_tpv89"`; @@ -284,21 +232,11 @@ exports[`internet > 1211 > username > with accented names 1`] = `"Helene_Muller8 exports[`internet > 1211 > username > with all option 1`] = `"Jane_Doe89"`; -exports[`internet > 1211 > username > with firstName option 1`] = `"Jane99"`; - -exports[`internet > 1211 > username > with lastName option 1`] = `"Tito_Doe"`; - -exports[`internet > 1337 > color > noArgs 1`] = `"#211423"`; - -exports[`internet > 1337 > color > with all options 1`] = `"#534655"`; - -exports[`internet > 1337 > color > with blueBase option 1`] = `"#211455"`; +exports[`internet > 1211 > username > with firstName option 1`] = `"Jane67"`; -exports[`internet > 1337 > color > with greenBase option 1`] = `"#214623"`; +exports[`internet > 1211 > username > with lastName option 1`] = `"Dane_Doe"`; -exports[`internet > 1337 > color > with redBase option 1`] = `"#531423"`; - -exports[`internet > 1337 > displayName > noArgs 1`] = `"Devyn.Gottlieb"`; +exports[`internet > 1337 > displayName > noArgs 1`] = `"Emma.Leannon97"`; exports[`internet > 1337 > displayName > with Chinese names 1`] = `"大羽15"`; @@ -310,41 +248,41 @@ exports[`internet > 1337 > displayName > with accented names 1`] = `"Hélene15"` exports[`internet > 1337 > displayName > with all option 1`] = `"Jane15"`; -exports[`internet > 1337 > displayName > with firstName option 1`] = `"Jane45"`; +exports[`internet > 1337 > displayName > with firstName option 1`] = `"Jane.Gottlieb"`; -exports[`internet > 1337 > displayName > with lastName option 1`] = `"Devyn.Doe"`; +exports[`internet > 1337 > displayName > with lastName option 1`] = `"Emma.Doe"`; -exports[`internet > 1337 > domainName 1`] = `"fatal-co-producer.biz"`; +exports[`internet > 1337 > domainName 1`] = `"fatal-co-producer.com"`; -exports[`internet > 1337 > domainSuffix 1`] = `"biz"`; +exports[`internet > 1337 > domainSuffix 1`] = `"com"`; exports[`internet > 1337 > domainWord 1`] = `"fatal-co-producer"`; -exports[`internet > 1337 > email > noArgs 1`] = `"Carmella.Koelpin51@gmail.com"`; +exports[`internet > 1337 > email > noArgs 1`] = `"Johnnie_Gibson73@gmail.com"`; exports[`internet > 1337 > email > with all options 1`] = `"Jane.Doe15@fakerjs.dev"`; -exports[`internet > 1337 > email > with allowSpecialCharacters option 1`] = `"Carmella.Koelpin51@gmail.com"`; +exports[`internet > 1337 > email > with allowSpecialCharacters option 1`] = `"Johnnie?Gibson73@gmail.com"`; -exports[`internet > 1337 > email > with firstName option 1`] = `"Jane.Gottlieb@gmail.com"`; +exports[`internet > 1337 > email > with firstName option 1`] = `"Jane.Koelpin51@gmail.com"`; -exports[`internet > 1337 > email > with lastName option 1`] = `"Carmella.Doe45@gmail.com"`; +exports[`internet > 1337 > email > with lastName option 1`] = `"Johnnie.Doe51@gmail.com"`; -exports[`internet > 1337 > email > with provider option 1`] = `"Devyn.Gottlieb@fakerjs.dev"`; +exports[`internet > 1337 > email > with provider option 1`] = `"Emma97@fakerjs.dev"`; -exports[`internet > 1337 > emoji > noArgs 1`] = `"🧏🏾‍♂️"`; +exports[`internet > 1337 > emoji > noArgs 1`] = `"👩‍🎤"`; -exports[`internet > 1337 > emoji > with options 1`] = `"🐪"`; +exports[`internet > 1337 > emoji > with options 1`] = `"🐐"`; -exports[`internet > 1337 > exampleEmail > noArgs 1`] = `"Carmella.Koelpin51@example.org"`; +exports[`internet > 1337 > exampleEmail > noArgs 1`] = `"Johnnie_Gibson73@example.com"`; -exports[`internet > 1337 > exampleEmail > with all options 1`] = `"Jane/Doe27@example.org"`; +exports[`internet > 1337 > exampleEmail > with all options 1`] = `"Jane/Doe27@example.com"`; -exports[`internet > 1337 > exampleEmail > with allowSpecialCharacters option 1`] = `"Carmella.Koelpin51@example.org"`; +exports[`internet > 1337 > exampleEmail > with allowSpecialCharacters option 1`] = `"Johnnie?Gibson73@example.com"`; -exports[`internet > 1337 > exampleEmail > with firstName option 1`] = `"Jane.Gottlieb@example.org"`; +exports[`internet > 1337 > exampleEmail > with firstName option 1`] = `"Jane.Koelpin51@example.com"`; -exports[`internet > 1337 > exampleEmail > with lastName option 1`] = `"Carmella.Doe45@example.org"`; +exports[`internet > 1337 > exampleEmail > with lastName option 1`] = `"Johnnie.Doe51@example.com"`; exports[`internet > 1337 > httpMethod 1`] = `"POST"`; @@ -362,13 +300,13 @@ exports[`internet > 1337 > ipv4 > with network 1`] = `"228.49.64.201"`; exports[`internet > 1337 > ipv6 1`] = `"536a:7b5f:a28d:2f9b:b79c:a46e:a394:bc4f"`; -exports[`internet > 1337 > jwt > noArgs 1`] = `"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1Nzc3NzMwMzksImV4cCI6MTU3Nzc5NzA3MCwibmJmIjoxNTc1MjcwODM1LCJpc3MiOiJMZWFubm9uIC0gR2lic29uIiwic3ViIjoiZmIxNmEyZjctY2M1Ni00OWMzLWI0YTctMjYzOGQyZjY4ODBiIiwiYXVkIjoiMjI1YjA1MGMtNWI3Zi00ZDk5LThmNDAtMWZmNzViMGNhM2FlIiwianRpIjoiZTViNDgyNzctNmM3Yi00YzVlLThiZTYtN2VhODNmOGMzNjY4In0.G1eJVCpQZioHm1lu2UIL52g7eGtWAbbkq4D3IE0LkMkzaQgKyTx14Xs9FCyUTgIu"`; +exports[`internet > 1337 > jwt > noArgs 1`] = `"eyJhbGciOiJFUzUxMiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1Nzc3NzMwMzksImV4cCI6MTU3Nzc5NzA3MCwibmJmIjoxNTc1MjcwODM1LCJpc3MiOiJMZWFubm9uIC0gR2lic29uIiwic3ViIjoiZmIxNmEyZjctY2M1Ni00OWMzLWI0YTctMjYzOGQyZjY4ODBiIiwiYXVkIjoiMjI1YjA1MGMtNWI3Zi00ZDk5LThmNDAtMWZmNzViMGNhM2FlIiwianRpIjoiZTViNDgyNzctNmM3Yi00YzVlLThiZTYtN2VhODNmOGMzNjY4In0.G1eJVCpQZioHm1lu2UIL52g7eGtWAbbkq4D3IE0LkMkzaQgKyTx14Xs9FCyUTgIu"`; exports[`internet > 1337 > jwt > with custom header 1`] = `"eyJhbGciOiJFUzI1NiJ9.eyJpYXQiOjE1Nzc3NzMwMzksImV4cCI6MTU3Nzc4Njc1MCwibmJmIjoxNTYzODQyNzk2LCJpc3MiOiJIYW1tZXMgTExDIiwic3ViIjoiNGZiMTZhMmYtN2NjNS00NjljLWEzNGEtNzI2MzhkMmY2ODgwIiwiYXVkIjoiZjIyNWIwNTAtYzViNy00ZmQ5LWI5ZjQtMDFmZjc1YjBjYTNhIiwianRpIjoiMmU1YjQ4MjctNzZjNy00YmM1LWFlYmUtNjdlYTgzZjhjMzY2In0.7G1eJVCpQZioHm1lu2UIL52g7eGtWAbbkq4D3IE0LkMkzaQgKyTx14Xs9FCyUTgI"`; -exports[`internet > 1337 > jwt > with custom payload 1`] = `"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJBY21lIn0.hsjwgYJ7nC7YrMNmpALbhFubpcwPbXqvv0JZa7nG0m3MlHuYPBzZf05WYulI0LFb"`; +exports[`internet > 1337 > jwt > with custom payload 1`] = `"eyJhbGciOiJFUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJBY21lIn0.hsjwgYJ7nC7YrMNmpALbhFubpcwPbXqvv0JZa7nG0m3MlHuYPBzZf05WYulI0LFb"`; -exports[`internet > 1337 > jwtAlgorithm 1`] = `"RS256"`; +exports[`internet > 1337 > jwtAlgorithm 1`] = `"HS256"`; exports[`internet > 1337 > mac > noArgs 1`] = `"42:47:58:4f:b1:6a"`; @@ -394,29 +332,13 @@ exports[`internet > 1337 > protocol 1`] = `"http"`; exports[`internet > 1337 > url > noArgs 1`] = `"https://cumbersome-duster.info/"`; -exports[`internet > 1337 > url > with slash appended 1`] = `"https://fatal-co-producer.biz/"`; - -exports[`internet > 1337 > url > without slash appended and with http protocol 1`] = `"http://fatal-co-producer.biz"`; - -exports[`internet > 1337 > userAgent 1`] = `"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/547.27.45 (KHTML, like Gecko) Version/16.1 Safari/558.51.26"`; - -exports[`internet > 1337 > userName > noArgs 1`] = `"Devyn.Gottlieb"`; - -exports[`internet > 1337 > userName > with Chinese names 1`] = `"hlzp8d.tpv15"`; - -exports[`internet > 1337 > userName > with Cyrillic names 1`] = `"Fedor.Dostoevskii15"`; - -exports[`internet > 1337 > userName > with Latin names 1`] = `"Jane.Doe15"`; - -exports[`internet > 1337 > userName > with accented names 1`] = `"Helene.Muller15"`; - -exports[`internet > 1337 > userName > with all option 1`] = `"Jane.Doe15"`; +exports[`internet > 1337 > url > with slash appended 1`] = `"https://fatal-co-producer.com/"`; -exports[`internet > 1337 > userName > with firstName option 1`] = `"Jane.Cronin45"`; +exports[`internet > 1337 > url > without slash appended and with http protocol 1`] = `"http://fatal-co-producer.com"`; -exports[`internet > 1337 > userName > with lastName option 1`] = `"Devyn.Doe27"`; +exports[`internet > 1337 > userAgent 1`] = `"Mozilla/5.0 (Linux; Android 6; SM-G998B) AppleWebKit/568.32 (KHTML, like Gecko) Chrome/94.2.20.15 Mobile Safari/544.38"`; -exports[`internet > 1337 > username > noArgs 1`] = `"Devyn.Gottlieb"`; +exports[`internet > 1337 > username > noArgs 1`] = `"Emma97"`; exports[`internet > 1337 > username > with Chinese names 1`] = `"hlzp8d.tpv15"`; @@ -428,6 +350,6 @@ exports[`internet > 1337 > username > with accented names 1`] = `"Helene.Muller1 exports[`internet > 1337 > username > with all option 1`] = `"Jane.Doe15"`; -exports[`internet > 1337 > username > with firstName option 1`] = `"Jane.Cronin45"`; +exports[`internet > 1337 > username > with firstName option 1`] = `"Jane.Gottlieb"`; -exports[`internet > 1337 > username > with lastName option 1`] = `"Devyn.Doe27"`; +exports[`internet > 1337 > username > with lastName option 1`] = `"Emma.Doe"`; diff --git a/test/modules/__snapshots__/number.spec.ts.snap b/test/modules/__snapshots__/number.spec.ts.snap index 516abc9ffa8..521fc0566e5 100644 --- a/test/modules/__snapshots__/number.spec.ts.snap +++ b/test/modules/__snapshots__/number.spec.ts.snap @@ -1,6 +1,6 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`number > 42 > bigInt > noArgs 1`] = `397511086709821n`; +exports[`number > 42 > bigInt > noArgs 1`] = `975110867098211n`; exports[`number > 42 > bigInt > with big options 1`] = `19556777749482489605814694n`; @@ -8,6 +8,8 @@ exports[`number > 42 > bigInt > with bigint value 1`] = `25n`; exports[`number > 42 > bigInt > with boolean value 1`] = `1n`; +exports[`number > 42 > bigInt > with multipleOf 1`] = `147890295638632n`; + exports[`number > 42 > bigInt > with number value 1`] = `39n`; exports[`number > 42 > bigInt > with options 1`] = `19n`; @@ -64,7 +66,7 @@ exports[`number > 42 > romanNumeral > with only max 1`] = `"LXII"`; exports[`number > 42 > romanNumeral > with only min 1`] = `"MDI"`; -exports[`number > 1211 > bigInt > noArgs 1`] = `982966736876848n`; +exports[`number > 1211 > bigInt > noArgs 1`] = `829667368768488n`; exports[`number > 1211 > bigInt > with big options 1`] = `25442250580110979794946298n`; @@ -72,6 +74,8 @@ exports[`number > 1211 > bigInt > with bigint value 1`] = `114n`; exports[`number > 1211 > bigInt > with boolean value 1`] = `1n`; +exports[`number > 1211 > bigInt > with multipleOf 1`] = `784113589297853n`; + exports[`number > 1211 > bigInt > with number value 1`] = `12n`; exports[`number > 1211 > bigInt > with options 1`] = `44n`; @@ -128,7 +132,7 @@ exports[`number > 1211 > romanNumeral > with only max 1`] = `"CLIV"`; exports[`number > 1211 > romanNumeral > with only min 1`] = `"MMMDCCXIV"`; -exports[`number > 1337 > bigInt > noArgs 1`] = `212435297136194n`; +exports[`number > 1337 > bigInt > noArgs 1`] = `124352971361947n`; exports[`number > 1337 > bigInt > with big options 1`] = `27379244885156992800029992n`; @@ -136,6 +140,8 @@ exports[`number > 1337 > bigInt > with bigint value 1`] = `88n`; exports[`number > 1337 > bigInt > with boolean value 1`] = `0n`; +exports[`number > 1337 > bigInt > with multipleOf 1`] = `682275118016671n`; + exports[`number > 1337 > bigInt > with number value 1`] = `21n`; exports[`number > 1337 > bigInt > with options 1`] = `58n`; diff --git a/test/modules/__snapshots__/person.spec.ts.snap b/test/modules/__snapshots__/person.spec.ts.snap index 45d89c22d69..0c1fae53639 100644 --- a/test/modules/__snapshots__/person.spec.ts.snap +++ b/test/modules/__snapshots__/person.spec.ts.snap @@ -2,19 +2,19 @@ exports[`person > 42 > bio 1`] = `"traveler, philosopher, model"`; -exports[`person > 42 > firstName > noArgs 1`] = `"Garnet"`; +exports[`person > 42 > firstName > noArgs 1`] = `"Moses"`; -exports[`person > 42 > firstName > with sex 1`] = `"Gerald"`; +exports[`person > 42 > firstName > with sex 1`] = `"Tyrone"`; -exports[`person > 42 > fullName > noArgs 1`] = `"Tracy Miller"`; +exports[`person > 42 > fullName > noArgs 1`] = `"Moses Crist"`; exports[`person > 42 > fullName > with all (sex) 1`] = `"John Doe"`; exports[`person > 42 > fullName > with firstName 1`] = `"John Reynolds-Miller"`; -exports[`person > 42 > fullName > with lastName 1`] = `"Tracy Doe"`; +exports[`person > 42 > fullName > with lastName 1`] = `"Moses Doe"`; -exports[`person > 42 > fullName > with sex 1`] = `"Hilda Reynolds-Miller"`; +exports[`person > 42 > fullName > with sex 1`] = `"Tracy Miller"`; exports[`person > 42 > gender 1`] = `"Gender nonconforming"`; @@ -26,23 +26,27 @@ exports[`person > 42 > jobTitle 1`] = `"National Usability Producer"`; exports[`person > 42 > jobType 1`] = `"Coordinator"`; -exports[`person > 42 > lastName > noArgs 1`] = `"Wiegand"`; +exports[`person > 42 > lastName > noArgs 1`] = `"Reynolds-Miller"`; exports[`person > 42 > lastName > with sex 1`] = `"Wiegand"`; -exports[`person > 42 > middleName > noArgs 1`] = `"Greer"`; +exports[`person > 42 > middleName > noArgs 1`] = `"Quinn"`; -exports[`person > 42 > middleName > with sex 1`] = `"Houston"`; +exports[`person > 42 > middleName > with sex 1`] = `"William"`; -exports[`person > 42 > prefix > noArgs 1`] = `"Miss"`; +exports[`person > 42 > prefix > noArgs 1`] = `"Mrs."`; -exports[`person > 42 > prefix > with sex 1`] = `"Dr."`; +exports[`person > 42 > prefix > with sex 1`] = `"Mr."`; exports[`person > 42 > sex > noArgs 1`] = `"female"`; exports[`person > 42 > sex > with sex 1`] = `"female"`; -exports[`person > 42 > sexType 1`] = `"female"`; +exports[`person > 42 > sexType > noArgs 1`] = `"female"`; + +exports[`person > 42 > sexType > with includeGeneric=false 1`] = `"female"`; + +exports[`person > 42 > sexType > with includeGeneric=true 1`] = `"generic"`; exports[`person > 42 > suffix > noArgs 1`] = `"III"`; @@ -50,21 +54,21 @@ exports[`person > 42 > suffix > with sex 1`] = `"III"`; exports[`person > 42 > zodiacSign 1`] = `"Gemini"`; -exports[`person > 1211 > bio 1`] = `"decongestant supporter, parent 🎲"`; +exports[`person > 1211 > bio 1`] = `"decongestant supporter, parent 🥊"`; -exports[`person > 1211 > firstName > noArgs 1`] = `"Tito"`; +exports[`person > 1211 > firstName > noArgs 1`] = `"Dane"`; -exports[`person > 1211 > firstName > with sex 1`] = `"Todd"`; +exports[`person > 1211 > firstName > with sex 1`] = `"Skye"`; -exports[`person > 1211 > fullName > noArgs 1`] = `"Steve Zieme"`; +exports[`person > 1211 > fullName > noArgs 1`] = `"Dane Osinski-Paucek"`; exports[`person > 1211 > fullName > with all (sex) 1`] = `"John Doe PhD"`; -exports[`person > 1211 > fullName > with firstName 1`] = `"Mr. John Fahey MD"`; +exports[`person > 1211 > fullName > with firstName 1`] = `"Mrs. John Fahey DDS"`; -exports[`person > 1211 > fullName > with lastName 1`] = `"Steve Doe"`; +exports[`person > 1211 > fullName > with lastName 1`] = `"Mrs. Dane Doe DDS"`; -exports[`person > 1211 > fullName > with sex 1`] = `"Mrs. Teri Fahey MD"`; +exports[`person > 1211 > fullName > with sex 1`] = `"Skye Zieme"`; exports[`person > 1211 > gender 1`] = `"Trigender"`; @@ -76,23 +80,27 @@ exports[`person > 1211 > jobTitle 1`] = `"Chief Interactions Manager"`; exports[`person > 1211 > jobType 1`] = `"Representative"`; -exports[`person > 1211 > lastName > noArgs 1`] = `"Trantow"`; +exports[`person > 1211 > lastName > noArgs 1`] = `"Fahey"`; exports[`person > 1211 > lastName > with sex 1`] = `"Trantow"`; -exports[`person > 1211 > middleName > noArgs 1`] = `"Sawyer"`; +exports[`person > 1211 > middleName > noArgs 1`] = `"Cameron"`; -exports[`person > 1211 > middleName > with sex 1`] = `"Walter"`; +exports[`person > 1211 > middleName > with sex 1`] = `"Sage"`; -exports[`person > 1211 > prefix > noArgs 1`] = `"Ms."`; +exports[`person > 1211 > prefix > noArgs 1`] = `"Miss"`; -exports[`person > 1211 > prefix > with sex 1`] = `"Mr."`; +exports[`person > 1211 > prefix > with sex 1`] = `"Ms."`; exports[`person > 1211 > sex > noArgs 1`] = `"male"`; exports[`person > 1211 > sex > with sex 1`] = `"male"`; -exports[`person > 1211 > sexType 1`] = `"male"`; +exports[`person > 1211 > sexType > noArgs 1`] = `"male"`; + +exports[`person > 1211 > sexType > with includeGeneric=false 1`] = `"male"`; + +exports[`person > 1211 > sexType > with includeGeneric=true 1`] = `"male"`; exports[`person > 1211 > suffix > noArgs 1`] = `"DVM"`; @@ -102,19 +110,19 @@ exports[`person > 1211 > zodiacSign 1`] = `"Capricorn"`; exports[`person > 1337 > bio 1`] = `"creator, engineer, friend"`; -exports[`person > 1337 > firstName > noArgs 1`] = `"Devyn"`; +exports[`person > 1337 > firstName > noArgs 1`] = `"Emma"`; -exports[`person > 1337 > firstName > with sex 1`] = `"Douglas"`; +exports[`person > 1337 > firstName > with sex 1`] = `"Christopher"`; -exports[`person > 1337 > fullName > noArgs 1`] = `"Chelsea Koelpin"`; +exports[`person > 1337 > fullName > noArgs 1`] = `"Emma Hammes"`; exports[`person > 1337 > fullName > with all (sex) 1`] = `"John Doe"`; exports[`person > 1337 > fullName > with firstName 1`] = `"John Gottlieb"`; -exports[`person > 1337 > fullName > with lastName 1`] = `"Chelsea Doe"`; +exports[`person > 1337 > fullName > with lastName 1`] = `"Emma Doe"`; -exports[`person > 1337 > fullName > with sex 1`] = `"Elizabeth Gottlieb"`; +exports[`person > 1337 > fullName > with sex 1`] = `"Chelsea Koelpin"`; exports[`person > 1337 > gender 1`] = `"Demigender"`; @@ -126,13 +134,13 @@ exports[`person > 1337 > jobTitle 1`] = `"Future Marketing Engineer"`; exports[`person > 1337 > jobType 1`] = `"Engineer"`; -exports[`person > 1337 > lastName > noArgs 1`] = `"Cronin"`; +exports[`person > 1337 > lastName > noArgs 1`] = `"Gottlieb"`; exports[`person > 1337 > lastName > with sex 1`] = `"Cronin"`; -exports[`person > 1337 > middleName > noArgs 1`] = `"Dakota"`; +exports[`person > 1337 > middleName > noArgs 1`] = `"Dylan"`; -exports[`person > 1337 > middleName > with sex 1`] = `"Ethan"`; +exports[`person > 1337 > middleName > with sex 1`] = `"Christopher"`; exports[`person > 1337 > prefix > noArgs 1`] = `"Miss"`; @@ -142,7 +150,11 @@ exports[`person > 1337 > sex > noArgs 1`] = `"female"`; exports[`person > 1337 > sex > with sex 1`] = `"female"`; -exports[`person > 1337 > sexType 1`] = `"female"`; +exports[`person > 1337 > sexType > noArgs 1`] = `"female"`; + +exports[`person > 1337 > sexType > with includeGeneric=false 1`] = `"female"`; + +exports[`person > 1337 > sexType > with includeGeneric=true 1`] = `"female"`; exports[`person > 1337 > suffix > noArgs 1`] = `"I"`; diff --git a/test/modules/__snapshots__/string.spec.ts.snap b/test/modules/__snapshots__/string.spec.ts.snap index 099c21963ce..8f24c7fa197 100644 --- a/test/modules/__snapshots__/string.spec.ts.snap +++ b/test/modules/__snapshots__/string.spec.ts.snap @@ -170,15 +170,31 @@ exports[`string > 42 > ulid > with number refDate 1`] = `"01EZ2S259ZBYQK441VKP0Z exports[`string > 42 > ulid > with string refDate 1`] = `"01EZ2S259ZBYQK441VKP0ZT655"`; -exports[`string > 42 > uuid 1`] = `"5fb9220d-9b0f-4d32-a248-6492457c3890"`; +exports[`string > 42 > uuid > noArgs 1`] = `"5fb9220d-9b0f-4d32-a248-6492457c3890"`; -exports[`string > 42 > uuid 2`] = `"21ffc41a-7170-4e4a-9488-2fcfe9e13056"`; +exports[`string > 42 > uuid > noArgs 2`] = `"21ffc41a-7170-4e4a-9488-2fcfe9e13056"`; -exports[`string > 42 > uuid 3`] = `"d5482c1f-c30d-4bbc-b151-d95145bae71b"`; +exports[`string > 42 > uuid > noArgs 3`] = `"d5482c1f-c30d-4bbc-b151-d95145bae71b"`; -exports[`string > 42 > uuid 4`] = `"8c786010-a58e-436c-8314-2ecadc2e8ce5"`; +exports[`string > 42 > uuid > noArgs 4`] = `"8c786010-a58e-436c-8314-2ecadc2e8ce5"`; -exports[`string > 42 > uuid 5`] = `"36dd0863-15f5-48b5-bff4-74409804e327"`; +exports[`string > 42 > uuid > noArgs 5`] = `"36dd0863-15f5-48b5-bff4-74409804e327"`; + +exports[`string > 42 > uuid > with version = 4 1`] = `"5fb9220d-9b0f-4d32-a248-6492457c3890"`; + +exports[`string > 42 > uuid > with version = 4 2`] = `"21ffc41a-7170-4e4a-9488-2fcfe9e13056"`; + +exports[`string > 42 > uuid > with version = 4 3`] = `"d5482c1f-c30d-4bbc-b151-d95145bae71b"`; + +exports[`string > 42 > uuid > with version = 4 4`] = `"8c786010-a58e-436c-8314-2ecadc2e8ce5"`; + +exports[`string > 42 > uuid > with version = 4 5`] = `"36dd0863-15f5-48b5-bff4-74409804e327"`; + +exports[`string > 42 > uuid > with version = 7 and Date refDate 1`] = `"01948b54-1b78-75fb-9922-0d9b0fd32248"`; + +exports[`string > 42 > uuid > with version = 7 and number refDate 1`] = `"01948b54-1b78-75fb-9922-0d9b0fd32248"`; + +exports[`string > 42 > uuid > with version = 7 and string refDate 1`] = `"01948b54-1b78-75fb-9922-0d9b0fd32248"`; exports[`string > 1211 > alpha > noArgs 1`] = `"W"`; @@ -350,15 +366,31 @@ exports[`string > 1211 > ulid > with number refDate 1`] = `"01EZ2S259ZXW7ZNNRBPT exports[`string > 1211 > ulid > with string refDate 1`] = `"01EZ2S259ZXW7ZNNRBPTRMTDVV"`; -exports[`string > 1211 > uuid 1`] = `"ee3faac5-bdca-4d6d-9d39-35fc6e8f34b8"`; +exports[`string > 1211 > uuid > noArgs 1`] = `"ee3faac5-bdca-4d6d-9d39-35fc6e8f34b8"`; + +exports[`string > 1211 > uuid > noArgs 2`] = `"d64428b2-b736-43d9-970b-2b4c8739d1d7"`; + +exports[`string > 1211 > uuid > noArgs 3`] = `"79c8efdd-3bd5-4e08-bc71-4243ef639999"`; + +exports[`string > 1211 > uuid > noArgs 4`] = `"adcde858-75d3-4f13-90e6-e9ff59ce28bb"`; + +exports[`string > 1211 > uuid > noArgs 5`] = `"de2b16a5-033e-49a8-8a9e-77d809771962"`; -exports[`string > 1211 > uuid 2`] = `"d64428b2-b736-43d9-970b-2b4c8739d1d7"`; +exports[`string > 1211 > uuid > with version = 4 1`] = `"ee3faac5-bdca-4d6d-9d39-35fc6e8f34b8"`; -exports[`string > 1211 > uuid 3`] = `"79c8efdd-3bd5-4e08-bc71-4243ef639999"`; +exports[`string > 1211 > uuid > with version = 4 2`] = `"d64428b2-b736-43d9-970b-2b4c8739d1d7"`; -exports[`string > 1211 > uuid 4`] = `"adcde858-75d3-4f13-90e6-e9ff59ce28bb"`; +exports[`string > 1211 > uuid > with version = 4 3`] = `"79c8efdd-3bd5-4e08-bc71-4243ef639999"`; -exports[`string > 1211 > uuid 5`] = `"de2b16a5-033e-49a8-8a9e-77d809771962"`; +exports[`string > 1211 > uuid > with version = 4 4`] = `"adcde858-75d3-4f13-90e6-e9ff59ce28bb"`; + +exports[`string > 1211 > uuid > with version = 4 5`] = `"de2b16a5-033e-49a8-8a9e-77d809771962"`; + +exports[`string > 1211 > uuid > with version = 7 and Date refDate 1`] = `"01948b54-1b78-7ee3-8faa-c5bdcad6dd39"`; + +exports[`string > 1211 > uuid > with version = 7 and number refDate 1`] = `"01948b54-1b78-7ee3-8faa-c5bdcad6dd39"`; + +exports[`string > 1211 > uuid > with version = 7 and string refDate 1`] = `"01948b54-1b78-7ee3-8faa-c5bdcad6dd39"`; exports[`string > 1337 > alpha > noArgs 1`] = `"n"`; @@ -530,12 +562,28 @@ exports[`string > 1337 > ulid > with number refDate 1`] = `"01EZ2S259Z858EAG8ZQ3 exports[`string > 1337 > ulid > with string refDate 1`] = `"01EZ2S259Z858EAG8ZQ3CM4ZES"`; -exports[`string > 1337 > uuid 1`] = `"4247584f-b16a-42f7-8cc5-69c34a72638d"`; +exports[`string > 1337 > uuid > noArgs 1`] = `"4247584f-b16a-42f7-8cc5-69c34a72638d"`; + +exports[`string > 1337 > uuid > noArgs 2`] = `"f6880bf2-25b0-450c-a5b7-fd99f401ff75"`; + +exports[`string > 1337 > uuid > noArgs 3`] = `"0ca3ae2e-5b48-4277-b6c7-bc5ebe67ea83"`; + +exports[`string > 1337 > uuid > noArgs 4`] = `"8c36682a-03be-496d-8f46-b50570ebc104"`; + +exports[`string > 1337 > uuid > noArgs 5`] = `"3a7e9225-61a0-4ba0-9c5c-592d4b9e801f"`; + +exports[`string > 1337 > uuid > with version = 4 1`] = `"4247584f-b16a-42f7-8cc5-69c34a72638d"`; + +exports[`string > 1337 > uuid > with version = 4 2`] = `"f6880bf2-25b0-450c-a5b7-fd99f401ff75"`; + +exports[`string > 1337 > uuid > with version = 4 3`] = `"0ca3ae2e-5b48-4277-b6c7-bc5ebe67ea83"`; + +exports[`string > 1337 > uuid > with version = 4 4`] = `"8c36682a-03be-496d-8f46-b50570ebc104"`; -exports[`string > 1337 > uuid 2`] = `"f6880bf2-25b0-450c-a5b7-fd99f401ff75"`; +exports[`string > 1337 > uuid > with version = 4 5`] = `"3a7e9225-61a0-4ba0-9c5c-592d4b9e801f"`; -exports[`string > 1337 > uuid 3`] = `"0ca3ae2e-5b48-4277-b6c7-bc5ebe67ea83"`; +exports[`string > 1337 > uuid > with version = 7 and Date refDate 1`] = `"01948b54-1b78-7424-9758-4fb16a2f7cc5"`; -exports[`string > 1337 > uuid 4`] = `"8c36682a-03be-496d-8f46-b50570ebc104"`; +exports[`string > 1337 > uuid > with version = 7 and number refDate 1`] = `"01948b54-1b78-7424-9758-4fb16a2f7cc5"`; -exports[`string > 1337 > uuid 5`] = `"3a7e9225-61a0-4ba0-9c5c-592d4b9e801f"`; +exports[`string > 1337 > uuid > with version = 7 and string refDate 1`] = `"01948b54-1b78-7424-9758-4fb16a2f7cc5"`; diff --git a/test/modules/__snapshots__/system.spec.ts.snap b/test/modules/__snapshots__/system.spec.ts.snap index a9985b2fc7e..95af370441f 100644 --- a/test/modules/__snapshots__/system.spec.ts.snap +++ b/test/modules/__snapshots__/system.spec.ts.snap @@ -2,7 +2,7 @@ exports[`system > 42 > commonFileExt 1`] = `"png"`; -exports[`system > 42 > commonFileName > noArgs 1`] = `"unnaturally_dreamily.mp2"`; +exports[`system > 42 > commonFileName > noArgs 1`] = `"unnaturally_dreamily.m3a"`; exports[`system > 42 > commonFileName > with extension 1`] = `"unnaturally_dreamily.ext"`; @@ -18,19 +18,19 @@ exports[`system > 42 > cron > with includeYear false 1`] = `"* * ? 8 ?"`; exports[`system > 42 > cron > with includeYear true 1`] = `"* * ? 8 ? *"`; -exports[`system > 42 > directoryPath 1`] = `"/opt/bin"`; +exports[`system > 42 > directoryPath 1`] = `"/net"`; exports[`system > 42 > fileExt > noArgs 1`] = `"docx"`; exports[`system > 42 > fileExt > with mimeType 1`] = `"json"`; -exports[`system > 42 > fileName > noArgs 1`] = `"unnaturally_dreamily.iso"`; +exports[`system > 42 > fileName > noArgs 1`] = `"unnaturally_dreamily.mar"`; -exports[`system > 42 > fileName > with extensionCount 1`] = `"unnaturally_dreamily.iso.xlw"`; +exports[`system > 42 > fileName > with extensionCount 1`] = `"unnaturally_dreamily.mar.xlw"`; exports[`system > 42 > fileName > with extensionCount range 1`] = `"unnaturally_dreamily"`; -exports[`system > 42 > filePath 1`] = `"/opt/bin/supposing_dreamily_embarrassment.xlsx"`; +exports[`system > 42 > filePath 1`] = `"/net/supposing_dreamily_embarrassment.xlsx"`; exports[`system > 42 > fileType 1`] = `"font"`; @@ -104,9 +104,9 @@ exports[`system > 1211 > fileExt > noArgs 1`] = `"mp4"`; exports[`system > 1211 > fileExt > with mimeType 1`] = `"map"`; -exports[`system > 1211 > fileName > noArgs 1`] = `"happy_unnaturally_phew.vst"`; +exports[`system > 1211 > fileName > noArgs 1`] = `"happy_unnaturally_phew.vss"`; -exports[`system > 1211 > fileName > with extensionCount 1`] = `"happy_unnaturally_phew.vst.mpg4"`; +exports[`system > 1211 > fileName > with extensionCount 1`] = `"happy_unnaturally_phew.vss.mpg4"`; exports[`system > 1211 > fileName > with extensionCount range 1`] = `"happy_unnaturally_phew.mpg4"`; @@ -178,19 +178,19 @@ exports[`system > 1337 > cron > with includeYear false 1`] = `"* * 9 6 *"`; exports[`system > 1337 > cron > with includeYear true 1`] = `"* * 9 6 * 2004"`; -exports[`system > 1337 > directoryPath 1`] = `"/Library"`; +exports[`system > 1337 > directoryPath 1`] = `"/home"`; exports[`system > 1337 > fileExt > noArgs 1`] = `"xul"`; exports[`system > 1337 > fileExt > with mimeType 1`] = `"json"`; -exports[`system > 1337 > fileName > noArgs 1`] = `"wallaby.jpe"`; +exports[`system > 1337 > fileName > noArgs 1`] = `"wallaby.jpg"`; -exports[`system > 1337 > fileName > with extensionCount 1`] = `"wallaby.jpe.distz"`; +exports[`system > 1337 > fileName > with extensionCount 1`] = `"wallaby.jpg.distz"`; exports[`system > 1337 > fileName > with extensionCount range 1`] = `"wallaby.distz.rar"`; -exports[`system > 1337 > filePath 1`] = `"/Library/mmm.distz"`; +exports[`system > 1337 > filePath 1`] = `"/home/mmm.distz"`; exports[`system > 1337 > fileType 1`] = `"audio"`; diff --git a/test/modules/__snapshots__/word.spec.ts.snap b/test/modules/__snapshots__/word.spec.ts.snap index b50d91cafee..833acc5cef2 100644 --- a/test/modules/__snapshots__/word.spec.ts.snap +++ b/test/modules/__snapshots__/word.spec.ts.snap @@ -2,11 +2,9 @@ exports[`word > 42 > adjective > noArgs 1`] = `"hospitable"`; -exports[`word > 42 > adjective > with length = 10 1`] = `"idealistic"`; +exports[`word > 42 > adjective > with length = 4 1`] = `"last"`; -exports[`word > 42 > adjective > with length = 20 1`] = `"hospitable"`; - -exports[`word > 42 > adjective > with options.length 1`] = `"idealistic"`; +exports[`word > 42 > adjective > with options.length 1`] = `"last"`; exports[`word > 42 > adjective > with options.length and options.strategy 1`] = `"inconsequential"`; @@ -14,11 +12,9 @@ exports[`word > 42 > adjective > with options.strategy 1`] = `"hot"`; exports[`word > 42 > adverb > noArgs 1`] = `"jaggedly"`; -exports[`word > 42 > adverb > with length = 10 1`] = `"generously"`; - -exports[`word > 42 > adverb > with length = 20 1`] = `"jaggedly"`; +exports[`word > 42 > adverb > with length = 4 1`] = `"less"`; -exports[`word > 42 > adverb > with options.length 1`] = `"generously"`; +exports[`word > 42 > adverb > with options.length 1`] = `"less"`; exports[`word > 42 > adverb > with options.length and options.strategy 1`] = `"enthusiastically"`; @@ -26,11 +22,9 @@ exports[`word > 42 > adverb > with options.strategy 1`] = `"not"`; exports[`word > 42 > conjunction > noArgs 1`] = `"instead"`; -exports[`word > 42 > conjunction > with length = 10 1`] = `"instead"`; +exports[`word > 42 > conjunction > with length = 4 1`] = `"once"`; -exports[`word > 42 > conjunction > with length = 20 1`] = `"instead"`; - -exports[`word > 42 > conjunction > with options.length 1`] = `"instead"`; +exports[`word > 42 > conjunction > with options.length 1`] = `"once"`; exports[`word > 42 > conjunction > with options.length and options.strategy 1`] = `"consequently"`; @@ -38,11 +32,9 @@ exports[`word > 42 > conjunction > with options.strategy 1`] = `"if"`; exports[`word > 42 > interjection > noArgs 1`] = `"yahoo"`; -exports[`word > 42 > interjection > with length = 10 1`] = `"yahoo"`; - -exports[`word > 42 > interjection > with length = 20 1`] = `"yahoo"`; +exports[`word > 42 > interjection > with length = 4 1`] = `"pfft"`; -exports[`word > 42 > interjection > with options.length 1`] = `"yahoo"`; +exports[`word > 42 > interjection > with options.length 1`] = `"pfft"`; exports[`word > 42 > interjection > with options.length and options.strategy 1`] = `"gadzooks"`; @@ -50,11 +42,9 @@ exports[`word > 42 > interjection > with options.strategy 1`] = `"ah"`; exports[`word > 42 > noun > noArgs 1`] = `"gerbil"`; -exports[`word > 42 > noun > with length = 10 1`] = `"hippodrome"`; +exports[`word > 42 > noun > with length = 4 1`] = `"fund"`; -exports[`word > 42 > noun > with length = 20 1`] = `"gerbil"`; - -exports[`word > 42 > noun > with options.length 1`] = `"hippodrome"`; +exports[`word > 42 > noun > with options.length 1`] = `"fund"`; exports[`word > 42 > noun > with options.length and options.strategy 1`] = `"cross-contamination"`; @@ -62,11 +52,9 @@ exports[`word > 42 > noun > with options.strategy 1`] = `"CD"`; exports[`word > 42 > preposition > noArgs 1`] = `"concerning"`; -exports[`word > 42 > preposition > with length = 10 1`] = `"throughout"`; - -exports[`word > 42 > preposition > with length = 20 1`] = `"concerning"`; +exports[`word > 42 > preposition > with length = 4 1`] = `"like"`; -exports[`word > 42 > preposition > with options.length 1`] = `"throughout"`; +exports[`word > 42 > preposition > with options.length 1`] = `"like"`; exports[`word > 42 > preposition > with options.length and options.strategy 1`] = `"notwithstanding"`; @@ -74,11 +62,9 @@ exports[`word > 42 > preposition > with options.strategy 1`] = `"a"`; exports[`word > 42 > sample > noArgs 1`] = `"bleakly"`; -exports[`word > 42 > sample > with length = 10 1`] = `"arrogantly"`; - -exports[`word > 42 > sample > with length = 20 1`] = `"bleakly"`; +exports[`word > 42 > sample > with length = 4 1`] = `"even"`; -exports[`word > 42 > sample > with options.length 1`] = `"arrogantly"`; +exports[`word > 42 > sample > with options.length 1`] = `"even"`; exports[`word > 42 > sample > with options.length and options.strategy 1`] = `"enthusiastically"`; @@ -86,11 +72,9 @@ exports[`word > 42 > sample > with options.strategy 1`] = `"far"`; exports[`word > 42 > verb > noArgs 1`] = `"glow"`; -exports[`word > 42 > verb > with length = 10 1`] = `"exacerbate"`; +exports[`word > 42 > verb > with length = 4 1`] = `"hole"`; -exports[`word > 42 > verb > with length = 20 1`] = `"glow"`; - -exports[`word > 42 > verb > with options.length 1`] = `"exacerbate"`; +exports[`word > 42 > verb > with options.length 1`] = `"hole"`; exports[`word > 42 > verb > with options.length and options.strategy 1`] = `"institutionalize"`; @@ -98,21 +82,17 @@ exports[`word > 42 > verb > with options.strategy 1`] = `"jot"`; exports[`word > 42 > words > noArgs 1`] = `"unnaturally dreamily"`; -exports[`word > 42 > words > with count = 10 1`] = `"bleakly custody gee psst why meh ugh utilized wherever without"`; - -exports[`word > 42 > words > with count = 20 1`] = `"bleakly custody gee psst why meh ugh utilized wherever without safe across amidst intent zowie confirm usefully impanel whoa vista"`; +exports[`word > 42 > words > with count = 4 1`] = `"bleakly custody gee psst"`; -exports[`word > 42 > words > with options.count 1`] = `"bleakly custody gee psst why meh ugh utilized wherever without"`; +exports[`word > 42 > words > with options.count 1`] = `"bleakly custody gee psst"`; exports[`word > 42 > words > with options.count range 1`] = `"unnaturally dreamily chapel mozzarella through amendment dependable brilliant indeed whenever after happily relieve although atop upon provided skyline brr"`; exports[`word > 1211 > adjective > noArgs 1`] = `"velvety"`; -exports[`word > 1211 > adjective > with length = 10 1`] = `"unpleasant"`; +exports[`word > 1211 > adjective > with length = 4 1`] = `"vain"`; -exports[`word > 1211 > adjective > with length = 20 1`] = `"velvety"`; - -exports[`word > 1211 > adjective > with options.length 1`] = `"unpleasant"`; +exports[`word > 1211 > adjective > with options.length 1`] = `"vain"`; exports[`word > 1211 > adjective > with options.length and options.strategy 1`] = `"well-documented"`; @@ -120,11 +100,9 @@ exports[`word > 1211 > adjective > with options.strategy 1`] = `"wee"`; exports[`word > 1211 > adverb > noArgs 1`] = `"viciously"`; -exports[`word > 1211 > adverb > with length = 10 1`] = `"unbearably"`; - -exports[`word > 1211 > adverb > with length = 20 1`] = `"viciously"`; +exports[`word > 1211 > adverb > with length = 4 1`] = `"well"`; -exports[`word > 1211 > adverb > with options.length 1`] = `"unbearably"`; +exports[`word > 1211 > adverb > with options.length 1`] = `"well"`; exports[`word > 1211 > adverb > with options.length and options.strategy 1`] = `"enthusiastically"`; @@ -132,11 +110,9 @@ exports[`word > 1211 > adverb > with options.strategy 1`] = `"too"`; exports[`word > 1211 > conjunction > noArgs 1`] = `"whoever"`; -exports[`word > 1211 > conjunction > with length = 10 1`] = `"whoever"`; +exports[`word > 1211 > conjunction > with length = 4 1`] = `"when"`; -exports[`word > 1211 > conjunction > with length = 20 1`] = `"whoever"`; - -exports[`word > 1211 > conjunction > with options.length 1`] = `"whoever"`; +exports[`word > 1211 > conjunction > with options.length 1`] = `"when"`; exports[`word > 1211 > conjunction > with options.length and options.strategy 1`] = `"incidentally"`; @@ -144,11 +120,9 @@ exports[`word > 1211 > conjunction > with options.strategy 1`] = `"so"`; exports[`word > 1211 > interjection > noArgs 1`] = `"er"`; -exports[`word > 1211 > interjection > with length = 10 1`] = `"er"`; - -exports[`word > 1211 > interjection > with length = 20 1`] = `"er"`; +exports[`word > 1211 > interjection > with length = 4 1`] = `"pish"`; -exports[`word > 1211 > interjection > with options.length 1`] = `"er"`; +exports[`word > 1211 > interjection > with options.length 1`] = `"pish"`; exports[`word > 1211 > interjection > with options.length and options.strategy 1`] = `"gadzooks"`; @@ -156,11 +130,9 @@ exports[`word > 1211 > interjection > with options.strategy 1`] = `"um"`; exports[`word > 1211 > noun > noArgs 1`] = `"trash"`; -exports[`word > 1211 > noun > with length = 10 1`] = `"underpants"`; - -exports[`word > 1211 > noun > with length = 20 1`] = `"trash"`; +exports[`word > 1211 > noun > with length = 4 1`] = `"tray"`; -exports[`word > 1211 > noun > with options.length 1`] = `"underpants"`; +exports[`word > 1211 > noun > with options.length 1`] = `"tray"`; exports[`word > 1211 > noun > with options.length and options.strategy 1`] = `"cross-contamination"`; @@ -168,11 +140,9 @@ exports[`word > 1211 > noun > with options.strategy 1`] = `"ad"`; exports[`word > 1211 > preposition > noArgs 1`] = `"upon"`; -exports[`word > 1211 > preposition > with length = 10 1`] = `"underneath"`; +exports[`word > 1211 > preposition > with length = 4 1`] = `"vice"`; -exports[`word > 1211 > preposition > with length = 20 1`] = `"upon"`; - -exports[`word > 1211 > preposition > with options.length 1`] = `"underneath"`; +exports[`word > 1211 > preposition > with options.length 1`] = `"vice"`; exports[`word > 1211 > preposition > with options.length and options.strategy 1`] = `"notwithstanding"`; @@ -180,11 +150,9 @@ exports[`word > 1211 > preposition > with options.strategy 1`] = `"a"`; exports[`word > 1211 > sample > noArgs 1`] = `"sneaky"`; -exports[`word > 1211 > sample > with length = 10 1`] = `"remorseful"`; - -exports[`word > 1211 > sample > with length = 20 1`] = `"sneaky"`; +exports[`word > 1211 > sample > with length = 4 1`] = `"some"`; -exports[`word > 1211 > sample > with options.length 1`] = `"remorseful"`; +exports[`word > 1211 > sample > with options.length 1`] = `"some"`; exports[`word > 1211 > sample > with options.length and options.strategy 1`] = `"well-documented"`; @@ -192,11 +160,9 @@ exports[`word > 1211 > sample > with options.strategy 1`] = `"raw"`; exports[`word > 1211 > verb > noArgs 1`] = `"transplant"`; -exports[`word > 1211 > verb > with length = 10 1`] = `"transplant"`; +exports[`word > 1211 > verb > with length = 4 1`] = `"warp"`; -exports[`word > 1211 > verb > with length = 20 1`] = `"transplant"`; - -exports[`word > 1211 > verb > with options.length 1`] = `"transplant"`; +exports[`word > 1211 > verb > with options.length 1`] = `"warp"`; exports[`word > 1211 > verb > with options.length and options.strategy 1`] = `"internationalize"`; @@ -204,21 +170,17 @@ exports[`word > 1211 > verb > with options.strategy 1`] = `"tut"`; exports[`word > 1211 > words > noArgs 1`] = `"happy unnaturally phew"`; -exports[`word > 1211 > words > with count = 10 1`] = `"sneaky jam-packed willow gracefully if disarm ha furthermore nor trustworthy"`; - -exports[`word > 1211 > words > with count = 20 1`] = `"sneaky jam-packed willow gracefully if disarm ha furthermore nor trustworthy ugh fooey yippee untrue discrete tool untidy trench although radiant"`; +exports[`word > 1211 > words > with count = 4 1`] = `"sneaky jam-packed willow gracefully"`; -exports[`word > 1211 > words > with options.count 1`] = `"sneaky jam-packed willow gracefully if disarm ha furthermore nor trustworthy"`; +exports[`word > 1211 > words > with options.count 1`] = `"sneaky jam-packed willow gracefully"`; exports[`word > 1211 > words > with options.count range 1`] = `"happy unnaturally phew sedately converse horn consistency pinion so elderly when thorn object muted via mythology compassionate crushing fairly parched"`; exports[`word > 1337 > adjective > noArgs 1`] = `"fatal"`; -exports[`word > 1337 > adjective > with length = 10 1`] = `"elliptical"`; +exports[`word > 1337 > adjective > with length = 4 1`] = `"fake"`; -exports[`word > 1337 > adjective > with length = 20 1`] = `"fatal"`; - -exports[`word > 1337 > adjective > with options.length 1`] = `"elliptical"`; +exports[`word > 1337 > adjective > with options.length 1`] = `"fake"`; exports[`word > 1337 > adjective > with options.length and options.strategy 1`] = `"black-and-white"`; @@ -226,11 +188,9 @@ exports[`word > 1337 > adjective > with options.strategy 1`] = `"far"`; exports[`word > 1337 > adverb > noArgs 1`] = `"frankly"`; -exports[`word > 1337 > adverb > with length = 10 1`] = `"enormously"`; - -exports[`word > 1337 > adverb > with length = 20 1`] = `"frankly"`; +exports[`word > 1337 > adverb > with length = 4 1`] = `"less"`; -exports[`word > 1337 > adverb > with options.length 1`] = `"enormously"`; +exports[`word > 1337 > adverb > with options.length 1`] = `"less"`; exports[`word > 1337 > adverb > with options.length and options.strategy 1`] = `"enthusiastically"`; @@ -238,11 +198,9 @@ exports[`word > 1337 > adverb > with options.strategy 1`] = `"far"`; exports[`word > 1337 > conjunction > noArgs 1`] = `"how"`; -exports[`word > 1337 > conjunction > with length = 10 1`] = `"how"`; - -exports[`word > 1337 > conjunction > with length = 20 1`] = `"how"`; +exports[`word > 1337 > conjunction > with length = 4 1`] = `"once"`; -exports[`word > 1337 > conjunction > with options.length 1`] = `"how"`; +exports[`word > 1337 > conjunction > with options.length 1`] = `"once"`; exports[`word > 1337 > conjunction > with options.length and options.strategy 1`] = `"consequently"`; @@ -250,11 +208,9 @@ exports[`word > 1337 > conjunction > with options.strategy 1`] = `"if"`; exports[`word > 1337 > interjection > noArgs 1`] = `"ew"`; -exports[`word > 1337 > interjection > with length = 10 1`] = `"ew"`; +exports[`word > 1337 > interjection > with length = 4 1`] = `"geez"`; -exports[`word > 1337 > interjection > with length = 20 1`] = `"ew"`; - -exports[`word > 1337 > interjection > with options.length 1`] = `"ew"`; +exports[`word > 1337 > interjection > with options.length 1`] = `"geez"`; exports[`word > 1337 > interjection > with options.length and options.strategy 1`] = `"gadzooks"`; @@ -262,11 +218,9 @@ exports[`word > 1337 > interjection > with options.strategy 1`] = `"ah"`; exports[`word > 1337 > noun > noArgs 1`] = `"diversity"`; -exports[`word > 1337 > noun > with length = 10 1`] = `"deployment"`; - -exports[`word > 1337 > noun > with length = 20 1`] = `"diversity"`; +exports[`word > 1337 > noun > with length = 4 1`] = `"draw"`; -exports[`word > 1337 > noun > with options.length 1`] = `"deployment"`; +exports[`word > 1337 > noun > with options.length 1`] = `"draw"`; exports[`word > 1337 > noun > with options.length and options.strategy 1`] = `"cross-contamination"`; @@ -274,11 +228,9 @@ exports[`word > 1337 > noun > with options.strategy 1`] = `"CD"`; exports[`word > 1337 > preposition > noArgs 1`] = `"barring"`; -exports[`word > 1337 > preposition > with length = 10 1`] = `"concerning"`; - -exports[`word > 1337 > preposition > with length = 20 1`] = `"barring"`; +exports[`word > 1337 > preposition > with length = 4 1`] = `"into"`; -exports[`word > 1337 > preposition > with options.length 1`] = `"concerning"`; +exports[`word > 1337 > preposition > with options.length 1`] = `"into"`; exports[`word > 1337 > preposition > with options.length and options.strategy 1`] = `"notwithstanding"`; @@ -286,11 +238,9 @@ exports[`word > 1337 > preposition > with options.strategy 1`] = `"a"`; exports[`word > 1337 > sample > noArgs 1`] = `"how"`; -exports[`word > 1337 > sample > with length = 10 1`] = `"how"`; +exports[`word > 1337 > sample > with length = 4 1`] = `"once"`; -exports[`word > 1337 > sample > with length = 20 1`] = `"how"`; - -exports[`word > 1337 > sample > with options.length 1`] = `"how"`; +exports[`word > 1337 > sample > with options.length 1`] = `"once"`; exports[`word > 1337 > sample > with options.length and options.strategy 1`] = `"consequently"`; @@ -298,11 +248,9 @@ exports[`word > 1337 > sample > with options.strategy 1`] = `"if"`; exports[`word > 1337 > verb > noArgs 1`] = `"downshift"`; -exports[`word > 1337 > verb > with length = 10 1`] = `"degenerate"`; - -exports[`word > 1337 > verb > with length = 20 1`] = `"downshift"`; +exports[`word > 1337 > verb > with length = 4 1`] = `"form"`; -exports[`word > 1337 > verb > with options.length 1`] = `"degenerate"`; +exports[`word > 1337 > verb > with options.length 1`] = `"form"`; exports[`word > 1337 > verb > with options.length and options.strategy 1`] = `"institutionalize"`; @@ -310,10 +258,8 @@ exports[`word > 1337 > verb > with options.strategy 1`] = `"gad"`; exports[`word > 1337 > words > noArgs 1`] = `"wallaby"`; -exports[`word > 1337 > words > with count = 10 1`] = `"how yet smooth councilman including safely junior actually accredit vaguely"`; - -exports[`word > 1337 > words > with count = 20 1`] = `"how yet smooth councilman including safely junior actually accredit vaguely failing vaguely mundane hassle whoever scarily requite duh lazily sans"`; +exports[`word > 1337 > words > with count = 4 1`] = `"how yet smooth councilman"`; -exports[`word > 1337 > words > with options.count 1`] = `"how yet smooth councilman including safely junior actually accredit vaguely"`; +exports[`word > 1337 > words > with options.count 1`] = `"how yet smooth councilman"`; exports[`word > 1337 > words > with options.count range 1`] = `"wallaby drat deserted into aggravating yuck vol busily ouch inasmuch haze scientific everlasting or gee harmful phew now"`; diff --git a/test/modules/commerce.spec.ts b/test/modules/commerce.spec.ts index bf50064f1c7..db5e0e90a73 100644 --- a/test/modules/commerce.spec.ts +++ b/test/modules/commerce.spec.ts @@ -1,4 +1,4 @@ -import { isISBN } from 'validator'; +import { isEAN, isISBN } from 'validator'; import { describe, expect, it } from 'vitest'; import { faker } from '../../src'; import { seededTests } from '../support/seeded-runs'; @@ -6,6 +6,19 @@ import { times } from './../support/times'; const NON_SEEDED_BASED_RUN = 5; +/** + * Helper function to verify UPC check digit + * + * @param upc The UPC string to verify. + */ +function verifyUPCCheckDigit(upc: string): boolean { + if (!/^\d{12}$/.test(upc)) { + return false; + } + + return isEAN(`0${upc}`); +} + describe('commerce', () => { seededTests(faker, 'commerce', (t) => { t.itEach( @@ -46,6 +59,14 @@ describe('commerce', () => { }) .it('with space separators', { separator: ' ' }); }); + + t.describe('upc', (t) => { + t.it('noArgs') + .it('with empty prefix', { prefix: '' }) + .it('with single digit prefix', { prefix: '0' }) + .it('with 5 digit prefix', { prefix: '01234' }) + .it('with 11 digit prefix', { prefix: '01234567890' }); + }); }); describe.each(times(NON_SEEDED_BASED_RUN).map(() => faker.seed()))( @@ -247,6 +268,161 @@ describe('commerce', () => { expect(isbn).toSatisfy((isbn: string) => isISBN(isbn, 13)); }); }); + + describe(`upc()`, () => { + it('should return a 12-digit UPC-A string when not passing arguments', () => { + const upc = faker.commerce.upc(); + + expect(upc).toBeTruthy(); + expect(upc).toBeTypeOf('string'); + expect(upc, 'UPC should be exactly 12 digits').toHaveLength(12); + expect(upc, 'UPC should contain only digits').toMatch(/^\d{12}$/); + expect( + verifyUPCCheckDigit(upc), + 'UPC check digit should be valid' + ).toBe(true); + }); + + it('should return a 12-digit UPC-A string with empty prefix', () => { + const upc = faker.commerce.upc({ prefix: '' }); + + expect(upc).toBeTruthy(); + expect(upc).toBeTypeOf('string'); + expect(upc, 'UPC should be exactly 12 digits').toHaveLength(12); + expect(upc, 'UPC should contain only digits').toMatch(/^\d{12}$/); + expect( + verifyUPCCheckDigit(upc), + 'UPC check digit should be valid' + ).toBe(true); + }); + + it('should return a 12-digit UPC-A string with single digit prefix', () => { + const prefix = '0'; + const upc = faker.commerce.upc({ prefix }); + + expect(upc).toBeTruthy(); + expect(upc).toBeTypeOf('string'); + expect(upc, 'UPC should be exactly 12 digits').toHaveLength(12); + expect(upc, 'UPC should contain only digits').toMatch(/^\d{12}$/); + expect( + upc.startsWith(prefix), + 'UPC should start with the provided prefix' + ).toBe(true); + expect( + verifyUPCCheckDigit(upc), + 'UPC check digit should be valid' + ).toBe(true); + }); + + it('should return a 12-digit UPC-A string with 5-digit prefix', () => { + const prefix = '01234'; + const upc = faker.commerce.upc({ prefix }); + + expect(upc).toBeTruthy(); + expect(upc).toBeTypeOf('string'); + expect(upc, 'UPC should be exactly 12 digits').toHaveLength(12); + expect(upc, 'UPC should contain only digits').toMatch(/^\d{12}$/); + expect( + upc.startsWith(prefix), + 'UPC should start with the provided prefix' + ).toBe(true); + expect( + verifyUPCCheckDigit(upc), + 'UPC check digit should be valid' + ).toBe(true); + }); + + it('should return a 12-digit UPC-A string with 11-digit prefix', () => { + const prefix = '01234567890'; + const upc = faker.commerce.upc({ prefix }); + + expect(upc).toBe('012345678905'); + }); + + it('should handle prefix with leading zeros', () => { + const prefix = '00000'; + const upc = faker.commerce.upc({ prefix }); + + expect(upc).toBeTruthy(); + expect(upc, 'UPC should be exactly 12 digits').toHaveLength(12); + expect(upc.startsWith(prefix)).toBe(true); + expect(verifyUPCCheckDigit(upc)).toBe(true); + }); + + it('should generate valid UPCs with various prefix lengths', () => { + const prefixLengths = [0, 1, 2, 5, 8, 11]; + + for (const length of prefixLengths) { + const prefix = length > 0 ? '0'.repeat(length) : ''; + const upc = faker.commerce.upc({ prefix }); + + expect( + upc, + `UPC with prefix length ${length} should be 12 digits` + ).toHaveLength(12); + expect( + verifyUPCCheckDigit(upc), + `UPC with prefix length ${length} should have valid check digit` + ).toBe(true); + if (prefix) { + expect( + upc.startsWith(prefix), + `UPC should start with prefix of length ${length}` + ).toBe(true); + } + } + }); + + it('should throw FakerError when prefix contains non-digit characters', () => { + expect(() => { + faker.commerce.upc({ prefix: 'abc' }); + }).toThrowError('Prefix must contain only numeric digits'); + + expect(() => { + faker.commerce.upc({ prefix: '123abc' }); + }).toThrowError('Prefix must contain only numeric digits'); + + expect(() => { + faker.commerce.upc({ prefix: '12-34' }); + }).toThrowError('Prefix must contain only numeric digits'); + + expect(() => { + faker.commerce.upc({ prefix: ' 123' }); + }).toThrowError('Prefix must contain only numeric digits'); + }); + + it('should throw FakerError when prefix is longer than 11 digits', () => { + expect(() => { + faker.commerce.upc({ prefix: '012345678901' }); + }).toThrowError('Prefix must be at most 11 numeric digits'); + + expect(() => { + faker.commerce.upc({ prefix: '012345678901234' }); + }).toThrowError('Prefix must be at most 11 numeric digits'); + }); + + it('should throw FakerError with correct error message for invalid prefix types', () => { + expect(() => { + faker.commerce.upc({ prefix: '12a' }); + }).toThrowError('Prefix must contain only numeric digits'); + + expect(() => { + faker.commerce.upc({ prefix: '012345678901' }); + }).toThrowError('Prefix must be at most 11 numeric digits'); + }); + + it('should generate valid UPCs that pass check digit validation for multiple calls', () => { + const results = faker.helpers.multiple(() => faker.commerce.upc(), { + count: 100, + }); + + for (const upc of results) { + expect(upc).toHaveLength(12); + expect(upc).toMatch(/^\d{12}$/); + expect(verifyUPCCheckDigit(upc)).toBe(true); + } + }); + }); } ); }); diff --git a/test/modules/datatype.spec.ts b/test/modules/datatype.spec.ts index 0dc59fe4d99..44cdb4dfbd3 100644 --- a/test/modules/datatype.spec.ts +++ b/test/modules/datatype.spec.ts @@ -68,10 +68,12 @@ describe('datatype', () => { const filledOptions: { probability?: number } = Object.freeze({ probability: 1, }); - expect(() => faker.datatype.boolean(filledOptions)).not.toThrow(); + expect(() => + faker.datatype.boolean(filledOptions) + ).not.toThrowError(); const emptyOptions: { probability?: number } = Object.freeze({}); - expect(() => faker.datatype.boolean(emptyOptions)).not.toThrow(); + expect(() => faker.datatype.boolean(emptyOptions)).not.toThrowError(); }); }); } diff --git a/test/modules/date.spec.ts b/test/modules/date.spec.ts index 19a2d0a7504..2f06e682ac8 100644 --- a/test/modules/date.spec.ts +++ b/test/modules/date.spec.ts @@ -161,7 +161,7 @@ describe('date', () => { it.each(['invalid', Number.NaN, new Date(Number.NaN)] as const)( 'should reject invalid refDates %s', (refDate) => { - expect(() => faker.date[method]({ refDate })).toThrow( + expect(() => faker.date[method]({ refDate })).toThrowError( new FakerError(`Invalid refDate date: ${refDate.toString()}`) ); } @@ -194,7 +194,7 @@ describe('date', () => { const refDate = new Date(); expect(() => faker.date.past({ years: 0, refDate: refDate.toISOString() }) - ).toThrow(new FakerError('Years must be greater than 0.')); + ).toThrowError(new FakerError('Years must be greater than 0.')); }); it.each(converterMap)( @@ -225,7 +225,7 @@ describe('date', () => { const refDate = new Date(); expect(() => faker.date.future({ years: 0, refDate: refDate.toISOString() }) - ).toThrow(new FakerError('Years must be greater than 0.')); + ).toThrowError(new FakerError('Years must be greater than 0.')); }); it.each(converterMap)( @@ -268,7 +268,9 @@ describe('date', () => { from: '2000-01-01', to: '1990-01-01', }) - ).toThrow(new FakerError('`from` date must be before `to` date.')); + ).toThrowError( + new FakerError('`from` date must be before `to` date.') + ); }); it('should allow date 0 (start of UNIX epoch)', () => { @@ -285,7 +287,7 @@ describe('date', () => { from: '1990-01-01', to: 'not-a-date', }) - ).toThrow(new FakerError('Invalid to date: not-a-date')); + ).toThrowError(new FakerError('Invalid to date: not-a-date')); }); }); @@ -364,7 +366,9 @@ describe('date', () => { to: '1990-01-01', count: 3, }) - ).toThrow(new FakerError('`from` date must be before `to` date.')); + ).toThrowError( + new FakerError('`from` date must be before `to` date.') + ); }); it('should throw an error if to is invalid', () => { @@ -374,7 +378,7 @@ describe('date', () => { to: 'not-a-date', count: 3, }) - ).toThrow(new FakerError('Invalid to date: not-a-date')); + ).toThrowError(new FakerError('Invalid to date: not-a-date')); }); }); @@ -389,7 +393,7 @@ describe('date', () => { const refDate = new Date(); expect(() => faker.date.recent({ days: 0, refDate: refDate.toISOString() }) - ).toThrow(new FakerError('Days must be greater than 0.')); + ).toThrowError(new FakerError('Days must be greater than 0.')); }); it.each(converterMap)( @@ -430,7 +434,7 @@ describe('date', () => { const refDate = new Date(); expect(() => faker.date.soon({ days: 0, refDate: refDate.toISOString() }) - ).toThrow(new FakerError('Days must be greater than 0.')); + ).toThrowError(new FakerError('Days must be greater than 0.')); }); it.each(converterMap)( @@ -612,29 +616,13 @@ describe('date', () => { expect(age).toBeLessThanOrEqual(22); }); - it.each(['min', 'max', 'mode'] as const)( - "should throw an error when '%s' is not provided", - (key) => { - const options = { min: 18, max: 80, mode: 'age' } as const; - - // eslint-disable-next-line @typescript-eslint/no-dynamic-delete - delete options[key]; - - expect(() => faker.date.birthdate(options)).toThrow( - new FakerError( - `The 'min', 'max', and 'mode' options must be set together.` - ) - ); - } - ); - it('should throw an error when the min > max year', () => { const min = 2000; const max = 1990; expect(() => faker.date.birthdate({ min, max, mode: 'year' }) - ).toThrow( + ).toThrowError( new FakerError( `Max year 1990 should be greater than or equal to min year 2000.` ) @@ -648,7 +636,7 @@ describe('date', () => { expect(() => faker.date.birthdate({ min, max, refDate, mode: 'age' }) - ).toThrow( + ).toThrowError( new FakerError( `Max age 25 should be greater than or equal to min age 31.` ) diff --git a/test/modules/finance-iban.spec.ts b/test/modules/finance-iban.spec.ts index b35d5c32bf1..cb22583a86c 100644 --- a/test/modules/finance-iban.spec.ts +++ b/test/modules/finance-iban.spec.ts @@ -16,7 +16,7 @@ describe('finance_iban', () => { countryCode: country, }); - expect(actual).toMatch(new RegExp(`^${country}`)); + expect(actual).toStartWith(country); expect(actual).toSatisfy(isIBAN); }); }); @@ -377,6 +377,31 @@ describe('finance_iban', () => { `First two character should be AL, given is ${iban.substring(0, 2)}` ).toBe('AL'); }); + + it('IBAN for Iran is correct', () => { + const iban = faker.finance.iban({ + formatted: false, + countryCode: 'IR', + }); + const ibanFormated = prettyPrintIban(iban); + + expect(iban).toSatisfy(isIBAN); + + expect( + 26, + `IR IBAN would be 26 chars length, given is ${iban.length}` + ).toBe(iban.length); + + expect( + 32, + `IR formatted IBAN would be 32 chars length, given is ${ibanFormated.length}` + ).toBe(ibanFormated.length); + + expect( + iban.substring(0, 2), + `First two character should be IR, given is ${iban.substring(0, 2)}` + ).toBe('IR'); + }); }); } ); diff --git a/test/modules/finance.spec.ts b/test/modules/finance.spec.ts index 29b490d27a2..388837671a9 100644 --- a/test/modules/finance.spec.ts +++ b/test/modules/finance.spec.ts @@ -1,6 +1,7 @@ import isCreditCard from 'validator/lib/isCreditCard'; +import isLuhnNumber from 'validator/lib/isLuhnNumber'; import { describe, expect, it } from 'vitest'; -import { faker, fakerZH_CN } from '../../src'; +import { allLocales, faker, fakerZH_CN } from '../../src'; import { FakerError } from '../../src/errors/faker-error'; import { BitcoinAddressFamily, @@ -24,6 +25,7 @@ describe('finance', () => { 'currencyCode', 'currencyName', 'currencySymbol', + 'currencyNumericCode', 'litecoinAddress', 'creditCardCVV', 'ethereumAddress', @@ -82,18 +84,6 @@ describe('finance', () => { .it('with issuer option mastercard', { issuer: 'mastercard' }); }); - t.describe('maskedNumber', (t) => { - t.it('noArgs') - .it('with length', 5) - .it('with length option', { length: 5 }) - .it('with length and parenthesis option', { length: 5, parens: false }) - .it('with length, parenthesis and ellipsis option', { - length: 5, - parens: false, - ellipsis: true, - }); - }); - t.describe('bitcoinAddress', (t) => { t.it('noArgs') .it('with type option', { type: BitcoinAddressFamily.Legacy }) @@ -156,45 +146,6 @@ describe('finance', () => { }); }); - describe('maskedNumber()', () => { - it('should return contain parenthesis, ellipsis and have a length of 4 by default', () => { - // eslint-disable-next-line @typescript-eslint/no-deprecated - const actual = faker.finance.maskedNumber(); - - expect(actual).toMatch(/\(\.{3}\d{4}\)/); - }); - - it('should set a default length', () => { - const expected = 4; // default account mask length - // eslint-disable-next-line @typescript-eslint/no-deprecated - const mask = faker.finance.maskedNumber({ - parens: false, - ellipsis: false, - }); - - expect( - mask, - `The expected default mask length is ${expected} but it was ${mask.length}` - ).toHaveLength(expected); - }); - - it('should set a specified length', () => { - const expected = faker.number.int({ min: 1, max: 20 }); - - // eslint-disable-next-line @typescript-eslint/no-deprecated - const mask = faker.finance.maskedNumber({ - length: expected, - parens: false, - ellipsis: false, - }); // the length of mask picks 4 if the random number generator picks 0 - - expect( - mask, - `The expected default mask length is ${expected} but it was ${mask.length}` - ).toHaveLength(expected); - }); - }); - describe('amount()', () => { it('should use the default amounts when not passing arguments', () => { const amount = faker.finance.amount(); @@ -265,22 +216,26 @@ describe('finance', () => { } ); - it('should return the number formatted on the current locale', () => { - const number = 6000; - const decimalPlaces = 2; - const expected = number.toLocaleString(undefined, { - minimumFractionDigits: decimalPlaces, - }); + // This test is flaky on Windows Github Actions + it.todo( + 'should return the number formatted on the current locale', + () => { + const number = 6000; + const decimalPlaces = 2; + const expected = number.toLocaleString(undefined, { + minimumFractionDigits: decimalPlaces, + }); - const amount = faker.finance.amount({ - min: number, - max: number, - dec: decimalPlaces, - autoFormat: true, - }); + const amount = faker.finance.amount({ + min: number, + max: number, + dec: decimalPlaces, + autoFormat: true, + }); - expect(amount).toStrictEqual(expected); - }); + expect(amount).toStrictEqual(expected); + } + ); }); describe('transactionType()', () => { @@ -298,6 +253,7 @@ describe('finance', () => { expect(currency.code).toMatch(/^[A-Z]{3}$/); expect(currency.name).toBeTypeOf('string'); expect(currency.symbol).toBeTypeOf('string'); + expect(currency.numericCode).toBeTypeOf('string'); }); }); @@ -326,6 +282,15 @@ describe('finance', () => { }); }); + describe('currencyNumericCode()', () => { + it('should return a string with length of 3', () => { + const currencyNumericCode = faker.finance.currencyNumericCode(); + + expect(currencyNumericCode).toBeTypeOf('string'); + expect(currencyNumericCode).toMatch(/^\d{3}$/); + }); + }); + describe('bitcoinAddress()', () => { const m_legacy = /^1[A-HJ-NP-Za-km-z1-9]{25,39}$/; const t_legacy = /^m[A-HJ-NP-Za-km-z1-9]{25,39}$/; @@ -554,7 +519,9 @@ describe('finance', () => { }); it('should throw an error when length is less than 1', () => { - expect(() => faker.finance.pin(-5)).toThrow(/^minimum length is 1$/); + expect(() => faker.finance.pin(-5)).toThrowError( + /^minimum length is 1$/ + ); }); }); @@ -601,7 +568,7 @@ describe('finance', () => { formatted: false, countryCode: unsupportedCountryCode, }) - ).toThrow( + ).toThrowError( new FakerError( `Country code ${unsupportedCountryCode} not supported.` ) @@ -637,3 +604,63 @@ describe('finance', () => { } ); }); + +describe('finance locale data', () => { + // Dedicated type for readability purposes + type KnownProvider = Exclude< + Parameters[1], + undefined + >['provider']; + + function getKnownProvider(value: string | undefined): KnownProvider { + // taken from definitions of validatorjs: + // https://github.com/validatorjs/validator.js/blob/72573b3d1d8ab2e6575e6bba1cbe2b01f95f4935/src/lib/isCreditCard.js#L4-L12 + const providers: Record = { + american_express: 'amex', + diners_club: 'dinersclub', + discover: 'discover', + jcb: 'jcb', + mastercard: 'mastercard', + unionpay: 'unionpay', + visa: 'visa', + }; + + const knownProvider = providers[value ?? '']; + if (knownProvider == null) { + throw new Error( + `Issuer "${value}" is not a known provider for validatorjs. Because of that the validity of it's patterns can not be verified.` + ); + } + + return knownProvider; + } + + const localesWithData = Object.entries(allLocales).filter( + ([, data]) => Object.keys(data.finance?.credit_card ?? {}).length > 0 + ); + describe.each(localesWithData)(`%s`, (_localeName, localeData) => { + describe('credit cards', () => { + describe('issuer', () => { + describe.each(Object.entries(localeData.finance?.credit_card ?? {}))( + '%s', + (issuerName, issuerPatterns) => { + function isCreditCardFromIssuer(value: string) { + return isCreditCard(value, { + provider: getKnownProvider(issuerName), + }); + } + + it.each(issuerPatterns)( + 'pattern "%s" should generate a valid credit card number', + (pattern) => { + const result = faker.finance.creditCardNumber(pattern); + expect(result).toSatisfy(isLuhnNumber); + expect(result).toSatisfy(isCreditCardFromIssuer); + } + ); + } + ); + }); + }); + }); +}); diff --git a/test/modules/git.spec.ts b/test/modules/git.spec.ts index 07c096e0705..5d62053f11a 100644 --- a/test/modules/git.spec.ts +++ b/test/modules/git.spec.ts @@ -67,16 +67,16 @@ describe('git', () => { expect(parts[0]).toMatch(/^commit [a-f0-9]+$/); - const authorRegex = /^Author: .*$/; + const authorPrefix = 'Author: '; if (parts.length === 7) { expect(parts[1]).toMatch(/^Merge: [a-f0-9]+ [a-f0-9]+$/); - expect(parts[2]).toMatch(authorRegex); + expect(parts[2]).toStartWith(authorPrefix); expect(parts[2].substring(8)).toSatisfy(isValidCommitAuthor); expect(parts[3]).toMatch(/^Date: .+$/); expect(parts[4]).toBe(''); expect(parts[5]).toMatch(/^\s{4}.+$/); } else { - expect(parts[1]).toMatch(authorRegex); + expect(parts[1]).toStartWith(authorPrefix); expect(parts[1].substring(8)).toSatisfy(isValidCommitAuthor); expect(parts[2]).toMatch(/^Date: .+$/); expect(parts[3]).toBe(''); diff --git a/test/modules/helpers-eval.spec.ts b/test/modules/helpers-eval.spec.ts index aef1492f433..7bb847dcdda 100644 --- a/test/modules/helpers-eval.spec.ts +++ b/test/modules/helpers-eval.spec.ts @@ -4,13 +4,13 @@ import { fakeEval } from '../../src/modules/helpers/eval'; describe('fakeEval()', () => { it('does not allow empty string input', () => { - expect(() => fakeEval('', faker)).toThrow( + expect(() => fakeEval('', faker)).toThrowError( new FakerError('Eval expression cannot be empty.') ); }); it('does not allow empty entrypoints', () => { - expect(() => fakeEval('foobar', faker, [])).toThrow( + expect(() => fakeEval('foobar', faker, [])).toThrowError( new FakerError('Eval entrypoints cannot be empty.') ); }); @@ -116,7 +116,7 @@ describe('fakeEval()', () => { }); it('requires a dot after a function call', () => { - expect(() => fakeEval('airline.airline()iataCode', faker)).toThrow( + expect(() => fakeEval('airline.airline()iataCode', faker)).toThrowError( new FakerError( "Expected dot ('.'), open parenthesis ('('), or nothing after function call but got 'i'" ) @@ -124,38 +124,35 @@ describe('fakeEval()', () => { }); it('requires a function for parameters', () => { - // TODO @ST-DDT 2023-12-11: Replace in v10 - // expect(faker.definitions.person.first_name.generic).toBeDefined(); - //expect(() => fakeEval('person.first_name().generic', faker)).toThrow( - // new FakerError(`Cannot resolve expression 'person.first_name'`) - // ); - const actual = fakeEval('person.first_name().generic', faker); - expect(faker.definitions.person.first_name.generic ?? []).toContain(actual); + expect(faker.definitions.person.first_name.generic).toBeDefined(); + expect(() => fakeEval('person.first_name().generic', faker)).toThrowError( + new FakerError("Cannot resolve expression 'person.first_name().generic'") + ); }); it('requires a valid expression (missing value)', () => { - expect(() => fakeEval('foo.bar', faker)).toThrow( - new FakerError(`Cannot resolve expression 'foo.bar'`) + expect(() => fakeEval('foo.bar', faker)).toThrowError( + new FakerError("Cannot resolve expression 'foo.bar'") ); }); it('requires a valid expression (trailing dot)', () => { - expect(() => fakeEval('airline.airline.', faker)).toThrow( + expect(() => fakeEval('airline.airline.', faker)).toThrowError( new FakerError("Found dot without property name in 'airline.'") ); - expect(() => fakeEval('airline.airline.()', faker)).toThrow( + expect(() => fakeEval('airline.airline.()', faker)).toThrowError( new FakerError("Found dot without property name in 'airline.()'") ); - expect(() => fakeEval('airline.airline.().iataCode', faker)).toThrow( + expect(() => fakeEval('airline.airline.().iataCode', faker)).toThrowError( new FakerError("Found dot without property name in 'airline.().iataCode'") ); }); it('requires a valid expression (unclosed parenthesis)', () => { - expect(() => fakeEval('airline.airline(', faker)).toThrow( + expect(() => fakeEval('airline.airline(', faker)).toThrowError( new FakerError("Missing closing parenthesis in '('") ); - expect(() => fakeEval('airline.airline(.iataCode', faker)).toThrow( + expect(() => fakeEval('airline.airline(.iataCode', faker)).toThrowError( new FakerError("Missing closing parenthesis in '(.iataCode'") ); }); diff --git a/test/modules/helpers.spec-d.ts b/test/modules/helpers.spec-d.ts index 11ce8c88df3..7e1729d8078 100644 --- a/test/modules/helpers.spec-d.ts +++ b/test/modules/helpers.spec-d.ts @@ -45,11 +45,15 @@ describe('helpers', () => { }); describe('maybe', () => { - it('const generic single element', () => { - // TODO @ST-DDT 2024-02-25: Check why this is detected as `number` instead of `1` + it('generic single element', () => { const actual = faker.helpers.maybe(() => 1); expectTypeOf(actual).toEqualTypeOf(); }); + + it('const generic single element', () => { + const actual = faker.helpers.maybe(() => 1 as const); + expectTypeOf(actual).toEqualTypeOf<1 | undefined>(); + }); }); describe('objectKey', () => { diff --git a/test/modules/helpers.spec.ts b/test/modules/helpers.spec.ts index 241e8f52d84..d1fc3d3db8a 100644 --- a/test/modules/helpers.spec.ts +++ b/test/modules/helpers.spec.ts @@ -3,7 +3,6 @@ import { FakerError, faker } from '../../src'; import { luhnCheck } from '../../src/modules/helpers/luhn-check'; import { seededTests } from '../support/seeded-runs'; import { times } from './../support/times'; -import './../vitest-extensions'; const NON_SEEDED_BASED_RUN = 5; @@ -191,7 +190,7 @@ describe('helpers', () => { }); it('should throw on an empty array', () => { - expect(() => faker.helpers.arrayElement([])).toThrow( + expect(() => faker.helpers.arrayElement([])).toThrowError( new FakerError('Cannot get value from empty dataset.') ); }); @@ -200,7 +199,7 @@ describe('helpers', () => { it.each(['', 0, undefined, null, false])('%s', (nullishValue) => { expect(() => faker.helpers.arrayElement([nullishValue]) - ).not.toThrow(); + ).not.toThrowError(); }); }); }); @@ -285,7 +284,7 @@ describe('helpers', () => { }); it('should throw if the array is empty', () => { - expect(() => faker.helpers.weightedArrayElement([])).toThrow( + expect(() => faker.helpers.weightedArrayElement([])).toThrowError( new FakerError( 'weightedArrayElement expects an array with at least one element' ) @@ -303,7 +302,9 @@ describe('helpers', () => { { weight: 0, value: 'hello' }, { weight: 5, value: 'to' }, ]; - expect(() => faker.helpers.weightedArrayElement(testArray)).toThrow( + expect(() => + faker.helpers.weightedArrayElement(testArray) + ).toThrowError( new FakerError( 'weightedArrayElement expects an array of { weight, value } objects where weight is a positive number' ) @@ -315,7 +316,9 @@ describe('helpers', () => { { weight: -1, value: 'hello' }, { weight: 5, value: 'to' }, ]; - expect(() => faker.helpers.weightedArrayElement(testArray)).toThrow( + expect(() => + faker.helpers.weightedArrayElement(testArray) + ).toThrowError( new FakerError( 'weightedArrayElement expects an array of { weight, value } objects where weight is a positive number' ) @@ -330,7 +333,7 @@ describe('helpers', () => { const frozenArray = Object.freeze(testArray); expect(() => faker.helpers.weightedArrayElement(frozenArray) - ).not.toThrow(); + ).not.toThrowError(); }); }); @@ -466,7 +469,7 @@ describe('helpers', () => { [nullishValue, nullishValue, nullishValue], 2 ) - ).not.toThrow(); + ).not.toThrowError(); }); }); }); @@ -552,7 +555,7 @@ describe('helpers', () => { expect(actual).toMatch(/^w$/); }); - it.skip('handles case insensitive characters', () => { + it.todo('handles case insensitive characters', () => { const set = new Set(); for (let i = 0; i < 100; i++) { const actual = faker.helpers.fromRegExp(/w/i); @@ -571,7 +574,7 @@ describe('helpers', () => { expect(actual).toMatch(/^%$/i); }); - it.skip('handles the wildcard character', () => { + it.todo('handles the wildcard character', () => { const set = new Set(); for (let i = 0; i < 100; i++) { const actual = faker.helpers.fromRegExp(/./); @@ -667,11 +670,13 @@ describe('helpers', () => { }); it('throws error when min > max outside set', () => { - expect(() => faker.helpers.fromRegExp('#{10,5}')).toThrow(); + expect(() => faker.helpers.fromRegExp('#{10,5}')).toThrowError(); }); it('throws error when min > max in set', () => { - expect(() => faker.helpers.fromRegExp('[a-z0-9]{10,5}')).toThrow(); + expect(() => + faker.helpers.fromRegExp('[a-z0-9]{10,5}') + ).toThrowError(); }); it('deals with RegExp object', () => { @@ -723,7 +728,7 @@ describe('helpers', () => { 'i', 'j', ]); - expect(() => faker.helpers.shuffle(input)).not.toThrow(); + expect(() => faker.helpers.shuffle(input)).not.toThrowError(); }); it('does not mutate the input array when inplace is false', () => { @@ -741,7 +746,7 @@ describe('helpers', () => { ]); expect(() => faker.helpers.shuffle(input, { inplace: false }) - ).not.toThrow(); + ).not.toThrowError(); }); it('throws an error when the input array is readonly and inplace is true', () => { @@ -760,7 +765,7 @@ describe('helpers', () => { expect(() => // @ts-expect-error: we want to test that it throws faker.helpers.shuffle(input, { inplace: true }) - ).toThrow(); + ).toThrowError(); }); }); @@ -894,7 +899,9 @@ describe('helpers', () => { probability: 0.4, }); - expect(() => faker.helpers.maybe(() => 'foo', input)).not.toThrow(); + expect(() => + faker.helpers.maybe(() => 'foo', input) + ).not.toThrowError(); }); }); @@ -911,7 +918,7 @@ describe('helpers', () => { }); it('should throw if given object is empty', () => { - expect(() => faker.helpers.objectKey({})).toThrow( + expect(() => faker.helpers.objectKey({})).toThrowError( new FakerError('Cannot get value from empty dataset.') ); }); @@ -930,7 +937,7 @@ describe('helpers', () => { }); it('should throw if given object is empty', () => { - expect(() => faker.helpers.objectValue({})).toThrow( + expect(() => faker.helpers.objectValue({})).toThrowError( new FakerError('Cannot get value from empty dataset.') ); }); @@ -951,7 +958,7 @@ describe('helpers', () => { }); it('should throw if given object is empty', () => { - expect(() => faker.helpers.objectEntry({})).toThrow( + expect(() => faker.helpers.objectEntry({})).toThrowError( new FakerError('Cannot get value from empty dataset.') ); }); @@ -1011,13 +1018,13 @@ describe('helpers', () => { }); it('should throw with empty array parameters', () => { - expect(() => faker.helpers.fake([])).toThrow( + expect(() => faker.helpers.fake([])).toThrowError( new FakerError('Cannot get value from empty dataset.') ); }); it('does not allow invalid module name', () => { - expect(() => faker.helpers.fake('{{foo.bar}}')).toThrow( + expect(() => faker.helpers.fake('{{foo.bar}}')).toThrowError( new FakerError(`Cannot resolve expression 'foo.bar'`) ); }); @@ -1028,7 +1035,7 @@ describe('helpers', () => { }); it('does not allow invalid method name', () => { - expect(() => faker.helpers.fake('{{location.foo}}')).toThrow( + expect(() => faker.helpers.fake('{{location.foo}}')).toThrowError( new FakerError(`Cannot resolve expression 'location.foo'`) ); }); @@ -1120,17 +1127,6 @@ describe('helpers', () => { delete (faker.string as any).special; }); - it('should support deprecated module aliases', () => { - expect(faker.definitions.location.state).toContain( - faker.helpers.fake('{{address.state}}') - ); - expect([ - ...(faker.definitions.person.first_name.female ?? []), - ...(faker.definitions.person.first_name.generic ?? []), - ...(faker.definitions.person.first_name.male ?? []), - ]).toContain(faker.helpers.fake('{{name.firstName}}')); - }); - it('should not trim whitespace', () => { expect(faker.helpers.fake(' --- ')).toBe(' --- '); }); diff --git a/test/modules/image.spec.ts b/test/modules/image.spec.ts index 0d494cb4a42..c7ffb43118e 100644 --- a/test/modules/image.spec.ts +++ b/test/modules/image.spec.ts @@ -1,6 +1,6 @@ import isDataURI from 'validator/lib/isDataURI'; import { describe, expect, it } from 'vitest'; -import { faker } from '../../src'; +import { faker, Sex } from '../../src'; import { seededTests } from '../support/seeded-runs'; /** @@ -19,12 +19,12 @@ import { seededTests } from '../support/seeded-runs'; function assertValidUrl(address: string): void { expect(address).toBeTypeOf('string'); expect(address).toMatch(/^https:\/\//); - expect(() => new URL(address)).not.toThrow(); + expect(() => new URL(address)).not.toThrowError(); } describe('image', () => { seededTests(faker, 'image', (t) => { - t.itEach('avatar', 'avatarGitHub', 'avatarLegacy'); + t.itEach('avatar', 'avatarGitHub'); t.describe('url', (t) => { t.it('noArgs') @@ -61,33 +61,6 @@ describe('image', () => { }); }); - t.describe('urlPlaceholder', (t) => { - t.it('noArgs') - .it('with width', { width: 128 }) - .it('with height', { height: 128 }) - .it('with width and height', { width: 128, height: 128 }) - .it('with backgroundColor', { backgroundColor: 'FF0000' }) - .it('with textColor', { textColor: '0000FF' }) - .it('with format', { format: 'webp' }) - .it('with text', { text: 'Hello' }) - .it('with all options', { - width: 128, - height: 128, - backgroundColor: 'FF0000', - textColor: '0000FF', - format: 'png', - text: 'hello', - }) - .it('with empty colors and text', { - width: 128, - height: 128, - backgroundColor: '', - textColor: '', - format: 'png', - text: '', - }); - }); - t.describe('dataUri', (t) => { t.it('noArgs') .it('with width', { width: 128 }) @@ -137,20 +110,6 @@ describe('image', () => { }); }); - describe('avatarLegacy', () => { - it('should return a random avatar url from cloudflare-ipfs', () => { - // eslint-disable-next-line @typescript-eslint/no-deprecated - const actual = faker.image.avatarLegacy(); - - expect(actual).toBeTypeOf('string'); - expect(actual).toMatch( - /^https:\/\/cloudflare-ipfs\.com\/ipfs\/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye\/avatar\/\d{1,4}\.jpg$/ - ); - // The links aren't working anymore - there is nothing we can do about it - // assertWebAddress(avatarUrl); - }); - }); - describe('personPortrait', () => { it('should return a random avatar url from AI', () => { const imageUrl = faker.image.personPortrait(); @@ -159,9 +118,22 @@ describe('image', () => { expect(imageUrl).toMatch( /^https:\/\/cdn\.jsdelivr\.net\/gh\/faker-js\/assets-person-portrait\/(female|male)\/512\/\d{1,2}\.jpg$/ ); - expect(() => new URL(imageUrl)).not.toThrow(); + expect(() => new URL(imageUrl)).not.toThrowError(); }); + it.each(Object.values(Sex))( + 'should return a random avatar url from AI for %s', + (sex) => { + const imageUrl = faker.image.personPortrait({ sex }); + + expect(imageUrl).toBeTypeOf('string'); + expect(imageUrl).toMatch( + /^https:\/\/cdn\.jsdelivr\.net\/gh\/faker-js\/assets-person-portrait\/(female|male)\/512\/\d{1,2}\.jpg$/ + ); + expect(() => new URL(imageUrl)).not.toThrowError(); + } + ); + it('should return a random avatar url from AI with fixed size and sex', () => { const imageUrl = faker.image.personPortrait({ sex: 'male', size: 128 }); @@ -169,7 +141,7 @@ describe('image', () => { expect(imageUrl).toMatch( /^https:\/\/cdn\.jsdelivr\.net\/gh\/faker-js\/assets-person-portrait\/male\/128\/\d{1,2}\.jpg$/ ); - expect(() => new URL(imageUrl)).not.toThrow(); + expect(() => new URL(imageUrl)).not.toThrowError(); }); }); @@ -229,18 +201,6 @@ describe('image', () => { }); }); - describe('urlPlaceholder', () => { - it('should return a random image url from Placeholder', () => { - // eslint-disable-next-line @typescript-eslint/no-deprecated - const actual = faker.image.urlPlaceholder(); - - assertValidUrl(actual); - expect(actual).toMatch( - /^https:\/\/via\.placeholder\.com\/\d+x\d+\/[0-9a-fA-F]{6}\/[0-9a-fA-F]{6}\.[a-z]{3,4}\?text=.+$/ - ); - }); - }); - describe('dataUri', () => { it('should return an image data uri', () => { const actual = faker.image.dataUri(); diff --git a/test/modules/internet.spec.ts b/test/modules/internet.spec.ts index 9dc376f9f3a..c3678cbbda8 100644 --- a/test/modules/internet.spec.ts +++ b/test/modules/internet.spec.ts @@ -2,7 +2,6 @@ import { isEmail, isFQDN, isHexadecimal, - isHexColor, isIP, isJWT, isMACAddress, @@ -67,20 +66,6 @@ describe('internet', () => { }); }); - t.describe('userName', (t) => { - t.it('noArgs') - .it('with firstName option', { firstName: 'Jane' }) - .it('with lastName option', { lastName: 'Doe' }) - .it('with all option', { firstName: 'Jane', lastName: 'Doe' }) - .it('with Latin names', { firstName: 'Jane', lastName: 'Doe' }) - .it('with accented names', { firstName: 'Hélene', lastName: 'Müller' }) - .it('with Cyrillic names', { - firstName: 'Фёдор', - lastName: 'Достоевский', - }) - .it('with Chinese names', { firstName: '大羽', lastName: '陳' }); - }); - t.describe('username', (t) => { t.it('noArgs') .it('with firstName option', { firstName: 'Jane' }) @@ -133,18 +118,6 @@ describe('internet', () => { t.it('noArgs').it('with options', { types: ['clientError'] }); }); - t.describe('color', (t) => { - t.it('noArgs') - .it('with blueBase option', { blueBase: 100 }) - .it('with greenBase option', { greenBase: 100 }) - .it('with redBase option', { redBase: 100 }) - .it('with all options', { - redBase: 100, - blueBase: 100, - greenBase: 100, - }); - }); - t.describe('mac', (t) => { t.it('noArgs') .it('with separator', ':') @@ -381,78 +354,6 @@ describe('internet', () => { }); }); - describe('userName()', () => { - it('should return a random userName', () => { - // eslint-disable-next-line @typescript-eslint/no-deprecated - const userName = faker.internet.userName(); - - expect(userName).toBeTruthy(); - expect(userName).toBeTypeOf('string'); - expect(userName).toMatch(/\w/); - }); - - it('should return a random userName with given firstName', () => { - // eslint-disable-next-line @typescript-eslint/no-deprecated - const userName = faker.internet.userName({ firstName: 'Aiden' }); - - expect(userName).toBeTruthy(); - expect(userName).toBeTypeOf('string'); - expect(userName).toMatch(/\w/); - expect(userName).includes('Aiden'); - }); - - it('should return a random userName with given firstName and lastName', () => { - // eslint-disable-next-line @typescript-eslint/no-deprecated - const userName = faker.internet.userName({ - firstName: 'Aiden', - lastName: 'Harann', - }); - - expect(userName).toBeTruthy(); - expect(userName).toBeTypeOf('string'); - expect(userName).includes('Aiden'); - expect(userName).includes('Harann'); - expect(userName).toMatch(/^Aiden[._]Harann\d*/); - }); - - it('should strip accents', () => { - // eslint-disable-next-line @typescript-eslint/no-deprecated - const userName = faker.internet.userName({ - firstName: 'Adèle', - lastName: 'Smith', - }); - expect(userName).includes('Adele'); - expect(userName).includes('Smith'); - }); - - it('should transliterate Cyrillic', () => { - // eslint-disable-next-line @typescript-eslint/no-deprecated - const userName = faker.internet.userName({ - firstName: 'Амос', - lastName: 'Васильев', - }); - expect(userName).includes('Amos'); - }); - - it('should provide a fallback for Chinese etc', () => { - // eslint-disable-next-line @typescript-eslint/no-deprecated - const userName = faker.internet.userName({ - firstName: '大羽', - lastName: '陳', - }); - expect(userName).includes('hlzp8d'); - }); - - it('should provide a fallback special unicode characters', () => { - // eslint-disable-next-line @typescript-eslint/no-deprecated - const userName = faker.internet.userName({ - firstName: '🐼', - lastName: '❤️', - }); - expect(userName).includes('2qt8'); - }); - }); - describe('username()', () => { it('should return a random username', () => { const username = faker.internet.username(); @@ -771,7 +672,7 @@ describe('internet', () => { faker.internet.ipv4({ cidrBlock, }) - ).toThrow( + ).toThrowError( new FakerError( `Invalid CIDR block provided: ${cidrBlock}. Must be in the format x.x.x.x/y.` ) @@ -845,28 +746,6 @@ describe('internet', () => { }); }); - describe('color()', () => { - it('should return a random hex value', () => { - const color = faker.internet.color(); - - expect(color).toBeTruthy(); - expect(color).toBeTypeOf('string'); - expect(color).toSatisfy(isHexColor); - }); - - it('should return a random hex value with given values', () => { - const color = faker.internet.color({ - redBase: 100, - greenBase: 100, - blueBase: 100, - }); - - expect(color).toBeTruthy(); - expect(color).toBeTypeOf('string'); - expect(color).toSatisfy(isHexColor); - }); - }); - describe('mac()', () => { it('should return a random MAC address with 6 hexadecimal digits', () => { const mac = faker.internet.mac(); @@ -985,7 +864,7 @@ describe('internet', () => { expect(password).toBeTruthy(); expect(password).toBeTypeOf('string'); expect(password).toHaveLength(32); - expect(password).toMatch(/^a!G6/); + expect(password).toStartWith('a!G6'); expect(password).toSatisfy(isStrongPassword); }); }); diff --git a/test/modules/location.spec.ts b/test/modules/location.spec.ts index 78b688126dc..31bc1caa6cf 100644 --- a/test/modules/location.spec.ts +++ b/test/modules/location.spec.ts @@ -1,3 +1,6 @@ +import isISO31661Alpha2 from 'validator/lib/isISO31661Alpha2'; +import isISO31661Alpha3 from 'validator/lib/isISO31661Alpha3'; +import isISO31661Numeric from 'validator/lib/isISO31661Numeric'; import { describe, expect, it } from 'vitest'; import { FakerError, @@ -5,6 +8,7 @@ import { faker, fakerEN_CA, fakerEN_US, + simpleFaker, } from '../../src'; import { seededTests } from '../support/seeded-runs'; import { times } from './../support/times'; @@ -165,6 +169,7 @@ describe('location', () => { expect(countryCode).toBeTruthy(); expect(countryCode).toMatch(/^[A-Z]{2}$/); + expect(countryCode).toSatisfy(isISO31661Alpha2); }); it('returns random alpha-3 countryCode', () => { @@ -172,6 +177,7 @@ describe('location', () => { expect(countryCode).toBeTruthy(); expect(countryCode).toMatch(/^[A-Z]{3}$/); + expect(countryCode).toSatisfy(isISO31661Alpha3); }); it('returns random numeric countryCode', () => { @@ -179,6 +185,7 @@ describe('location', () => { expect(countryCode).toBeTruthy(); expect(countryCode).toMatch(/^\d{3}$/); + expect(countryCode).toSatisfy(isISO31661Numeric); }); }); @@ -217,9 +224,10 @@ describe('location', () => { }); it('should throw when definitions.location.postcode_by_state not set', () => { - expect(() => faker.location.zipCode({ state: 'XX' })).toThrow( + expect(() => faker.location.zipCode({ state: 'XX' })).toThrowError( new FakerError( `The locale data for 'location.postcode_by_state' are missing in this locale. + If this is a custom Faker instance, please make sure all required locales are used e.g. '[de_AT, de, en, base]'. Please contribute the missing data to the project or use a locale/Faker instance that has these data. For more information see https://fakerjs.dev/guide/localization.html` ) @@ -227,7 +235,9 @@ describe('location', () => { }); it('should throw when definitions.location.postcode_by_state[state] is unknown', () => { - expect(() => fakerEN_US.location.zipCode({ state: 'XX' })).toThrow( + expect(() => + fakerEN_US.location.zipCode({ state: 'XX' }) + ).toThrowError( new FakerError('No zip code definition found for state "XX"') ); }); @@ -236,26 +246,26 @@ describe('location', () => { describe('buildingNumber()', () => { it('never starts with a zero', () => { const buildingNumber = faker.location.buildingNumber(); - expect(buildingNumber).not.toMatch(/^0/); + expect(buildingNumber).not.toStartWith('0'); }); }); - describe('latitude()', () => { + describe.each([faker, simpleFaker])('latitude()', (fakerFn) => { it('returns a number', () => { - const latitude = faker.location.latitude(); + const latitude = fakerFn.location.latitude(); expect(latitude).toBeTypeOf('number'); }); it('returns random latitude', () => { - const latitude = faker.location.latitude(); + const latitude = fakerFn.location.latitude(); expect(latitude).toBeGreaterThanOrEqual(-90.0); expect(latitude).toBeLessThanOrEqual(90.0); }); it('returns latitude with min and max and default precision', () => { - const latitude = faker.location.latitude({ max: 5, min: -5 }); + const latitude = fakerFn.location.latitude({ max: 5, min: -5 }); expect( precision(latitude), @@ -267,7 +277,7 @@ describe('location', () => { }); it('returns random latitude with custom precision', () => { - const latitude = faker.location.latitude({ precision: 7 }); + const latitude = fakerFn.location.latitude({ precision: 7 }); expect( precision(latitude), @@ -279,22 +289,22 @@ describe('location', () => { }); }); - describe('longitude()', () => { + describe.each([faker, simpleFaker])('longitude()', (fakerFn) => { it('returns a number', () => { - const longitude = faker.location.longitude(); + const longitude = fakerFn.location.longitude(); expect(longitude).toBeTypeOf('number'); }); it('returns random longitude', () => { - const longitude = faker.location.longitude(); + const longitude = fakerFn.location.longitude(); expect(longitude).toBeGreaterThanOrEqual(-180); expect(longitude).toBeLessThanOrEqual(180); }); it('returns random longitude with min and max and default precision', () => { - const longitude = faker.location.longitude({ max: 100, min: -30 }); + const longitude = fakerFn.location.longitude({ max: 100, min: -30 }); expect( precision(longitude), @@ -306,7 +316,7 @@ describe('location', () => { }); it('returns random longitude with custom precision', () => { - const longitude = faker.location.longitude({ precision: 7 }); + const longitude = fakerFn.location.longitude({ precision: 7 }); expect( precision(longitude), @@ -369,47 +379,50 @@ describe('location', () => { }); }); - describe('nearbyGPSCoordinate()', () => { - 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).toHaveLength(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); - } - ); - }); + describe.each([faker, simpleFaker])( + 'nearbyGPSCoordinate()', + (fakerFn) => { + 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 = fakerFn.location.latitude(); + const longitude1 = fakerFn.location.longitude(); + + const coordinate = fakerFn.location.nearbyGPSCoordinate({ + origin: [latitude1, longitude1], + radius, + isMetric, + }); + + expect(coordinate).toHaveLength(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); + } + ); + } + ); describe('timeZone', () => { it('should return a random timezone', () => { diff --git a/test/modules/number.spec.ts b/test/modules/number.spec.ts index d2762cf467c..ae5cb4779e1 100644 --- a/test/modules/number.spec.ts +++ b/test/modules/number.spec.ts @@ -50,6 +50,7 @@ describe('number', () => { .it('with boolean value', true) .it('with bigint value', 123n) .it('with options', { min: -42, max: 69 }) + .it('with multipleOf', { multipleOf: 7919n }) .it('with big options', { min: 6135715171537515454317351n, max: 32465761264574654845432354n, @@ -100,7 +101,7 @@ describe('number', () => { }) ) ), - ].sort(); + ].toSorted(); expect(results).toEqual([20, 30]); }); @@ -115,7 +116,7 @@ describe('number', () => { }) ) ), - ].sort(); + ].toSorted(); expect(results).toEqual([10, 20, 30, 40, 50]); }); @@ -126,7 +127,7 @@ describe('number', () => { multipleOf: 0.1, }; - expect(() => faker.number.int(input)).toThrow( + expect(() => faker.number.int(input)).toThrowError( new FakerError('multipleOf should be an integer.') ); }); @@ -138,7 +139,7 @@ describe('number', () => { multipleOf: -1, }; - expect(() => faker.number.int(input)).toThrow( + expect(() => faker.number.int(input)).toThrowError( new FakerError('multipleOf should be greater than 0.') ); }); @@ -150,11 +151,23 @@ describe('number', () => { multipleOf: 10, }; - expect(() => faker.number.int(input)).toThrow( + expect(() => faker.number.int(input)).toThrowError( new FakerError('No suitable integer value between 11 and 19 found.') ); }); + it('throws for impossible multipleOf where min=max', () => { + const input = { + min: 11, + max: 11, + multipleOf: 10, + }; + + expect(() => faker.number.int(input)).toThrowError( + new FakerError('No suitable integer value between 11 and 11 found.') + ); + }); + it('should return a random number given a maximum value as Number', () => { const actual = faker.number.int(10); @@ -243,7 +256,7 @@ describe('number', () => { otherProperty: 'hello darkness my old friend', }); - expect(() => faker.number.int(input)).not.toThrow(); + expect(() => faker.number.int(input)).not.toThrowError(); }); it('should throw when min > max', () => { @@ -252,7 +265,7 @@ describe('number', () => { expect(() => { faker.number.int({ min, max }); - }).toThrow( + }).toThrowError( new FakerError(`Max ${max} should be greater than min ${min}.`) ); }); @@ -260,7 +273,7 @@ describe('number', () => { it('should throw when there is no integer between min and max', () => { expect(() => { faker.number.int({ min: 2.1, max: 2.9 }); - }).toThrow( + }).toThrowError( new FakerError(`No suitable integer value between 2.1 and 2.9 found.`) ); }); @@ -334,7 +347,7 @@ describe('number', () => { }) ) ), - ].sort(); + ].toSorted(); expect(results).toEqual([0, 0.5, 1, 1.5]); }); @@ -359,7 +372,7 @@ describe('number', () => { multipleOf: 0.25, fractionDigits: 6, }) - ).toThrow( + ).toThrowError( new FakerError( 'multipleOf and fractionDigits cannot be set at the same time.' ) @@ -367,33 +380,59 @@ describe('number', () => { }); it('throws an error for non integer fractionDigits numbers', () => { - expect(() => faker.number.float({ fractionDigits: 1.337 })).toThrow( - new FakerError('fractionDigits should be an integer.') - ); + expect(() => + faker.number.float({ fractionDigits: 1.337 }) + ).toThrowError(new FakerError('fractionDigits should be an integer.')); }); it('throws an error for negative fractionDigits', () => { - expect(() => faker.number.float({ fractionDigits: -2 })).toThrow( + expect(() => faker.number.float({ fractionDigits: -2 })).toThrowError( new FakerError('fractionDigits should be greater than or equal to 0.') ); }); it('throws an error for multipleOf 0', () => { - expect(() => faker.number.float({ multipleOf: 0 })).toThrow( + expect(() => faker.number.float({ multipleOf: 0 })).toThrowError( new FakerError('multipleOf should be greater than 0.') ); }); it('throws an error for negative multipleOf', () => { - expect(() => faker.number.float({ multipleOf: -0.01 })).toThrow( + expect(() => faker.number.float({ multipleOf: -0.01 })).toThrowError( new FakerError('multipleOf should be greater than 0.') ); }); + it('throws for impossible multipleOf', () => { + const input = { + min: 11, + max: 19, + multipleOf: 10, + }; + + expect(() => faker.number.float(input)).toThrowError( + new FakerError( + 'No suitable integer value between 1.1 and 1.9000000000000001 found.' + ) + ); + }); + + it('throws for impossible multipleOf where min=max', () => { + const input = { + min: 11, + max: 11, + multipleOf: 10, + }; + + expect(() => faker.number.float(input)).toThrowError( + new FakerError('No suitable integer value between 1.1 and 1.1 found.') + ); + }); + it('should not modify the input object', () => { expect(() => faker.number.float(Object.freeze({ min: 1, max: 2 })) - ).not.toThrow(); + ).not.toThrowError(); }); it('should throw when min > max', () => { @@ -402,7 +441,7 @@ describe('number', () => { expect(() => { faker.number.float({ min, max }); - }).toThrow( + }).toThrowError( new FakerError(`Max ${max} should be greater than min ${min}.`) ); }); @@ -445,7 +484,7 @@ describe('number', () => { expect(() => { faker.number.binary({ min, max }); - }).toThrow( + }).toThrowError( new FakerError(`Max ${max} should be greater than min ${min}.`) ); }); @@ -453,7 +492,7 @@ describe('number', () => { it('should throw when there is no integer between min and max', () => { expect(() => { faker.number.binary({ min: 2.1, max: 2.9 }); - }).toThrow( + }).toThrowError( new FakerError(`No suitable integer value between 2.1 and 2.9 found.`) ); }); @@ -496,7 +535,7 @@ describe('number', () => { expect(() => { faker.number.octal({ min, max }); - }).toThrow( + }).toThrowError( new FakerError(`Max ${max} should be greater than min ${min}.`) ); }); @@ -504,7 +543,7 @@ describe('number', () => { it('should throw when there is no integer between min and max', () => { expect(() => { faker.number.octal({ min: 2.1, max: 2.9 }); - }).toThrow( + }).toThrowError( new FakerError(`No suitable integer value between 2.1 and 2.9 found.`) ); }); @@ -544,7 +583,7 @@ describe('number', () => { expect(() => { faker.number.hex({ min, max }); - }).toThrow( + }).toThrowError( new FakerError(`Max ${max} should be greater than min ${min}.`) ); }); @@ -552,7 +591,7 @@ describe('number', () => { it('should throw when there is no integer between min and max', () => { expect(() => { faker.number.hex({ min: 2.1, max: 2.9 }); - }).toThrow( + }).toThrowError( new FakerError(`No suitable integer value between 2.1 and 2.9 found.`) ); }); @@ -621,7 +660,7 @@ describe('number', () => { otherProperty: 'hello darkness my old friend', }); - expect(() => faker.number.bigInt(input)).not.toThrow(); + expect(() => faker.number.bigInt(input)).not.toThrowError(); }); it('should throw when min > max', () => { @@ -630,8 +669,142 @@ describe('number', () => { expect(() => { faker.number.bigInt({ min, max }); - }).toThrow( - new FakerError(`Max ${max} should be larger then min ${min}.`) + }).toThrowError( + new FakerError(`Max ${max} should be larger than min ${min}.`) + ); + }); + + it('should generate a random bigint with a given multipleOf of 1n', () => { + const generateBigInt = faker.number.bigInt({ multipleOf: 1n }); + expect(generateBigInt).toBeTypeOf('bigint'); + }); + + it('should generate a random bigint with a given multipleOf of 7919n', () => { + const generateBigInt = faker.number.bigInt({ multipleOf: 7919n }); + expect(generateBigInt).toBeTypeOf('bigint'); + expect(generateBigInt % 7919n).toBe(0n); + }); + + it('should generate a random bigint with a given max value less than multipleOf', () => { + const generatedBigInt = faker.number.bigInt({ + max: 10n, + multipleOf: 20n, + }); + expect(generatedBigInt).toBeTypeOf('bigint'); + expect(generatedBigInt % 20n).toBe(0n); + }); + + it('should generate a suitable bigint value between negative min and max', () => { + const generateBigInt = faker.number.bigInt({ + min: -9, + max: 0, + multipleOf: 5, + }); + expect(generateBigInt).toBeTypeOf('bigint'); + expect(generateBigInt % 5n).toBe(0n); + }); + + it('should generate a suitable bigint value between negative min and negative max', () => { + const generateBigInt = faker.number.bigInt({ + min: -9, + max: -1, + multipleOf: 5, + }); + expect(generateBigInt).toBeTypeOf('bigint'); + expect(generateBigInt).toBe(-5n); + }); + + it('should generate a suitable bigint value between negative min and negative max (edge case)', () => { + const generateBigInt = faker.number.bigInt({ + min: -9, + max: -1, + multipleOf: 9, + }); + expect(generateBigInt).toBeTypeOf('bigint'); + expect(generateBigInt).toBe(-9n); + }); + + it('should return inclusive positive min/max value', () => { + const positive4 = 4n; + const positive5 = 5n; + let foundPositive4 = false; + let foundPositive5 = false; + + for (let iter = 0; iter < 1000; iter++) { + const actual = faker.number.bigInt({ + min: positive4, + max: positive5, + }); + + if (actual === positive4) { + foundPositive4 = true; + } else if (actual === positive5) { + foundPositive5 = true; + } + + expect(actual).toBeTypeOf('bigint'); + expect(actual).toBeGreaterThanOrEqual(positive4); + expect(actual).toBeLessThanOrEqual(positive5); + + if (foundPositive4 && foundPositive5) { + break; + } + } + + expect(foundPositive4).toBeTruthy(); + expect(foundPositive5).toBeTruthy(); + }); + + it('should return inclusive negative min/max value', () => { + const negative4 = -4n; + const negative5 = -5n; + let foundNegative4 = false; + let foundNegative5 = false; + + for (let iter = 0; iter < 1000; iter++) { + const actual = faker.number.bigInt({ + min: negative5, + max: negative4, + }); + + if (actual === negative4) { + foundNegative4 = true; + } else if (actual === negative5) { + foundNegative5 = true; + } + + expect(actual).toBeTypeOf('bigint'); + expect(actual).toBeGreaterThanOrEqual(negative5); + expect(actual).toBeLessThanOrEqual(negative4); + + if (foundNegative4 && foundNegative5) { + break; + } + } + + expect(foundNegative4).toBeTruthy(); + expect(foundNegative5).toBeTruthy(); + }); + + it('should throw for non-positive multipleOf', () => { + expect(() => faker.number.bigInt({ multipleOf: 0n })).toThrowError( + new FakerError('multipleOf should be greater than 0.') + ); + }); + + it('should throw if there is no suitable bigint value between min and max', () => { + expect(() => + faker.number.bigInt({ min: 6, max: 9, multipleOf: 5 }) + ).toThrowError( + new FakerError('No suitable bigint value between 6 and 9 found.') + ); + }); + + it('should throw if there is no suitable bigint value between same min and max', () => { + expect(() => + faker.number.bigInt({ min: 1, max: 1, multipleOf: 5 }) + ).toThrowError( + new FakerError('No suitable bigint value between 1 and 1 found.') ); }); }); @@ -682,19 +855,23 @@ describe('number', () => { it('should throw when min value is less than 1', () => { expect(() => { faker.number.romanNumeral({ min: 0 }); - }).toThrow(new FakerError('Min value 0 should be 1 or greater.')); + }).toThrowError(new FakerError('Min value 0 should be 1 or greater.')); }); it('should throw when max value is greater than 3999', () => { expect(() => { faker.number.romanNumeral({ max: 4000 }); - }).toThrow(new FakerError('Max value 4000 should be 3999 or less.')); + }).toThrowError( + new FakerError('Max value 4000 should be 3999 or less.') + ); }); it('should throw when max value is less than min value', () => { expect(() => { faker.number.romanNumeral({ min: 500, max: 100 }); - }).toThrow(new FakerError('Max 100 should be greater than min 500.')); + }).toThrowError( + new FakerError('Max 100 should be greater than min 500.') + ); }); }); }); diff --git a/test/modules/person.spec.ts b/test/modules/person.spec.ts index 922da6e50ce..36b09dc66c6 100644 --- a/test/modules/person.spec.ts +++ b/test/modules/person.spec.ts @@ -8,7 +8,6 @@ const NON_SEEDED_BASED_RUN = 5; describe('person', () => { seededTests(faker, 'person', (t) => { t.itEach( - 'sexType', 'gender', 'jobTitle', 'jobDescriptor', @@ -17,6 +16,13 @@ describe('person', () => { 'bio' ); + t.describe('sexType', (t) => + t + .it('noArgs') + .it('with includeGeneric=true', { includeGeneric: true }) + .it('with includeGeneric=false', { includeGeneric: false }) + ); + t.describeEach( 'firstName', 'lastName', @@ -53,11 +59,22 @@ describe('person', () => { }); it('should return a sex-specific first name', () => { - let name = faker.person.firstName('female'); - expect(faker.definitions.person.first_name.female).toContain(name); + let name = faker.person.firstName('generic'); + expect(faker.definitions.person.first_name.generic).toContain(name); + + name = faker.person.firstName('female'); + const female_applicable = [ + ...(faker.definitions.person.first_name.generic ?? []), + ...(faker.definitions.person.first_name.female ?? []), + ]; + expect(female_applicable).toContain(name); name = faker.person.firstName('male'); - expect(faker.definitions.person.first_name.male).toContain(name); + const male_applicable = [ + ...(faker.definitions.person.first_name.generic ?? []), + ...(faker.definitions.person.first_name.male ?? []), + ]; + expect(male_applicable).toContain(name); }); it('should return a sex-specific first name when no sex-specific first name was defined', () => { @@ -96,13 +113,29 @@ describe('person', () => { it('should return a middle name when passed en locale', () => { let name = faker.person.middleName(); + const allApplicable = [ + ...(faker.definitions.person.middle_name.generic ?? []), + ...(faker.definitions.person.middle_name.female ?? []), + ...(faker.definitions.person.middle_name.male ?? []), + ]; + expect(allApplicable).toContain(name); + + name = faker.person.middleName('generic'); expect(faker.definitions.person.middle_name.generic).toContain(name); name = faker.person.middleName('female'); - expect(faker.definitions.person.middle_name.female).toContain(name); + const female_applicable = [ + ...(faker.definitions.person.middle_name.generic ?? []), + ...(faker.definitions.person.middle_name.female ?? []), + ]; + expect(female_applicable).toContain(name); name = faker.person.middleName('male'); - expect(faker.definitions.person.middle_name.male).toContain(name); + const male_applicable = [ + ...(faker.definitions.person.middle_name.generic ?? []), + ...(faker.definitions.person.middle_name.male ?? []), + ]; + expect(male_applicable).toContain(name); }); it('should return a sex-specific middle name', () => { @@ -122,11 +155,14 @@ describe('person', () => { expect(fullName).toContain(' '); }); - it('should return a female sex-specific name without firstName and lastName', () => { - const female_specific = [ + it('should return a female applicable name without firstName and lastName', () => { + const female_applicable = [ ...(fakerMK.rawDefinitions.person?.prefix?.female ?? []), ...(fakerMK.rawDefinitions.person?.first_name?.female ?? []), ...(fakerMK.rawDefinitions.person?.last_name?.female ?? []), + ...(fakerMK.rawDefinitions.person?.prefix?.generic ?? []), + ...(fakerMK.rawDefinitions.person?.first_name?.generic ?? []), + ...(fakerMK.rawDefinitions.person?.last_name?.generic ?? []), // ...(fakerMK.rawDefinitions.person?.suffix ?? []), Not applicable ]; @@ -134,15 +170,18 @@ describe('person', () => { const parts = fullName.split(' '); for (const part of parts) { - expect(female_specific).toContain(part); + expect(female_applicable).toContain(part); } }); - it('should return a male sex-specific name without firstName and lastName', () => { - const male_specific = [ + it('should return a male applicable name without firstName and lastName', () => { + const male_applicable = [ ...(fakerMK.rawDefinitions.person?.prefix?.male ?? []), ...(fakerMK.rawDefinitions.person?.first_name?.male ?? []), ...(fakerMK.rawDefinitions.person?.last_name?.male ?? []), + ...(fakerMK.rawDefinitions.person?.prefix?.generic ?? []), + ...(fakerMK.rawDefinitions.person?.first_name?.generic ?? []), + ...(fakerMK.rawDefinitions.person?.last_name?.generic ?? []), // ...(fakerMK.rawDefinitions.person?.suffix ?? []), Not applicable ]; @@ -150,13 +189,14 @@ describe('person', () => { const parts = fullName.split(' '); for (const part of parts) { - expect(male_specific).toContain(part); + expect(male_applicable).toContain(part); } }); - it('should return a female sex-specific name with given firstName and lastName', () => { - const male_specific = [ + it('should return a female applicable name with given firstName and lastName', () => { + const female_applicable = [ ...(fakerMK.rawDefinitions.person?.prefix?.female ?? []), + ...(fakerMK.rawDefinitions.person?.prefix?.generic ?? []), 'firstName', 'lastName', // ...(fakerMK.rawDefinitions.person?.suffix ?? []), Not applicable @@ -170,13 +210,14 @@ describe('person', () => { const parts = fullName.split(' '); for (const part of parts) { - expect(male_specific).toContain(part); + expect(female_applicable).toContain(part); } }); - it('should return a male sex-specific name with given firstName and lastName', () => { - const male_specific = [ + it('should return a male applicable name with given firstName and lastName', () => { + const male_applicable = [ ...(fakerMK.rawDefinitions.person?.prefix?.male ?? []), + ...(fakerMK.rawDefinitions.person?.prefix?.generic ?? []), 'firstName', 'lastName', // ...(fakerMK.rawDefinitions.person?.suffix ?? []), Not applicable @@ -190,7 +231,7 @@ describe('person', () => { const parts = fullName.split(' '); for (const part of parts) { - expect(male_specific).toContain(part); + expect(male_applicable).toContain(part); } }); }); @@ -214,9 +255,23 @@ describe('person', () => { }); describe('sexType()', () => { - it('should return a sex type', () => { + it('should return a sex type without generic by default', () => { const sexType = faker.person.sexType(); + expect(sexType).toBeTypeOf('string'); + expect([Sex.Female, Sex.Male]).toContain(sexType); + }); + + it('should return a sex type explicitly without generic', () => { + const sexType = faker.person.sexType({ includeGeneric: false }); + + expect(sexType).toBeTypeOf('string'); + expect([Sex.Female, Sex.Male]).toContain(sexType); + }); + + it('should return a sex type including generic', () => { + const sexType = faker.person.sexType({ includeGeneric: true }); + expect(sexType).toBeTypeOf('string'); expect(Object.values(Sex)).toContain(sexType); }); @@ -227,21 +282,41 @@ describe('person', () => { const prefix = faker.person.prefix(); expect(prefix).toBeTypeOf('string'); - expect(faker.definitions.person.prefix.generic).toContain(prefix); + const all_applicable = [ + ...(faker.definitions.person.prefix.generic ?? []), + ...(faker.definitions.person.prefix.female ?? []), + ...(faker.definitions.person.prefix.male ?? []), + ]; + expect(all_applicable).toContain(prefix); + }); + + it('should return a generic prefix with given string', () => { + const prefix = fakerMK.person.prefix('generic'); + + expect(prefix).toBeTypeOf('string'); + expect(fakerMK.definitions.person.prefix.generic).toContain(prefix); }); it('should return a female prefix with given string', () => { const prefix = fakerMK.person.prefix('female'); expect(prefix).toBeTypeOf('string'); - expect(fakerMK.definitions.person.prefix.female).toContain(prefix); + const female_applicable = [ + ...(fakerMK.definitions.person.prefix.generic ?? []), + ...(fakerMK.definitions.person.prefix.female ?? []), + ]; + expect(female_applicable).toContain(prefix); }); it('should return a male prefix with given string', () => { const prefix = fakerMK.person.prefix('male'); expect(prefix).toBeTypeOf('string'); - expect(fakerMK.definitions.person.prefix.male).toContain(prefix); + const male_applicable = [ + ...(fakerMK.definitions.person.prefix.generic ?? []), + ...(fakerMK.definitions.person.prefix.male ?? []), + ]; + expect(male_applicable).toContain(prefix); }); }); diff --git a/test/modules/string.spec.ts b/test/modules/string.spec.ts index 7b3be347749..111c1406528 100644 --- a/test/modules/string.spec.ts +++ b/test/modules/string.spec.ts @@ -1,8 +1,18 @@ +import isULID from 'validator/lib/isULID'; +import isUUID from 'validator/lib/isUUID'; import { describe, expect, it } from 'vitest'; import { FakerError, faker } from '../../src'; import { seededTests } from '../support/seeded-runs'; import { times } from './../support/times'; +function isUuidV4(value: string) { + return isUUID(value, '4'); +} + +function isUuidV7(value: string) { + return isUUID(value, '7'); +} + const NON_SEEDED_BASED_RUN = 5; describe('string', () => { @@ -111,7 +121,24 @@ describe('string', () => { .it('with length range', { min: 10, max: 20 }); }); - t.itRepeated('uuid', 5); + t.describe('uuid', (t) => { + const ulidRefDate = '2025-01-22T00:05:32.664Z'; + + t.itRepeated('noArgs', 5) + .itRepeated('with version = 4', 5, { version: 4 }) + .it('with version = 7 and string refDate', { + version: 7, + refDate: ulidRefDate, + }) + .it('with version = 7 and Date refDate', { + version: 7, + refDate: new Date(ulidRefDate), + }) + .it('with version = 7 and number refDate', { + version: 7, + refDate: new Date(ulidRefDate).getTime(), + }); + }); t.describe('ulid', (t) => { const ulidRefDate = '2021-02-21T17:09:15.711Z'; @@ -181,7 +208,7 @@ describe('string', () => { }); it('should throw if no characters are passed (string)', () => { - expect(() => faker.string.fromCharacters('')).toThrow( + expect(() => faker.string.fromCharacters('')).toThrowError( new FakerError( 'Unable to generate string: No characters to select from.' ) @@ -189,7 +216,7 @@ describe('string', () => { }); it('should throw if no characters are passed (string[])', () => { - expect(() => faker.string.fromCharacters([])).toThrow( + expect(() => faker.string.fromCharacters([])).toThrowError( new FakerError( 'Unable to generate string: No characters to select from.' ) @@ -285,7 +312,7 @@ describe('string', () => { casing: 'lower', exclude, }) - ).toThrow( + ).toThrowError( new FakerError( 'Unable to generate string: No characters to select from.' ) @@ -300,7 +327,7 @@ describe('string', () => { casing: 'lower', exclude, }) - ).toThrow( + ).toThrowError( new FakerError( 'Unable to generate string: No characters to select from.' ) @@ -318,7 +345,7 @@ describe('string', () => { exclude: ['a', '%'], }); - expect(() => faker.string.alpha(input)).not.toThrow(); + expect(() => faker.string.alpha(input)).not.toThrowError(); expect(input.exclude).toEqual(['a', '%']); }); }); @@ -439,7 +466,7 @@ describe('string', () => { casing: 'lower', exclude, }) - ).toThrow( + ).toThrowError( new FakerError( 'Unable to generate string: No characters to select from.' ) @@ -454,7 +481,7 @@ describe('string', () => { casing: 'lower', exclude, }) - ).toThrow( + ).toThrowError( new FakerError( 'Unable to generate string: No characters to select from.' ) @@ -470,7 +497,7 @@ describe('string', () => { exclude: ['a', '0', '%'], }); - expect(() => faker.string.alphanumeric(input)).not.toThrow(); + expect(() => faker.string.alphanumeric(input)).not.toThrowError(); expect(input.exclude).toEqual(['a', '0', '%']); }); }); @@ -678,7 +705,7 @@ describe('string', () => { allowLeadingZeros: false, exclude: [...'123456789'], }) - ).toThrow( + ).toThrowError( new FakerError( 'Unable to generate numeric string, because all possible digits are excluded.' ) @@ -692,7 +719,7 @@ describe('string', () => { allowLeadingZeros: false, exclude: '123456789', }) - ).toThrow( + ).toThrowError( new FakerError( 'Unable to generate numeric string, because all possible digits are excluded.' ) @@ -752,11 +779,42 @@ describe('string', () => { }); describe(`uuid`, () => { - it('generates a valid UUID', () => { - const UUID = faker.string.uuid(); - const RFC4122 = - /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/; - expect(UUID).toMatch(RFC4122); + describe('version 4', () => { + it('generates a valid UUID', () => { + const uuid = faker.string.uuid({ version: 4 }); + expect(uuid).toSatisfy(isUuidV4); + }); + }); + + describe('version 7', () => { + it('generates a valid UUID', () => { + const uuid = faker.string.uuid({ version: 7 }); + expect(uuid).toSatisfy(isUuidV7); + }); + + it('generates nil bytes in the unix part if 0 is given as a ref date', () => { + const uuid = faker.string.uuid({ version: 7, refDate: 0 }); + + expect(uuid).toSatisfy(isUuidV7); + expect(uuid).toStartWith('00000000-0000'); + }); + + it('generates nil bytes in the unix part if a negative is given as a ref date', () => { + const uuid = faker.string.uuid({ version: 7, refDate: -3000 }); + + expect(uuid).toSatisfy(isUuidV7); + expect(uuid).toStartWith('00000000-0000'); + }); + + it('generates max bytes in the unix part if the maximum unix time epoch is given as a ref date', () => { + const uuid = faker.string.uuid({ + version: 7, + refDate: 0xffffffffffff, + }); + + expect(uuid).toSatisfy(isUuidV7); + expect(uuid).toStartWith('ffffffff-ffff'); + }); }); }); @@ -764,7 +822,7 @@ describe('string', () => { it.each(['invalid', Number.NaN, new Date(Number.NaN)] as const)( 'should reject invalid refDates %s', (refDate) => { - expect(() => faker.string.ulid({ refDate })).toThrow( + expect(() => faker.string.ulid({ refDate })).toThrowError( new FakerError(`Invalid refDate date: ${refDate.toString()}`) ); } @@ -774,6 +832,7 @@ describe('string', () => { const ulid = faker.string.ulid(); const regex = /^[0-7][0-9A-HJKMNP-TV-Z]{25}$/; expect(ulid).toMatch(regex); + expect(ulid).toSatisfy(isULID); }); }); diff --git a/test/modules/word.spec.ts b/test/modules/word.spec.ts index 121cce84f8b..19f2746c7b6 100644 --- a/test/modules/word.spec.ts +++ b/test/modules/word.spec.ts @@ -19,9 +19,8 @@ describe('word', () => { 'sample' )((t) => { t.it('noArgs') - .it('with length = 10', 10) - .it('with length = 20', 20) - .it('with options.length', { length: 10 }) + .it('with length = 4', 4) + .it('with options.length', { length: 4 }) .it('with options.strategy', { strategy: 'shortest' }) .it('with options.length and options.strategy', { length: { min: 18, max: 20 }, @@ -31,9 +30,8 @@ describe('word', () => { t.describe('words', (t) => { t.it('noArgs') - .it('with count = 10', 10) - .it('with count = 20', 20) - .it('with options.count', { count: 10 }) + .it('with count = 4', 4) + .it('with options.count', { count: 4 }) .it('with options.count range', { count: { min: 18, max: 20 } }); }); }); @@ -63,13 +61,13 @@ describe('word', () => { expect(result).toEqual(['foo', 'bar', 'baz', 'a']); }); - it('returns the word list if no words match the length', () => { - const result = filterWordListByLength({ - wordList, - length, - }); - // TODO @ST-DDT 2022-10-02: This should throw an error in the next major version. - expect(result).toEqual(wordList); + it('by default throws an error when no words match the given length', () => { + expect(() => { + filterWordListByLength({ + wordList, + length, + }); + }).toThrowError('No words found that match the given length.'); }); it('returns the appropriate words when strategy is "any-length" and no words match the given length', () => { @@ -115,7 +113,7 @@ describe('word', () => { length, strategy: 'fail', }); - }).toThrow('No words found that match the given length.'); + }).toThrowError('No words found that match the given length.'); }); }); diff --git a/test/require.spec.cts b/test/require.spec.cts new file mode 100644 index 00000000000..c4e0d13387a --- /dev/null +++ b/test/require.spec.cts @@ -0,0 +1,48 @@ +const { describe, expect, it, vi } = await import('vitest'); +const { allLocales, SimpleFaker } = require('../dist/index.js'); + +describe('require (cjs)', () => { + describe.each( + Object.keys( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + allLocales + ) + )('locale imports', (locale) => { + it(`should be possible to directly require('@faker-js/faker/locale/${locale}')`, () => { + const { faker } = require(`../dist/locale/${locale}.js`); + + expect(faker).toBeDefined(); + expect(faker.string.alpha()).toBeTypeOf('string'); + expect(faker.definitions.metadata.title).toBe( + allLocales[locale].metadata?.title + ); + }); + }); + + describe('simpleFaker', () => { + it('should not log anything on startup', () => { + const spies = Object.keys(console) + .filter( + (key) => + // @ts-expect-error: cts cant use `as keyof typeof console` + typeof console[key] === 'function' + ) + .map((methodName) => + vi.spyOn( + console, + // @ts-expect-error: cts cant use `as keyof typeof console` + methodName + ) + ); + + expect(require('..').simpleFaker).toBeDefined(); + + expect(new SimpleFaker()).toBeDefined(); + + for (const spy of spies) { + expect(spy).not.toHaveBeenCalled(); + spy.mockRestore(); + } + }); + }); +}); diff --git a/test/scripts/apidocs/__snapshots__/method.spec.ts.snap b/test/scripts/apidocs/__snapshots__/method.spec.ts.snap index 5a5518e4e19..472a427c9e3 100644 --- a/test/scripts/apidocs/__snapshots__/method.spec.ts.snap +++ b/test/scripts/apidocs/__snapshots__/method.spec.ts.snap @@ -9,9 +9,11 @@ exports[`method > expected and actual methods are equal 1`] = ` "methodWithDeprecated", "methodWithDeprecatedOption", "methodWithExample", + "methodWithMultipleRemarks", "methodWithMultipleSeeMarkers", "methodWithMultipleSeeMarkersAndBackticks", "methodWithMultipleThrows", + "methodWithRemark", "methodWithSinceMarker", "methodWithThrows", "multiParamMethod", @@ -83,6 +85,7 @@ exports[`method > processMethodLike(complexArrayParameter) 1`] = ` }, }, ], + "remarks": [], "returns": { "resolvedType": { "text": "any", @@ -129,6 +132,7 @@ exports[`method > processMethodLike(defaultBooleanParamMethod) 1`] = ` }, }, ], + "remarks": [], "returns": { "text": "number", "type": "simple", @@ -166,6 +170,7 @@ exports[`method > processMethodLike(functionParamMethod) 1`] = ` }, }, ], + "remarks": [], "returns": { "text": "number", "type": "simple", @@ -440,6 +445,7 @@ exports[`method > processMethodLike(literalUnionParamMethod) 1`] = ` }, }, ], + "remarks": [], "returns": { "text": "string", "type": "simple", @@ -474,6 +480,7 @@ exports[`method > processMethodLike(methodWithDeprecated) 1`] = ` "description": "Test with deprecated and see marker.", "examples": [], "parameters": [], + "remarks": [], "returns": { "text": "number", "type": "simple", @@ -544,6 +551,7 @@ exports[`method > processMethodLike(methodWithDeprecatedOption) 1`] = ` }, }, ], + "remarks": [], "returns": { "text": "number", "type": "simple", @@ -577,6 +585,7 @@ exports[`method > processMethodLike(methodWithExample) 1`] = ` "test.apidocs.methodWithExample() // 0", ], "parameters": [], + "remarks": [], "returns": { "text": "number", "type": "simple", @@ -595,6 +604,38 @@ exports[`method > processMethodLike(methodWithExample) 1`] = ` } `; +exports[`method > processMethodLike(methodWithMultipleRemarks) 1`] = ` +{ + "name": "methodWithMultipleRemarks", + "signatures": [ + { + "deprecated": undefined, + "description": "Test with multiple remark markers.", + "examples": [], + "parameters": [], + "remarks": [ + "First special text.", + "Second special text.", + "Third special text.", + ], + "returns": { + "text": "number", + "type": "simple", + }, + "seeAlsos": [], + "signature": "function methodWithMultipleRemarks(): number;", + "since": "1.0.0", + "throws": [], + }, + ], + "source": { + "column": -1, + "filePath": "test/scripts/apidocs/method.example.ts", + "line": -1, + }, +} +`; + exports[`method > processMethodLike(methodWithMultipleSeeMarkers) 1`] = ` { "name": "methodWithMultipleSeeMarkers", @@ -604,6 +645,7 @@ exports[`method > processMethodLike(methodWithMultipleSeeMarkers) 1`] = ` "description": "Test with multiple see markers.", "examples": [], "parameters": [], + "remarks": [], "returns": { "text": "number", "type": "simple", @@ -634,6 +676,7 @@ exports[`method > processMethodLike(methodWithMultipleSeeMarkersAndBackticks) 1` "description": "Test with multiple see markers and backticks.", "examples": [], "parameters": [], + "remarks": [], "returns": { "text": "number", "type": "simple", @@ -664,6 +707,7 @@ exports[`method > processMethodLike(methodWithMultipleThrows) 1`] = ` "description": "Test with multiple throws.", "examples": [], "parameters": [], + "remarks": [], "returns": { "text": "number", "type": "simple", @@ -685,6 +729,36 @@ exports[`method > processMethodLike(methodWithMultipleThrows) 1`] = ` } `; +exports[`method > processMethodLike(methodWithRemark) 1`] = ` +{ + "name": "methodWithRemark", + "signatures": [ + { + "deprecated": undefined, + "description": "Test with remark marker.", + "examples": [], + "parameters": [], + "remarks": [ + "This text is special.", + ], + "returns": { + "text": "number", + "type": "simple", + }, + "seeAlsos": [], + "signature": "function methodWithRemark(): number;", + "since": "1.0.0", + "throws": [], + }, + ], + "source": { + "column": -1, + "filePath": "test/scripts/apidocs/method.example.ts", + "line": -1, + }, +} +`; + exports[`method > processMethodLike(methodWithSinceMarker) 1`] = ` { "name": "methodWithSinceMarker", @@ -694,6 +768,7 @@ exports[`method > processMethodLike(methodWithSinceMarker) 1`] = ` "description": "Test with since marker.", "examples": [], "parameters": [], + "remarks": [], "returns": { "text": "number", "type": "simple", @@ -721,6 +796,7 @@ exports[`method > processMethodLike(methodWithThrows) 1`] = ` "description": "Test with throws.", "examples": [], "parameters": [], + "remarks": [], "returns": { "text": "number", "type": "simple", @@ -778,6 +854,7 @@ exports[`method > processMethodLike(multiParamMethod) 1`] = ` }, }, ], + "remarks": [], "returns": { "text": "number", "type": "simple", @@ -805,6 +882,7 @@ exports[`method > processMethodLike(noParamMethod) 1`] = ` "description": "Test with no parameters.", "examples": [], "parameters": [], + "remarks": [], "returns": { "text": "number", "type": "simple", @@ -842,6 +920,7 @@ exports[`method > processMethodLike(optionalStringParamMethod) 1`] = ` }, }, ], + "remarks": [], "returns": { "text": "number", "type": "simple", @@ -929,6 +1008,7 @@ Defaults to \`{ value: 1 }\`.", }, }, ], + "remarks": [], "returns": { "text": "number", "type": "simple", @@ -994,6 +1074,7 @@ exports[`method > processMethodLike(optionsInterfaceParamMethodWithDefaults) 1`] }, }, ], + "remarks": [], "returns": { "text": "number", "type": "simple", @@ -1100,6 +1181,7 @@ exports[`method > processMethodLike(optionsParamMethod) 1`] = ` }, }, ], + "remarks": [], "returns": { "text": "number", "type": "simple", @@ -1188,6 +1270,7 @@ exports[`method > processMethodLike(optionsTypeParamMethodWithDefaults) 1`] = ` }, }, ], + "remarks": [], "returns": { "text": "number", "type": "simple", @@ -1229,6 +1312,7 @@ exports[`method > processMethodLike(recordParamMethod) 1`] = ` }, }, ], + "remarks": [], "returns": { "text": "number", "type": "simple", @@ -1266,6 +1350,7 @@ exports[`method > processMethodLike(requiredNumberParamMethod) 1`] = ` }, }, ], + "remarks": [], "returns": { "text": "number", "type": "simple", @@ -1645,6 +1730,7 @@ exports[`method > processMethodLike(stringUnionParamMethod) 1`] = ` }, }, ], + "remarks": [], "returns": { "text": "string", "type": "simple", diff --git a/test/scripts/apidocs/__snapshots__/verify-jsdoc-tags.spec.ts.snap b/test/scripts/apidocs/__snapshots__/verify-jsdoc-tags.spec.ts.snap index 07983094b8c..bc99d401a29 100644 --- a/test/scripts/apidocs/__snapshots__/verify-jsdoc-tags.spec.ts.snap +++ b/test/scripts/apidocs/__snapshots__/verify-jsdoc-tags.spec.ts.snap @@ -105,6 +105,7 @@ exports[`check docs completeness > all modules and methods are present 1`] = ` "productDescription", "productMaterial", "productName", + "upc", ], ], [ @@ -167,11 +168,11 @@ exports[`check docs completeness > all modules and methods are present 1`] = ` "currency", "currencyCode", "currencyName", + "currencyNumericCode", "currencySymbol", "ethereumAddress", "iban", "litecoinAddress", - "maskedNumber", "pin", "routingNumber", "transactionDescription", @@ -241,19 +242,16 @@ exports[`check docs completeness > all modules and methods are present 1`] = ` [ "avatar", "avatarGitHub", - "avatarLegacy", "dataUri", "personPortrait", "url", "urlLoremFlickr", "urlPicsumPhotos", - "urlPlaceholder", ], ], [ "internet", [ - "color", "displayName", "domainName", "domainSuffix", @@ -275,7 +273,6 @@ exports[`check docs completeness > all modules and methods are present 1`] = ` "url", "userAgent", "username", - "userName", ], ], [ diff --git a/test/scripts/apidocs/class.spec.ts b/test/scripts/apidocs/class.spec.ts index 8ebce847526..1e356aa8463 100644 --- a/test/scripts/apidocs/class.spec.ts +++ b/test/scripts/apidocs/class.spec.ts @@ -11,7 +11,7 @@ describe('class', () => { }); it('expected and actual modules are equal', () => { - expect(Object.keys(modules).sort()).toMatchSnapshot(); + expect(Object.keys(modules).toSorted()).toMatchSnapshot(); }); it.each(Object.entries(modules))('processClass(%s)', (_, module) => { diff --git a/test/scripts/apidocs/method.example.ts b/test/scripts/apidocs/method.example.ts index 73632b4236c..f72b767821a 100644 --- a/test/scripts/apidocs/method.example.ts +++ b/test/scripts/apidocs/method.example.ts @@ -363,7 +363,7 @@ export class SignatureTest { /** * Test with throws. * - * @throws Everytime. + * @throws {FakerError} Everytime. * * @since 1.0.0 */ @@ -374,8 +374,8 @@ export class SignatureTest { /** * Test with multiple throws. * - * @throws First error case. - * @throws Another error case. + * @throws {FakerError} First error case. + * @throws {FakerError} Another error case. * * @since 1.0.0 */ @@ -447,6 +447,30 @@ export class SignatureTest { return 0; } + /** + * Test with remark marker. + * + * @remark This text is special. + * + * @since 1.0.0 + */ + methodWithRemark(): number { + return 0; + } + + /** + * Test with multiple remark markers. + * + * @remark First special text. + * @remark Second special text. + * @remark Third special text. + * + * @since 1.0.0 + */ + methodWithMultipleRemarks(): number { + return 0; + } + /** * Complex array parameter. * diff --git a/test/scripts/apidocs/page.spec.ts b/test/scripts/apidocs/page.spec.ts index 00fd4da2277..bef6380614f 100644 --- a/test/scripts/apidocs/page.spec.ts +++ b/test/scripts/apidocs/page.spec.ts @@ -12,6 +12,7 @@ function newTestMethod( { deprecated: 'deprecated', description: 'description', + remarks: [], since: 'since', parameters: [], returns: { diff --git a/test/scripts/apidocs/utils.ts b/test/scripts/apidocs/utils.ts index e15bcd8fa7a..a284ad2dcf1 100644 --- a/test/scripts/apidocs/utils.ts +++ b/test/scripts/apidocs/utils.ts @@ -10,7 +10,7 @@ export function loadExampleMethods(): Record { .getClassOrThrow('SignatureTest') .getMethods() .map((m) => [m.getName(), m] as const) - .sort(([a], [b]) => a.localeCompare(b)) // Relevant for Object.keys() order + .toSorted(([a], [b]) => a.localeCompare(b)) // Relevant for Object.keys() order ); } @@ -22,7 +22,7 @@ export function loadExampleClasses(): Record { loadProjectFile('test/scripts/apidocs/class.example.ts') .getClasses() .map((m) => [m.getNameOrThrow(), m] as const) - .sort(([a], [b]) => a.localeCompare(b)) // Relevant for Object.keys() order + .toSorted(([a], [b]) => a.localeCompare(b)) // Relevant for Object.keys() order ); } diff --git a/test/scripts/apidocs/verify-jsdoc-tags.spec.ts b/test/scripts/apidocs/verify-jsdoc-tags.spec.ts index 244741c6259..e0d23d51796 100644 --- a/test/scripts/apidocs/verify-jsdoc-tags.spec.ts +++ b/test/scripts/apidocs/verify-jsdoc-tags.spec.ts @@ -1,6 +1,5 @@ import { existsSync, mkdirSync, rmSync, writeFileSync } from 'node:fs'; -import { dirname, resolve } from 'node:path'; -import { fileURLToPath } from 'node:url'; +import { resolve } from 'node:path'; import { isSemVer, isURL } from 'validator'; import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest'; import { processComponents } from '../../../scripts/apidocs/generate'; @@ -14,7 +13,7 @@ import { getProject } from '../../../scripts/apidocs/project'; // - has valid @see tags // - has proper links in the description -const tempDir = resolve(dirname(fileURLToPath(import.meta.url)), 'temp'); +const tempDir = resolve(import.meta.dirname, 'temp'); const relativeImportPath = `${'../'.repeat(5)}src`; afterAll(() => { @@ -36,11 +35,6 @@ function resolvePathToMethodFile( signature: number ): string { const dir = resolveDirToModule(moduleName); - // TODO @ST-DDT 2024-09-23: Remove this in v10 - if (methodName === 'userName') { - methodName = 'userNameDeprecated'; - } - return resolve(dir, `${methodName}_${signature}.ts`); } @@ -67,7 +61,7 @@ function assertDescription(description: string): void { const links = [...description.matchAll(linkRegexp)].map((m) => m[2]); for (const link of links) { - expect(link).toMatch(/^https?:\/\//); + expect(link).toStartWith('https://'); expect(link).toSatisfy(isURL); if (link.includes('fakerjs.dev/api/')) { diff --git a/test/setup.ts b/test/setup.ts index 23d693a315d..85e7e1a7dd2 100644 --- a/test/setup.ts +++ b/test/setup.ts @@ -1,3 +1,4 @@ import { chai } from 'vitest'; +import './vitest-extensions'; chai.config.truncateThreshold = 10000; diff --git a/test/simple-faker.spec.ts b/test/simple-faker.spec.ts index 02c860a50ee..c1470624654 100644 --- a/test/simple-faker.spec.ts +++ b/test/simple-faker.spec.ts @@ -4,13 +4,14 @@ import { generateMersenne32Randomizer, SimpleFaker, simpleFaker } from '../src'; import { keys } from '../src/internal/keys'; describe('simpleFaker', () => { - it('should not log anything on startup', () => { + it('should not log anything on startup', async () => { const spies: MockInstance[] = keys(console) .filter((key) => typeof console[key] === 'function') .map((methodName) => vi.spyOn(console, methodName)); - // eslint-disable-next-line @typescript-eslint/no-require-imports, unicorn/prefer-module -- Using import() requires types being build but the CI / TS-Check runs without them. - expect(require('..').simpleFaker).toBeDefined(); + // Using import() requires types being build but the CI / TS-Check runs without them. + const { simpleFaker: importedSimpleFaker } = await import('..'); + expect(importedSimpleFaker).toBeDefined(); expect(new SimpleFaker()).toBeDefined(); diff --git a/test/support/seeded-runs.ts b/test/support/seeded-runs.ts index 66d6df3c4dd..84a7240796c 100644 --- a/test/support/seeded-runs.ts +++ b/test/support/seeded-runs.ts @@ -205,9 +205,7 @@ class TestGenerator< * * @param methods The names of the methods. */ - itEach>( - ...methods: TMethodName[] - ): this { + itEach(...methods: Array>): this { for (const method of methods) { this.it(method); } @@ -293,11 +291,11 @@ class TestGenerator< * This method will be called automatically at the end of each run. */ expectAllMethodsToBeTested(): void { - const actual = [...this.tested].sort(); + const actual = [...this.tested].toSorted(); const expected = Object.entries(this.module) .filter(([, value]) => typeof value === 'function') .map(([key]) => key) - .sort(); + .toSorted(); vi_it('should test all methods', () => { expect(actual).toEqual(expected); }); diff --git a/test/vitest-extensions.ts b/test/vitest-extensions.ts index 5e94b6994ba..a560267f77e 100644 --- a/test/vitest-extensions.ts +++ b/test/vitest-extensions.ts @@ -2,8 +2,8 @@ import { expect } from 'vitest'; expect.extend({ - toContainDuplicates(received: T[]) { - const { isNot = false } = this; + toContainDuplicates(received: unknown[]) { + const { isNot } = this; const uniques = new Set(received); const duplications = received.filter((entry) => !uniques.delete(entry)); @@ -17,10 +17,33 @@ expect.extend({ : `No duplicate values in [${received.join(', ')}]`, }; }, + toStartWith(actual: unknown, prefix: string) { + const { isNot } = this; + + return { + pass: typeof actual === 'string' && actual.startsWith(prefix), + actual, + expected: `${prefix}...`, + message: () => + isNot + ? `String did start with the "${prefix}".` + : `String did not start with the "${prefix}".`, + }; + }, }); interface CustomMatchers { + /** + * Expects that a list of elements does not contain any duplicate entries. + */ toContainDuplicates(): void; + + /** + * Expects that a string has the provided prefix. + * + * @param prefix The prefix to check for. + */ + toStartWith(prefix: string): void; } declare module 'vitest' { diff --git a/tsup.config.ts b/tsup.config.ts index 214eb718644..bf4c259f6ea 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -8,8 +8,8 @@ export default defineConfig({ ], outDir: 'dist', clean: true, - format: ['esm', 'cjs'], - target: ['es2022', 'node18'], + format: 'esm', + target: ['es2023', 'node20.11'], dts: true, minify: true, sourcemap: false, diff --git a/vitest.config.ts b/vitest.config.ts index 1dda2df9d0d..5f0c03bea2e 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -9,7 +9,7 @@ console.log('VITEST_SEQUENCE_SEED', VITEST_SEQUENCE_SEED); export default defineConfig({ test: { setupFiles: ['test/setup.ts'], - include: ['test/**/*.spec.ts'], + include: ['test/**/*.spec.ts', 'test/**/*.spec.cts'], exclude: ['test/integration/**/*.spec.ts'], coverage: { all: true,