diff --git a/.eslintrc.cjs b/.eslintrc.cjs
deleted file mode 100644
index 46f74f11125..00000000000
--- a/.eslintrc.cjs
+++ /dev/null
@@ -1,197 +0,0 @@
-// @ts-check
-const { defineConfig } = require('eslint-define-config');
-const { readGitignoreFiles } = require('eslint-gitignore');
-
-///
-///
-///
-///
-///
-
-module.exports = defineConfig({
- ignorePatterns: [
- ...readGitignoreFiles(),
- '.eslintrc.cjs', // Skip self linting
- ],
- root: true,
- env: {
- browser: true,
- node: true,
- },
- reportUnusedDisableDirectives: true,
- extends: [
- 'eslint:recommended',
- 'plugin:@typescript-eslint/strict-type-checked',
- 'plugin:prettier/recommended',
- 'plugin:deprecation/recommended',
- 'plugin:jsdoc/recommended-typescript-error',
- 'plugin:unicorn/recommended',
- ],
- parserOptions: {
- project: ['./tsconfig.json'],
- warnOnUnsupportedTypeScriptVersion: false,
- },
- rules: {
- eqeqeq: ['error', 'always', { null: 'ignore' }],
- 'logical-assignment-operators': 'error',
- 'no-else-return': 'error',
- 'no-restricted-globals': ['error', 'Intl'],
- 'prefer-exponentiation-operator': 'error',
- 'prefer-template': 'error',
-
- '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-null': 'off', // incompatible with TypeScript
- 'unicorn/no-zero-fractions': 'off', // deactivated to raise awareness of floating operations
- 'unicorn/number-literal-case': 'off', // incompatible with prettier
- 'unicorn/prefer-ternary': 'off', // ternaries aren't always better
-
- // TODO @Shinigami92 2023-09-23: The following rules currently conflict with our code.
- // Each rule should be checked whether it should be enabled/configured and the problems fixed, or stay disabled permanently.
- 'unicorn/better-regex': 'off',
- 'unicorn/consistent-function-scoping': 'off',
- 'unicorn/no-object-as-default-parameter': 'off',
- 'unicorn/numeric-separators-style': 'off',
- 'unicorn/prefer-export-from': 'off',
- 'unicorn/prefer-string-slice': 'off',
- 'unicorn/prevent-abbreviations': 'off',
-
- '@typescript-eslint/array-type': [
- 'error',
- { default: 'array-simple', readonly: 'generic' },
- ],
- '@typescript-eslint/consistent-type-exports': 'error',
- '@typescript-eslint/consistent-type-imports': 'error',
- '@typescript-eslint/explicit-module-boundary-types': 'error',
- '@typescript-eslint/naming-convention': [
- 'error',
- {
- format: ['PascalCase'],
- selector: ['class', 'interface', 'typeAlias', 'enumMember'],
- leadingUnderscore: 'forbid',
- trailingUnderscore: 'forbid',
- },
- {
- format: ['PascalCase'],
- selector: ['typeParameter'],
- prefix: ['T'],
- leadingUnderscore: 'forbid',
- trailingUnderscore: 'forbid',
- },
- ],
- '@typescript-eslint/no-confusing-void-expression': [
- 'error',
- {
- ignoreArrowShorthand: true,
- },
- ],
- '@typescript-eslint/no-inferrable-types': [
- 'error',
- { ignoreParameters: true },
- ],
- '@typescript-eslint/no-unnecessary-condition': 'off', // requires `strictNullChecks` to be enabled
- '@typescript-eslint/no-unsafe-assignment': 'off',
- '@typescript-eslint/no-unsafe-call': 'off',
- '@typescript-eslint/no-unsafe-member-access': 'off',
- '@typescript-eslint/padding-line-between-statements': [
- 'error',
- { blankLine: 'always', prev: 'block-like', next: '*' },
- ],
- '@typescript-eslint/prefer-regexp-exec': 'error',
- '@typescript-eslint/restrict-plus-operands': [
- 'error',
- {
- allowAny: false,
- allowBoolean: false,
- allowNullish: false,
- allowNumberAndString: true,
- allowRegExp: false,
- },
- ],
- '@typescript-eslint/restrict-template-expressions': [
- 'error',
- { allowNumber: true, allowBoolean: true },
- ],
- '@typescript-eslint/switch-exhaustiveness-check': [
- 'error',
- { requireDefaultForNonUnion: true },
- ],
- '@typescript-eslint/unbound-method': 'off',
- '@typescript-eslint/unified-signatures': 'off', // incompatible with our api docs generation
-
- 'jsdoc/require-jsdoc': 'off', // Enabled only for src/**/*.ts
- 'jsdoc/require-returns': 'off',
- 'jsdoc/sort-tags': [
- 'error',
- {
- tagSequence: [
- { tags: ['template'] },
- { tags: ['internal'] },
- { tags: ['param'] },
- { tags: ['returns'] },
- { tags: ['throws'] },
- { tags: ['see'] },
- { tags: ['example'] },
- { tags: ['since'] },
- { tags: ['default'] },
- { tags: ['deprecated'] },
- ],
- },
- ],
- 'jsdoc/tag-lines': 'off',
- },
- settings: {
- jsdoc: {
- mode: 'typescript',
- },
- },
- overrides: [
- {
- files: ['src/**/*.ts'],
- rules: {
- 'jsdoc/require-jsdoc': 'error',
- },
- },
- {
- files: ['src/locale/**/*.ts'],
- rules: {
- 'unicorn/filename-case': 'off', // our locale files have a custom naming scheme
- },
- },
- {
- files: ['src/definitions/**/*.ts', 'src/locales/**/*.ts'],
- rules: {
- 'unicorn/filename-case': [
- 'error',
- {
- case: 'snakeCase',
- },
- ],
- 'unicorn/text-encoding-identifier-case': 'off',
- },
- },
- {
- files: ['test/**/*.spec.ts'],
- extends: ['plugin:vitest/recommended'],
- rules: {
- 'deprecation/deprecation': 'off',
-
- '@typescript-eslint/restrict-template-expressions': [
- 'error',
- {
- allowNumber: true,
- allowBoolean: true,
- allowAny: true,
- },
- ],
-
- 'vitest/expect-expect': 'off',
- 'vitest/no-alias-methods': 'error',
- 'vitest/prefer-each': 'error',
- 'vitest/prefer-to-have-length': 'error',
- 'vitest/valid-expect': ['error', { maxArgs: 2 }],
- },
- },
- ],
-});
diff --git a/.gitignore b/.gitignore
index d50069baccf..af973543236 100644
--- a/.gitignore
+++ b/.gitignore
@@ -66,20 +66,21 @@ node_modules/
.github/workflows/*.js
# IDE
-/.idea
-/nbproject
+.idea
+nbproject
# Meteor build and version
.build*
versions.json
# Dist
-/dist
-/docs/.vitepress/cache
-/docs/.vitepress/dist
-/docs/api/typedoc.json
-/docs/public/api-diff-index.json
-/lib
+dist
+
+# Docs
+docs/.vitepress/cache
+docs/.vitepress/dist
+docs/api/typedoc.json
+docs/public/api-diff-index.json
# Faker
TAGS
diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts
index b226f441971..845c46d0b43 100644
--- a/docs/.vitepress/config.ts
+++ b/docs/.vitepress/config.ts
@@ -91,9 +91,11 @@ function getSideBarWithExpandedEntry(entryToExpand: string): SidebarItem[] {
],
},
];
+
for (const entry of links) {
entry.collapsed = entry.text !== entryToExpand;
}
+
return links;
}
diff --git a/docs/.vitepress/versions.ts b/docs/.vitepress/versions.ts
index 9d693e3d730..db92130f99b 100644
--- a/docs/.vitepress/versions.ts
+++ b/docs/.vitepress/versions.ts
@@ -16,6 +16,7 @@ function readOtherLatestReleaseTagNames(): string[] {
// Only consider tags for our deployed website versions
.filter((tag) => semver.major(tag) >= 6)
// Find the latest tag for each major version
+ // eslint-disable-next-line unicorn/no-array-reduce
.reduce>((latestTagByMajor, tag) => {
const majorVersion = semver.major(tag);
@@ -42,12 +43,15 @@ export const versionBannerInfix: string | null = (() => {
if (deployContext === 'production') {
return null;
}
+
if (isReleaseBranch) {
return '"an old version"';
}
+
if (branchName === 'next') {
return '"the next (unreleased) version"';
}
+
return '"a development version"';
})();
diff --git a/eslint.config.js b/eslint.config.js
new file mode 100644
index 00000000000..3dae584e0a2
--- /dev/null
+++ b/eslint.config.js
@@ -0,0 +1,273 @@
+// @ts-check
+import eslint from '@eslint/js';
+import { readGitignoreFiles } from 'eslint-gitignore';
+import eslintPluginDeprecation from 'eslint-plugin-deprecation';
+import eslintPluginJsdoc from 'eslint-plugin-jsdoc';
+import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended';
+import eslintPluginUnicorn from 'eslint-plugin-unicorn';
+import vitest from 'eslint-plugin-vitest';
+import tseslint from 'typescript-eslint';
+
+export default tseslint.config(
+ //#region global
+ {
+ ignores: [
+ ...readGitignoreFiles(),
+ // Skip self linting
+ 'eslint.config.js',
+ // Skip some files that don't need linting right now
+ '.github/workflows/commentCodeGeneration.ts',
+ '.prettierrc.js',
+ 'docs/.vitepress/components/shims.d.ts',
+ 'docs/.vitepress/shared/utils/slugify.ts',
+ 'docs/.vitepress/theme/index.ts',
+ ],
+ },
+ {
+ linterOptions: {
+ reportUnusedDisableDirectives: 'error',
+ },
+ },
+ //#endregion
+
+ //#region eslint (js)
+ eslint.configs.recommended,
+ {
+ rules: {
+ eqeqeq: ['error', 'always', { null: 'ignore' }],
+ 'logical-assignment-operators': 'error',
+ 'no-else-return': 'error',
+ 'no-restricted-globals': ['error', 'Intl'],
+ 'prefer-exponentiation-operator': 'error',
+ 'prefer-template': 'error',
+ },
+ },
+ //#endregion
+
+ //#region typescript-eslint
+ ...tseslint.configs.strictTypeChecked,
+ {
+ plugins: {
+ '@typescript-eslint': tseslint.plugin,
+ },
+ languageOptions: {
+ parser: tseslint.parser,
+ parserOptions: {
+ project: true,
+ warnOnUnsupportedTypeScriptVersion: false,
+ },
+ },
+ rules: {
+ '@typescript-eslint/array-type': [
+ 'error',
+ { default: 'array-simple', readonly: 'generic' },
+ ],
+ '@typescript-eslint/consistent-type-exports': 'error',
+ '@typescript-eslint/consistent-type-imports': 'error',
+ '@typescript-eslint/explicit-module-boundary-types': 'error',
+ '@typescript-eslint/naming-convention': [
+ 'error',
+ {
+ format: ['PascalCase'],
+ selector: ['class', 'interface', 'typeAlias', 'enumMember'],
+ leadingUnderscore: 'forbid',
+ trailingUnderscore: 'forbid',
+ },
+ {
+ format: ['PascalCase'],
+ selector: ['typeParameter'],
+ prefix: ['T'],
+ leadingUnderscore: 'forbid',
+ trailingUnderscore: 'forbid',
+ },
+ ],
+ '@typescript-eslint/no-confusing-void-expression': [
+ 'error',
+ {
+ ignoreArrowShorthand: true,
+ },
+ ],
+ '@typescript-eslint/no-inferrable-types': [
+ 'error',
+ { ignoreParameters: true },
+ ],
+ '@typescript-eslint/no-unnecessary-condition': 'off', // requires `strictNullChecks` to be enabled
+ '@typescript-eslint/no-unsafe-assignment': 'off',
+ '@typescript-eslint/no-unsafe-call': 'off',
+ '@typescript-eslint/no-unsafe-member-access': 'off',
+ '@typescript-eslint/padding-line-between-statements': [
+ 'error',
+ { blankLine: 'always', prev: 'block-like', next: '*' },
+ ],
+ '@typescript-eslint/prefer-regexp-exec': 'error',
+ '@typescript-eslint/restrict-plus-operands': [
+ 'error',
+ {
+ allowAny: false,
+ allowBoolean: false,
+ allowNullish: false,
+ allowNumberAndString: true,
+ allowRegExp: false,
+ },
+ ],
+ '@typescript-eslint/restrict-template-expressions': [
+ 'error',
+ { allowNumber: true, allowBoolean: true },
+ ],
+ '@typescript-eslint/switch-exhaustiveness-check': [
+ 'error',
+ { requireDefaultForNonUnion: true },
+ ],
+ '@typescript-eslint/unbound-method': 'off',
+ '@typescript-eslint/unified-signatures': 'off', // incompatible with our api docs generation
+ },
+ },
+ //#endregion
+
+ //#region deprecation
+ {
+ plugins: {
+ deprecation: eslintPluginDeprecation,
+ },
+ languageOptions: {
+ parser: tseslint.parser,
+ parserOptions: {
+ project: true,
+ warnOnUnsupportedTypeScriptVersion: false,
+ },
+ },
+ rules: {
+ // TODO @Shinigami92 2024-04-08: Add eslint-plugin-deprecation later
+ // https://github.com/gund/eslint-plugin-deprecation/issues/78
+ // 'deprecation/deprecation': 'error',
+ },
+ },
+ //#endregion
+
+ //#region unicorn
+ // @ts-expect-error: Ignore for now
+ eslintPluginUnicorn.configs['flat/recommended'],
+ {
+ 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-null': 'off', // incompatible with TypeScript
+ 'unicorn/no-zero-fractions': 'off', // deactivated to raise awareness of floating operations
+ 'unicorn/number-literal-case': 'off', // incompatible with prettier
+ 'unicorn/prefer-ternary': 'off', // ternaries aren't always better
+
+ // TODO @Shinigami92 2023-09-23: The following rules currently conflict with our code.
+ // Each rule should be checked whether it should be enabled/configured and the problems fixed, or stay disabled permanently.
+ 'unicorn/better-regex': 'off',
+ 'unicorn/consistent-function-scoping': 'off',
+ 'unicorn/no-object-as-default-parameter': 'off',
+ 'unicorn/numeric-separators-style': 'off',
+ 'unicorn/prefer-export-from': 'off',
+ 'unicorn/prefer-string-raw': 'off',
+ 'unicorn/prefer-string-slice': 'off',
+ 'unicorn/prevent-abbreviations': 'off',
+ },
+ },
+ //#endregion
+
+ //#region jsdoc
+ eslintPluginJsdoc.configs['flat/recommended-typescript-error'],
+ {
+ rules: {
+ 'jsdoc/require-jsdoc': 'off', // Enabled only for src/**/*.ts
+ 'jsdoc/require-returns': 'off',
+ 'jsdoc/sort-tags': [
+ 'error',
+ {
+ tagSequence: [
+ { tags: ['template'] },
+ { tags: ['internal'] },
+ { tags: ['param'] },
+ { tags: ['returns'] },
+ { tags: ['throws'] },
+ { tags: ['see'] },
+ { tags: ['example'] },
+ { tags: ['since'] },
+ { tags: ['default'] },
+ { tags: ['deprecated'] },
+ ],
+ },
+ ],
+ 'jsdoc/tag-lines': 'off',
+ },
+ settings: {
+ jsdoc: {
+ mode: 'typescript',
+ },
+ },
+ },
+ //#endregion
+
+ //#region vitest
+ // TODO @Shinigami92 2024-04-08: Add vitest later
+ // https://github.com/veritem/eslint-plugin-vitest/issues/413
+ //#endregion
+
+ //#region prettier
+ eslintPluginPrettierRecommended,
+ //#endregion,
+
+ //#region overrides
+ {
+ files: ['src/**/*.ts'],
+ rules: {
+ 'jsdoc/require-jsdoc': 'error',
+ },
+ },
+ {
+ files: ['src/locale/**/*.ts'],
+ rules: {
+ 'unicorn/filename-case': 'off', // our locale files have a custom naming scheme
+ },
+ },
+ {
+ files: ['src/definitions/**/*.ts', 'src/locales/**/*.ts'],
+ rules: {
+ 'unicorn/filename-case': [
+ 'error',
+ {
+ case: 'snakeCase',
+ },
+ ],
+ 'unicorn/text-encoding-identifier-case': 'off',
+ },
+ },
+ {
+ files: ['test/**/*.spec.ts', 'test/**/*.spec.d.ts'],
+ plugins: {
+ vitest,
+ },
+ rules: {
+ 'deprecation/deprecation': 'off',
+
+ '@typescript-eslint/restrict-template-expressions': [
+ 'error',
+ {
+ allowNumber: true,
+ allowBoolean: true,
+ allowAny: true,
+ },
+ ],
+
+ ...vitest.configs.recommended.rules,
+
+ 'vitest/expect-expect': 'off',
+ 'vitest/no-alias-methods': 'error',
+ 'vitest/prefer-each': 'error',
+ 'vitest/prefer-to-have-length': 'error',
+ 'vitest/valid-expect': ['error', { maxArgs: 2 }],
+ },
+ settings: {
+ vitest: {
+ typecheck: true,
+ },
+ },
+ }
+ //#endregion
+);
diff --git a/package.json b/package.json
index 3571625fd92..f2e8ef2056f 100644
--- a/package.json
+++ b/package.json
@@ -76,7 +76,7 @@
"docs:serve": "vitepress serve docs --port 5173",
"docs:diff": "tsx ./scripts/diff.ts",
"format": "prettier --cache --write .",
- "lint": "eslint --cache --cache-strategy content --report-unused-disable-directives .",
+ "lint": "eslint --cache --cache-strategy content .",
"ts-check": "tsc",
"test": "vitest",
"test:update-snapshots": "vitest run -u",
@@ -97,15 +97,15 @@
"@eslint-types/prettier": "5.1.3",
"@eslint-types/typescript-eslint": "7.5.0",
"@eslint-types/unicorn": "52.0.0",
+ "@eslint/js": "9.4.0",
"@types/node": "20.12.12",
"@types/sanitize-html": "2.11.0",
"@types/semver": "7.5.8",
"@types/validator": "13.11.10",
- "@typescript-eslint/eslint-plugin": "7.8.0",
- "@typescript-eslint/parser": "7.8.0",
"@vitest/coverage-v8": "1.6.0",
"@vitest/ui": "1.6.0",
"@vueuse/core": "10.9.0",
+ "commit-and-tag-version": "12.4.1",
"cypress": "13.10.0",
"eslint": "9.4.0",
"eslint-config-prettier": "9.1.0",
@@ -122,11 +122,11 @@
"rimraf": "5.0.7",
"sanitize-html": "2.13.0",
"semver": "7.6.2",
- "commit-and-tag-version": "12.4.1",
"ts-morph": "22.0.0",
"tsup": "8.0.2",
"tsx": "4.11.0",
"typescript": "5.4.5",
+ "typescript-eslint": "7.11.0",
"validator": "13.12.0",
"vite": "5.2.11",
"vitepress": "1.2.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e43f0425cb1..bceb0f665fd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -29,6 +29,9 @@ importers:
'@eslint-types/unicorn':
specifier: 52.0.0
version: 52.0.0
+ '@eslint/js':
+ specifier: 9.4.0
+ version: 9.4.0
'@types/node':
specifier: 20.12.12
version: 20.12.12
@@ -41,12 +44,6 @@ importers:
'@types/validator':
specifier: 13.11.10
version: 13.11.10
- '@typescript-eslint/eslint-plugin':
- specifier: 7.8.0
- version: 7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)
- '@typescript-eslint/parser':
- specifier: 7.8.0
- version: 7.8.0(eslint@9.4.0)(typescript@5.4.5)
'@vitest/coverage-v8':
specifier: 1.6.0
version: 1.6.0(vitest@1.6.0(@types/node@20.12.12)(@vitest/ui@1.6.0)(jsdom@23.2.0))
@@ -88,7 +85,7 @@ importers:
version: 53.0.0(eslint@9.4.0)
eslint-plugin-vitest:
specifier: 0.5.4
- version: 0.5.4(@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(@vitest/ui@1.6.0)(jsdom@23.2.0))
+ version: 0.5.4(eslint@9.4.0)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(@vitest/ui@1.6.0)(jsdom@23.2.0))
npm-run-all2:
specifier: 6.2.0
version: 6.2.0
@@ -119,6 +116,9 @@ importers:
typescript:
specifier: 5.4.5
version: 5.4.5
+ typescript-eslint:
+ specifier: 7.11.0
+ version: 7.11.0(eslint@9.4.0)(typescript@5.4.5)
validator:
specifier: 13.12.0
version: 13.12.0
@@ -859,8 +859,8 @@ packages:
'@types/yauzl@2.10.3':
resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
- '@typescript-eslint/eslint-plugin@7.8.0':
- resolution: {integrity: sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==}
+ '@typescript-eslint/eslint-plugin@7.11.0':
+ resolution: {integrity: sha512-P+qEahbgeHW4JQ/87FuItjBj8O3MYv5gELDzr8QaQ7fsll1gSMTYb6j87MYyxwf3DtD7uGFB9ShwgmCJB5KmaQ==}
engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
'@typescript-eslint/parser': ^7.0.0
@@ -870,8 +870,8 @@ packages:
typescript:
optional: true
- '@typescript-eslint/parser@7.8.0':
- resolution: {integrity: sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==}
+ '@typescript-eslint/parser@7.11.0':
+ resolution: {integrity: sha512-yimw99teuaXVWsBcPO1Ais02kwJ1jmNA1KxE7ng0aT7ndr1pT1wqj0OJnsYVGKKlc4QJai86l/025L6z8CljOg==}
engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
eslint: ^8.56.0
@@ -884,12 +884,12 @@ packages:
resolution: {integrity: sha512-7L01/K8W/VGl7noe2mgH0K7BE29Sq6KAbVmxurj8GGaPDZXPr8EEQ2seOeAS+mEV9DnzxBQB6ax6qQQ5C6P4xg==}
engines: {node: ^18.18.0 || >=20.0.0}
- '@typescript-eslint/scope-manager@7.8.0':
- resolution: {integrity: sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==}
+ '@typescript-eslint/scope-manager@7.11.0':
+ resolution: {integrity: sha512-27tGdVEiutD4POirLZX4YzT180vevUURJl4wJGmm6TrQoiYwuxTIY98PBp6L2oN+JQxzE0URvYlzJaBHIekXAw==}
engines: {node: ^18.18.0 || >=20.0.0}
- '@typescript-eslint/type-utils@7.8.0':
- resolution: {integrity: sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==}
+ '@typescript-eslint/type-utils@7.11.0':
+ resolution: {integrity: sha512-WmppUEgYy+y1NTseNMJ6mCFxt03/7jTOy08bcg7bxJJdsM4nuhnchyBbE8vryveaJUf62noH7LodPSo5Z0WUCg==}
engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
eslint: ^8.56.0
@@ -902,8 +902,8 @@ packages:
resolution: {integrity: sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg==}
engines: {node: ^18.18.0 || >=20.0.0}
- '@typescript-eslint/types@7.8.0':
- resolution: {integrity: sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==}
+ '@typescript-eslint/types@7.11.0':
+ resolution: {integrity: sha512-MPEsDRZTyCiXkD4vd3zywDCifi7tatc4K37KqTprCvaXptP7Xlpdw0NR2hRJTetG5TxbWDB79Ys4kLmHliEo/w==}
engines: {node: ^18.18.0 || >=20.0.0}
'@typescript-eslint/typescript-estree@7.10.0':
@@ -915,8 +915,8 @@ packages:
typescript:
optional: true
- '@typescript-eslint/typescript-estree@7.8.0':
- resolution: {integrity: sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==}
+ '@typescript-eslint/typescript-estree@7.11.0':
+ resolution: {integrity: sha512-cxkhZ2C/iyi3/6U9EPc5y+a6csqHItndvN/CzbNXTNrsC3/ASoYQZEt9uMaEp+xFNjasqQyszp5TumAVKKvJeQ==}
engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
typescript: '*'
@@ -930,8 +930,8 @@ packages:
peerDependencies:
eslint: ^8.56.0
- '@typescript-eslint/utils@7.8.0':
- resolution: {integrity: sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==}
+ '@typescript-eslint/utils@7.11.0':
+ resolution: {integrity: sha512-xlAWwPleNRHwF37AhrZurOxA1wyXowW4PqVXZVUNCLjB48CqdPJoJWkrpH2nij9Q3Lb7rtWindtoXwxjxlKKCA==}
engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies:
eslint: ^8.56.0
@@ -940,8 +940,8 @@ packages:
resolution: {integrity: sha512-9ntIVgsi6gg6FIq9xjEO4VQJvwOqA3jaBFQJ/6TK5AvEup2+cECI6Fh7QiBxmfMHXU0V0J4RyPeOU1VDNzl9cg==}
engines: {node: ^18.18.0 || >=20.0.0}
- '@typescript-eslint/visitor-keys@7.8.0':
- resolution: {integrity: sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==}
+ '@typescript-eslint/visitor-keys@7.11.0':
+ resolution: {integrity: sha512-7syYk4MzjxTEk0g/w3iqtgxnFQspDJfn6QKD36xMuuhTzjcxY7F8EmBLnALjVyaOF1/bVocu3bS/2/F7rXrveQ==}
engines: {node: ^18.18.0 || >=20.0.0}
'@vitejs/plugin-vue@5.0.4':
@@ -3460,6 +3460,16 @@ packages:
typedarray@0.0.6:
resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
+ typescript-eslint@7.11.0:
+ resolution: {integrity: sha512-ZKe3yHF/IS/kCUE4CGE3UgtK+Q7yRk1e9kwEI0rqm9XxMTd9P1eHe0LVVtrZ3oFuIQ2unJ9Xn0vTsLApzJ3aPw==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+ peerDependencies:
+ eslint: ^8.56.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
typescript@5.4.5:
resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==}
engines: {node: '>=14.17'}
@@ -4385,32 +4395,30 @@ snapshots:
'@types/node': 20.12.12
optional: true
- '@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)':
+ '@typescript-eslint/eslint-plugin@7.11.0(@typescript-eslint/parser@7.11.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)':
dependencies:
'@eslint-community/regexpp': 4.10.0
- '@typescript-eslint/parser': 7.8.0(eslint@9.4.0)(typescript@5.4.5)
- '@typescript-eslint/scope-manager': 7.8.0
- '@typescript-eslint/type-utils': 7.8.0(eslint@9.4.0)(typescript@5.4.5)
- '@typescript-eslint/utils': 7.8.0(eslint@9.4.0)(typescript@5.4.5)
- '@typescript-eslint/visitor-keys': 7.8.0
- debug: 4.3.4(supports-color@8.1.1)
+ '@typescript-eslint/parser': 7.11.0(eslint@9.4.0)(typescript@5.4.5)
+ '@typescript-eslint/scope-manager': 7.11.0
+ '@typescript-eslint/type-utils': 7.11.0(eslint@9.4.0)(typescript@5.4.5)
+ '@typescript-eslint/utils': 7.11.0(eslint@9.4.0)(typescript@5.4.5)
+ '@typescript-eslint/visitor-keys': 7.11.0
eslint: 9.4.0
graphemer: 1.4.0
ignore: 5.3.1
natural-compare: 1.4.0
- semver: 7.6.2
ts-api-utils: 1.3.0(typescript@5.4.5)
optionalDependencies:
typescript: 5.4.5
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@7.8.0(eslint@9.4.0)(typescript@5.4.5)':
+ '@typescript-eslint/parser@7.11.0(eslint@9.4.0)(typescript@5.4.5)':
dependencies:
- '@typescript-eslint/scope-manager': 7.8.0
- '@typescript-eslint/types': 7.8.0
- '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5)
- '@typescript-eslint/visitor-keys': 7.8.0
+ '@typescript-eslint/scope-manager': 7.11.0
+ '@typescript-eslint/types': 7.11.0
+ '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5)
+ '@typescript-eslint/visitor-keys': 7.11.0
debug: 4.3.4(supports-color@8.1.1)
eslint: 9.4.0
optionalDependencies:
@@ -4423,15 +4431,15 @@ snapshots:
'@typescript-eslint/types': 7.10.0
'@typescript-eslint/visitor-keys': 7.10.0
- '@typescript-eslint/scope-manager@7.8.0':
+ '@typescript-eslint/scope-manager@7.11.0':
dependencies:
- '@typescript-eslint/types': 7.8.0
- '@typescript-eslint/visitor-keys': 7.8.0
+ '@typescript-eslint/types': 7.11.0
+ '@typescript-eslint/visitor-keys': 7.11.0
- '@typescript-eslint/type-utils@7.8.0(eslint@9.4.0)(typescript@5.4.5)':
+ '@typescript-eslint/type-utils@7.11.0(eslint@9.4.0)(typescript@5.4.5)':
dependencies:
- '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5)
- '@typescript-eslint/utils': 7.8.0(eslint@9.4.0)(typescript@5.4.5)
+ '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5)
+ '@typescript-eslint/utils': 7.11.0(eslint@9.4.0)(typescript@5.4.5)
debug: 4.3.4(supports-color@8.1.1)
eslint: 9.4.0
ts-api-utils: 1.3.0(typescript@5.4.5)
@@ -4442,7 +4450,7 @@ snapshots:
'@typescript-eslint/types@7.10.0': {}
- '@typescript-eslint/types@7.8.0': {}
+ '@typescript-eslint/types@7.11.0': {}
'@typescript-eslint/typescript-estree@7.10.0(typescript@5.4.5)':
dependencies:
@@ -4459,10 +4467,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@7.8.0(typescript@5.4.5)':
+ '@typescript-eslint/typescript-estree@7.11.0(typescript@5.4.5)':
dependencies:
- '@typescript-eslint/types': 7.8.0
- '@typescript-eslint/visitor-keys': 7.8.0
+ '@typescript-eslint/types': 7.11.0
+ '@typescript-eslint/visitor-keys': 7.11.0
debug: 4.3.4(supports-color@8.1.1)
globby: 11.1.0
is-glob: 4.0.3
@@ -4485,16 +4493,13 @@ snapshots:
- supports-color
- typescript
- '@typescript-eslint/utils@7.8.0(eslint@9.4.0)(typescript@5.4.5)':
+ '@typescript-eslint/utils@7.11.0(eslint@9.4.0)(typescript@5.4.5)':
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0)
- '@types/json-schema': 7.0.15
- '@types/semver': 7.5.8
- '@typescript-eslint/scope-manager': 7.8.0
- '@typescript-eslint/types': 7.8.0
- '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5)
+ '@typescript-eslint/scope-manager': 7.11.0
+ '@typescript-eslint/types': 7.11.0
+ '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5)
eslint: 9.4.0
- semver: 7.6.2
transitivePeerDependencies:
- supports-color
- typescript
@@ -4504,9 +4509,9 @@ snapshots:
'@typescript-eslint/types': 7.10.0
eslint-visitor-keys: 3.4.3
- '@typescript-eslint/visitor-keys@7.8.0':
+ '@typescript-eslint/visitor-keys@7.11.0':
dependencies:
- '@typescript-eslint/types': 7.8.0
+ '@typescript-eslint/types': 7.11.0
eslint-visitor-keys: 3.4.3
'@vitejs/plugin-vue@5.0.4(vite@5.2.11(@types/node@20.12.12))(vue@3.4.27(typescript@5.4.5))':
@@ -5586,12 +5591,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(@vitest/ui@1.6.0)(jsdom@23.2.0)):
+ eslint-plugin-vitest@0.5.4(eslint@9.4.0)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(@vitest/ui@1.6.0)(jsdom@23.2.0)):
dependencies:
'@typescript-eslint/utils': 7.10.0(eslint@9.4.0)(typescript@5.4.5)
eslint: 9.4.0
optionalDependencies:
- '@typescript-eslint/eslint-plugin': 7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)
vitest: 1.6.0(@types/node@20.12.12)(@vitest/ui@1.6.0)(jsdom@23.2.0)
transitivePeerDependencies:
- supports-color
@@ -7316,6 +7320,17 @@ snapshots:
typedarray@0.0.6: {}
+ typescript-eslint@7.11.0(eslint@9.4.0)(typescript@5.4.5):
+ dependencies:
+ '@typescript-eslint/eslint-plugin': 7.11.0(@typescript-eslint/parser@7.11.0(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)
+ '@typescript-eslint/parser': 7.11.0(eslint@9.4.0)(typescript@5.4.5)
+ '@typescript-eslint/utils': 7.11.0(eslint@9.4.0)(typescript@5.4.5)
+ eslint: 9.4.0
+ optionalDependencies:
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - supports-color
+
typescript@5.4.5: {}
ufo@1.5.3: {}
diff --git a/src/locales/de/location/street_name.ts b/src/locales/de/location/street_name.ts
index 6a8dd8503d0..a477dc7e5a0 100644
--- a/src/locales/de/location/street_name.ts
+++ b/src/locales/de/location/street_name.ts
@@ -954,7 +954,7 @@ export default [
'Unterölbach',
'Unterstr.',
'Uppersberg',
- "Van\\'t-Hoff-Str.",
+ "Van't-Hoff-Str.",
'Veit-Stoß-Str.',
'Vereinsstr.',
'Viktor-Meyer-Str.',