@open-xchange/linter-presets 1.23.4 → 1.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/dist/eslint/index.d.mts +2 -2
- package/dist/eslint/index.d.mts.map +1 -1
- package/dist/eslint/index.mjs +194 -111
- package/dist/eslint/index.mjs.map +1 -1
- package/dist/resolver-B_ekbcn6.mjs.map +1 -1
- package/dist/stylelint/index.d.mts.map +1 -1
- package/dist/stylelint/index.mjs.map +1 -1
- package/docs/eslint/README.md +2 -0
- package/docs/eslint/env/browser.md +4 -4
- package/package.json +16 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver-B_ekbcn6.mjs","names":["#url","#root"],"sources":["../src/utils/resolver.ts"],"sourcesContent":["\nimport { dirname } from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\n// functions ==================================================================\n\n/**\n * A resolver for file paths relative to a base URL.\n */\nexport class PathResolver {\n\n readonly #url: string\n readonly #root: string\n\n constructor(url: string) {\n this.#url = url\n this.#root = dirname(fileURLToPath(url))\n }\n\n /**\n * @returns\n * The directory path of the URL passed to the constructor.\n */\n get root(): string {\n return this.#root\n }\n\n /**\n * Converts a file path relative to 'root' to an absolute file path.\n *\n * @param file\n * The file path to be converted.\n *\n * @returns\n * The absolute file path.\n */\n path(file: string): string {\n return fileURLToPath(new URL(file, this.#url))\n }\n}\n"],"mappings":";;;;;;AASA,IAAa,eAAb,MAA0B;CAExB;CACA;CAEA,YAAY,KAAa;EACvB,KAAKA,OAAO;EACZ,KAAKC,QAAQ,QAAQ,cAAc,
|
|
1
|
+
{"version":3,"file":"resolver-B_ekbcn6.mjs","names":["#url","#root"],"sources":["../src/utils/resolver.ts"],"sourcesContent":["\nimport { dirname } from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\n// functions ==================================================================\n\n/**\n * A resolver for file paths relative to a base URL.\n */\nexport class PathResolver {\n\n readonly #url: string\n readonly #root: string\n\n constructor(url: string) {\n this.#url = url\n this.#root = dirname(fileURLToPath(url))\n }\n\n /**\n * @returns\n * The directory path of the URL passed to the constructor.\n */\n get root(): string {\n return this.#root\n }\n\n /**\n * Converts a file path relative to 'root' to an absolute file path.\n *\n * @param file\n * The file path to be converted.\n *\n * @returns\n * The absolute file path.\n */\n path(file: string): string {\n return fileURLToPath(new URL(file, this.#url))\n }\n}\n"],"mappings":";;;;;;AASA,IAAa,eAAb,MAA0B;CAExB;CACA;CAEA,YAAY,KAAa;EACvB,KAAKA,OAAO;EACZ,KAAKC,QAAQ,QAAQ,cAAc,GAAG,CAAC;CACzC;;;;;CAMA,IAAI,OAAe;EACjB,OAAO,KAAKA;CACd;;;;;;;;;;CAWA,KAAK,MAAsB;EACzB,OAAO,cAAc,IAAI,IAAI,MAAM,KAAKD,IAAI,CAAC;CAC/C;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/stylelint/index.ts"],"mappings":";;;;;AAUA;UAAiB,gBAAA
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/stylelint/index.ts"],"mappings":";;;;;AAUA;UAAiB,gBAAA;;;AAcT;AAQR;;EAfE,MAAA;EA2Cc;;;;;EApCd,MAAM;AAAA;;;AAoCQ;UA5BC,cAAA;EA2CW;;;;EArC1B,IAAA;EAqCqD;;AAAM;;EA/B3D,OAAA;;;;;EAMA,OAAA;;;;EAKA,SAAA,GAAY,gBAAA;;;;EAKZ,KAAA,GAAQ,MAAM;AAAA;;;;;;;;;;;iBAeA,YAAA,CAAa,OAAA,EAAS,cAAA,GAAiB,MAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/stylelint/index.ts"],"sourcesContent":["\nimport type { Config } from 'stylelint'\n\nimport { PathResolver } from '@/utils/resolver.js'\n\n// types ======================================================================\n\n/**\n * Configuration options for StyleLint code style rules.\n */\nexport interface StylisticOptions {\n\n /**\n * Default indentation size (number of space characters).\n *\n * @default 2\n */\n indent?: number\n\n /**\n * The type of the string delimiter character.\n *\n * @default 'single'\n */\n quotes?: 'single' | 'double' | 'off'\n}\n\n// ----------------------------------------------------------------------------\n\n/**\n * Configuration options for linting the entire project with StyleLint.\n */\nexport interface ProjectOptions {\n\n /**\n * The URL of the project root containing the StyleLint configuration file.\n * Should usually be set to `import.meta.url`.\n */\n root: string\n\n /**\n * Glob patterns for all files to be ignored by StyleLint (the patterns must\n * match files, plain directory names are not supported).\n */\n ignores?: string[]\n\n /**\n * Path to the template file containing the license header to be used in all\n * source files. May be a path relative to the project root.\n */\n license?: string\n\n /**\n * Configuration options for code style.\n */\n stylistic?: StylisticOptions\n\n /**\n * Additional linter rules to be added to the global configuration.\n */\n rules?: Config['rules']\n}\n\n// functions ==================================================================\n\n/**\n * Generates a StyleLint configuration object targeting the source files in the\n * entire project.\n *\n * @param options\n * Plugin configuration options.\n *\n * @returns\n * The configuration object to be exported from `stylelint.config.js`.\n */\nexport function defineConfig(options: ProjectOptions): Config {\n\n const ignoreFiles: string[] = [\n 'node_modules/**/*',\n 'dist/**/*',\n 'output/**/*',\n 'coverage/**/*', // Vitest\n '.nuxt/**/*', // NuxtJS\n '.output/**/*', // NuxtJS\n ...(options.ignores ?? []),\n ]\n\n // resolve stylistic configuration options\n const stylistic: StylisticOptions = {\n indent: 2,\n quotes: 'single',\n ...options.stylistic,\n }\n\n // group custom rules by language plugins\n type RuleRec = NonNullable<Config['rules']>\n const rules: Record<string, RuleRec> = { base: {}, scss: {}, less: {} }\n for (const [rule, value] of Object.entries(options.rules ?? {})) {\n const key = rule.split('/')[0];\n (rules[key] ?? rules.base)[rule] = value as unknown\n }\n\n // predefined rules for SCSS (used in '.scss' and '.vue' files)\n rules.scss = {\n 'scss/dollar-variable-empty-line-before': null,\n 'scss/double-slash-comment-empty-line-before': null,\n ...rules.scss,\n }\n\n // the resolver for relative file paths\n const resolver = new PathResolver(options.root)\n\n return {\n\n // ignore certain files and folders\n ignoreFiles,\n\n // add the stylistic plugin\n plugins: [\n 'stylelint-plugin-license-header',\n '@stylistic/stylelint-plugin',\n ],\n\n // add recommended configurations\n extends: [\n '@stylistic/stylelint-config',\n ],\n\n // check inline directives\n reportDescriptionlessDisables: null,\n reportInvalidScopeDisables: true,\n reportNeedlessDisables: true,\n reportUnscopedDisables: true,\n\n // reconfigure linter rules\n rules: {\n\n // core rules\n 'at-rule-empty-line-before': null,\n 'color-function-notation': ['modern', { ignore: ['with-var-inside'] }],\n 'color-hex-length': null,\n 'comment-empty-line-before': null,\n 'custom-property-empty-line-before': null,\n 'declaration-block-no-redundant-longhand-properties': [true, { ignoreShorthands: ['inset'] }], // Safari does not support 'inset'\n 'declaration-block-single-line-max-declarations': null,\n 'declaration-empty-line-before': null,\n 'function-url-no-scheme-relative': true,\n 'function-url-scheme-allowed-list': ['data'],\n 'media-feature-range-notation': 'prefix', // Safari 16.3 does not work with this notation\n 'no-descending-specificity': null,\n 'no-unknown-animations': true,\n 'rule-empty-line-before': null,\n 'shorthand-property-no-redundant-values': [true, { ignore: ['four-into-three-edge-values'] }],\n\n // license-header plugin\n ...(options.license ? { 'plugin/license-header': [true, { license: resolver.path(options.license) }] } : null),\n\n // stylistic plugin\n '@stylistic/declaration-colon-newline-after': null,\n '@stylistic/indentation': [stylistic.indent, { ignore: ['inside-parens'] }],\n '@stylistic/max-line-length': null,\n '@stylistic/no-empty-first-line': null,\n '@stylistic/selector-list-comma-newline-after': null,\n '@stylistic/string-quotes': (stylistic.quotes === 'off') ? null : [stylistic.quotes, { avoidEscape: true }],\n\n // custom rules\n ...rules.base,\n },\n\n // overrides for custom languages\n overrides: [\n\n // '.scss' files\n {\n files: ['**/*.scss'],\n extends: ['stylelint-config-standard-scss'],\n rules: rules.scss,\n },\n\n // '.less' files\n {\n files: ['**/*.less'],\n extends: ['stylelint-config-standard-less'],\n rules: rules.less,\n },\n\n // '.vue' files (for now, only with SCSS)\n {\n files: ['**/*.vue'],\n extends: ['stylelint-config-standard-scss', 'stylelint-config-standard-vue/scss'],\n rules: rules.scss,\n },\n ],\n }\n}\n"],"mappings":";;;;;;;;;;;;AA2EA,SAAgB,aAAa,SAAiC;CAE5D,MAAM,cAAwB;EAC5B;EACA;EACA;EACA;EACA;EACA;EACA,GAAI,QAAQ,WAAW,
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/stylelint/index.ts"],"sourcesContent":["\nimport type { Config } from 'stylelint'\n\nimport { PathResolver } from '@/utils/resolver.js'\n\n// types ======================================================================\n\n/**\n * Configuration options for StyleLint code style rules.\n */\nexport interface StylisticOptions {\n\n /**\n * Default indentation size (number of space characters).\n *\n * @default 2\n */\n indent?: number\n\n /**\n * The type of the string delimiter character.\n *\n * @default 'single'\n */\n quotes?: 'single' | 'double' | 'off'\n}\n\n// ----------------------------------------------------------------------------\n\n/**\n * Configuration options for linting the entire project with StyleLint.\n */\nexport interface ProjectOptions {\n\n /**\n * The URL of the project root containing the StyleLint configuration file.\n * Should usually be set to `import.meta.url`.\n */\n root: string\n\n /**\n * Glob patterns for all files to be ignored by StyleLint (the patterns must\n * match files, plain directory names are not supported).\n */\n ignores?: string[]\n\n /**\n * Path to the template file containing the license header to be used in all\n * source files. May be a path relative to the project root.\n */\n license?: string\n\n /**\n * Configuration options for code style.\n */\n stylistic?: StylisticOptions\n\n /**\n * Additional linter rules to be added to the global configuration.\n */\n rules?: Config['rules']\n}\n\n// functions ==================================================================\n\n/**\n * Generates a StyleLint configuration object targeting the source files in the\n * entire project.\n *\n * @param options\n * Plugin configuration options.\n *\n * @returns\n * The configuration object to be exported from `stylelint.config.js`.\n */\nexport function defineConfig(options: ProjectOptions): Config {\n\n const ignoreFiles: string[] = [\n 'node_modules/**/*',\n 'dist/**/*',\n 'output/**/*',\n 'coverage/**/*', // Vitest\n '.nuxt/**/*', // NuxtJS\n '.output/**/*', // NuxtJS\n ...(options.ignores ?? []),\n ]\n\n // resolve stylistic configuration options\n const stylistic: StylisticOptions = {\n indent: 2,\n quotes: 'single',\n ...options.stylistic,\n }\n\n // group custom rules by language plugins\n type RuleRec = NonNullable<Config['rules']>\n const rules: Record<string, RuleRec> = { base: {}, scss: {}, less: {} }\n for (const [rule, value] of Object.entries(options.rules ?? {})) {\n const key = rule.split('/')[0];\n (rules[key] ?? rules.base)[rule] = value as unknown\n }\n\n // predefined rules for SCSS (used in '.scss' and '.vue' files)\n rules.scss = {\n 'scss/dollar-variable-empty-line-before': null,\n 'scss/double-slash-comment-empty-line-before': null,\n ...rules.scss,\n }\n\n // the resolver for relative file paths\n const resolver = new PathResolver(options.root)\n\n return {\n\n // ignore certain files and folders\n ignoreFiles,\n\n // add the stylistic plugin\n plugins: [\n 'stylelint-plugin-license-header',\n '@stylistic/stylelint-plugin',\n ],\n\n // add recommended configurations\n extends: [\n '@stylistic/stylelint-config',\n ],\n\n // check inline directives\n reportDescriptionlessDisables: null,\n reportInvalidScopeDisables: true,\n reportNeedlessDisables: true,\n reportUnscopedDisables: true,\n\n // reconfigure linter rules\n rules: {\n\n // core rules\n 'at-rule-empty-line-before': null,\n 'color-function-notation': ['modern', { ignore: ['with-var-inside'] }],\n 'color-hex-length': null,\n 'comment-empty-line-before': null,\n 'custom-property-empty-line-before': null,\n 'declaration-block-no-redundant-longhand-properties': [true, { ignoreShorthands: ['inset'] }], // Safari does not support 'inset'\n 'declaration-block-single-line-max-declarations': null,\n 'declaration-empty-line-before': null,\n 'function-url-no-scheme-relative': true,\n 'function-url-scheme-allowed-list': ['data'],\n 'media-feature-range-notation': 'prefix', // Safari 16.3 does not work with this notation\n 'no-descending-specificity': null,\n 'no-unknown-animations': true,\n 'rule-empty-line-before': null,\n 'shorthand-property-no-redundant-values': [true, { ignore: ['four-into-three-edge-values'] }],\n\n // license-header plugin\n ...(options.license ? { 'plugin/license-header': [true, { license: resolver.path(options.license) }] } : null),\n\n // stylistic plugin\n '@stylistic/declaration-colon-newline-after': null,\n '@stylistic/indentation': [stylistic.indent, { ignore: ['inside-parens'] }],\n '@stylistic/max-line-length': null,\n '@stylistic/no-empty-first-line': null,\n '@stylistic/selector-list-comma-newline-after': null,\n '@stylistic/string-quotes': (stylistic.quotes === 'off') ? null : [stylistic.quotes, { avoidEscape: true }],\n\n // custom rules\n ...rules.base,\n },\n\n // overrides for custom languages\n overrides: [\n\n // '.scss' files\n {\n files: ['**/*.scss'],\n extends: ['stylelint-config-standard-scss'],\n rules: rules.scss,\n },\n\n // '.less' files\n {\n files: ['**/*.less'],\n extends: ['stylelint-config-standard-less'],\n rules: rules.less,\n },\n\n // '.vue' files (for now, only with SCSS)\n {\n files: ['**/*.vue'],\n extends: ['stylelint-config-standard-scss', 'stylelint-config-standard-vue/scss'],\n rules: rules.scss,\n },\n ],\n }\n}\n"],"mappings":";;;;;;;;;;;;AA2EA,SAAgB,aAAa,SAAiC;CAE5D,MAAM,cAAwB;EAC5B;EACA;EACA;EACA;EACA;EACA;EACA,GAAI,QAAQ,WAAW,CAAC;CAC1B;CAGA,MAAM,YAA8B;EAClC,QAAQ;EACR,QAAQ;EACR,GAAG,QAAQ;CACb;CAIA,MAAM,QAAiC;EAAE,MAAM,CAAC;EAAG,MAAM,CAAC;EAAG,MAAM,CAAC;CAAE;CACtE,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,QAAQ,SAAS,CAAC,CAAC,GAAG;EAC/D,MAAM,MAAM,KAAK,MAAM,GAAG,EAAE;EAC5B,CAAC,MAAM,QAAQ,MAAM,MAAM,QAAQ;CACrC;CAGA,MAAM,OAAO;EACX,0CAA0C;EAC1C,+CAA+C;EAC/C,GAAG,MAAM;CACX;CAGA,MAAM,WAAW,IAAI,aAAa,QAAQ,IAAI;CAE9C,OAAO;EAGL;EAGA,SAAS,CACP,mCACA,6BACF;EAGA,SAAS,CACP,6BACF;EAGA,+BAA+B;EAC/B,4BAA4B;EAC5B,wBAAwB;EACxB,wBAAwB;EAGxB,OAAO;GAGL,6BAA6B;GAC7B,2BAA2B,CAAC,UAAU,EAAE,QAAQ,CAAC,iBAAiB,EAAE,CAAC;GACrE,oBAAoB;GACpB,6BAA6B;GAC7B,qCAAqC;GACrC,sDAAsD,CAAC,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC;GAC5F,kDAAkD;GAClD,iCAAiC;GACjC,mCAAmC;GACnC,oCAAoC,CAAC,MAAM;GAC3C,gCAAgC;GAChC,6BAA6B;GAC7B,yBAAyB;GACzB,0BAA0B;GAC1B,0CAA0C,CAAC,MAAM,EAAE,QAAQ,CAAC,6BAA6B,EAAE,CAAC;GAG5F,GAAI,QAAQ,UAAU,EAAE,yBAAyB,CAAC,MAAM,EAAE,SAAS,SAAS,KAAK,QAAQ,OAAO,EAAE,CAAC,EAAE,IAAI;GAGzG,8CAA8C;GAC9C,0BAA0B,CAAC,UAAU,QAAQ,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC;GAC1E,8BAA8B;GAC9B,kCAAkC;GAClC,gDAAgD;GAChD,4BAA6B,UAAU,WAAW,QAAS,OAAO,CAAC,UAAU,QAAQ,EAAE,aAAa,KAAK,CAAC;GAG1G,GAAG,MAAM;EACX;EAGA,WAAW;GAGT;IACE,OAAO,CAAC,WAAW;IACnB,SAAS,CAAC,gCAAgC;IAC1C,OAAO,MAAM;GACf;GAGA;IACE,OAAO,CAAC,WAAW;IACnB,SAAS,CAAC,gCAAgC;IAC1C,OAAO,MAAM;GACf;GAGA;IACE,OAAO,CAAC,UAAU;IAClB,SAAS,CAAC,kCAAkC,oCAAoC;IAChF,OAAO,MAAM;GACf;EACF;CACF;AACF"}
|
package/docs/eslint/README.md
CHANGED
|
@@ -71,6 +71,8 @@ This package defines ignore globs for the following files and directories:
|
|
|
71
71
|
- `coverage` (Vitest coverage results)
|
|
72
72
|
- `.nuxt` and `.output` (NuxtJS output directories)
|
|
73
73
|
|
|
74
|
+
Custom ignore globs passed in the options will be added to the built-in ignore list.
|
|
75
|
+
|
|
74
76
|
#### `defineConfig` Example
|
|
75
77
|
|
|
76
78
|
```ts
|
|
@@ -47,7 +47,7 @@ The environment `env.browser` already defines the following built-in restriction
|
|
|
47
47
|
| Syntax | TypeScript `public` class field modifier | Can be omitted (except for constructors of classes deriving from a class with protected constructor). |
|
|
48
48
|
| | TypeScript `private` class field modifier | Use native `#private` class fields. |
|
|
49
49
|
| | [TypeScript parameter properties](https://www.typescriptlang.org/docs/handbook/2/classes.html#parameter-properties) | Use explicit class properties. |
|
|
50
|
-
| | Module exports of [TypeScript const enumerations](https://devdocs.io/typescript~5.1/enums#enums-at-compile-time) | Not compatible with bundlers running in isolated modules mode
|
|
50
|
+
| | Module exports of [TypeScript const enumerations](https://devdocs.io/typescript~5.1/enums#enums-at-compile-time) | Not compatible with bundlers running in isolated modules mode. |
|
|
51
51
|
|
|
52
52
|
## Example
|
|
53
53
|
|
|
@@ -65,13 +65,13 @@ export default defineConfig(
|
|
|
65
65
|
files: ['src/**/*.{js,ts}'],
|
|
66
66
|
restricted: {
|
|
67
67
|
globals: [
|
|
68
|
-
{ name: '$', message: 'Explicitly import the
|
|
68
|
+
{ name: '$', message: 'Explicitly import the `jquery` package.' },
|
|
69
69
|
],
|
|
70
70
|
imports: [
|
|
71
|
-
{ name: 'underscore', message: 'Use the
|
|
71
|
+
{ name: 'underscore', message: 'Use the `lodash` package.' },
|
|
72
72
|
],
|
|
73
73
|
properties: [
|
|
74
|
-
{ object: '_', property: 'flatten', message: 'Use native
|
|
74
|
+
{ object: '_', property: 'flatten', message: 'Use native `Array::flat` instead.' },
|
|
75
75
|
],
|
|
76
76
|
syntax: [
|
|
77
77
|
{ selector: 'ClassBody > StaticBlock', message: 'Static blocks not supported in all browsers.' },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-xchange/linter-presets",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.25.0",
|
|
4
4
|
"description": "Configuration presets for ESLint and StyleLint",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"engines": {
|
|
12
|
-
"node": ">=
|
|
12
|
+
"node": ">=22.18"
|
|
13
13
|
},
|
|
14
14
|
"type": "module",
|
|
15
15
|
"exports": {
|
|
@@ -23,12 +23,13 @@
|
|
|
23
23
|
"CHANGELOG.*"
|
|
24
24
|
],
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@babel/core": "^8.0.0-rc.
|
|
27
|
-
"@babel/eslint-parser": "^8.0.0-rc.
|
|
26
|
+
"@babel/core": "^8.0.0-rc.5",
|
|
27
|
+
"@babel/eslint-parser": "^8.0.0-rc.5",
|
|
28
28
|
"@eslint-community/eslint-plugin-eslint-comments": "^4.7.1",
|
|
29
|
-
"@eslint-react/eslint-plugin": "^5.7.
|
|
30
|
-
"@eslint/
|
|
31
|
-
"@eslint/
|
|
29
|
+
"@eslint-react/eslint-plugin": "^5.7.10",
|
|
30
|
+
"@eslint-react/kit": "^5.7.10",
|
|
31
|
+
"@eslint/compat": "^2.1.0",
|
|
32
|
+
"@eslint/config-helpers": "^0.6.0",
|
|
32
33
|
"@eslint/core": "^1.2.1",
|
|
33
34
|
"@eslint/js": "^10.0.1",
|
|
34
35
|
"@eslint/markdown": "^8.0.1",
|
|
@@ -38,10 +39,10 @@
|
|
|
38
39
|
"@stylistic/stylelint-plugin": "^5.1.0",
|
|
39
40
|
"@types/json-schema": "^7.0.15",
|
|
40
41
|
"@types/picomatch": "^4.0.3",
|
|
41
|
-
"@vitest/eslint-plugin": "^1.6.
|
|
42
|
+
"@vitest/eslint-plugin": "^1.6.17",
|
|
42
43
|
"@vue/eslint-config-typescript": "^14.7.0",
|
|
43
44
|
"confusing-browser-globals": "^1.0.11",
|
|
44
|
-
"empathic": "^2.0.
|
|
45
|
+
"empathic": "^2.0.1",
|
|
45
46
|
"eslint-plugin-chai-expect": "^4.1.0",
|
|
46
47
|
"eslint-plugin-codeceptjs": "^1.3.0",
|
|
47
48
|
"eslint-plugin-depend": "^1.5.0",
|
|
@@ -53,7 +54,7 @@
|
|
|
53
54
|
"eslint-plugin-jsonc": "^3.1.2",
|
|
54
55
|
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
55
56
|
"eslint-plugin-license-header": "^0.9.0",
|
|
56
|
-
"eslint-plugin-n": "^
|
|
57
|
+
"eslint-plugin-n": "^18.0.1",
|
|
57
58
|
"eslint-plugin-no-unsanitized": "^4.1.5",
|
|
58
59
|
"eslint-plugin-promise": "^7.3.0",
|
|
59
60
|
"eslint-plugin-react-hooks": "^7.1.1",
|
|
@@ -70,18 +71,18 @@
|
|
|
70
71
|
"stylelint-config-standard-scss": "^17.0.0",
|
|
71
72
|
"stylelint-config-standard-vue": "^1.0.0",
|
|
72
73
|
"stylelint-plugin-license-header": "^1.0.3",
|
|
73
|
-
"typescript-eslint": "^8.59.
|
|
74
|
+
"typescript-eslint": "^8.59.3"
|
|
74
75
|
},
|
|
75
76
|
"devDependencies": {
|
|
76
|
-
"@jest/globals": "^30.
|
|
77
|
+
"@jest/globals": "^30.4.1",
|
|
77
78
|
"@types/confusing-browser-globals": "^1.0.3",
|
|
78
79
|
"@types/react": "^19.2.14",
|
|
79
|
-
"@typescript-eslint/utils": "^8.59.
|
|
80
|
+
"@typescript-eslint/utils": "^8.59.3",
|
|
80
81
|
"eslint": "^10.3.0",
|
|
81
|
-
"jest": "^30.
|
|
82
|
+
"jest": "^30.4.2",
|
|
82
83
|
"stylelint": "^17.11.0",
|
|
83
84
|
"vue": "^3.5.34",
|
|
84
|
-
"@open-xchange/tsconfig": "^0.0
|
|
85
|
+
"@open-xchange/tsconfig": "^0.1.0"
|
|
85
86
|
},
|
|
86
87
|
"peerDependencies": {
|
|
87
88
|
"eslint": "^9.35.0 || ^10.0.0",
|