diff --git a/packages/@d-zero/commitlint-config/get-cz-config.js b/packages/@d-zero/commitlint-config/get-cz-config.js index 657f27f5..a2c1a463 100644 --- a/packages/@d-zero/commitlint-config/get-cz-config.js +++ b/packages/@d-zero/commitlint-config/get-cz-config.js @@ -15,9 +15,15 @@ export async function getCZConfig() { return null; } - const modPath = czConfigPath.replace(/^(?:\.\/)?node_modules\//, ''); + const modulePath = czConfigPath.replace(/^(?:\.\/)?node_modules\//, ''); - const czConfig = await import(modPath).catch(() => null); + let czConfig; + + try { + czConfig = await import(modulePath); + } catch { + return null; + } return czConfig?.default ?? czConfig ?? null; } diff --git a/packages/@d-zero/csstree-scss-syntax/src/index.ts b/packages/@d-zero/csstree-scss-syntax/src/index.ts index f9834037..8a9052f1 100644 --- a/packages/@d-zero/csstree-scss-syntax/src/index.ts +++ b/packages/@d-zero/csstree-scss-syntax/src/index.ts @@ -21,6 +21,8 @@ const forked = CSSTree.fork( ...scope, Value: { ...scope.Value, + // `this` is the css-tree parser context bound at call time, not a class instance. + /* eslint-disable unicorn/no-this-outside-of-class */ // @ts-ignore getNode: function (context) { // @ts-ignore @@ -39,6 +41,7 @@ const forked = CSSTree.fork( return getNode.call(this, context); }, + /* eslint-enable unicorn/no-this-outside-of-class */ }, }, node: { diff --git a/packages/@d-zero/csstree-scss-syntax/src/node/sass-variable.ts b/packages/@d-zero/csstree-scss-syntax/src/node/sass-variable.ts index 97838e62..cbd8090a 100644 --- a/packages/@d-zero/csstree-scss-syntax/src/node/sass-variable.ts +++ b/packages/@d-zero/csstree-scss-syntax/src/node/sass-variable.ts @@ -6,6 +6,8 @@ export default { structure: { name: String, }, + // `this` is the css-tree parser context bound at call time, not a class instance. + /* eslint-disable unicorn/no-this-outside-of-class */ // @ts-ignore parse: function SassVariable() { // @ts-ignore @@ -22,6 +24,7 @@ export default { name: this.consume(IDENTIFIER), }; }, + /* eslint-enable unicorn/no-this-outside-of-class */ // @ts-ignore generate: function (node) { return '$' + node.name; diff --git a/packages/@d-zero/csstree-scss-syntax/src/types.ts b/packages/@d-zero/csstree-scss-syntax/src/types.ts index 96d6663c..5ebac786 100644 --- a/packages/@d-zero/csstree-scss-syntax/src/types.ts +++ b/packages/@d-zero/csstree-scss-syntax/src/types.ts @@ -16,15 +16,15 @@ export type CSSTreeModule = typeof CSSTree & { findAll: typeof CSSTree.findAll; fromPlainObject: typeof CSSTree.fromPlainObject; toPlainObject: typeof CSSTree.toPlainObject; - fork(...args: Parameters): CSSTreeModule; + fork(...arguments_: Parameters): CSSTreeModule; fork( - fn: (syntax: CSSTreeModule, assign: typeof Object.assign) => CSSTreeModule, + function_: (syntax: CSSTreeModule, assign: typeof Object.assign) => CSSTreeModule, ): CSSTreeModule; }; interface LexerEx extends CSSTree.Lexer { matchProperty( - ...args: Parameters + ...arguments_: Parameters ): LexerMatchResultMatched | LexerMatchResultMismatch; } diff --git a/packages/@d-zero/cz-config/monorepo-scopes.js b/packages/@d-zero/cz-config/monorepo-scopes.js index ee3f2ea5..a8e365db 100644 --- a/packages/@d-zero/cz-config/monorepo-scopes.js +++ b/packages/@d-zero/cz-config/monorepo-scopes.js @@ -28,8 +28,8 @@ module.exports = function (removes) { if (!packageJson) { return null; } - const pkg = JSON.parse(packageJson); - let name = pkg.name; + const package_ = JSON.parse(packageJson); + let name = package_.name; for (const remove of removes) { name = name.replace(remove, ''); } diff --git a/packages/@d-zero/eslint-config/base.js b/packages/@d-zero/eslint-config/base.js index 8b27f8f5..a6b07f7e 100644 --- a/packages/@d-zero/eslint-config/base.js +++ b/packages/@d-zero/eslint-config/base.js @@ -1,6 +1,7 @@ import dzeroPlugin from '@d-zero/eslint-plugin'; +import { fixupPluginRules } from '@eslint/compat'; import js from '@eslint/js'; -import comments from 'eslint-plugin-eslint-comments'; +import comments from '@eslint-community/eslint-plugin-eslint-comments'; import { flatConfigs as importX } from 'eslint-plugin-import-x'; import jsdoc from 'eslint-plugin-jsdoc'; import * as regexpPlugin from 'eslint-plugin-regexp'; @@ -73,6 +74,10 @@ export const base = [ regexpPlugin.configs['flat/recommended'], { ...importX.recommended, + plugins: { + ...importX.recommended.plugins, + 'import-x': fixupPluginRules(importX.recommended.plugins['import-x']), + }, rules: { ...importX.recommended.rules, 'import-x/no-extraneous-dependencies': 2, @@ -109,6 +114,10 @@ export const base = [ }, { ...jsdoc.configs['flat/recommended'], + plugins: { + ...jsdoc.configs['flat/recommended'].plugins, + jsdoc: fixupPluginRules(jsdoc.configs['flat/recommended'].plugins.jsdoc), + }, rules: { ...jsdoc.configs['flat/recommended'].rules, 'jsdoc/require-param-type': 0, @@ -120,13 +129,13 @@ export const base = [ }, { plugins: { - comments, + comments: fixupPluginRules(comments), }, }, { plugins: { - comments, - 'sort-class-members': sortClassMembers, + comments: fixupPluginRules(comments), + 'sort-class-members': fixupPluginRules(sortClassMembers), }, rules: { 'sort-class-members/sort-class-members': [ diff --git a/packages/@d-zero/eslint-config/package.json b/packages/@d-zero/eslint-config/package.json index 7d0f03e4..f3b7433a 100644 --- a/packages/@d-zero/eslint-config/package.json +++ b/packages/@d-zero/eslint-config/package.json @@ -20,14 +20,15 @@ }, "dependencies": { "@d-zero/eslint-plugin": "5.0.0", - "@eslint/js": "9.39.5", - "eslint": "9.39.5", - "eslint-plugin-eslint-comments": "3.2.0", + "@eslint-community/eslint-plugin-eslint-comments": "4.7.2", + "@eslint/compat": "2.1.0", + "@eslint/js": "10.0.1", + "eslint": "10.9.1", "eslint-plugin-import-x": "4.17.1", - "eslint-plugin-jsdoc": "64.2.1", + "eslint-plugin-jsdoc": "64.3.2", "eslint-plugin-regexp": "3.2.0", "eslint-plugin-sort-class-members": "1.22.1", - "eslint-plugin-unicorn": "63.0.0", + "eslint-plugin-unicorn": "74.0.0", "globals": "17.11.0", "typescript-eslint": "8.68.0" } diff --git a/packages/@d-zero/eslint-config/typescript.js b/packages/@d-zero/eslint-config/typescript.js index 43b00a30..1a0f8733 100644 --- a/packages/@d-zero/eslint-config/typescript.js +++ b/packages/@d-zero/eslint-config/typescript.js @@ -29,7 +29,6 @@ export const ts = tsESLint.config( '@typescript-eslint/no-namespace': [2, { allowDeclarations: true }], '@typescript-eslint/no-unnecessary-type-assertion': 2, '@typescript-eslint/no-unused-vars': 2, - '@typescript-eslint/no-var-requires': 2, '@typescript-eslint/prefer-namespace-keyword': 2, '@typescript-eslint/require-await': 2, '@typescript-eslint/restrict-plus-operands': 0, diff --git a/packages/@d-zero/eslint-plugin/package.json b/packages/@d-zero/eslint-plugin/package.json index 4f982703..13d81b60 100644 --- a/packages/@d-zero/eslint-plugin/package.json +++ b/packages/@d-zero/eslint-plugin/package.json @@ -30,7 +30,7 @@ "devDependencies": { "@typescript-eslint/parser": "8.68.0", "@typescript-eslint/rule-tester": "8.68.0", - "eslint": "9.39.5", + "eslint": "10.9.1", "vue-eslint-parser": "10.4.1" } } diff --git a/packages/@d-zero/eslint-plugin/src/rules/no-click-event/index.ts b/packages/@d-zero/eslint-plugin/src/rules/no-click-event/index.ts index 14ba3765..ae733de9 100644 --- a/packages/@d-zero/eslint-plugin/src/rules/no-click-event/index.ts +++ b/packages/@d-zero/eslint-plugin/src/rules/no-click-event/index.ts @@ -22,9 +22,13 @@ export default createRule({ 'CallExpression[callee.property.name="addEventListener"]'( node: TSESTree.CallExpression, ) { - const args = node.arguments; - const firstArg = args[0]; - if (firstArg && firstArg.type === 'Literal' && firstArg.value === 'click') { + const arguments_ = node.arguments; + const firstArgument = arguments_[0]; + if ( + firstArgument && + firstArgument.type === 'Literal' && + firstArgument.value === 'click' + ) { context.report({ node, messageId: 'noClickEvent', @@ -46,8 +50,12 @@ export default createRule({ 'CallExpression[callee.type="MemberExpression"][callee.property.name="on"]'( node: TSESTree.CallExpression, ) { - const firstArg = node.arguments[0]; - if (firstArg && firstArg.type === 'Literal' && firstArg.value === 'click') { + const firstArgument = node.arguments[0]; + if ( + firstArgument && + firstArgument.type === 'Literal' && + firstArgument.value === 'click' + ) { context.report({ node, messageId: 'noClickEvent', diff --git a/packages/@d-zero/lint-staged-config/src/index.ts b/packages/@d-zero/lint-staged-config/src/index.ts index 371139cd..8717cb86 100644 --- a/packages/@d-zero/lint-staged-config/src/index.ts +++ b/packages/@d-zero/lint-staged-config/src/index.ts @@ -21,76 +21,93 @@ export type IgnoreMap = Partial>; /** * - * @param dirOptions + * @param directoryOptions * @param mapping */ export default function ( - dirOptions?: string | DirectoryOptions, + directoryOptions?: string | DirectoryOptions, mapping?: CommandMappings, ): LintStagedCommandMapper { return (allStagedFiles) => { - const commandList: string[] = []; const cwd = process.cwd(); - const dir = typeof dirOptions === 'string' ? dirOptions : dirOptions?.dir; - const ignore = typeof dirOptions === 'string' ? null : dirOptions?.ignore; + const directory = + typeof directoryOptions === 'string' ? directoryOptions : directoryOptions?.dir; + const ignore = typeof directoryOptions === 'string' ? null : directoryOptions?.ignore; - const baseDir = dir + const baseDirectory = directory ? // 絶対パスかどうか - path.isAbsolute(dir) + path.isAbsolute(directory) ? // 絶対パスならそのまま - dir + directory : // 相対パスなら絶対パスに変換 - path.resolve(cwd, dir) + path.resolve(cwd, directory) : // 引数がないならカレントディレクトリ cwd; - mapping = mapping ?? defaultMapping; + mapping ??= defaultMapping; + + /** + * + * @param extension + * @param commandType + */ + function buildCommand( + extension: string, + commandType: CommandType, + ): string | undefined { + const shell = commands[commandType]; + + if (!shell) { + return undefined; + } + + const pattern = path + .resolve(baseDirectory, '**', `{*.${extension},.*.${extension}}`) + .replaceAll(path.sep, '/'); - for (const [ext, commandTypes] of Object.entries(mapping)) { - for (const commandType of commandTypes) { - const shell = commands[commandType]; + const files = allStagedFiles.map((f) => f.replaceAll(path.sep, '/')); - if (!shell) { - continue; + let targetFiles = files.filter((file) => path.matchesGlob(file, pattern)); + + if (ignore) { + for (const ignoreMap of ignore) { + const ignorePattern = + typeof ignoreMap === 'string' ? ignoreMap : ignoreMap[commandType]; + if (!ignorePattern) { + continue; + } + const ignorePatterns = Array.isArray(ignorePattern) + ? ignorePattern + : [ignorePattern]; + const absIgnorePatterns = ignorePatterns.map((p) => { + if (p === path.basename(p)) { + return path.resolve('**', p).replaceAll(path.sep, '/'); + } + return path.isAbsolute(p) ? p : path.resolve(baseDirectory, p); + }); + targetFiles = targetFiles.filter((file) => + absIgnorePatterns.every((pattern) => !path.matchesGlob(file, pattern)), + ); } + } - const pattern = path - .resolve(baseDir, '**', `{*.${ext},.*.${ext}}`) - .replaceAll(path.sep, '/'); + if (targetFiles.length === 0) { + return undefined; + } - const files = allStagedFiles.map((f) => f.replaceAll(path.sep, '/')); + return shell + ' ' + targetFiles.map((f) => `"${f}"`).join(' '); + } - let targetFiles = files.filter((file) => path.matchesGlob(file, pattern)); + const commandList: string[] = []; - if (ignore) { - for (const ignoreMap of ignore) { - const ignorePattern = - typeof ignoreMap === 'string' ? ignoreMap : ignoreMap[commandType]; - if (!ignorePattern) { - continue; - } - const ignorePatterns = Array.isArray(ignorePattern) - ? ignorePattern - : [ignorePattern]; - const absIgnorePatterns = ignorePatterns.map((p) => { - if (p === path.basename(p)) { - return path.resolve('**', p).replaceAll(path.sep, '/'); - } - return path.isAbsolute(p) ? p : path.resolve(baseDir, p); - }); - targetFiles = targetFiles.filter( - (file) => - !absIgnorePatterns.some((pattern) => path.matchesGlob(file, pattern)), - ); - } - } + for (const [extension, commandTypes] of Object.entries(mapping)) { + for (const commandType of commandTypes) { + const command = buildCommand(extension, commandType); - if (targetFiles.length <= 0) { - continue; + if (command) { + commandList.push(command); } - - commandList.push(shell + ' ' + targetFiles.map((f) => `"${f}"`).join(' ')); } } diff --git a/packages/@d-zero/lint-staged-config/src/types.ts b/packages/@d-zero/lint-staged-config/src/types.ts index 834979dc..eea66377 100644 --- a/packages/@d-zero/lint-staged-config/src/types.ts +++ b/packages/@d-zero/lint-staged-config/src/types.ts @@ -21,13 +21,7 @@ export type TargetFileExtension = | 'yml'; export type CommandType = - | 'cspell' - | 'eslint' - | 'markuplint' - | 'prettier' - | 'puglint' - | 'stylelint' - | 'textlint'; + 'cspell' | 'eslint' | 'markuplint' | 'prettier' | 'puglint' | 'stylelint' | 'textlint'; export type CommandMappings = Readonly< Partial> diff --git a/packages/@d-zero/markuplint-config/base.js b/packages/@d-zero/markuplint-config/base.js index d401580b..5956d89c 100644 --- a/packages/@d-zero/markuplint-config/base.js +++ b/packages/@d-zero/markuplint-config/base.js @@ -20,7 +20,7 @@ export default { { selector: 'html', rules: { - // + // 'invalid-attr': { options: { allowAttrs: [ diff --git a/packages/@d-zero/markuplint-config/name.js b/packages/@d-zero/markuplint-config/name.js index 9853989f..c32ff957 100644 --- a/packages/@d-zero/markuplint-config/name.js +++ b/packages/@d-zero/markuplint-config/name.js @@ -7,7 +7,7 @@ const nameBase = { severity: 'error', value: '/^c-(?[a-z][a-z0-9]*(?:-[a-z0-9]+)*)$/', reason: - 'クラス名の形式はディーゼロのコーディングガイドラインに則って命名する必要があります。 http://tmpl.d-zero.com/__guideline/coding-guideline/html.html#%F0%9F%92%8E-%E3%82%B3%E3%83%B3%E3%83%9B%E3%82%9A%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88', + 'クラス名の形式はディーゼロのコーディングガイドラインに則って命名する必要があります。 https://tmpl.d-zero.com/__guideline/coding-guideline/html.html#%F0%9F%92%8E-%E3%82%B3%E3%83%B3%E3%83%9B%E3%82%9A%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88', }, }, childNodeRules: [ @@ -26,7 +26,7 @@ const nameBase = { '/^c-{{ ComponentName }}[a-z0-9]*(?:-[a-z0-9]+)*$/', ], reason: - 'ディーゼロのコーディングガイドラインではコンポーネントの中はそのコンポーネントのエレメントか、他のコンポーネントである必要があります。 http://tmpl.d-zero.com/__guideline/coding-guideline/html.html#%E3%82%B3%E3%83%B3%E3%83%9B%E3%82%9A%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%AE%E6%A7%8B%E6%88%90%E3%81%A8%E3%82%AF%E3%83%A9%E3%82%B9%E5%91%BD%E5%90%8D%E8%A6%8F%E5%89%87', + 'ディーゼロのコーディングガイドラインではコンポーネントの中はそのコンポーネントのエレメントか、他のコンポーネントである必要があります。 https://tmpl.d-zero.com/__guideline/coding-guideline/html.html#%E3%82%B3%E3%83%B3%E3%83%9B%E3%82%9A%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%AE%E6%A7%8B%E6%88%90%E3%81%A8%E3%82%AF%E3%83%A9%E3%82%B9%E5%91%BD%E5%90%8D%E8%A6%8F%E5%89%87', }, }, }, @@ -38,7 +38,7 @@ const nameBase = { severity: 'error', value: '/^(?!c-).+$|^$/', reason: - 'ディーゼロのコーディングガイドラインでは「c-content-main」の中は「c-」で始めないルールとなっています。 http://tmpl.d-zero.com/__guideline/coding-guideline/html.html#%E3%82%A8%E3%83%AC%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AE%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%AE%E4%BE%8B%E5%A4%96%E3%81%A8%E3%82%AF%E3%83%A9%E3%82%B9%E8%BF%BD%E5%8A%A0%E3%81%AE%E3%83%AB%E3%83%BC%E3%83%AB', + 'ディーゼロのコーディングガイドラインでは「c-content-main」の中は「c-」で始めないルールとなっています。 https://tmpl.d-zero.com/__guideline/coding-guideline/html.html#%E3%82%A8%E3%83%AC%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AE%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%AE%E4%BE%8B%E5%A4%96%E3%81%A8%E3%82%AF%E3%83%A9%E3%82%B9%E8%BF%BD%E5%8A%A0%E3%81%AE%E3%83%AB%E3%83%BC%E3%83%AB', }, }, }, diff --git a/packages/@d-zero/stylelint-config/values.js b/packages/@d-zero/stylelint-config/values.js index f1a68d99..47882f38 100644 --- a/packages/@d-zero/stylelint-config/values.js +++ b/packages/@d-zero/stylelint-config/values.js @@ -11,7 +11,9 @@ module.exports = { 'declaration-property-value-disallowed-list': [ { display: [ - /* @see https://drafts.csswg.org/css-display/#display-value-summary */ + /* + @see https://drafts.csswg.org/css-display/#display-value-summary + */ 'block', 'flow-root', 'inline', diff --git a/packages/@d-zero/stylelint-rules/src/rules/component-root-disallowed-properties/index.spec.ts b/packages/@d-zero/stylelint-rules/src/rules/component-root-disallowed-properties/index.spec.ts index 208e6b71..fd655fe5 100644 --- a/packages/@d-zero/stylelint-rules/src/rules/component-root-disallowed-properties/index.spec.ts +++ b/packages/@d-zero/stylelint-rules/src/rules/component-root-disallowed-properties/index.spec.ts @@ -17,14 +17,13 @@ describe('component-root-disallowed-properties', () => { describe('コンポーネントルートでの禁止プロパティチェック', () => { describe('width, inline-size', () => { test('width が禁止されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { width: 100px; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -32,14 +31,13 @@ describe('component-root-disallowed-properties', () => { }); test('inline-size が禁止されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { inline-size: 100px; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -47,56 +45,52 @@ describe('component-root-disallowed-properties', () => { }); test('min-width は許可されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { min-width: 100px; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('max-width は許可されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { max-width: 100px; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('min-inline-size は許可されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { min-inline-size: 100px; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('max-inline-size は許可されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { max-inline-size: 100px; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); @@ -105,14 +99,13 @@ describe('component-root-disallowed-properties', () => { describe('margin関連', () => { test('margin が禁止されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { margin: 10px; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -120,14 +113,13 @@ describe('component-root-disallowed-properties', () => { }); test('margin-top が禁止されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { margin-top: 10px; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -135,14 +127,13 @@ describe('component-root-disallowed-properties', () => { }); test('margin-block が禁止されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { margin-block: 10px; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -152,14 +143,13 @@ describe('component-root-disallowed-properties', () => { describe('height, block-size', () => { test('height が禁止されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { height: 100px; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -167,14 +157,13 @@ describe('component-root-disallowed-properties', () => { }); test('block-size が禁止されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { block-size: 100px; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -182,56 +171,52 @@ describe('component-root-disallowed-properties', () => { }); test('min-height は許可されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { min-height: 100px; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('max-height は許可されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { max-height: 100px; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('min-block-size は許可されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { min-block-size: 100px; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('max-block-size は許可されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { max-block-size: 100px; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); @@ -240,14 +225,13 @@ describe('component-root-disallowed-properties', () => { describe('inset関連', () => { test('inset が禁止されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { inset: 0; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -255,14 +239,13 @@ describe('component-root-disallowed-properties', () => { }); test('top が禁止されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { top: 0; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -272,14 +255,13 @@ describe('component-root-disallowed-properties', () => { describe('position', () => { test('position: absolute が禁止されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { position: absolute; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -287,14 +269,13 @@ describe('component-root-disallowed-properties', () => { }); test('position: fixed が禁止されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { position: fixed; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -302,14 +283,13 @@ describe('component-root-disallowed-properties', () => { }); test('position: sticky が禁止されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { position: sticky; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -317,28 +297,26 @@ describe('component-root-disallowed-properties', () => { }); test('position: relative は許可されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { position: relative; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('position: static は許可されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { position: static; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); @@ -347,14 +325,13 @@ describe('component-root-disallowed-properties', () => { describe('flex関連', () => { test('flex が禁止されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { flex: 1; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -362,14 +339,13 @@ describe('component-root-disallowed-properties', () => { }); test('flex-grow が禁止されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { flex-grow: 1; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -379,14 +355,13 @@ describe('component-root-disallowed-properties', () => { describe('その他の禁止プロパティ', () => { test('justify-self が禁止されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { justify-self: center; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -394,14 +369,13 @@ describe('component-root-disallowed-properties', () => { }); test('grid-area が禁止されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { grid-area: header; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -409,14 +383,13 @@ describe('component-root-disallowed-properties', () => { }); test('float が禁止されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { float: left; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -424,14 +397,13 @@ describe('component-root-disallowed-properties', () => { }); test('clear が禁止されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { clear: both; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -441,14 +413,13 @@ describe('component-root-disallowed-properties', () => { describe('c-content-main クラス', () => { test('c-content-main で width が禁止されている', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: '_c-content-main.scss', code: '.c-content-main { width: 100px; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -460,10 +431,7 @@ describe('component-root-disallowed-properties', () => { describe('コンポーネントルート以外ではエラーが出ないこと', () => { describe('コンポーネントの子要素', () => { test('SCSS: __element で禁止プロパティが使用されていてもエラーが出ない', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: '_c-component.scss', code: `.c-component { color: red; @@ -474,16 +442,15 @@ describe('component-root-disallowed-properties', () => { }`, config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('CSS: __element で禁止プロパティが使用されていてもエラーが出ない', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: `.button { color: red; @@ -494,6 +461,8 @@ describe('component-root-disallowed-properties', () => { }`, config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); @@ -502,10 +471,7 @@ describe('component-root-disallowed-properties', () => { describe('ネストされたルール', () => { test('SCSS: 子要素(__element)内で禁止プロパティが使用されていてもエラーが出ない', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: '_c-component.scss', code: `.c-component { color: red; @@ -516,16 +482,15 @@ describe('component-root-disallowed-properties', () => { }`, config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('SCSS: 疑似クラス(:hover)内で禁止プロパティが使用されている場合はエラーが出る', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: '_c-component.scss', code: `.c-component { color: red; @@ -535,6 +500,8 @@ describe('component-root-disallowed-properties', () => { }`, config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -544,10 +511,7 @@ describe('component-root-disallowed-properties', () => { describe('ファイル名と一致しないクラス名', () => { test('ファイル名と一致しないクラス名のルールで禁止プロパティが使用されていてもエラーが出ない', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: `.button { color: red; @@ -558,6 +522,8 @@ describe('component-root-disallowed-properties', () => { }`, config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); @@ -566,10 +532,7 @@ describe('component-root-disallowed-properties', () => { describe('複数のルール', () => { test('コンポーネントルート以外のルールで禁止プロパティが使用されていてもエラーが出ない', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: `.button { color: red; @@ -585,6 +548,8 @@ describe('component-root-disallowed-properties', () => { }`, config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); @@ -593,10 +558,7 @@ describe('component-root-disallowed-properties', () => { describe('疑似クラスの禁止', () => { test(':hover 内で禁止プロパティが使用されている場合はエラーが出る', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: `.button { &:hover { @@ -605,6 +567,8 @@ describe('component-root-disallowed-properties', () => { }`, config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -612,10 +576,7 @@ describe('component-root-disallowed-properties', () => { }); test(':focus 内で禁止プロパティが使用されている場合はエラーが出る', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: `.button { &:focus { @@ -624,6 +585,8 @@ describe('component-root-disallowed-properties', () => { }`, config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -631,10 +594,7 @@ describe('component-root-disallowed-properties', () => { }); test(':active 内で禁止プロパティが使用されている場合はエラーが出る', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: `.button { &:active { @@ -643,6 +603,8 @@ describe('component-root-disallowed-properties', () => { }`, config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -650,10 +612,7 @@ describe('component-root-disallowed-properties', () => { }); test('複数の疑似クラスが組み合わさっている場合もエラーが出る', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: `.button { &:hover:focus { @@ -662,6 +621,8 @@ describe('component-root-disallowed-properties', () => { }`, config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -671,10 +632,7 @@ describe('component-root-disallowed-properties', () => { describe('疑似要素の許可', () => { test('::before 内で禁止プロパティが使用されていてもエラーが出ない', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: `.button { &::before { @@ -685,16 +643,15 @@ describe('component-root-disallowed-properties', () => { }`, config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('::after 内で禁止プロパティが使用されていてもエラーが出ない', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: `.button { &::after { @@ -704,16 +661,15 @@ describe('component-root-disallowed-properties', () => { }`, config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('::first-line 内で禁止プロパティが使用されていてもエラーが出ない', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: `.button { &::first-line { @@ -722,6 +678,8 @@ describe('component-root-disallowed-properties', () => { }`, config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); @@ -730,10 +688,7 @@ describe('component-root-disallowed-properties', () => { describe('疑似クラスと疑似要素の組み合わせ', () => { test(':hover::before のような組み合わせの場合、疑似要素が含まれているためエラーが出ない', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: `.button { &:hover::before { @@ -743,6 +698,8 @@ describe('component-root-disallowed-properties', () => { }`, config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); diff --git a/packages/@d-zero/stylelint-rules/src/rules/component-root-disallowed-properties/index.ts b/packages/@d-zero/stylelint-rules/src/rules/component-root-disallowed-properties/index.ts index 472cd36f..7681c16c 100644 --- a/packages/@d-zero/stylelint-rules/src/rules/component-root-disallowed-properties/index.ts +++ b/packages/@d-zero/stylelint-rules/src/rules/component-root-disallowed-properties/index.ts @@ -51,13 +51,13 @@ const DISALLOWED_PROPERTIES: (string | { [propName: string]: string })[] = [ /** * プロパティが禁止されているかチェック - * @param prop + * @param property */ -function isDisallowedProperty(prop: string): boolean { - const normalizedProp = prop.toLowerCase(); +function isDisallowedProperty(property: string): boolean { + const normalizedProperty = property.toLowerCase(); return DISALLOWED_PROPERTIES.some((item) => { if (typeof item === 'string') { - return item === normalizedProp; + return item === normalizedProperty; } return false; }); @@ -65,19 +65,20 @@ function isDisallowedProperty(prop: string): boolean { /** * プロパティと値の組み合わせが禁止されているかチェック - * @param prop + * @param property * @param value */ -function isDisallowedPropertyValue(prop: string, value: string): boolean { - const normalizedProp = prop.toLowerCase(); +function isDisallowedPropertyValue(property: string, value: string): boolean { + const normalizedProperty = property.toLowerCase(); const normalizedValue = value.toLowerCase().trim(); return DISALLOWED_PROPERTIES.some((item) => { - if (typeof item === 'object') { - return ( - normalizedProp in item && item[normalizedProp]?.toLowerCase() === normalizedValue - ); + if (typeof item !== 'object') { + return false; } - return false; + const disallowedValue = Object.hasOwn(item, normalizedProperty) + ? item[normalizedProperty] + : undefined; + return disallowedValue?.toLowerCase() === normalizedValue; }); } @@ -100,14 +101,16 @@ function isComponentRoot(rule: Rule, basename: string): boolean { } for (const node of ruleFirstSelector.nodes) { - if (node.type === 'class') { - const className = node.value; + if (node.type !== 'class') { + continue; + } - // ファイル名と完全一致するクラス名のみがコンポーネントルート - // CSSファイルの場合は __ で始まるクラスは子要素なので除外 - if (className === basename) { - return true; - } + const className = node.value; + + // ファイル名と完全一致するクラス名のみがコンポーネントルート + // CSSファイルの場合は __ で始まるクラスは子要素なので除外 + if (className === basename) { + return true; } } @@ -162,10 +165,10 @@ export default createRule({ return; } - const ext = path.extname(fileName); - const originalBasename = path.basename(fileName, ext); + const extension = path.extname(fileName); + const originalBasename = path.basename(fileName, extension); - const basename = ['.scss', '.sass'].includes(ext) + const basename = ['.scss', '.sass'].includes(extension) ? originalBasename.replace(/^_/, '') : originalBasename; @@ -178,27 +181,27 @@ export default createRule({ const checkDeclarations = (rule: Rule) => { for (const node of rule.nodes) { if (node.type === 'decl') { - const prop = node.prop; + const property = node.prop; const value = node.value; // プロパティと値の組み合わせが禁止されているかチェック - if (isDisallowedPropertyValue(prop, value)) { + if (isDisallowedPropertyValue(property, value)) { const normalizedValue = value.toLowerCase().trim(); stylelint.utils.report({ result, ruleName, - message: messages.rejected(`${prop}: ${normalizedValue}`), + message: messages.rejected(`${property}: ${normalizedValue}`), node, }); continue; } // その他の禁止プロパティのチェック - if (isDisallowedProperty(prop)) { + if (isDisallowedProperty(property)) { stylelint.utils.report({ result, ruleName, - message: messages.rejected(prop), + message: messages.rejected(property), node, }); } diff --git a/packages/@d-zero/stylelint-rules/src/rules/component/index.spec.ts b/packages/@d-zero/stylelint-rules/src/rules/component/index.spec.ts index 7a41875b..e489e466 100644 --- a/packages/@d-zero/stylelint-rules/src/rules/component/index.spec.ts +++ b/packages/@d-zero/stylelint-rules/src/rules/component/index.spec.ts @@ -15,28 +15,26 @@ const config = (settings: Record | boolean = true) => ({ describe('Exact Match', () => { test('matched', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'test.css', code: '.test { color: currentColor; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('unmatched', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'test.css', code: '.text, *, div.test { color: currentColor; .test { color: inherit; } }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toStrictEqual([ @@ -57,70 +55,65 @@ describe('Exact Match', () => { describe('Component Naming Convention for CSS', () => { test('exact match in CSS', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button { color: currentColor; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('component element match in CSS', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button__text { color: currentColor; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('multiple component elements in CSS (auto-allow)', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button__text, .button__icon { color: currentColor; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('mixed component and component elements in CSS', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button, .button__text, .button__icon { color: currentColor; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('invalid component naming convention in CSS', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.card__text { color: currentColor; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toStrictEqual([ @@ -139,14 +132,13 @@ describe('Component Naming Convention for CSS', () => { }); test('CSS with wrong component name', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.card { color: currentColor; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toStrictEqual([ @@ -167,14 +159,13 @@ describe('Component Naming Convention for CSS', () => { describe('Partial Name', () => { test('match', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: '_c-component.scss', code: '.c-component { color: currentColor; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); @@ -183,72 +174,65 @@ describe('Partial Name', () => { describe('Options', () => { test('allowMultipleSelectors: false in SCSS', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: '_c-component.scss', code: '.c-component, .x-specific-class-name { color: currentColor; }', config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); }); test('allowMultipleSelectors: true in SCSS', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: '_c-component.scss', code: '.c-component, .x-specific-class-name { color: currentColor; }', config: config({ allowMultipleSelectors: true, }), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('CSS files automatically allow multiple selectors', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: '.button, .button__text, .button__icon { color: currentColor; }', config: config({ allowMultipleSelectors: false, // この設定は CSS では無視される }), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('CSS files allow multiple rules', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'button.css', code: `.button { color: currentColor; } .button__text { font-size: 14px; } .button__icon { width: 16px; }`, config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('CSS files reject multiple components', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ codeFilename: 'c-component.css', code: `.c-component { --prop: value; } .c-component__element { --prop: value; } @@ -256,6 +240,8 @@ describe('Options', () => { .c-specific { --prop: value; }`, config: config({}), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(2); diff --git a/packages/@d-zero/stylelint-rules/src/rules/component/index.ts b/packages/@d-zero/stylelint-rules/src/rules/component/index.ts index 5326ece0..5a7e1233 100644 --- a/packages/@d-zero/stylelint-rules/src/rules/component/index.ts +++ b/packages/@d-zero/stylelint-rules/src/rules/component/index.ts @@ -15,10 +15,30 @@ type Options = { allowMultipleSelectors?: boolean; }; +/** + * セレクタノードがコンポーネントクラス(完全一致または __ で始まる子要素)かどうか判定 + * @param node + * @param basename + * @param isCssFile + */ +function isComponentClassNode( + node: Selector['nodes'][number], + basename: string, + isCssFile: boolean, +): boolean { + if (node.type !== 'class') { + return false; + } + + const className = node.value; + + return className === basename || (isCssFile && className.startsWith(`${basename}__`)); +} + export default createRule({ name: 'component', rule: (ruleName) => (primary) => { - const allowMultipleSelectors = primary.allowMultipleSelectors ?? false; + const isAllowMultipleSelectors = primary.allowMultipleSelectors ?? false; return (root, result) => { const fileName = root.source?.input.file; @@ -27,22 +47,22 @@ export default createRule({ return; } - const ext = path.extname(fileName); - const originalBasename = path.basename(fileName, ext); + const extension = path.extname(fileName); + const originalBasename = path.basename(fileName, extension); - const basename = ['.scss', '.sass'].includes(ext) + const basename = ['.scss', '.sass'].includes(extension) ? originalBasename.replace(/^_/, '') : originalBasename; // CSSファイルの場合は自動的にallowMultipleSelectorsをtrueにする - const isCssFile = ext === '.css'; - const effectiveAllowMultipleSelectors = isCssFile || allowMultipleSelectors; + const isCssFile = extension === '.css'; + const isEffectiveAllowMultipleSelectors = isCssFile || isAllowMultipleSelectors; const rules = root.nodes.filter((node): node is Rule => node.type === 'rule'); const [firstRule, ...overleftRules] = rules; // allowMultipleSelectorsに基づいて複数ルール制約をチェック - if (!effectiveAllowMultipleSelectors && overleftRules.length > 0) { + if (!isEffectiveAllowMultipleSelectors && overleftRules.length > 0) { for (const rule of overleftRules) { stylelint.utils.report({ result, @@ -75,22 +95,10 @@ export default createRule({ const [ruleFirstSelector, ...ruleMultipleSelectors] = ruleSelectors; if (!ruleFirstSelector) continue; - let hasValidComponentClass = false; - - for (const node of ruleFirstSelector.nodes) { - if (node.type === 'class') { - const className = node.value; - - // 完全一致またはコンポーネント命名規則(__で始まる)のチェック - if ( - className === basename || - (isCssFile && className.startsWith(`${basename}__`)) - ) { - hasValidComponentClass = true; - break; - } - } - } + // 完全一致またはコンポーネント命名規則(__で始まる)のチェック + const hasValidComponentClass = ruleFirstSelector.nodes.some((node) => + isComponentClassNode(node, basename, isCssFile), + ); if (!hasValidComponentClass) { stylelint.utils.report({ @@ -104,7 +112,7 @@ export default createRule({ } // 複数セレクタのチェック - if (!effectiveAllowMultipleSelectors && ruleMultipleSelectors.length > 0) { + if (!isEffectiveAllowMultipleSelectors && ruleMultipleSelectors.length > 0) { stylelint.utils.report({ result, ruleName, diff --git a/packages/@d-zero/stylelint-rules/src/rules/declaration-value-type-disallowed-list/index.spec.ts b/packages/@d-zero/stylelint-rules/src/rules/declaration-value-type-disallowed-list/index.spec.ts index d8810fc7..d219fc37 100644 --- a/packages/@d-zero/stylelint-rules/src/rules/declaration-value-type-disallowed-list/index.spec.ts +++ b/packages/@d-zero/stylelint-rules/src/rules/declaration-value-type-disallowed-list/index.spec.ts @@ -15,15 +15,14 @@ const config = (settings: Record | boolean = true) => ({ describe('Parse Error', () => { test('SCSS Syntax', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ code: '* { background: url("a" + $b + "c") }', config: config({ length: ['px'], }), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); @@ -32,15 +31,14 @@ describe('Parse Error', () => { describe('length-pattern', () => { test('length in flex', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ code: '* { flex: 1 1 10px }', config: config({ '/^length/': ['/[0-9]{2,}px/'], }), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toStrictEqual([ @@ -59,10 +57,7 @@ describe('length-pattern', () => { }); test('ignoreProperties options', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ code: '* { flex: 1 1 10px }', config: config({ '/^length/': { @@ -71,6 +66,8 @@ describe('length-pattern', () => { }, }), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); diff --git a/packages/@d-zero/stylelint-rules/src/rules/declaration-value-type-disallowed-list/index.ts b/packages/@d-zero/stylelint-rules/src/rules/declaration-value-type-disallowed-list/index.ts index 4af57cb2..ff48fe47 100644 --- a/packages/@d-zero/stylelint-rules/src/rules/declaration-value-type-disallowed-list/index.ts +++ b/packages/@d-zero/stylelint-rules/src/rules/declaration-value-type-disallowed-list/index.ts @@ -42,8 +42,8 @@ export default createRule>({ return; } - root.walkDecls((decl) => { - const nodes = getValueType(decl); + root.walkDecls((declaration) => { + const nodes = getValueType(declaration); if (nodes === null) { return; @@ -66,7 +66,7 @@ export default createRule>({ if ( value.ignoreProperties && - matchesStringOrRegExp(decl.prop, value.ignoreProperties) + matchesStringOrRegExp(declaration.prop, value.ignoreProperties) ) { return []; } @@ -78,7 +78,7 @@ export default createRule>({ continue; } - const raw = decl.value.slice( + const raw = declaration.value.slice( node.value.sourceIndex, node.value.sourceIndex + node.value.sourceEndIndex, ); @@ -92,7 +92,7 @@ export default createRule>({ result, ruleName, message: messages.rejected(word, node.valueType), - node: decl, + node: declaration, word, }); } diff --git a/packages/@d-zero/stylelint-rules/src/rules/prefer-individual-transform-properties/index.ts b/packages/@d-zero/stylelint-rules/src/rules/prefer-individual-transform-properties/index.ts index f08df5e6..d72025b7 100644 --- a/packages/@d-zero/stylelint-rules/src/rules/prefer-individual-transform-properties/index.ts +++ b/packages/@d-zero/stylelint-rules/src/rules/prefer-individual-transform-properties/index.ts @@ -26,7 +26,7 @@ const REPLACEABLE_TRANSFORM_FUNCTIONS = { * Check if a transform value contains only functions that can be replaced * @param value */ -function canBeReplacedWithIndividualProperties(value: string): { +function analyzeReplaceableTransform(value: string): { canReplace: boolean; suggestions: string[]; } { @@ -51,17 +51,17 @@ function canBeReplacedWithIndividualProperties(value: string): { foundTransformTypes.add(property); // Generate suggestion based on function type - const args = postcssValueParser.stringify(node.nodes); - suggestions.push(`${property}: ${args}`); - - // Don't walk into the arguments of transform functions - return false; + const arguments_ = postcssValueParser.stringify(node.nodes); + suggestions.push(`${property}: ${arguments_}`); + break; } } - if (!isReplaceable) { - hasNonReplaceableFunction = true; + if (isReplaceable) { + // Don't walk into the arguments of transform functions + return false; } + hasNonReplaceableFunction = true; } return true; }); @@ -87,14 +87,14 @@ export default createRule({ `Use individual transform properties instead of "transform: ${value}". Consider: ${suggestions}`, rule: (ruleName, messages) => () => { return (root, result) => { - root.walkDecls((decl) => { + root.walkDecls((declaration) => { // Only check transform property - if (decl.prop.toLowerCase() !== 'transform') { + if (declaration.prop.toLowerCase() !== 'transform') { return; } - const { canReplace, suggestions } = canBeReplacedWithIndividualProperties( - decl.value, + const { canReplace, suggestions } = analyzeReplaceableTransform( + declaration.value, ); // If we can replace and have suggestions, report the issue @@ -102,8 +102,8 @@ export default createRule({ stylelint.utils.report({ result, ruleName, - message: messages.rejected(decl.value, suggestions.join(', ')), - node: decl, + message: messages.rejected(declaration.value, suggestions.join(', ')), + node: declaration, }); } }); diff --git a/packages/@d-zero/stylelint-rules/src/rules/shorthand-property-use-logical/index.spec.ts b/packages/@d-zero/stylelint-rules/src/rules/shorthand-property-use-logical/index.spec.ts index 286aacf2..d8fa1f7c 100644 --- a/packages/@d-zero/stylelint-rules/src/rules/shorthand-property-use-logical/index.spec.ts +++ b/packages/@d-zero/stylelint-rules/src/rules/shorthand-property-use-logical/index.spec.ts @@ -16,26 +16,24 @@ const config = (settings: boolean | { properties?: string[] } = true) => ({ describe('shorthand-property-use-logical', () => { describe('padding', () => { test('single value - should not warn', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ code: '* { padding: 2rem }', config: config(), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('two values - should warn', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ code: '* { padding: 2rem 1rem }', config: config(), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toStrictEqual([ @@ -54,13 +52,12 @@ describe('shorthand-property-use-logical', () => { }); test('three values - should warn', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ code: '* { padding: 2rem 0 0 }', config: config(), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -68,13 +65,12 @@ describe('shorthand-property-use-logical', () => { }); test('four values - should warn', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ code: '* { padding: 1rem 2rem 3rem 4rem }', config: config(), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -84,26 +80,24 @@ describe('shorthand-property-use-logical', () => { describe('margin', () => { test('single value - should not warn', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ code: '* { margin: auto }', config: config(), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('two values - should warn', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ code: '* { margin: 1rem 2rem }', config: config(), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -113,26 +107,24 @@ describe('shorthand-property-use-logical', () => { describe('border-width', () => { test('single value - should not warn', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ code: '* { border-width: 1px }', config: config(), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); }); test('multiple values - should warn', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ code: '* { border-width: 1px 2px }', config: config(), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -142,13 +134,12 @@ describe('shorthand-property-use-logical', () => { describe('limited properties configuration', () => { test('only check specified properties', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ code: '* { padding: 1rem 2rem; margin: 1rem 2rem; }', config: config({ properties: ['padding'] }), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); @@ -158,13 +149,12 @@ describe('shorthand-property-use-logical', () => { describe('unsupported properties', () => { test('should not check properties not in the list', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ code: '* { background: url(a.png) no-repeat }', config: config(), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(0); @@ -173,26 +163,24 @@ describe('shorthand-property-use-logical', () => { describe('complex values', () => { test('calc() function with multiple values', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ code: '* { padding: calc(1rem + 2px) 1rem }', config: config(), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); }); test('var() function with multiple values', async () => { - const { - // @ts-ignore - results: [{ warnings, parseErrors }], - } = await lint({ + const { results } = await lint({ code: '* { margin: var(--spacing) 2rem }', config: config(), }); + // @ts-ignore + const [{ warnings, parseErrors }] = results; expect(parseErrors).toHaveLength(0); expect(warnings).toHaveLength(1); diff --git a/packages/@d-zero/stylelint-rules/src/rules/shorthand-property-use-logical/index.ts b/packages/@d-zero/stylelint-rules/src/rules/shorthand-property-use-logical/index.ts index 8e3429f8..180ba0c3 100644 --- a/packages/@d-zero/stylelint-rules/src/rules/shorthand-property-use-logical/index.ts +++ b/packages/@d-zero/stylelint-rules/src/rules/shorthand-property-use-logical/index.ts @@ -65,10 +65,10 @@ export default createRule({ false, (value: unknown) => { if (!isPlainObject(value)) return false; - const obj = value as Record; + const object = value as Record; return ( - !('properties' in obj) || - (Array.isArray(obj.properties) && obj.properties.every(isString)) + !('properties' in object) || + (Array.isArray(object.properties) && object.properties.every(isString)) ); }, ], @@ -83,19 +83,19 @@ export default createRule({ ? primary.properties : [...SHORTHAND_PROPERTIES_WITH_LOGICAL]; - root.walkDecls((decl) => { + root.walkDecls((declaration) => { // Only check properties that are in our enabled list - if (!enabledProperties.includes(decl.prop)) { + if (!enabledProperties.includes(declaration.prop)) { return; } // Check if the property has multiple values - if (!hasMultipleValues(decl.value)) { + if (!hasMultipleValues(declaration.value)) { return; } // Get logical property suggestions - const logicalProperties = LOGICAL_PROPERTY_MAP[decl.prop]; + const logicalProperties = LOGICAL_PROPERTY_MAP[declaration.prop]; if (!logicalProperties) { return; } @@ -103,8 +103,8 @@ export default createRule({ stylelint.utils.report({ result, ruleName, - message: messages.rejected(decl.prop, logicalProperties.join(', ')), - node: decl, + message: messages.rejected(declaration.prop, logicalProperties.join(', ')), + node: declaration, }); }); }; diff --git a/packages/@d-zero/stylelint-rules/src/utils/get-value-type.spec.ts b/packages/@d-zero/stylelint-rules/src/utils/get-value-type.spec.ts index 4959f10b..cc6da1d5 100644 --- a/packages/@d-zero/stylelint-rules/src/utils/get-value-type.spec.ts +++ b/packages/@d-zero/stylelint-rules/src/utils/get-value-type.spec.ts @@ -12,8 +12,8 @@ import { getValueType } from './get-value-type.js'; function p(css: string) { const root = parse(css); const rule = root.first as Rule; - const decl = rule.first as Declaration; - const nodeWithType = getValueType(decl); + const declaration = rule.first as Declaration; + const nodeWithType = getValueType(declaration); return nodeWithType?.map((node) => node.valueType) ?? null; } diff --git a/packages/@d-zero/stylelint-rules/src/utils/get-value-type.ts b/packages/@d-zero/stylelint-rules/src/utils/get-value-type.ts index 260371eb..af7f7ff7 100644 --- a/packages/@d-zero/stylelint-rules/src/utils/get-value-type.ts +++ b/packages/@d-zero/stylelint-rules/src/utils/get-value-type.ts @@ -11,19 +11,19 @@ import postcssValueParser from 'postcss-value-parser'; /** * - * @param decl + * @param declaration */ -export function getValueType(decl: Declaration) { - if (decl.prop.startsWith('$')) { +export function getValueType(declaration: Declaration) { + if (declaration.prop.startsWith('$')) { return null; } try { - return _getValueType(decl.prop, decl.value); + return _getValueType(declaration.prop, declaration.value); } catch (error) { if ( error instanceof SyntaxError && 'source' in error && - error.source === decl.value + error.source === declaration.value ) { // Unsupported SCSS syntax by CSSTree return null; @@ -34,11 +34,11 @@ export function getValueType(decl: Declaration) { /** * - * @param prop + * @param property * @param value */ function _getValueType( - prop: string, + property: string, value: string, ): | { @@ -48,34 +48,40 @@ function _getValueType( | null { const valueAst = postcssValueParser(value); const valueAstFromCssTree = CSSTree.parse(value, { context: 'value' }); - let cssTreeDecl = CSSTree.lexer.matchProperty(prop, valueAstFromCssTree); + let cssTreeDeclaration = CSSTree.lexer.matchProperty(property, valueAstFromCssTree); - if (cssTreeDecl.error?.message === 'Matching for a tree with var() is not supported') { + if ( + cssTreeDeclaration.error?.message === + 'Matching for a tree with var() is not supported' + ) { value = value.replaceAll( /(var\([^)]+\))/g, (_, $1) => ' '.repeat($1.length - 1) + '1', ); - cssTreeDecl = CSSTree.lexer.matchProperty(prop, value); + cssTreeDeclaration = CSSTree.lexer.matchProperty(property, value); } - const values = valueAst.nodes.filter( - (node) => node.type === 'string' || node.type === 'function' || node.type === 'word', - ); + const replaceableNodeTypes: ReadonlySet = new Set([ + 'string', + 'function', + 'word', + ]); + const values = valueAst.nodes.filter((node) => replaceableNodeTypes.has(node.type)); // @ts-ignore - const props = cssTreeDecl.matched; - if (props === null) { + const properties = cssTreeDeclaration.matched; + if (properties === null) { return null; } - const valueTypes = props.match + const valueTypes = properties.match // @ts-ignore .flatMap((node) => getValueNode(node)) // @ts-ignore .map((node) => node.syntax.name); - return values.map((value, i) => { - const valueType = valueTypes[i] ?? null; + return values.map((value, index) => { + const valueType = valueTypes[index] ?? null; if (valueType === null && value.type === 'word' && value.value.startsWith('$')) { return { diff --git a/test/cli.spec.mjs b/test/cli.spec.mjs index 9f36688b..9fc41b77 100644 --- a/test/cli.spec.mjs +++ b/test/cli.spec.mjs @@ -17,8 +17,8 @@ function n(filePath) { describe('ESLint', () => { const eslint = async (filepath, rule) => { - const dir = path.dirname(filepath); - const config = path.join(dir, 'eslint.config.js'); + const directory = path.dirname(filepath); + const config = path.join(directory, 'eslint.config.js'); const { stdout, stderr } = await execa( 'npx', ['eslint', filepath, '--config', config], @@ -74,7 +74,7 @@ describe('ESLint', () => { 'unicorn/prefer-top-level-await', ); expect(node).toStrictEqual([ - '5:6 error Prefer top-level await over an async function `asyncFn` call unicorn/prefer-top-level-await', + '5:1 error Prefer top-level await over an async function `asyncFn` call unicorn/prefer-top-level-await', ]); }); @@ -249,7 +249,7 @@ describe('stylelint', () => { }, ); - const json = stderr.split('error Command failed')[0] ?? stdout; + const json = stderr.split('error Command failed', 1)[0] ?? stdout; let violations; try { violations = JSON.parse(json); diff --git a/test/fixtures/eslint/node/prefer-top-level-await.ts b/test/fixtures/eslint/node/prefer-top-level-await.ts index d25a6f03..fa796f2c 100644 --- a/test/fixtures/eslint/node/prefer-top-level-await.ts +++ b/test/fixtures/eslint/node/prefer-top-level-await.ts @@ -2,4 +2,4 @@ async function asyncFn() { // do nothing } -void asyncFn(); +asyncFn(); diff --git a/yarn.lock b/yarn.lock index c6504644..6b0b3a26 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39,7 +39,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.28.5, @babel/helper-validator-identifier@npm:^7.29.7": +"@babel/helper-validator-identifier@npm:^7.29.7": version: 7.29.7 resolution: "@babel/helper-validator-identifier@npm:7.29.7" checksum: 10c0/4795354e7ae0dcafa72de1cd04ec51252dc1498517170beaf019e03effc5b7bf13c6b21a3949a77e07b8125be7f106ed1131350d8ebd4566ae874094a726d62b @@ -293,10 +293,10 @@ __metadata: languageName: node linkType: hard -"@conventional-changelog/template@npm:^1.2.1, @conventional-changelog/template@npm:^1.3.0, @conventional-changelog/template@npm:^1.4.0": - version: 1.4.0 - resolution: "@conventional-changelog/template@npm:1.4.0" - checksum: 10c0/052ac38b43f67b2572d101ced1dee2691a2ac3828cbc1041738cf1646b956ff0fb3e87258ec59f46eb2c3fcc9a68bb89f90b8dcb1e354880f2c71d8f5ef3a021 +"@conventional-changelog/template@npm:^1.2.1, @conventional-changelog/template@npm:^1.3.0": + version: 1.3.0 + resolution: "@conventional-changelog/template@npm:1.3.0" + checksum: 10c0/dd8c305ad72657da2dace3767b6360d952d016ad924074875a7ba23c56ce38f62ae02270a512e50560e9f072f29749e9364625e04b46d48b05f64153dc744dfe languageName: node linkType: hard @@ -537,16 +537,16 @@ __metadata: linkType: hard "@cspell/dict-en-gb-mit@npm:^3.1.25": - version: 3.1.26 - resolution: "@cspell/dict-en-gb-mit@npm:3.1.26" - checksum: 10c0/5666901aa9043d0947503ef4b3ef29dd39e32a28d3bb6e57c0cbdca06e14a24a1dd1e056dffd4731486beddceaa51323d3612ad02654346921fc76ad19206cf1 + version: 3.1.25 + resolution: "@cspell/dict-en-gb-mit@npm:3.1.25" + checksum: 10c0/ef256d4d8c065c6fc069132c4aedda97c4362e6caa4bd0a8400f0a41cefa0fe0f48c9143506a3473f6e8c2dec4a9146e2200b89d8466b911c21480e32a2d9537 languageName: node linkType: hard "@cspell/dict-en_us@npm:^4.4.36": - version: 4.4.37 - resolution: "@cspell/dict-en_us@npm:4.4.37" - checksum: 10c0/26778921b43641b2dbd4685d03abeefebf978306a560e05d7b04c0c6bbaff70caf5707f398e81831b7e746d721fbe2355a27eae601d3b9f495f8eb5708de890a + version: 4.4.36 + resolution: "@cspell/dict-en_us@npm:4.4.36" + checksum: 10c0/7e1e6d4208584a8297864d267d4038ca3583d6b4ff6791ac7da3b945a5332f4368c3aec52217e8f25a29723233fce79eca7b5a4cf6f8dce52665b96d8da98bd3 languageName: node linkType: hard @@ -745,11 +745,11 @@ __metadata: linkType: hard "@cspell/dict-python@npm:^4.4.0": - version: 4.5.0 - resolution: "@cspell/dict-python@npm:4.5.0" + version: 4.4.0 + resolution: "@cspell/dict-python@npm:4.4.0" dependencies: "@cspell/dict-data-science": "npm:^2.0.16" - checksum: 10c0/960b701454a9a8802f46a448366654c14b3bcd9900001d0cda77d5919b00e025ceb886f84606f1696276f448308175c9d27c55a7074daaf88ac15635b96a34c0 + checksum: 10c0/24fb8e2bf9b24bd426dc65eb1b7caf740aec297e09467ea3eb08d72cda1e35d17fc990cf7388e19bce3647fea6c57d2daa930ef68ae396997d6c73cd192a19dc languageName: node linkType: hard @@ -789,9 +789,9 @@ __metadata: linkType: hard "@cspell/dict-software-terms@npm:^5.4.1": - version: 5.4.2 - resolution: "@cspell/dict-software-terms@npm:5.4.2" - checksum: 10c0/0c1a2b8582dba1161f577cf5a9da12e6ed63d4897eaa82a274ef043e79e84ce4f2c53d6b2212ae7581870b5d3cddc19729811e949fba8b45d7254ec51c330148 + version: 5.4.1 + resolution: "@cspell/dict-software-terms@npm:5.4.1" + checksum: 10c0/f09319567a5e3205333b132a03157a2c90960b5db477933b98019d7232647ac58dd89f588f353707818b69c127d53d39eec87ca8d1434bcd87dfc1436bdc0285 languageName: node linkType: hard @@ -902,14 +902,14 @@ __metadata: linkType: hard "@csstools/css-syntax-patches-for-csstree@npm:^1.1.4, @csstools/css-syntax-patches-for-csstree@npm:^1.1.6": - version: 1.1.9 - resolution: "@csstools/css-syntax-patches-for-csstree@npm:1.1.9" + version: 1.1.8 + resolution: "@csstools/css-syntax-patches-for-csstree@npm:1.1.8" peerDependencies: css-tree: ^3.2.1 peerDependenciesMeta: css-tree: optional: true - checksum: 10c0/b57a7f588d72c207c7c92687947d625c787b94e0e3d4c73318c721bf11d422aad2e89e0e2345622ce100dcf59a434b82b6b7a5c98ab5d2b27d02a35e00a8fb20 + checksum: 10c0/9330105ea3959f40196f31e105cbaf1e4a2bc2db681e08efc9415da36f2e6aa626dc2ad6fff9fc7758d79ce54dfc2332284aa05db9463dc611bf56221f7e19cc languageName: node linkType: hard @@ -988,14 +988,15 @@ __metadata: resolution: "@d-zero/eslint-config@workspace:packages/@d-zero/eslint-config" dependencies: "@d-zero/eslint-plugin": "npm:5.0.0" - "@eslint/js": "npm:9.39.5" - eslint: "npm:9.39.5" - eslint-plugin-eslint-comments: "npm:3.2.0" + "@eslint-community/eslint-plugin-eslint-comments": "npm:4.7.2" + "@eslint/compat": "npm:2.1.0" + "@eslint/js": "npm:10.0.1" + eslint: "npm:10.9.1" eslint-plugin-import-x: "npm:4.17.1" - eslint-plugin-jsdoc: "npm:64.2.1" + eslint-plugin-jsdoc: "npm:64.3.2" eslint-plugin-regexp: "npm:3.2.0" eslint-plugin-sort-class-members: "npm:1.22.1" - eslint-plugin-unicorn: "npm:63.0.0" + eslint-plugin-unicorn: "npm:74.0.0" globals: "npm:17.11.0" typescript-eslint: "npm:8.68.0" languageName: unknown @@ -1008,7 +1009,7 @@ __metadata: "@typescript-eslint/parser": "npm:8.68.0" "@typescript-eslint/rule-tester": "npm:8.68.0" "@typescript-eslint/utils": "npm:8.68.0" - eslint: "npm:9.39.5" + eslint: "npm:10.9.1" vue-eslint-parser: "npm:10.4.1" peerDependencies: eslint: ">=9.0.0" @@ -1207,7 +1208,19 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.8.0, @eslint-community/eslint-utils@npm:^4.9.0, @eslint-community/eslint-utils@npm:^4.9.1": +"@eslint-community/eslint-plugin-eslint-comments@npm:4.7.2": + version: 4.7.2 + resolution: "@eslint-community/eslint-plugin-eslint-comments@npm:4.7.2" + dependencies: + escape-string-regexp: "npm:^4.0.0" + ignore: "npm:^7.0.5" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 + checksum: 10c0/196028413b216c069d2bd43281951a1031ab01e49045b39a5c903b137f8c5cb0fe46f445fbbe00f9ea8411242c55c642aa32488ed1ea8bd4b6c97344f329026c + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.10.1, @eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.8.0, @eslint-community/eslint-utils@npm:^4.9.1": version: 4.10.1 resolution: "@eslint-community/eslint-utils@npm:4.10.1" dependencies: @@ -1218,80 +1231,92 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.11.0, @eslint-community/regexpp@npm:^4.12.1, @eslint-community/regexpp@npm:^4.12.2, @eslint-community/regexpp@npm:^4.8.0": +"@eslint-community/regexpp@npm:^4.11.0, @eslint-community/regexpp@npm:^4.12.2, @eslint-community/regexpp@npm:^4.8.0": version: 4.12.2 resolution: "@eslint-community/regexpp@npm:4.12.2" checksum: 10c0/fddcbc66851b308478d04e302a4d771d6917a0b3740dc351513c0da9ca2eab8a1adf99f5e0aa7ab8b13fa0df005c81adeee7e63a92f3effd7d367a163b721c2d languageName: node linkType: hard -"@eslint/config-array@npm:^0.21.2": - version: 0.21.2 - resolution: "@eslint/config-array@npm:0.21.2" +"@eslint/compat@npm:2.1.0": + version: 2.1.0 + resolution: "@eslint/compat@npm:2.1.0" dependencies: - "@eslint/object-schema": "npm:^2.1.7" + "@eslint/core": "npm:^1.2.1" + peerDependencies: + eslint: ^8.40 || 9 || 10 + peerDependenciesMeta: + eslint: + optional: true + checksum: 10c0/05b9e54813f124c45a8142571dbc539ea06bfc70a21e28c5d39a145578a62c733a9029850b89e357ee5924b1ea19611bf4d7cfe894595028730f691b86e9815b + languageName: node + linkType: hard + +"@eslint/config-array@npm:^0.23.5": + version: 0.23.5 + resolution: "@eslint/config-array@npm:0.23.5" + dependencies: + "@eslint/object-schema": "npm:^3.0.5" debug: "npm:^4.3.1" - minimatch: "npm:^3.1.5" - checksum: 10c0/89dfe815d18456177c0a1f238daf4593107fd20298b3598e0103054360d3b8d09d967defd8318f031185d68df1f95cfa68becf1390a9c5c6887665f1475142e3 + minimatch: "npm:^10.2.4" + checksum: 10c0/b24833c4c76e78ee075d306cd3f095db46b2db0f90cc13a6ee6e4275f9889731c05bf5403ab5fefb79c756e07ac9184ed0e04570341382f9eccbccc80e6d1a0c languageName: node linkType: hard -"@eslint/config-helpers@npm:^0.4.2": - version: 0.4.2 - resolution: "@eslint/config-helpers@npm:0.4.2" +"@eslint/config-helpers@npm:^0.7.0": + version: 0.7.0 + resolution: "@eslint/config-helpers@npm:0.7.0" dependencies: - "@eslint/core": "npm:^0.17.0" - checksum: 10c0/92efd7a527b2d17eb1a148409d71d80f9ac160b565ac73ee092252e8bf08ecd08670699f46b306b94f13d22e88ac88a612120e7847570dd7cdc72f234d50dcb4 + "@eslint/core": "npm:^1.2.1" + checksum: 10c0/fd40d57d6f1db49f7b647048b88a433dc7f6522ef3edf855a43cb526ef4fc40622ceed0dc8de2e03d254f30f8e035370570de1d4bd8e7c2b1200131451e0d331 languageName: node linkType: hard -"@eslint/core@npm:^0.17.0": - version: 0.17.0 - resolution: "@eslint/core@npm:0.17.0" +"@eslint/core@npm:^1.2.1": + version: 1.2.1 + resolution: "@eslint/core@npm:1.2.1" dependencies: "@types/json-schema": "npm:^7.0.15" - checksum: 10c0/9a580f2246633bc752298e7440dd942ec421860d1946d0801f0423830e67887e4aeba10ab9a23d281727a978eb93d053d1922a587d502942a713607f40ed704e + checksum: 10c0/10979b40588ecfef771fcb5013a542a35fb30692cc95a65f3481b0b36fbd89f5679efeb30d57f4eed35203d859aabace2a620177d6c536f71b299a1af2f3398f languageName: node linkType: hard -"@eslint/eslintrc@npm:^3.3.6": - version: 3.3.6 - resolution: "@eslint/eslintrc@npm:3.3.6" +"@eslint/css-tree@npm:^4.0.5": + version: 4.0.5 + resolution: "@eslint/css-tree@npm:4.0.5" dependencies: - ajv: "npm:^6.14.0" - debug: "npm:^4.3.2" - espree: "npm:^10.0.1" - globals: "npm:^14.0.0" - ignore: "npm:^5.2.0" - import-fresh: "npm:^3.2.1" - js-yaml: "npm:^4.3.0" - minimatch: "npm:^3.1.5" - strip-json-comments: "npm:^3.1.1" - checksum: 10c0/349697171ee116f501a2f483bf47cd38937a61880aeb1c23481a69afc95e95859430a0947acbe1f5507f223180bf57530ecf2989e73bcbea763a6dcffdf1d010 + mdn-data: "npm:2.29.0" + source-map-js: "npm:^1.2.1" + checksum: 10c0/7fbcb169c98dc8172503b3b1f4bd58b65959e611387f936aa0df193b4c3111f02a79597b7363a5120dddac491117d448e02216379f675070fad7ab1256d8da3b languageName: node linkType: hard -"@eslint/js@npm:9.39.5": - version: 9.39.5 - resolution: "@eslint/js@npm:9.39.5" - checksum: 10c0/49894e98ba313a7d3bfb1b20d55c0f9826be45a7db876fd84e533ac7f101b1d95b51cd22c6a6db3a45066b9c0d068c31b4a22fa0db8a6cc8744a25540efdb824 +"@eslint/js@npm:10.0.1": + version: 10.0.1 + resolution: "@eslint/js@npm:10.0.1" + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true + checksum: 10c0/9f3fcaf71ba7fdf65d82e8faad6ecfe97e11801cc3c362b306a88ea1ed1344ae0d35330dddb0e8ad18f010f6687a70b75491b9e01c8af57acd7987cee6b3ec6c languageName: node linkType: hard -"@eslint/object-schema@npm:^2.1.7": - version: 2.1.7 - resolution: "@eslint/object-schema@npm:2.1.7" - checksum: 10c0/936b6e499853d1335803f556d526c86f5fe2259ed241bc665000e1d6353828edd913feed43120d150adb75570cae162cf000b5b0dfc9596726761c36b82f4e87 +"@eslint/object-schema@npm:^3.0.5": + version: 3.0.5 + resolution: "@eslint/object-schema@npm:3.0.5" + checksum: 10c0/1db337431f520b99e9edda64ef5fafd7ec6a029843eeb608753025125b6649d861d843cffafafd3c4e37926d7d5f9ec0c6a8e3665c13c3da2144e8132892e92e languageName: node linkType: hard -"@eslint/plugin-kit@npm:^0.4.1": - version: 0.4.1 - resolution: "@eslint/plugin-kit@npm:0.4.1" +"@eslint/plugin-kit@npm:^0.7.2": + version: 0.7.2 + resolution: "@eslint/plugin-kit@npm:0.7.2" dependencies: - "@eslint/core": "npm:^0.17.0" + "@eslint/core": "npm:^1.2.1" levn: "npm:^0.4.1" - checksum: 10c0/51600f78b798f172a9915dffb295e2ffb44840d583427bc732baf12ecb963eb841b253300e657da91d890f4b323d10a1bd12934bf293e3018d8bb66fdce5217b + checksum: 10c0/aafba08077bcd6d7dde6c2e21db18086046a88f914f29971a84cac9ad2d48952ded1b293e665e523805297eff756522dafa16f0062195e2c7143dcd1d47d11ed languageName: node linkType: hard @@ -1621,9 +1646,9 @@ __metadata: linkType: hard "@jridgewell/sourcemap-codec@npm:^1.5.5": - version: 1.6.0 - resolution: "@jridgewell/sourcemap-codec@npm:1.6.0" - checksum: 10c0/b5be700e45a775f218589c3466c4ffea630582b4988657652da464e5ab8a7d18bf928ee4fd2363fb346ede4bea9c6ff0bae05a538358c4565ece6199531b5f72 + version: 1.5.5 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" + checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 languageName: node linkType: hard @@ -2267,8 +2292,8 @@ __metadata: linkType: hard "@nx/devkit@npm:>=23.1.0 < 24.0.0": - version: 23.1.2 - resolution: "@nx/devkit@npm:23.1.2" + version: 23.1.1 + resolution: "@nx/devkit@npm:23.1.1" dependencies: ejs: "npm:5.0.1" enquirer: "npm:~2.3.6" @@ -2278,76 +2303,76 @@ __metadata: yargs-parser: "npm:21.1.1" peerDependencies: nx: ">= 22 <= 24 || ^23.0.0-0" - checksum: 10c0/37e702e098c8a3be3093e61b1295fe807fc0764df0e0b83bc6452d24e433baece0d48fb6b5cbc787ba2e5f1d763ad2188f3082253ed074952fb3948b9198bb57 + checksum: 10c0/c2f3aa33d698eb0e3912a8cac9ccbaedd0a45b39272bfe29fc62b4eb2c3c49e003794d6346cecb1047816c7c90ac7a2b0fc1abda3534dddd1347856f6296b7d2 languageName: node linkType: hard -"@nx/nx-darwin-arm64@npm:23.1.2": - version: 23.1.2 - resolution: "@nx/nx-darwin-arm64@npm:23.1.2" +"@nx/nx-darwin-arm64@npm:23.1.1": + version: 23.1.1 + resolution: "@nx/nx-darwin-arm64@npm:23.1.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@nx/nx-darwin-x64@npm:23.1.2": - version: 23.1.2 - resolution: "@nx/nx-darwin-x64@npm:23.1.2" +"@nx/nx-darwin-x64@npm:23.1.1": + version: 23.1.1 + resolution: "@nx/nx-darwin-x64@npm:23.1.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@nx/nx-freebsd-x64@npm:23.1.2": - version: 23.1.2 - resolution: "@nx/nx-freebsd-x64@npm:23.1.2" +"@nx/nx-freebsd-x64@npm:23.1.1": + version: 23.1.1 + resolution: "@nx/nx-freebsd-x64@npm:23.1.1" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@nx/nx-linux-arm-gnueabihf@npm:23.1.2": - version: 23.1.2 - resolution: "@nx/nx-linux-arm-gnueabihf@npm:23.1.2" +"@nx/nx-linux-arm-gnueabihf@npm:23.1.1": + version: 23.1.1 + resolution: "@nx/nx-linux-arm-gnueabihf@npm:23.1.1" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@nx/nx-linux-arm64-gnu@npm:23.1.2": - version: 23.1.2 - resolution: "@nx/nx-linux-arm64-gnu@npm:23.1.2" +"@nx/nx-linux-arm64-gnu@npm:23.1.1": + version: 23.1.1 + resolution: "@nx/nx-linux-arm64-gnu@npm:23.1.1" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@nx/nx-linux-arm64-musl@npm:23.1.2": - version: 23.1.2 - resolution: "@nx/nx-linux-arm64-musl@npm:23.1.2" +"@nx/nx-linux-arm64-musl@npm:23.1.1": + version: 23.1.1 + resolution: "@nx/nx-linux-arm64-musl@npm:23.1.1" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@nx/nx-linux-x64-gnu@npm:23.1.2": - version: 23.1.2 - resolution: "@nx/nx-linux-x64-gnu@npm:23.1.2" +"@nx/nx-linux-x64-gnu@npm:23.1.1": + version: 23.1.1 + resolution: "@nx/nx-linux-x64-gnu@npm:23.1.1" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@nx/nx-linux-x64-musl@npm:23.1.2": - version: 23.1.2 - resolution: "@nx/nx-linux-x64-musl@npm:23.1.2" +"@nx/nx-linux-x64-musl@npm:23.1.1": + version: 23.1.1 + resolution: "@nx/nx-linux-x64-musl@npm:23.1.1" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@nx/nx-win32-arm64-msvc@npm:23.1.2": - version: 23.1.2 - resolution: "@nx/nx-win32-arm64-msvc@npm:23.1.2" +"@nx/nx-win32-arm64-msvc@npm:23.1.1": + version: 23.1.1 + resolution: "@nx/nx-win32-arm64-msvc@npm:23.1.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@nx/nx-win32-x64-msvc@npm:23.1.2": - version: 23.1.2 - resolution: "@nx/nx-win32-x64-msvc@npm:23.1.2" +"@nx/nx-win32-x64-msvc@npm:23.1.1": + version: 23.1.1 + resolution: "@nx/nx-win32-x64-msvc@npm:23.1.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -2484,10 +2509,10 @@ __metadata: languageName: node linkType: hard -"@oxc-project/types@npm:=0.147.0": - version: 0.147.0 - resolution: "@oxc-project/types@npm:0.147.0" - checksum: 10c0/adec7c1d4c0a031a83afe976884695ff1467987da3f9e775d24bd596ca82346d3734cc9898f5645955050246a13621b4442696753a2d83d2954127fbdfbd5a5f +"@oxc-project/types@npm:=0.144.0": + version: 0.144.0 + resolution: "@oxc-project/types@npm:0.144.0" + checksum: 10c0/997c6c33f09706af604ece0e99c698965757887aca4b42c5fb5ddcb11c39876c1e824b188b1e6582276355468a9b13f955d3b822d3b532cd6bedbeb64b603ff0 languageName: node linkType: hard @@ -2502,107 +2527,100 @@ __metadata: languageName: node linkType: hard -"@rolldown/binding-android-arm-eabi@npm:1.2.6": - version: 1.2.6 - resolution: "@rolldown/binding-android-arm-eabi@npm:1.2.6" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@rolldown/binding-android-arm64@npm:1.2.6": - version: 1.2.6 - resolution: "@rolldown/binding-android-arm64@npm:1.2.6" +"@rolldown/binding-android-arm64@npm:1.2.4": + version: 1.2.4 + resolution: "@rolldown/binding-android-arm64@npm:1.2.4" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-darwin-arm64@npm:1.2.6": - version: 1.2.6 - resolution: "@rolldown/binding-darwin-arm64@npm:1.2.6" +"@rolldown/binding-darwin-arm64@npm:1.2.4": + version: 1.2.4 + resolution: "@rolldown/binding-darwin-arm64@npm:1.2.4" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-darwin-x64@npm:1.2.6": - version: 1.2.6 - resolution: "@rolldown/binding-darwin-x64@npm:1.2.6" +"@rolldown/binding-darwin-x64@npm:1.2.4": + version: 1.2.4 + resolution: "@rolldown/binding-darwin-x64@npm:1.2.4" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rolldown/binding-freebsd-x64@npm:1.2.6": - version: 1.2.6 - resolution: "@rolldown/binding-freebsd-x64@npm:1.2.6" +"@rolldown/binding-freebsd-x64@npm:1.2.4": + version: 1.2.4 + resolution: "@rolldown/binding-freebsd-x64@npm:1.2.4" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rolldown/binding-linux-arm-gnueabihf@npm:1.2.6": - version: 1.2.6 - resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.2.6" +"@rolldown/binding-linux-arm-gnueabihf@npm:1.2.4": + version: 1.2.4 + resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.2.4" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@rolldown/binding-linux-arm64-gnu@npm:1.2.6": - version: 1.2.6 - resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.2.6" +"@rolldown/binding-linux-arm64-gnu@npm:1.2.4": + version: 1.2.4 + resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.2.4" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-arm64-musl@npm:1.2.6": - version: 1.2.6 - resolution: "@rolldown/binding-linux-arm64-musl@npm:1.2.6" +"@rolldown/binding-linux-arm64-musl@npm:1.2.4": + version: 1.2.4 + resolution: "@rolldown/binding-linux-arm64-musl@npm:1.2.4" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rolldown/binding-linux-ppc64-gnu@npm:1.2.6": - version: 1.2.6 - resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.2.6" +"@rolldown/binding-linux-ppc64-gnu@npm:1.2.4": + version: 1.2.4 + resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.2.4" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-s390x-gnu@npm:1.2.6": - version: 1.2.6 - resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.2.6" +"@rolldown/binding-linux-s390x-gnu@npm:1.2.4": + version: 1.2.4 + resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.2.4" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-x64-gnu@npm:1.2.6": - version: 1.2.6 - resolution: "@rolldown/binding-linux-x64-gnu@npm:1.2.6" +"@rolldown/binding-linux-x64-gnu@npm:1.2.4": + version: 1.2.4 + resolution: "@rolldown/binding-linux-x64-gnu@npm:1.2.4" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-x64-musl@npm:1.2.6": - version: 1.2.6 - resolution: "@rolldown/binding-linux-x64-musl@npm:1.2.6" +"@rolldown/binding-linux-x64-musl@npm:1.2.4": + version: 1.2.4 + resolution: "@rolldown/binding-linux-x64-musl@npm:1.2.4" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rolldown/binding-openharmony-arm64@npm:1.2.6": - version: 1.2.6 - resolution: "@rolldown/binding-openharmony-arm64@npm:1.2.6" +"@rolldown/binding-openharmony-arm64@npm:1.2.4": + version: 1.2.4 + resolution: "@rolldown/binding-openharmony-arm64@npm:1.2.4" conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-win32-arm64-msvc@npm:1.2.6": - version: 1.2.6 - resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.2.6" +"@rolldown/binding-win32-arm64-msvc@npm:1.2.4": + version: 1.2.4 + resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.2.4" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-win32-x64-msvc@npm:1.2.6": - version: 1.2.6 - resolution: "@rolldown/binding-win32-x64-msvc@npm:1.2.6" +"@rolldown/binding-win32-x64-msvc@npm:1.2.4": + version: 1.2.4 + resolution: "@rolldown/binding-win32-x64-msvc@npm:1.2.4" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -2756,9 +2774,9 @@ __metadata: linkType: hard "@sigstore/protobuf-specs@npm:^0.5.0": - version: 0.5.2 - resolution: "@sigstore/protobuf-specs@npm:0.5.2" - checksum: 10c0/c0c5da18bdaf84e65236ff4eb04fd49273c1f62134e9c0e2622e69316293d9a6dd79801d556c23aa95994bd8b9084a1ba47901005ffc96047e654a39f86e6e05 + version: 0.5.1 + resolution: "@sigstore/protobuf-specs@npm:0.5.1" + checksum: 10c0/4284797bcac5f7250b7cb7000a67e76045d38da05a24a5912085b2472e0635efe4db3c6dd118e4023d7ba7ec5adc06cc8c35bf750cf2b39743e73c9f35311fe0 languageName: node linkType: hard @@ -3399,7 +3417,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.68.0": +"@typescript-eslint/utils@npm:8.68.0, @typescript-eslint/utils@npm:^8.68.0": version: 8.68.0 resolution: "@typescript-eslint/utils@npm:8.68.0" dependencies: @@ -3737,7 +3755,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.15.0, acorn@npm:^8.16.0": +"acorn@npm:^8.16.0": version: 8.18.0 resolution: "acorn@npm:8.18.0" bin: @@ -4085,11 +4103,11 @@ __metadata: linkType: hard "baseline-browser-mapping@npm:^2": - version: 2.11.20 - resolution: "baseline-browser-mapping@npm:2.11.20" + version: 2.11.17 + resolution: "baseline-browser-mapping@npm:2.11.17" bin: baseline-browser-mapping: dist/cli.cjs - checksum: 10c0/67588b7edafa4e6c52996ec4b96b6e007312961cefc5a179cb49232f6681a38ba68d4d43990081e9d0e1dcadcbd28f13105ee7dc3e43b267385d0beb14824ecc + checksum: 10c0/5f3e498a9a4ef506cde2140b1e08db80718dca2fc2c6d02cf2fb47ed06095f67d7e27260bb1353b68390062ebbe4435bb71e6d35b2e9eea5dc8dd4399e4c51f3 languageName: node linkType: hard @@ -4151,12 +4169,12 @@ __metadata: languageName: node linkType: hard -"brace-expansion@npm:5.0.9, brace-expansion@npm:^5.0.5, brace-expansion@npm:^5.0.8": - version: 5.0.9 - resolution: "brace-expansion@npm:5.0.9" +"brace-expansion@npm:5.0.8": + version: 5.0.8 + resolution: "brace-expansion@npm:5.0.8" dependencies: balanced-match: "npm:^4.0.2" - checksum: 10c0/3dea38884a1c3c8b1c9c44a7402a0c76fca460f70cffb3127242b0b4cbf4472019e022ade021eec44838ff19f1dac2625dfd11dd459d7e1e055b0698a8d52fec + checksum: 10c0/73304caafd00fdc5b0168e693ac15bf25b6357dec76d1195fcd628fe2cf99c46f9c889a7ecfa3cfe236dbd2d5ce3e27a6ccc4370b46d475d0d19081e11f86019 languageName: node linkType: hard @@ -4170,6 +4188,15 @@ __metadata: languageName: node linkType: hard +"brace-expansion@npm:^5.0.5, brace-expansion@npm:^5.0.8": + version: 5.0.9 + resolution: "brace-expansion@npm:5.0.9" + dependencies: + balanced-match: "npm:^4.0.2" + checksum: 10c0/3dea38884a1c3c8b1c9c44a7402a0c76fca460f70cffb3127242b0b4cbf4472019e022ade021eec44838ff19f1dac2625dfd11dd459d7e1e055b0698a8d52fec + languageName: node + linkType: hard + "braces@npm:^3.0.3": version: 3.0.3 resolution: "braces@npm:3.0.3" @@ -4179,7 +4206,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.28.7": +"browserslist@npm:^4.28.7, browserslist@npm:^4.28.8": version: 4.28.8 resolution: "browserslist@npm:4.28.8" dependencies: @@ -4298,9 +4325,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001809": - version: 1.0.30001810 - resolution: "caniuse-lite@npm:1.0.30001810" - checksum: 10c0/d29bc73f33c888025d54c7ff2984372d3b350b15a6a9e174884fb40976175e9177f202e2a72c2d428dddfc032784bc8ba635a31d168fcab9fac65756d7b3d6b4 + version: 1.0.30001809 + resolution: "caniuse-lite@npm:1.0.30001809" + checksum: 10c0/cac2ed4e66cc6c4cbf126b94d2c02012566eb92f93c89949290f99edcd2bdc4ed1290b5c537ccb9b42c773936a479ed468e5d4e9b8938b126a0947090e42e008 languageName: node linkType: hard @@ -4327,7 +4354,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1": +"chalk@npm:4.1.2, chalk@npm:^4.1.0, chalk@npm:^4.1.1": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -4450,22 +4477,13 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^4.0.0, ci-info@npm:^4.3.1": +"ci-info@npm:^4.0.0, ci-info@npm:^4.4.0": version: 4.4.0 resolution: "ci-info@npm:4.4.0" checksum: 10c0/44156201545b8dde01aa8a09ee2fe9fc7a73b1bef9adbd4606c9f61c8caeeb73fb7a575c88b0443f7b4edb5ee45debaa59ed54ba5f99698339393ca01349eb3a languageName: node linkType: hard -"clean-regexp@npm:^1.0.0": - version: 1.0.0 - resolution: "clean-regexp@npm:1.0.0" - dependencies: - escape-string-regexp: "npm:^1.0.5" - checksum: 10c0/fd9c7446551b8fc536f95e8a286d431017cd4ba1ec2e53997ec9159385e9c317672f6dfc4d49fdb97449fdb53b0bacd0a8bab9343b8fdd2e46c7ddf6173d0db7 - languageName: node - linkType: hard - "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" @@ -4602,9 +4620,9 @@ __metadata: linkType: hard "colord@npm:^2.9.3": - version: 2.10.0 - resolution: "colord@npm:2.10.0" - checksum: 10c0/2f5d1d1759124f593deca17bbbab8a88bdc3ab68bbcc88db76c1192d9a5d575db202badde044bf61789561fa0ed7a9eb895382becad1af27ec65934c216e9e04 + version: 2.9.3 + resolution: "colord@npm:2.9.3" + checksum: 10c0/9699e956894d8996b28c686afe8988720785f476f59335c80ce852ded76ab3ebe252703aec53d9bef54f6219aea6b960fb3d9a8300058a1d0c0d4026460cd110 languageName: node linkType: hard @@ -4731,13 +4749,6 @@ __metadata: languageName: node linkType: hard -"content-type@npm:^2.1.0": - version: 2.1.0 - resolution: "content-type@npm:2.1.0" - checksum: 10c0/f5d420f55fd0c7a7f7cbae9637777ce67a074aa79b489d8d9fee8599089592b5f8bb194e1d6885741fee20271034baca0d68d5419535b52d070c4f7e39f4b448 - languageName: node - linkType: hard - "conventional-changelog-angular@npm:9.2.1": version: 9.2.1 resolution: "conventional-changelog-angular@npm:9.2.1" @@ -4748,20 +4759,20 @@ __metadata: linkType: hard "conventional-changelog-angular@npm:^9.0.0": - version: 9.4.0 - resolution: "conventional-changelog-angular@npm:9.4.0" + version: 9.3.0 + resolution: "conventional-changelog-angular@npm:9.3.0" dependencies: - "@conventional-changelog/template": "npm:^1.4.0" - checksum: 10c0/79368f0bb9a0b10cc38b5eb0af64b7a69c815f3e5fed853af9f80b56b8f09b1578d0fb47d8a0cf13e8030c6dedb81a0f507d1998cd064d2ade3f517c82fbdcde + "@conventional-changelog/template": "npm:^1.3.0" + checksum: 10c0/571e91719650b53a53143a33f4b035ca5a674c58985a0ab734f299b2c1b37127b1596d43339b93dc0f95ef39232c62046a928f85c21d328e17206f82e8650a42 languageName: node linkType: hard "conventional-changelog-conventionalcommits@npm:^10.0.0": - version: 10.4.0 - resolution: "conventional-changelog-conventionalcommits@npm:10.4.0" + version: 10.3.0 + resolution: "conventional-changelog-conventionalcommits@npm:10.3.0" dependencies: - "@conventional-changelog/template": "npm:^1.4.0" - checksum: 10c0/60d99d74e6fdba134fc4785c13f87df82b9cabd980b4390dc958a8abf75d6fe1fdad921f52fb75e02f01a376cfd194b9f506f1e7718041e522b5260b53273882 + "@conventional-changelog/template": "npm:^1.3.0" + checksum: 10c0/5ea7942721877558823d486e1aa1efff6e5860399285661b3825c53505314dd35f784941413a012c84245b26be1614e38990d2dd1f25d3ce7ce6c3b5f43d88c7 languageName: node linkType: hard @@ -4846,6 +4857,13 @@ __metadata: languageName: node linkType: hard +"convert-hrtime@npm:^5.0.0": + version: 5.0.0 + resolution: "convert-hrtime@npm:5.0.0" + checksum: 10c0/2092e51aab205e1141440e84e2a89f8881e68e47c1f8bc168dfd7c67047d8f1db43bac28044bc05749205651fead4e7910f52c7bb6066213480df99e333e9f47 + languageName: node + linkType: hard + "convert-source-map@npm:^2.0.0": version: 2.0.0 resolution: "convert-source-map@npm:2.0.0" @@ -4853,7 +4871,7 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.46.0": +"core-js-compat@npm:^3.50.0": version: 3.50.0 resolution: "core-js-compat@npm:3.50.0" dependencies: @@ -5231,12 +5249,12 @@ __metadata: linkType: hard "default-browser@npm:^5.2.1": - version: 5.5.1 - resolution: "default-browser@npm:5.5.1" + version: 5.5.0 + resolution: "default-browser@npm:5.5.0" dependencies: bundle-name: "npm:^4.1.0" default-browser-id: "npm:^5.0.0" - checksum: 10c0/feb5e7a6a6f2fcbc7a6c5c78e071a4f7a3ab136e6244b9637e58fe6170f6e1254ae099cbe2ebc2b2823c387ed50fda176ce31d386f4f2ebbd43d8fb1cb6aacf7 + checksum: 10c0/576593b617b17a7223014b4571bfe1c06a2581a4eb8b130985d90d253afa3f40999caec70eb0e5776e80d4af6a41cce91018cd3f86e57ad578bf59e46fb19abe languageName: node linkType: hard @@ -5306,6 +5324,13 @@ __metadata: languageName: node linkType: hard +"detect-indent@npm:^7.0.2": + version: 7.0.2 + resolution: "detect-indent@npm:7.0.2" + checksum: 10c0/adb1334ca3fe516dc6817aff0a777540b88643ab92fe13a72d0f5d12721ca796ffdd0e5fedb7b45e6e82657156c6ad44f5d5758157f0439532ae7d07b595146b + languageName: node + linkType: hard + "detect-installed@npm:2.0.4": version: 2.0.4 resolution: "detect-installed@npm:2.0.4" @@ -5417,9 +5442,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.402": - version: 1.5.416 - resolution: "electron-to-chromium@npm:1.5.416" - checksum: 10c0/d69c0fef4fc18f4a01f7c1dfda2e7e648e4e8c6e60072dde693643a9725ba19c99353d0f5f6ba75a214c7fd7410817a518342281ee638461accb6cf24aa254ca + version: 1.5.407 + resolution: "electron-to-chromium@npm:1.5.407" + checksum: 10c0/b542d12ef5c0f461300a820b3006b889f14e221f7af3f0353036b259b6d7de824ff365cb5da867309511462378c3576a522b57c3cf42f6185d35387fea3dfb23 languageName: node linkType: hard @@ -5544,9 +5569,9 @@ __metadata: linkType: hard "es-module-lexer@npm:^2.0.0": - version: 2.3.2 - resolution: "es-module-lexer@npm:2.3.2" - checksum: 10c0/5e7389424c43478439f12f9a6aca1750f6f99afa384fc3de329f4a45f152ab156671055008adaafc74960877abf8cc338aeebf6bed8c21297b146fd6eb7a22f8 + version: 2.3.1 + resolution: "es-module-lexer@npm:2.3.1" + checksum: 10c0/ada8b222772b5b8ea92eb6054c383233207418621855a07b480fdd36979b658a41414be09e793fcdd8a67a182741475f47830a01ff2ebd4353d7f6965c7c45f9 languageName: node linkType: hard @@ -5581,8 +5606,8 @@ __metadata: linkType: hard "es-toolkit@npm:^1.46.0": - version: 1.52.0 - resolution: "es-toolkit@npm:1.52.0" + version: 1.50.0 + resolution: "es-toolkit@npm:1.50.0" dependenciesMeta: "@trivago/prettier-plugin-sort-imports@4.3.0": unplugged: true @@ -5590,7 +5615,7 @@ __metadata: unplugged: true vitepress-plugin-sandpack@1.1.4: unplugged: true - checksum: 10c0/465988c0a6b84b6d1d171287cbbe40c3247a1f94acea210ae14bc66b7d90c93e6839bd6937cbaf2a1d206669f3179eb26141a89d9125969a4b8e58cb7d86a2ca + checksum: 10c0/80e3a212d337df6f20ed0330d1b62dda25f3ef6d4c83a33f13d521ccbf5b4ad1ac3e7e638572abd6080627f522707de76a5c9360350b713e5392739083ee1f24 languageName: node linkType: hard @@ -5637,18 +5662,6 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-eslint-comments@npm:3.2.0": - version: 3.2.0 - resolution: "eslint-plugin-eslint-comments@npm:3.2.0" - dependencies: - escape-string-regexp: "npm:^1.0.5" - ignore: "npm:^5.0.5" - peerDependencies: - eslint: ">=4.19.1" - checksum: 10c0/c71db824592dc8ea498021572a0bd33d763ef26126bdb3b84a027ca75a1adbe0894ec95024f7de39ef12308560e62cbf8af0d06ffe472be5ba8bd9169c928e96 - languageName: node - linkType: hard - "eslint-plugin-import-x@npm:4.17.1": version: 4.17.1 resolution: "eslint-plugin-import-x@npm:4.17.1" @@ -5675,12 +5688,13 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jsdoc@npm:64.2.1": - version: 64.2.1 - resolution: "eslint-plugin-jsdoc@npm:64.2.1" +"eslint-plugin-jsdoc@npm:64.3.2": + version: 64.3.2 + resolution: "eslint-plugin-jsdoc@npm:64.3.2" dependencies: "@es-joy/jsdoccomment": "npm:~0.95.1" "@es-joy/resolve.exports": "npm:1.2.0" + "@typescript-eslint/utils": "npm:^8.68.0" are-docs-informative: "npm:^0.1.1" comment-parser: "npm:1.4.8" debug: "npm:^4.4.3" @@ -5695,7 +5709,7 @@ __metadata: to-valid-identifier: "npm:^1.0.0" peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 - checksum: 10c0/e603889d46ee7e821b357c65a71572683ba43e303f7169e06147f73e3f9f216639353c19f9fcd3bec24e5a4db47b07de7d0c53696ac2511249f89e3894b5de9b + checksum: 10c0/0115e8de5141819d0bedb9356611fbc36d20ef8f051b93df19803e0a913cc11cb5bf531350e40ac5ae702e992b45a64191f6af627f0d8e7a71242e4c18b3dbf7 languageName: node linkType: hard @@ -5725,33 +5739,37 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-unicorn@npm:63.0.0": - version: 63.0.0 - resolution: "eslint-plugin-unicorn@npm:63.0.0" +"eslint-plugin-unicorn@npm:74.0.0": + version: 74.0.0 + resolution: "eslint-plugin-unicorn@npm:74.0.0" dependencies: - "@babel/helper-validator-identifier": "npm:^7.28.5" - "@eslint-community/eslint-utils": "npm:^4.9.0" + "@eslint-community/eslint-utils": "npm:^4.10.1" + "@eslint/css-tree": "npm:^4.0.5" + browserslist: "npm:^4.28.8" change-case: "npm:^5.4.4" - ci-info: "npm:^4.3.1" - clean-regexp: "npm:^1.0.0" - core-js-compat: "npm:^3.46.0" + ci-info: "npm:^4.4.0" + core-js-compat: "npm:^3.50.0" + detect-indent: "npm:^7.0.2" + entities: "npm:^8.0.0" find-up-simple: "npm:^1.0.1" - globals: "npm:^16.4.0" + globals: "npm:^17.11.0" indent-string: "npm:^5.0.0" is-builtin-module: "npm:^5.0.0" - jsesc: "npm:^3.1.0" + is-identifier: "npm:^1.1.0" pluralize: "npm:^8.0.0" - regexp-tree: "npm:^0.1.27" - regjsparser: "npm:^0.13.0" - semver: "npm:^7.7.3" + quote-js-string: "npm:^0.1.0" + regjsparser: "npm:^0.13.2" + reserved-identifiers: "npm:^1.2.0" + semver: "npm:^7.8.5" strip-indent: "npm:^4.1.1" + yaml: "npm:^2.9.0" peerDependencies: - eslint: ">=9.38.0" - checksum: 10c0/bc3550322a2b008ea9252e1a94a4f12a6c96c4387be563a5d62b879078cbe6b01c957843d31ec7d09fd8d8cf287ac00f8b93666721ff916b0166d4e82c80926c + eslint: ">=10.4" + checksum: 10c0/d23315e22e97f793d701833bb7f1f087d57f0dc1a21d74b46b84ff6335613756b6d4bf16cf7e7c9b659d1ce06ec3cef2f98c63395a22e7ee39dcdf83c0d379d0 languageName: node linkType: hard -"eslint-scope@npm:^8.2.0 || ^9.0.0": +"eslint-scope@npm:^8.2.0 || ^9.0.0, eslint-scope@npm:^9.1.2": version: 9.1.2 resolution: "eslint-scope@npm:9.1.2" dependencies: @@ -5763,16 +5781,6 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^8.4.0": - version: 8.4.0 - resolution: "eslint-scope@npm:8.4.0" - dependencies: - esrecurse: "npm:^4.3.0" - estraverse: "npm:^5.2.0" - checksum: 10c0/407f6c600204d0f3705bd557f81bd0189e69cd7996f408f8971ab5779c0af733d1af2f1412066b40ee1588b085874fc37a2333986c6521669cdbdd36ca5058e0 - languageName: node - linkType: hard - "eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" @@ -5787,38 +5795,28 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^4.2.1": - version: 4.2.1 - resolution: "eslint-visitor-keys@npm:4.2.1" - checksum: 10c0/fcd43999199d6740db26c58dbe0c2594623e31ca307e616ac05153c9272f12f1364f5a0b1917a8e962268fdecc6f3622c1c2908b4fcc2e047a106fe6de69dc43 - languageName: node - linkType: hard - -"eslint@npm:9.39.5": - version: 9.39.5 - resolution: "eslint@npm:9.39.5" +"eslint@npm:10.9.1": + version: 10.9.1 + resolution: "eslint@npm:10.9.1" dependencies: "@eslint-community/eslint-utils": "npm:^4.8.0" - "@eslint-community/regexpp": "npm:^4.12.1" - "@eslint/config-array": "npm:^0.21.2" - "@eslint/config-helpers": "npm:^0.4.2" - "@eslint/core": "npm:^0.17.0" - "@eslint/eslintrc": "npm:^3.3.6" - "@eslint/js": "npm:9.39.5" - "@eslint/plugin-kit": "npm:^0.4.1" + "@eslint-community/regexpp": "npm:^4.12.2" + "@eslint/config-array": "npm:^0.23.5" + "@eslint/config-helpers": "npm:^0.7.0" + "@eslint/core": "npm:^1.2.1" + "@eslint/plugin-kit": "npm:^0.7.2" "@humanfs/node": "npm:^0.16.6" "@humanwhocodes/module-importer": "npm:^1.0.1" "@humanwhocodes/retry": "npm:^0.4.2" "@types/estree": "npm:^1.0.6" ajv: "npm:^6.14.0" - chalk: "npm:^4.0.0" cross-spawn: "npm:^7.0.6" debug: "npm:^4.3.2" escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^8.4.0" - eslint-visitor-keys: "npm:^4.2.1" - espree: "npm:^10.4.0" - esquery: "npm:^1.5.0" + eslint-scope: "npm:^9.1.2" + eslint-visitor-keys: "npm:^5.0.1" + espree: "npm:^11.2.0" + esquery: "npm:^1.7.0" esutils: "npm:^2.0.2" fast-deep-equal: "npm:^3.1.3" file-entry-cache: "npm:^8.0.0" @@ -5828,8 +5826,7 @@ __metadata: imurmurhash: "npm:^0.1.4" is-glob: "npm:^4.0.0" json-stable-stringify-without-jsonify: "npm:^1.0.1" - lodash.merge: "npm:^4.6.2" - minimatch: "npm:^3.1.5" + minimatch: "npm:^10.2.5" natural-compare: "npm:^1.4.0" optionator: "npm:^0.9.3" peerDependencies: @@ -5839,7 +5836,7 @@ __metadata: optional: true bin: eslint: bin/eslint.js - checksum: 10c0/46335bfcf180ffea9955b38122b578ac9e075b6220e5695be1c988354ea429b04f5db05edc132aa9019ce9847736e9ca0c9ea6d6cedda3c06209c9b52dbd0fd5 + checksum: 10c0/11cfd118dced911d506dc752086a641b45c95996af1f7b2a1914f992bbcdca78bb56cd4dd281595c7a792e1562a49047aa65ce763e3ed809cbde84fe4a08924f languageName: node linkType: hard @@ -5854,17 +5851,6 @@ __metadata: languageName: node linkType: hard -"espree@npm:^10.0.1, espree@npm:^10.4.0": - version: 10.4.0 - resolution: "espree@npm:10.4.0" - dependencies: - acorn: "npm:^8.15.0" - acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^4.2.1" - checksum: 10c0/c63fe06131c26c8157b4083313cb02a9a54720a08e21543300e55288c40e06c3fc284bdecf108d3a1372c5934a0a88644c98714f38b6ae8ed272b40d9ea08d6b - languageName: node - linkType: hard - "esprima@npm:^4.0.0, esprima@npm:^4.0.1": version: 4.0.1 resolution: "esprima@npm:4.0.1" @@ -5875,7 +5861,7 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.5.0, esquery@npm:^1.6.0, esquery@npm:^1.7.0": +"esquery@npm:^1.6.0, esquery@npm:^1.7.0": version: 1.7.0 resolution: "esquery@npm:1.7.0" dependencies: @@ -6057,9 +6043,9 @@ __metadata: linkType: hard "fast-uri@npm:^3.0.1": - version: 3.1.6 - resolution: "fast-uri@npm:3.1.6" - checksum: 10c0/77fa4f966f7d2cf83c34af2d3eb88882872fe90634f27a6bd309551db65377d3ca55616467c7cb4dcc57e33523d149e2fec1952d51cc2f00bfce68a66c3711ea + version: 3.1.5 + resolution: "fast-uri@npm:3.1.5" + checksum: 10c0/2bf60eb800dd610c65e17be436425dcb21c92aff3a87d442a8bccab0b7b071e88cf1a5d7d1ea946370b937e6fc0375c405c0296c10587e57de4f78be4646d1d0 languageName: node linkType: hard @@ -6071,11 +6057,11 @@ __metadata: linkType: hard "fastq@npm:^1.6.0": - version: 1.20.3 - resolution: "fastq@npm:1.20.3" + version: 1.20.1 + resolution: "fastq@npm:1.20.1" dependencies: reusify: "npm:^1.0.4" - checksum: 10c0/ad055a1b50f7ec9142d2e13699ad6c4d1fa9fea1d947fff89de1b5ea3825223e9a626c359b3a0f21aefbe093cc2a9e92a91e068f982a2b176af16b9ea430ffc5 + checksum: 10c0/e5dd725884decb1f11e5c822221d76136f239d0236f176fab80b7b8f9e7619ae57e6b4e5b73defc21e6b9ef99437ee7b545cff8e6c2c337819633712fa9d352e languageName: node linkType: hard @@ -6393,6 +6379,13 @@ __metadata: languageName: node linkType: hard +"function-timeout@npm:^1.0.1": + version: 1.0.2 + resolution: "function-timeout@npm:1.0.2" + checksum: 10c0/75d7ac6c83c450b84face2c9d22307b00e10c7376aa3a34c7be260853582c5e4c502904e2f6bf1d4500c4052e748e001388f6bbd9d34ebfdfb6c4fec2169d0ff + languageName: node + linkType: hard + "functions-have-names@npm:^1.2.3": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" @@ -6504,11 +6497,11 @@ __metadata: linkType: hard "get-tsconfig@npm:^4.10.1": - version: 4.14.3 - resolution: "get-tsconfig@npm:4.14.3" + version: 4.14.2 + resolution: "get-tsconfig@npm:4.14.2" dependencies: resolve-pkg-maps: "npm:^1.0.0" - checksum: 10c0/22119bb5b7e37b922a973bfb50deac89ca845cef50a24cd27b6c628f314e91a2bccceb186e0b5183e231ad6480d7173738912975332caf60678af39b7236eeac + checksum: 10c0/0b6e4fafd34adcc992258f9874a366222fac76b165a4b9c102fe25056a3f9c4dae1e365c213c040e56b0bd45fd5671343f9410d153af1aab0bbf699a54d59c1b languageName: node linkType: hard @@ -6643,39 +6636,24 @@ __metadata: languageName: node linkType: hard -"globals@npm:17.11.0": +"globals@npm:17.11.0, globals@npm:^17.11.0": version: 17.11.0 resolution: "globals@npm:17.11.0" checksum: 10c0/5e1be3d816e04d4d0d01b1cdd40e46b5fb6b5e9f15aece9a5919b060e0fb1b3f1b9e7327dce97ef19e05513a6d65872e0834999ddea251557556dddd0f5fde30 languageName: node linkType: hard -"globals@npm:^14.0.0": - version: 14.0.0 - resolution: "globals@npm:14.0.0" - checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d - languageName: node - linkType: hard - -"globals@npm:^16.4.0": - version: 16.5.0 - resolution: "globals@npm:16.5.0" - checksum: 10c0/615241dae7851c8012f5aa0223005b1ed6607713d6813de0741768bd4ddc39353117648f1a7086b4b0fa45eae733f1c0a0fe369aa4e543bb63f8de8990178ea9 - languageName: node - linkType: hard - "globby@npm:^16.2.1": - version: 16.2.4 - resolution: "globby@npm:16.2.4" + version: 16.2.3 + resolution: "globby@npm:16.2.3" dependencies: "@sindresorhus/merge-streams": "npm:^4.0.0" fast-glob: "npm:^3.3.3" ignore: "npm:^7.0.5" is-path-inside: "npm:^4.0.0" - micromatch: "npm:^4.0.8" slash: "npm:^5.1.0" unicorn-magic: "npm:^0.4.0" - checksum: 10c0/ef4a56b656260138b47706bd9532aad86d2820f028c58d51af41f458cf7f1177ce71cf104697cd6068c18eb1e0f3272bf446bc7c6265a357c6a159a1a1e31cec + checksum: 10c0/2f9999965dbad75425761a4fdd4fd505c7a8ac6e803cd956a3d1888116a9adbb67fce873f8c5dc419f5ae4b7013dd168beb5bb664f30aa19ebe044bc1b35e1e1 languageName: node linkType: hard @@ -7011,6 +6989,15 @@ __metadata: languageName: node linkType: hard +"identifier-regex@npm:^1.1.0": + version: 1.1.0 + resolution: "identifier-regex@npm:1.1.0" + dependencies: + reserved-identifiers: "npm:^1.0.0" + checksum: 10c0/712d661d170bc5fbf05fa784aa8ddd6c262e095276db25df248e143dc5ee66fb09253e9fe2817f78b4181c33c88316cc68f5976cc6cbaa2564e918194154503a + languageName: node + linkType: hard + "ieee754@npm:1.2.1, ieee754@npm:^1.1.13": version: 1.2.1 resolution: "ieee754@npm:1.2.1" @@ -7034,7 +7021,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.0.5, ignore@npm:^5.2.0": +"ignore@npm:^5.2.0": version: 5.3.2 resolution: "ignore@npm:5.3.2" checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 @@ -7048,7 +7035,7 @@ __metadata: languageName: node linkType: hard -"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": +"import-fresh@npm:^3.3.0": version: 3.3.1 resolution: "import-fresh@npm:3.3.1" dependencies: @@ -7237,9 +7224,9 @@ __metadata: linkType: hard "ip-address@npm:^10.1.1": - version: 10.7.0 - resolution: "ip-address@npm:10.7.0" - checksum: 10c0/bb6f514708b84ec75ad4d8156f3d571a5b8e592a15359386100f4f8d7366a4b7723d54b88a30d80b3f51ca5f4dee239e94ef4b53765b9c41a8ea46b421307d14 + version: 10.5.0 + resolution: "ip-address@npm:10.5.0" + checksum: 10c0/c6616bc99c90b552dad2beb850ca697c1ea3e2b89662d652a4439cd72a549b0c9af100a54be0d25be86599e2b089db87ef5303157d142e5b4c21bd2a1301dfa7 languageName: node linkType: hard @@ -7396,6 +7383,16 @@ __metadata: languageName: node linkType: hard +"is-identifier@npm:^1.1.0": + version: 1.1.0 + resolution: "is-identifier@npm:1.1.0" + dependencies: + identifier-regex: "npm:^1.1.0" + super-regex: "npm:^1.1.0" + checksum: 10c0/86eaaedc3d2e37d4de0129f1714e992cc67844d782abc00f4f450a954a2fba2f84612a7a9a415318ad1ac7bc7b093e4004e79d3578d8c35653d0507a80eba298 + languageName: node + linkType: hard + "is-inside-container@npm:1.0.0, is-inside-container@npm:^1.0.0": version: 1.0.0 resolution: "is-inside-container@npm:1.0.0" @@ -7442,20 +7439,13 @@ __metadata: languageName: node linkType: hard -"is-plain-object@npm:5.0.0": +"is-plain-object@npm:5.0.0, is-plain-object@npm:^5.0.0": version: 5.0.0 resolution: "is-plain-object@npm:5.0.0" checksum: 10c0/893e42bad832aae3511c71fd61c0bf61aa3a6d853061c62a307261842727d0d25f761ce9379f7ba7226d6179db2a3157efa918e7fe26360f3bf0842d9f28942c languageName: node linkType: hard -"is-plain-object@npm:^5.0.0": - version: 5.1.0 - resolution: "is-plain-object@npm:5.1.0" - checksum: 10c0/21d6e5b182aaf56b18fdc3829bf39ed6c1ebdf9fd312549a56846942307e5699fb3c5841e60622c409951f670900980d7e402c22d4f7659a78e32e016442ba7a - languageName: node - linkType: hard - "is-regex@npm:^1.0.3": version: 1.2.1 resolution: "is-regex@npm:1.2.1" @@ -7627,38 +7617,29 @@ __metadata: linkType: hard "js-yaml@npm:^3.9.1": - version: 3.15.2 - resolution: "js-yaml@npm:3.15.2" + version: 3.15.1 + resolution: "js-yaml@npm:3.15.1" dependencies: argparse: "npm:^1.0.7" esprima: "npm:^4.0.0" bin: js-yaml: bin/js-yaml.js - checksum: 10c0/e341df211dece9d4b784849647ad7568b5b6a58a9ee58ead750482316d83276387343649fe4b71522705dc6c76acf97718588f23dc19443833ef3e75033af967 + checksum: 10c0/6c693b8c59ffe12021df3b36994b090df19d920826dd810baab81652b40861e1974509dd11fe92225ab4c00cc14de053300c94db015c2c0e211edea39b118737 languageName: node linkType: hard "js-yaml@npm:^4.1.0, js-yaml@npm:^4.1.1, js-yaml@npm:^4.3.0": - version: 4.3.2 - resolution: "js-yaml@npm:4.3.2" + version: 4.3.1 + resolution: "js-yaml@npm:4.3.1" dependencies: argparse: "npm:^2.0.1" bin: js-yaml: bin/js-yaml.js - checksum: 10c0/dedd34c2e8fef1d504687f1bc94ed0ee1311a1f78770fa2800352c6d59c635ccf555009d74e9afe529ae62199da2b1ccef30e53dc84dcd8d2d8187c22574bc97 - languageName: node - linkType: hard - -"jsdoc-type-pratt-parser@npm:^9.0.0": - version: 9.2.0 - resolution: "jsdoc-type-pratt-parser@npm:9.2.0" - dependencies: - "@types/estree": "npm:^1.0.9" - checksum: 10c0/85ec1f8a4c6d3a10ae466534fccbd2784e6e160277c979c7ddefa57f144b8924d8a208804f820195e2d22d15cf8f6c03f0e0c5cad30f1207100e74b235c1973b + checksum: 10c0/13c500ca322e0c3f8c81686e6ecda96d2ea37b45247a420c17c7db36932d6965cc27391abc2d1a104501600e7f0d947a5f8b7be6db619c4fefa87901b3512807 languageName: node linkType: hard -"jsdoc-type-pratt-parser@npm:~9.1.2": +"jsdoc-type-pratt-parser@npm:^9.0.0, jsdoc-type-pratt-parser@npm:~9.1.2": version: 9.1.2 resolution: "jsdoc-type-pratt-parser@npm:9.1.2" dependencies: @@ -7667,7 +7648,7 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^3.1.0, jsesc@npm:~3.1.0": +"jsesc@npm:~3.1.0": version: 3.1.0 resolution: "jsesc@npm:3.1.0" bin: @@ -8181,7 +8162,7 @@ __metadata: languageName: node linkType: hard -"lodash.merge@npm:4.6.2, lodash.merge@npm:^4.6.2": +"lodash.merge@npm:4.6.2": version: 4.6.2 resolution: "lodash.merge@npm:4.6.2" checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 @@ -8277,6 +8258,17 @@ __metadata: languageName: node linkType: hard +"make-asynchronous@npm:^1.0.1": + version: 1.1.0 + resolution: "make-asynchronous@npm:1.1.0" + dependencies: + p-event: "npm:^6.0.0" + type-fest: "npm:^4.6.0" + web-worker: "npm:^1.5.0" + checksum: 10c0/794c4876839f00bc6e287a1f07177dc3bb5c177d06d4ebe9e3a055758d9740b9b296a957c9015bed8d0d92d70035c70108e4c7d7bc2880fb16b94d0bd4b75a37 + languageName: node + linkType: hard + "make-fetch-happen@npm:15.0.2": version: 15.0.2 resolution: "make-fetch-happen@npm:15.0.2" @@ -8511,6 +8503,13 @@ __metadata: languageName: node linkType: hard +"mdn-data@npm:2.29.0": + version: 2.29.0 + resolution: "mdn-data@npm:2.29.0" + checksum: 10c0/b973a82d0764ebe611014e3be1c174cbcd235f3d5f1f943530be03b2d2ec74e9db0b0018b2940e8f1f41ca887d1298dcd1d49738e6982f484dbbebccc0250652 + languageName: node + linkType: hard + "memorystream@npm:^0.3.1": version: 0.3.1 resolution: "memorystream@npm:0.3.1" @@ -8696,7 +8695,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^10.0.3, minimatch@npm:^10.1.1, minimatch@npm:^10.2.2, minimatch@npm:^9.0.3 || ^10.1.2": +"minimatch@npm:^10.0.3, minimatch@npm:^10.1.1, minimatch@npm:^10.2.2, minimatch@npm:^10.2.4, minimatch@npm:^10.2.5, minimatch@npm:^9.0.3 || ^10.1.2": version: 10.2.6 resolution: "minimatch@npm:10.2.6" dependencies: @@ -8705,7 +8704,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.3, minimatch@npm:^3.1.1, minimatch@npm:^3.1.5": +"minimatch@npm:^3.0.3, minimatch@npm:^3.1.1": version: 3.1.5 resolution: "minimatch@npm:3.1.5" dependencies: @@ -8904,11 +8903,9 @@ __metadata: linkType: hard "negotiator@npm:^1.0.0": - version: 1.1.0 - resolution: "negotiator@npm:1.1.0" - dependencies: - content-type: "npm:^2.1.0" - checksum: 10c0/656fa57de02f1a0c4c09f9e17eb78e8182547c07093e810ff8f16249b6ae31f2c546a3d457905e94f3276b25f0e2741ea1a3bc3912192932ed7e493adfea535e + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b languageName: node linkType: hard @@ -8947,8 +8944,8 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 13.0.2 - resolution: "node-gyp@npm:13.0.2" + version: 13.0.1 + resolution: "node-gyp@npm:13.0.1" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" @@ -8962,7 +8959,7 @@ __metadata: which: "npm:^7.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10c0/29d33ccf47ffeeb5e7af925550b416f698a26a72eb10975c7eb5775c1d0cecacd76d164a4aa45503d3ddcece209db65c712be00423c69381a4cd14e2e6540559 + checksum: 10c0/424077bc9e9bbe953a8e86db473ba818cbc6a121714008c977fd589e21e5f0c811fbf22faac730dc7182450b5e52df301811d01ae3373898658d999b7710f4e6 languageName: node linkType: hard @@ -8976,9 +8973,9 @@ __metadata: linkType: hard "node-releases@npm:^2.0.53": - version: 2.0.54 - resolution: "node-releases@npm:2.0.54" - checksum: 10c0/196b54ab06fd03b742816b6ca8185c69af42735b283083036e2579682c430b8f9ff89046891fe8c625557e5885793a2032d28070100bb2e57e6d6586b2f483c1 + version: 2.0.53 + resolution: "node-releases@npm:2.0.53" + checksum: 10c0/db9fb29b21ec12e223ead8bd9406100ff14fce01678a9a4865e288098456b84869431421a739f216aa520b6f57d9425f6537662501ae8a2d9e1771bfa87751bc languageName: node linkType: hard @@ -9254,24 +9251,24 @@ __metadata: linkType: hard "nx@npm:>=23.1.0 < 24.0.0": - version: 23.1.2 - resolution: "nx@npm:23.1.2" + version: 23.1.1 + resolution: "nx@npm:23.1.1" dependencies: "@emnapi/core": "npm:1.4.5" "@emnapi/runtime": "npm:1.4.5" "@emnapi/wasi-threads": "npm:1.0.4" "@jest/diff-sequences": "npm:30.0.1" "@napi-rs/wasm-runtime": "npm:0.2.4" - "@nx/nx-darwin-arm64": "npm:23.1.2" - "@nx/nx-darwin-x64": "npm:23.1.2" - "@nx/nx-freebsd-x64": "npm:23.1.2" - "@nx/nx-linux-arm-gnueabihf": "npm:23.1.2" - "@nx/nx-linux-arm64-gnu": "npm:23.1.2" - "@nx/nx-linux-arm64-musl": "npm:23.1.2" - "@nx/nx-linux-x64-gnu": "npm:23.1.2" - "@nx/nx-linux-x64-musl": "npm:23.1.2" - "@nx/nx-win32-arm64-msvc": "npm:23.1.2" - "@nx/nx-win32-x64-msvc": "npm:23.1.2" + "@nx/nx-darwin-arm64": "npm:23.1.1" + "@nx/nx-darwin-x64": "npm:23.1.1" + "@nx/nx-freebsd-x64": "npm:23.1.1" + "@nx/nx-linux-arm-gnueabihf": "npm:23.1.1" + "@nx/nx-linux-arm64-gnu": "npm:23.1.1" + "@nx/nx-linux-arm64-musl": "npm:23.1.1" + "@nx/nx-linux-x64-gnu": "npm:23.1.1" + "@nx/nx-linux-x64-musl": "npm:23.1.1" + "@nx/nx-win32-arm64-msvc": "npm:23.1.1" + "@nx/nx-win32-x64-msvc": "npm:23.1.1" "@tybys/wasm-util": "npm:0.9.0" "@yarnpkg/lockfile": "npm:1.1.0" "@zkochan/js-yaml": "npm:0.0.7" @@ -9285,7 +9282,7 @@ __metadata: balanced-match: "npm:4.0.3" base64-js: "npm:1.5.1" bl: "npm:4.1.0" - brace-expansion: "npm:5.0.9" + brace-expansion: "npm:5.0.8" buffer: "npm:5.7.1" bundle-name: "npm:4.1.0" call-bind-apply-helpers: "npm:1.0.2" @@ -9419,7 +9416,7 @@ __metadata: bin: nx: ./dist/bin/nx.js nx-cloud: ./dist/bin/nx-cloud.js - checksum: 10c0/9a202ba2c1b45bef4cff591ea4c0b83106bc7d532b71486f52948e6a26081b05f107685251c7e67b3b901c655125fa60404ce297f7238f2ce16764606dbe0b21 + checksum: 10c0/6e587d863a4a7d03e436a6ee75fa9b606a2745e645c7afeeedae076d2c1851ce5b9187af3c07e17d5889f721630c4b39721eafd0fcd91ff5fedd41fad5621cf6 languageName: node linkType: hard @@ -9551,6 +9548,15 @@ __metadata: languageName: node linkType: hard +"p-event@npm:^6.0.0": + version: 6.0.1 + resolution: "p-event@npm:6.0.1" + dependencies: + p-timeout: "npm:^6.1.2" + checksum: 10c0/c2da4d3f445376db2130d740b41309f97e8802d17277590684ca51cdcafcc77a024ccdd6b1a24c275c49c3c4ef57bbfc499e6d2b3b18813c774aaceb81cde7b4 + languageName: node + linkType: hard + "p-finally@npm:^1.0.0": version: 1.0.0 resolution: "p-finally@npm:1.0.0" @@ -9629,6 +9635,13 @@ __metadata: languageName: node linkType: hard +"p-timeout@npm:^6.1.2": + version: 6.1.4 + resolution: "p-timeout@npm:6.1.4" + checksum: 10c0/019edad1c649ab07552aa456e40ce7575c4b8ae863191477f02ac8d283ac8c66cedef0ca93422735130477a051dfe952ba717641673fd3599befdd13f63bcc33 + languageName: node + linkType: hard + "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" @@ -10015,7 +10028,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.5.26, postcss@npm:^8.5.16, postcss@npm:^8.5.26, postcss@npm:^8.5.8": +"postcss@npm:8.5.26, postcss@npm:^8.5.16, postcss@npm:^8.5.25, postcss@npm:^8.5.8": version: 8.5.26 resolution: "postcss@npm:8.5.26" dependencies: @@ -10043,11 +10056,11 @@ __metadata: linkType: hard "pretty-ms@npm:^9.3.0": - version: 9.3.1 - resolution: "pretty-ms@npm:9.3.1" + version: 9.3.0 + resolution: "pretty-ms@npm:9.3.0" dependencies: parse-ms: "npm:^4.0.0" - checksum: 10c0/f034e6197922da40d6f0e73c835baa0f87d89f660966deb651305ee0567e20d5258b9c1782de098069b479036653bd1ad4ee1d6d816d1fde0e47c62d0ce5763d + checksum: 10c0/555ea39a1de48a30601938aedb76d682871d33b6dee015281c37108921514b11e1792928b1648c2e5589acc73c8ef0fb5e585fb4c718e340a28b86799e90fb34 languageName: node linkType: hard @@ -10265,6 +10278,13 @@ __metadata: languageName: node linkType: hard +"quote-js-string@npm:^0.1.0": + version: 0.1.0 + resolution: "quote-js-string@npm:0.1.0" + checksum: 10c0/72b18e676ae2397d91b90966b41babe3d0203ddbccf28c5e7f91fd4aa827d1c2259abeef597d1404a689cf75f085792b592196dec074f164cc3950172caabd5f + languageName: node + linkType: hard + "rc-config-loader@npm:^4.1.4": version: 4.1.4 resolution: "rc-config-loader@npm:4.1.4" @@ -10391,15 +10411,6 @@ __metadata: languageName: node linkType: hard -"regexp-tree@npm:^0.1.27": - version: 0.1.27 - resolution: "regexp-tree@npm:0.1.27" - bin: - regexp-tree: bin/regexp-tree - checksum: 10c0/f636f44b4a0d93d7d6926585ecd81f63e4ce2ac895bc417b2ead0874cd36b337dcc3d0fedc63f69bf5aaeaa4340f36ca7e750c9687cceaf8087374e5284e843c - languageName: node - linkType: hard - "regexp.prototype.flags@npm:^1.1.1, regexp.prototype.flags@npm:^1.5.3": version: 1.5.4 resolution: "regexp.prototype.flags@npm:1.5.4" @@ -10414,7 +10425,7 @@ __metadata: languageName: node linkType: hard -"regjsparser@npm:^0.13.0": +"regjsparser@npm:^0.13.2": version: 0.13.2 resolution: "regjsparser@npm:0.13.2" dependencies: @@ -10515,7 +10526,7 @@ __metadata: languageName: node linkType: hard -"reserved-identifiers@npm:^1.0.0": +"reserved-identifiers@npm:^1.0.0, reserved-identifiers@npm:^1.2.0": version: 1.2.0 resolution: "reserved-identifiers@npm:1.2.0" checksum: 10c0/b82651b12e6c608e80463c3753d275bc20fd89294d0415f04e670aeec3611ae3582ddc19e8fedd497e7d0bcbfaddab6a12823ec86e855b1e6a245e0a734eb43d @@ -10642,30 +10653,27 @@ __metadata: languageName: node linkType: hard -"rolldown@npm:~1.2.4": - version: 1.2.6 - resolution: "rolldown@npm:1.2.6" - dependencies: - "@oxc-project/types": "npm:=0.147.0" - "@rolldown/binding-android-arm-eabi": "npm:1.2.6" - "@rolldown/binding-android-arm64": "npm:1.2.6" - "@rolldown/binding-darwin-arm64": "npm:1.2.6" - "@rolldown/binding-darwin-x64": "npm:1.2.6" - "@rolldown/binding-freebsd-x64": "npm:1.2.6" - "@rolldown/binding-linux-arm-gnueabihf": "npm:1.2.6" - "@rolldown/binding-linux-arm64-gnu": "npm:1.2.6" - "@rolldown/binding-linux-arm64-musl": "npm:1.2.6" - "@rolldown/binding-linux-ppc64-gnu": "npm:1.2.6" - "@rolldown/binding-linux-s390x-gnu": "npm:1.2.6" - "@rolldown/binding-linux-x64-gnu": "npm:1.2.6" - "@rolldown/binding-linux-x64-musl": "npm:1.2.6" - "@rolldown/binding-openharmony-arm64": "npm:1.2.6" - "@rolldown/binding-win32-arm64-msvc": "npm:1.2.6" - "@rolldown/binding-win32-x64-msvc": "npm:1.2.6" +"rolldown@npm:~1.2.1": + version: 1.2.4 + resolution: "rolldown@npm:1.2.4" + dependencies: + "@oxc-project/types": "npm:=0.144.0" + "@rolldown/binding-android-arm64": "npm:1.2.4" + "@rolldown/binding-darwin-arm64": "npm:1.2.4" + "@rolldown/binding-darwin-x64": "npm:1.2.4" + "@rolldown/binding-freebsd-x64": "npm:1.2.4" + "@rolldown/binding-linux-arm-gnueabihf": "npm:1.2.4" + "@rolldown/binding-linux-arm64-gnu": "npm:1.2.4" + "@rolldown/binding-linux-arm64-musl": "npm:1.2.4" + "@rolldown/binding-linux-ppc64-gnu": "npm:1.2.4" + "@rolldown/binding-linux-s390x-gnu": "npm:1.2.4" + "@rolldown/binding-linux-x64-gnu": "npm:1.2.4" + "@rolldown/binding-linux-x64-musl": "npm:1.2.4" + "@rolldown/binding-openharmony-arm64": "npm:1.2.4" + "@rolldown/binding-win32-arm64-msvc": "npm:1.2.4" + "@rolldown/binding-win32-x64-msvc": "npm:1.2.4" "@rolldown/pluginutils": "npm:^1.0.0" dependenciesMeta: - "@rolldown/binding-android-arm-eabi": - optional: true "@rolldown/binding-android-arm64": optional: true "@rolldown/binding-darwin-arm64": @@ -10696,7 +10704,7 @@ __metadata: optional: true bin: rolldown: ./bin/cli.mjs - checksum: 10c0/34f8fd335f3ec8e55002aa4f2f6f0ffd4dc1f2c47f877d4ad37fbe62c97d3b63486705494e739b9e451cccf4c4bc4e0f14648d7f978427964c693c0165289308 + checksum: 10c0/438c2222db940fab6e2db1f1cf84ab27c83310959e056fa389d7e2208bcbf58929f970f4dca5bd9c255f319bf657ef1a4a7ea6725213491d28764d867e5407a4 languageName: node linkType: hard @@ -11250,7 +11258,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:3.1.1, strip-json-comments@npm:^3.0.1, strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:3.1.1, strip-json-comments@npm:^3.0.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd @@ -11390,6 +11398,17 @@ __metadata: languageName: node linkType: hard +"super-regex@npm:^1.1.0": + version: 1.1.0 + resolution: "super-regex@npm:1.1.0" + dependencies: + function-timeout: "npm:^1.0.1" + make-asynchronous: "npm:^1.0.1" + time-span: "npm:^5.1.0" + checksum: 10c0/8135ed40e4e3c5ee7305ee8545e8ab99722e671e71546ef877bc25a5980e04bafe9abef44dd28abd801160340a331280b1d91b24ce97c67674931bb20d798eda + languageName: node + linkType: hard + "supports-color@npm:7.2.0, supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" @@ -11880,6 +11899,15 @@ __metadata: languageName: node linkType: hard +"time-span@npm:^5.1.0": + version: 5.1.0 + resolution: "time-span@npm:5.1.0" + dependencies: + convert-hrtime: "npm:^5.0.0" + checksum: 10c0/37b8284c53f4ee320377512ac19e3a034f2b025f5abd6959b8c1d0f69e0f06ab03681df209f2e452d30129e7b1f25bf573fb0f29d57e71f9b4a6b5b99f4c4b9e + languageName: node + linkType: hard + "tinybench@npm:^2.9.0": version: 2.9.0 resolution: "tinybench@npm:2.9.0" @@ -12349,8 +12377,8 @@ __metadata: linkType: hard "update-browserslist-db@npm:^1.3.0": - version: 1.3.2 - resolution: "update-browserslist-db@npm:1.3.2" + version: 1.3.1 + resolution: "update-browserslist-db@npm:1.3.1" dependencies: escalade: "npm:^3.2.0" picocolors: "npm:^1.1.1" @@ -12358,7 +12386,7 @@ __metadata: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 10c0/837b4ea8c4934228c5c2a922ea747a54b0ec9d1c408d2fbc9220a9b98327c04109776e6ea1206fa056ea61ed8534863af472d9f2cfce569d35f04e98c95db739 + checksum: 10c0/2a924f5aa283af2d918e5cd941c7e8d77b05adf2ffbe5ca461506b1ff05fee6e8bca74c0f1ba37eb28f00ec93b15e80de24c7222825835aec2dd7bf0a0f6a417 languageName: node linkType: hard @@ -12388,11 +12416,11 @@ __metadata: linkType: hard "uuid@npm:*": - version: 14.0.2 - resolution: "uuid@npm:14.0.2" + version: 14.0.1 + resolution: "uuid@npm:14.0.1" bin: uuid: dist-node/bin/uuid - checksum: 10c0/88906237004db370b013129c8372a2149f6fa1aad7a5f78fa65ddf2ba0a8663097022300d81fa01f551efee9d6bbe8c7ab140dc6d49f1b03d289f855096990c9 + checksum: 10c0/2d961289097cb68c37d93d1da0b5c3aafc1eb9948a455cca8d0ae53a099b2fe583b8933254a84097f700e6bac2e23033364904df0467c22551d5d9611febcaf6 languageName: node linkType: hard @@ -12491,18 +12519,18 @@ __metadata: linkType: hard "vite@npm:^6.0.0 || ^7.0.0 || ^8.0.0": - version: 8.2.2 - resolution: "vite@npm:8.2.2" + version: 8.2.1 + resolution: "vite@npm:8.2.1" dependencies: fsevents: "npm:~2.3.3" lightningcss: "npm:^1.33.0" picomatch: "npm:^4.0.5" - postcss: "npm:^8.5.26" - rolldown: "npm:~1.2.4" + postcss: "npm:^8.5.25" + rolldown: "npm:~1.2.1" tinyglobby: "npm:^0.2.17" peerDependencies: "@types/node": ^20.19.0 || >=22.12.0 - "@vitejs/devtools": ^0.4.0 || ^0.5.0 + "@vitejs/devtools": ^0.4.0 esbuild: ^0.27.0 || ^0.28.0 jiti: ">=1.21.0" less: ^4.0.0 @@ -12543,7 +12571,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10c0/94cbbbdc38ad500dcb86b6202ddd14aa41d05c80739766cada9bbe250b410d1a27be433c9c491ed39744019471ac1e27a59908616a88c42f9787bdb6bdca49d2 + checksum: 10c0/e958dd07502deeb552f04dba59418ff1eb63183add416fd7a3e3badabf5d36edc6834b94c916f9f9233f976bb1671e3e9989d90e869059af07b0d43f7fc078c2 languageName: node linkType: hard @@ -12623,16 +12651,16 @@ __metadata: linkType: hard "vscode-languageserver-textdocument@npm:^1.0.12": - version: 1.0.14 - resolution: "vscode-languageserver-textdocument@npm:1.0.14" - checksum: 10c0/06a4c6cc82d1f84be6240fcbd48d50c536dfecb1c60e9e7eadcf6bad40c5a4de288f4f1262e09f2be007ec2c96f4acbf3ce3eb139bc0e7c28c16571d1e382f2f + version: 1.0.13 + resolution: "vscode-languageserver-textdocument@npm:1.0.13" + checksum: 10c0/1de174f1de3bfa9e1660a4b3c1b1c711497196d761e33f4d00785fdbfc556ae5a1f440db04771cbc0f6bd66c2a6f303062bc17d8dc46e76820e39fa2d5626564 languageName: node linkType: hard "vscode-uri@npm:^3.1.0": - version: 3.2.0 - resolution: "vscode-uri@npm:3.2.0" - checksum: 10c0/65b4d78f2d014ee359ba36a81605bbd8a420d4c13d3fdba61b44b301ea416bf4b12637253ee72c0f30c1cd774c3649d667674c2fbf00c931667b869158f8519f + version: 3.1.0 + resolution: "vscode-uri@npm:3.1.0" + checksum: 10c0/5f6c9c10fd9b1664d71fab4e9fbbae6be93c7f75bb3a1d9d74399a88ab8649e99691223fd7cef4644376cac6e94fa2c086d802521b9a8e31c5af3e60f0f35624 languageName: node linkType: hard @@ -12682,6 +12710,13 @@ __metadata: languageName: node linkType: hard +"web-worker@npm:^1.5.0": + version: 1.5.0 + resolution: "web-worker@npm:1.5.0" + checksum: 10c0/d42744757422803c73ca64fa51e1ce994354ace4b8438b3f740425a05afeb8df12dd5dadbf6b0839a08dbda56c470d7943c0383854c4fb1ae40ab874eb10427a + languageName: node + linkType: hard + "whatwg-mimetype@npm:5.0.0": version: 5.0.0 resolution: "whatwg-mimetype@npm:5.0.0" @@ -12986,9 +13021,9 @@ __metadata: linkType: hard "zod@npm:^4.2.0": - version: 4.5.4 - resolution: "zod@npm:4.5.4" - checksum: 10c0/511a2a4d1a6f875dfdd70a1586989a8b14ef126776cd6218a2c760b9f65f14ef389ec20d92ee1aa4fcb4566d4ff3fa012956044f9dc503510d82e4c756a8ba92 + version: 4.4.3 + resolution: "zod@npm:4.4.3" + checksum: 10c0/7ea31b558e88f9faf44f31dd185e2e1cbf51fed3081787fb96cc2534749b50c0acfc6da7f0922a7353ed092dd358c7d50c28ea96c94d04af64191bd33152eca3 languageName: node linkType: hard