From 3b187f601de69c2ea22e5b7d0df7a974150c1619 Mon Sep 17 00:00:00 2001 From: Kevin Hawkins Date: Tue, 10 Jun 2025 13:43:26 -0700 Subject: [PATCH 1/2] Updates to support ESLint 9.x --- lib/configs/base-legacy.js | 23 + lib/configs/base.js | 23 +- lib/configs/recommended-legacy.js | 85 ++++ lib/configs/recommended.js | 131 +++-- lib/index.js | 110 +--- lib/rules/index.js | 42 ++ package.json | 10 +- .../fileUpload/test.js | 8 +- .../rules/artifacts-combined-files/helper.js | 70 +-- .../invalidGetterFunction/test.js | 1 - ...ession-assigns-value-to-member-variable.js | 7 +- ...ment-expression-for-external-components.js | 7 +- ...ession-references-unsupported-namespace.js | 7 +- ...parent-class-from-unsupported-namespace.js | 7 +- test/lib/rules/no-eval-usage.js | 7 +- ...sion-contains-module-level-variable-ref.js | 7 +- ...functions-declared-within-getter-method.js | 7 +- ...ter-contains-more-than-return-statement.js | 7 +- ...ession-contains-non-portable-identifier.js | 7 +- ...ference-to-non-existent-member-variable.js | 7 +- ...ber-expression-reference-to-super-class.js | 7 +- ...ression-reference-to-unsupported-global.js | 7 +- ...ence-to-unsupported-namespace-reference.js | 7 +- ...sing-resource-cannot-prime-wire-adapter.js | 7 +- .../rules/no-private-wire-config-property.js | 7 +- .../rules/no-reference-to-class-functions.js | 7 +- .../rules/no-reference-to-module-functions.js | 7 +- ...ence-to-unsupported-namespace-reference.js | 7 +- .../no-unresolved-parent-class-reference.js | 7 +- ...re-adapter-of-resource-cannot-be-primed.js | 7 +- ...onfig-property-circular-wire-dependency.js | 7 +- ...-function-returning-inaccessible-import.js | 7 +- ...s-getter-function-returning-non-literal.js | 7 +- ...ted-artifact-from-unsupported-namespace.js | 7 +- ...ences-non-local-property-reactive-value.js | 7 +- ...erty-using-output-of-non-primeable-wire.js | 7 +- test/lib/rules/shared.js | 22 +- test/plugin.js | 7 +- yarn.lock | 481 +++++++++++------- 39 files changed, 607 insertions(+), 588 deletions(-) create mode 100644 lib/configs/base-legacy.js create mode 100644 lib/configs/recommended-legacy.js create mode 100644 lib/rules/index.js diff --git a/lib/configs/base-legacy.js b/lib/configs/base-legacy.js new file mode 100644 index 0000000..6c721be --- /dev/null +++ b/lib/configs/base-legacy.js @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2022, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: MIT + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT + */ + +'use strict'; + +module.exports = { + plugins: ['@salesforce/lwc-graph-analyzer'], + parser: '@babel/eslint-parser', + parserOptions: { + ecmaVersion: 'latest', + requireConfigFile: false, + sourceType: 'module', + babelOptions: { + parserOpts: { + plugins: [['decorators', { decoratorsBeforeExport: false }]] + } + } + } +}; diff --git a/lib/configs/base.js b/lib/configs/base.js index 6c721be..e4a6af8 100644 --- a/lib/configs/base.js +++ b/lib/configs/base.js @@ -7,16 +7,21 @@ 'use strict'; +const bundleAnalyzer = require('../processor'); + module.exports = { - plugins: ['@salesforce/lwc-graph-analyzer'], - parser: '@babel/eslint-parser', - parserOptions: { - ecmaVersion: 'latest', - requireConfigFile: false, - sourceType: 'module', - babelOptions: { - parserOpts: { - plugins: [['decorators', { decoratorsBeforeExport: false }]] + files: ['*.html', '**/*.html', '*.js', '**/*.js'], + processor: bundleAnalyzer, + languageOptions: { + parser: require('@babel/eslint-parser'), + parserOptions: { + ecmaVersion: 'latest', + requireConfigFile: false, + sourceType: 'module', + babelOptions: { + parserOpts: { + plugins: [['decorators', { decoratorsBeforeExport: false }]] + } } } } diff --git a/lib/configs/recommended-legacy.js b/lib/configs/recommended-legacy.js new file mode 100644 index 0000000..16ea0b0 --- /dev/null +++ b/lib/configs/recommended-legacy.js @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2022, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: MIT + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT + */ + +'use strict'; + +module.exports = { + extends: ['./configs/base-legacy'], + rules: {}, + overrides: [ + { + files: ['*.html', '**/*.html', '*.js', '**/*.js'], + processor: '@salesforce/lwc-graph-analyzer/bundleAnalyzer', + rules: { + '@salesforce/lwc-graph-analyzer/no-getter-contains-more-than-return-statement': + 'warn', + '@salesforce/lwc-graph-analyzer/no-assignment-expression-assigns-value-to-member-variable': + 'warn', + '@salesforce/lwc-graph-analyzer/no-wire-config-references-non-local-property-reactive-value': + 'warn', + '@salesforce/lwc-graph-analyzer/no-private-wire-config-property': 'warn', + '@salesforce/lwc-graph-analyzer/no-unresolved-parent-class-reference': 'warn', + '@salesforce/lwc-graph-analyzer/no-class-refers-to-parent-class-from-unsupported-namespace': + 'warn', + '@salesforce/lwc-graph-analyzer/no-reference-to-unsupported-namespace-reference': + 'warn', + '@salesforce/lwc-graph-analyzer/no-wire-config-property-uses-getter-function-returning-inaccessible-import': + 'warn', + '@salesforce/lwc-graph-analyzer/no-wire-config-property-uses-getter-function-returning-non-literal': + 'warn', + '@salesforce/lwc-graph-analyzer/no-wire-config-property-circular-wire-dependency': + 'warn', + '@salesforce/lwc-graph-analyzer/no-wire-configuration-property-using-output-of-non-primeable-wire': + 'warn', + '@salesforce/lwc-graph-analyzer/no-missing-resource-cannot-prime-wire-adapter': + 'warn', + '@salesforce/lwc-graph-analyzer/no-wire-config-property-uses-imported-artifact-from-unsupported-namespace': + 'warn', + '@salesforce/lwc-graph-analyzer/no-wire-adapter-of-resource-cannot-be-primed': + 'warn', + '@salesforce/lwc-graph-analyzer/no-unsupported-member-variable-in-member-expression': + 'warn', + '@salesforce/lwc-graph-analyzer/no-multiple-template-files': 'warn', + '@salesforce/lwc-graph-analyzer/no-assignment-expression-for-external-components': + 'warn', + '@salesforce/lwc-graph-analyzer/no-tagged-template-expression-contains-unsupported-namespace': + 'warn', + '@salesforce/lwc-graph-analyzer/no-expression-contains-module-level-variable-ref': + 'warn', + '@salesforce/lwc-graph-analyzer/no-call-expression-references-unsupported-namespace': + 'warn', + '@salesforce/lwc-graph-analyzer/no-eval-usage': 'warn', + '@salesforce/lwc-graph-analyzer/no-reference-to-class-functions': 'warn', + '@salesforce/lwc-graph-analyzer/no-reference-to-module-functions': 'warn', + '@salesforce/lwc-graph-analyzer/no-functions-declared-within-getter-method': 'warn', + '@salesforce/lwc-graph-analyzer/no-member-expression-reference-to-non-existent-member-variable': + 'warn', + '@salesforce/lwc-graph-analyzer/no-member-expression-reference-to-unsupported-namespace-reference': + 'warn', + '@salesforce/lwc-graph-analyzer/no-member-expression-contains-non-portable-identifier': + 'warn', + '@salesforce/lwc-graph-analyzer/no-member-expression-reference-to-super-class': + 'warn', + '@salesforce/lwc-graph-analyzer/no-member-expression-reference-to-unsupported-global': + 'warn', + '@salesforce/lwc-graph-analyzer/no-composition-on-unanalyzable-getter-property': + 'warn', + '@salesforce/lwc-graph-analyzer/no-composition-on-unanalyzable-property-from-unresolvable-wire': + 'warn', + '@salesforce/lwc-graph-analyzer/no-composition-on-unanalyzable-property-missing': + 'warn', + '@salesforce/lwc-graph-analyzer/no-composition-on-unanalyzable-property-non-public': + 'warn', + '@salesforce/lwc-graph-analyzer/no-render-function-contains-more-than-return-statement': + 'warn', + '@salesforce/lwc-graph-analyzer/no-render-function-return-statement-not-returning-imported-template': + 'warn', + '@salesforce/lwc-graph-analyzer/no-render-function-return-statement': 'warn' + } + } + ] +}; diff --git a/lib/configs/recommended.js b/lib/configs/recommended.js index 77eab93..c01ab6a 100644 --- a/lib/configs/recommended.js +++ b/lib/configs/recommended.js @@ -7,78 +7,63 @@ 'use strict'; +const baseConfig = require('./base'); + module.exports = { - extends: ['./configs/base'], - overrides: [ - { - files: ['*.html', '**/*.html', '*.js', '**/*.js'], - processor: '@salesforce/lwc-graph-analyzer/bundleAnalyzer', - rules: { - '@salesforce/lwc-graph-analyzer/no-getter-contains-more-than-return-statement': - 'warn', - '@salesforce/lwc-graph-analyzer/no-assignment-expression-assigns-value-to-member-variable': - 'warn', - '@salesforce/lwc-graph-analyzer/no-wire-config-references-non-local-property-reactive-value': - 'warn', - '@salesforce/lwc-graph-analyzer/no-private-wire-config-property': 'warn', - '@salesforce/lwc-graph-analyzer/no-unresolved-parent-class-reference': 'warn', - '@salesforce/lwc-graph-analyzer/no-class-refers-to-parent-class-from-unsupported-namespace': - 'warn', - '@salesforce/lwc-graph-analyzer/no-reference-to-unsupported-namespace-reference': - 'warn', - '@salesforce/lwc-graph-analyzer/no-wire-config-property-uses-getter-function-returning-inaccessible-import': - 'warn', - '@salesforce/lwc-graph-analyzer/no-wire-config-property-uses-getter-function-returning-non-literal': - 'warn', - '@salesforce/lwc-graph-analyzer/no-wire-config-property-circular-wire-dependency': - 'warn', - '@salesforce/lwc-graph-analyzer/no-wire-configuration-property-using-output-of-non-primeable-wire': - 'warn', - '@salesforce/lwc-graph-analyzer/no-missing-resource-cannot-prime-wire-adapter': - 'warn', - '@salesforce/lwc-graph-analyzer/no-wire-config-property-uses-imported-artifact-from-unsupported-namespace': - 'warn', - '@salesforce/lwc-graph-analyzer/no-wire-adapter-of-resource-cannot-be-primed': - 'warn', - '@salesforce/lwc-graph-analyzer/no-unsupported-member-variable-in-member-expression': - 'warn', - '@salesforce/lwc-graph-analyzer/no-multiple-template-files': 'warn', - '@salesforce/lwc-graph-analyzer/no-assignment-expression-for-external-components': - 'warn', - '@salesforce/lwc-graph-analyzer/no-tagged-template-expression-contains-unsupported-namespace': - 'warn', - '@salesforce/lwc-graph-analyzer/no-expression-contains-module-level-variable-ref': - 'warn', - '@salesforce/lwc-graph-analyzer/no-call-expression-references-unsupported-namespace': - 'warn', - '@salesforce/lwc-graph-analyzer/no-eval-usage': 'warn', - '@salesforce/lwc-graph-analyzer/no-reference-to-class-functions': 'warn', - '@salesforce/lwc-graph-analyzer/no-reference-to-module-functions': 'warn', - '@salesforce/lwc-graph-analyzer/no-functions-declared-within-getter-method': 'warn', - '@salesforce/lwc-graph-analyzer/no-member-expression-reference-to-non-existent-member-variable': - 'warn', - '@salesforce/lwc-graph-analyzer/no-member-expression-reference-to-unsupported-namespace-reference': - 'warn', - '@salesforce/lwc-graph-analyzer/no-member-expression-contains-non-portable-identifier': - 'warn', - '@salesforce/lwc-graph-analyzer/no-member-expression-reference-to-super-class': - 'warn', - '@salesforce/lwc-graph-analyzer/no-member-expression-reference-to-unsupported-global': - 'warn', - '@salesforce/lwc-graph-analyzer/no-composition-on-unanalyzable-getter-property': - 'warn', - '@salesforce/lwc-graph-analyzer/no-composition-on-unanalyzable-property-from-unresolvable-wire': - 'warn', - '@salesforce/lwc-graph-analyzer/no-composition-on-unanalyzable-property-missing': - 'warn', - '@salesforce/lwc-graph-analyzer/no-composition-on-unanalyzable-property-non-public': - 'warn', - '@salesforce/lwc-graph-analyzer/no-render-function-contains-more-than-return-statement': - 'warn', - '@salesforce/lwc-graph-analyzer/no-render-function-return-statement-not-returning-imported-template': - 'warn', - '@salesforce/lwc-graph-analyzer/no-render-function-return-statement': 'warn' - } - } - ] + ...baseConfig, + rules: { + '@salesforce/lwc-graph-analyzer/no-getter-contains-more-than-return-statement': 'warn', + '@salesforce/lwc-graph-analyzer/no-assignment-expression-assigns-value-to-member-variable': + 'warn', + '@salesforce/lwc-graph-analyzer/no-wire-config-references-non-local-property-reactive-value': + 'warn', + '@salesforce/lwc-graph-analyzer/no-private-wire-config-property': 'warn', + '@salesforce/lwc-graph-analyzer/no-unresolved-parent-class-reference': 'warn', + '@salesforce/lwc-graph-analyzer/no-class-refers-to-parent-class-from-unsupported-namespace': + 'warn', + '@salesforce/lwc-graph-analyzer/no-reference-to-unsupported-namespace-reference': 'warn', + '@salesforce/lwc-graph-analyzer/no-wire-config-property-uses-getter-function-returning-inaccessible-import': + 'warn', + '@salesforce/lwc-graph-analyzer/no-wire-config-property-uses-getter-function-returning-non-literal': + 'warn', + '@salesforce/lwc-graph-analyzer/no-wire-config-property-circular-wire-dependency': 'warn', + '@salesforce/lwc-graph-analyzer/no-wire-configuration-property-using-output-of-non-primeable-wire': + 'warn', + '@salesforce/lwc-graph-analyzer/no-missing-resource-cannot-prime-wire-adapter': 'warn', + '@salesforce/lwc-graph-analyzer/no-wire-config-property-uses-imported-artifact-from-unsupported-namespace': + 'warn', + '@salesforce/lwc-graph-analyzer/no-wire-adapter-of-resource-cannot-be-primed': 'warn', + '@salesforce/lwc-graph-analyzer/no-unsupported-member-variable-in-member-expression': + 'warn', + '@salesforce/lwc-graph-analyzer/no-multiple-template-files': 'warn', + '@salesforce/lwc-graph-analyzer/no-assignment-expression-for-external-components': 'warn', + '@salesforce/lwc-graph-analyzer/no-tagged-template-expression-contains-unsupported-namespace': + 'warn', + '@salesforce/lwc-graph-analyzer/no-expression-contains-module-level-variable-ref': 'warn', + '@salesforce/lwc-graph-analyzer/no-call-expression-references-unsupported-namespace': + 'warn', + '@salesforce/lwc-graph-analyzer/no-eval-usage': 'warn', + '@salesforce/lwc-graph-analyzer/no-reference-to-class-functions': 'warn', + '@salesforce/lwc-graph-analyzer/no-reference-to-module-functions': 'warn', + '@salesforce/lwc-graph-analyzer/no-functions-declared-within-getter-method': 'warn', + '@salesforce/lwc-graph-analyzer/no-member-expression-reference-to-non-existent-member-variable': + 'warn', + '@salesforce/lwc-graph-analyzer/no-member-expression-reference-to-unsupported-namespace-reference': + 'warn', + '@salesforce/lwc-graph-analyzer/no-member-expression-contains-non-portable-identifier': + 'warn', + '@salesforce/lwc-graph-analyzer/no-member-expression-reference-to-super-class': 'warn', + '@salesforce/lwc-graph-analyzer/no-member-expression-reference-to-unsupported-global': + 'warn', + '@salesforce/lwc-graph-analyzer/no-composition-on-unanalyzable-getter-property': 'warn', + '@salesforce/lwc-graph-analyzer/no-composition-on-unanalyzable-property-from-unresolvable-wire': + 'warn', + '@salesforce/lwc-graph-analyzer/no-composition-on-unanalyzable-property-non-public': 'warn', + '@salesforce/lwc-graph-analyzer/no-composition-on-unanalyzable-property-missing': 'warn', + '@salesforce/lwc-graph-analyzer/no-render-function-contains-more-than-return-statement': + 'warn', + '@salesforce/lwc-graph-analyzer/no-render-function-return-statement-not-returning-imported-template': + 'warn', + '@salesforce/lwc-graph-analyzer/no-render-function-return-statement': 'warn' + } }; diff --git a/lib/index.js b/lib/index.js index e57aec9..5f5b04e 100644 --- a/lib/index.js +++ b/lib/index.js @@ -8,114 +8,16 @@ 'use strict'; const bundleAnalyzer = require('./processor'); -const base = require('./configs/base'); -const recommended = require('./configs/recommended'); const LwcBundle = require('./lwc-bundle'); - -const noGetterContainsMoreThanReturnStatement = require('./rules/no-getter-contains-more-than-return-statement'); -const noAssignmentExpressionAssignsValueToMemberVariable = require('./rules/no-assignment-expression-assigns-value-to-member-variable'); -const noWireConfigReferencesNonLocalPropertyReactiveValue = require('./rules/no-wire-config-references-non-local-property-reactive-value'); -const noPrivateWireConfigProperty = require('./rules/no-private-wire-config-property'); -const noUnresolvedParentClassReference = require('./rules/no-unresolved-parent-class-reference'); -const noClassRefersToParentClassFromUnsupportedNamespace = require('./rules/no-class-refers-to-parent-class-from-unsupported-namespace'); -const noReferenceToUnsupportedNamespaceReference = require('./rules/no-reference-to-unsupported-namespace-reference'); -const noWireConfigPropertyUsesGetterFunctionReturningInaccessibleImport = require('./rules/no-wire-config-property-uses-getter-function-returning-inaccessible-import'); -const noWireConfigPropertyUsesGetterFunctionReturningNonLiteral = require('./rules/no-wire-config-property-uses-getter-function-returning-non-literal'); -const noWireConfigPropertyCircularWireDependency = require('./rules/no-wire-config-property-circular-wire-dependency'); -const noWireConfigurationPropertyUsingOutputOfNonPrimeableWire = require('./rules/no-wire-configuration-property-using-output-of-non-primeable-wire'); -const noMissingResourceCannotPrimeWireAdapter = require('./rules/no-missing-resource-cannot-prime-wire-adapter'); -const noWireConfigPropertyUsesImportedArtifactFromUnsupportedNamespace = require('./rules/no-wire-config-property-uses-imported-artifact-from-unsupported-namespace'); -const noWireAdapterOfResourceCannotBePrimed = require('./rules/no-wire-adapter-of-resource-cannot-be-primed'); -const noUnsupportedMemberVariableInMemberExpression = require('./rules/no-unsupported-member-variable-in-member-expression'); -const noMultipleTemplateFiles = require('./rules/no-multiple-template-files'); -const noCompositionOnUnanalyzableGetterProperty = require('./rules/no-composition-on-unanalyzable-getter-property'); -const noCompositionOnUnanalyzablePropertyFromUnresolvableWire = require('./rules/no-composition-on-unanalyzable-property-from-unresolvable-wire'); -const noCompositionOnUnanalyzablePropertyNonPublic = require('./rules/no-composition-on-unanalyzable-property-non-public'); -const noCompositionOnUnanalyzablePropertyMissing = require('./rules/no-composition-on-unanalyzable-property-missing'); -const noAssignmentExpressionForExternalComponents = require('./rules/no-assignment-expression-for-external-components'); -const noTaggedTemplateExpressionContainsUnsupportedNamespace = require('./rules/no-tagged-template-expression-contains-unsupported-namespace'); -const noExpressionContainsModuleLevelVariableRef = require('./rules/no-expression-contains-module-level-variable-ref'); -const noCallExpressionReferencesUnsupportedNamespace = require('./rules/no-call-expression-references-unsupported-namespace'); -const noEvalUsage = require('./rules/no-eval-usage'); -const noReferenceToClassFunctions = require('./rules/no-reference-to-class-functions'); -const noReferenceToModuleFunctions = require('./rules/no-reference-to-module-functions'); -const noFunctionsDeclaredWithinGetterMethod = require('./rules/no-functions-declared-within-getter-method'); -const noMemberExpressionReferenceToNonExistentMemberVariable = require('./rules/no-member-expression-reference-to-non-existent-member-variable'); -const noMemberExpressionReferenceToUnsupportedNamespaceReference = require('./rules/no-member-expression-reference-to-unsupported-namespace-reference'); -const noMemberExpressionContainsNonPortableIdentifier = require('./rules/no-member-expression-contains-non-portable-identifier'); -const noMemberExpressionReferenceToSuperClass = require('./rules/no-member-expression-reference-to-super-class'); -const noMemberExpressionReferenceToUnsupportedGlobal = require('./rules/no-member-expression-reference-to-unsupported-global'); -const noRenderFunctionContainsMoreThanReturnStatement = require('./rules/no-render-function-contains-more-than-return-statement'); -const noRenderFunctionReturnStatementNotReturningImportedTemplate = require('./rules/no-render-function-return-statement-not-returning-imported-template'); -const noRenderFunctionReturnStatement = require('./rules/no-render-function-return-statement'); +const allRules = require('./rules'); module.exports = { - rules: { - 'no-getter-contains-more-than-return-statement': noGetterContainsMoreThanReturnStatement, - 'no-assignment-expression-assigns-value-to-member-variable': - noAssignmentExpressionAssignsValueToMemberVariable, - 'no-wire-config-references-non-local-property-reactive-value': - noWireConfigReferencesNonLocalPropertyReactiveValue, - 'no-private-wire-config-property': noPrivateWireConfigProperty, - 'no-unresolved-parent-class-reference': noUnresolvedParentClassReference, - 'no-class-refers-to-parent-class-from-unsupported-namespace': - noClassRefersToParentClassFromUnsupportedNamespace, - 'no-reference-to-unsupported-namespace-reference': - noReferenceToUnsupportedNamespaceReference, - 'no-wire-config-property-uses-getter-function-returning-inaccessible-import': - noWireConfigPropertyUsesGetterFunctionReturningInaccessibleImport, - 'no-wire-config-property-uses-getter-function-returning-non-literal': - noWireConfigPropertyUsesGetterFunctionReturningNonLiteral, - 'no-wire-config-property-circular-wire-dependency': - noWireConfigPropertyCircularWireDependency, - 'no-wire-configuration-property-using-output-of-non-primeable-wire': - noWireConfigurationPropertyUsingOutputOfNonPrimeableWire, - 'no-missing-resource-cannot-prime-wire-adapter': noMissingResourceCannotPrimeWireAdapter, - 'no-wire-config-property-uses-imported-artifact-from-unsupported-namespace': - noWireConfigPropertyUsesImportedArtifactFromUnsupportedNamespace, - 'no-wire-adapter-of-resource-cannot-be-primed': noWireAdapterOfResourceCannotBePrimed, - 'no-unsupported-member-variable-in-member-expression': - noUnsupportedMemberVariableInMemberExpression, - 'no-multiple-template-files': noMultipleTemplateFiles, - 'no-composition-on-unanalyzable-getter-property': noCompositionOnUnanalyzableGetterProperty, - 'no-composition-on-unanalyzable-property-from-unresolvable-wire': - noCompositionOnUnanalyzablePropertyFromUnresolvableWire, - 'no-composition-on-unanalyzable-property-non-public': - noCompositionOnUnanalyzablePropertyNonPublic, - 'no-composition-on-unanalyzable-property-missing': - noCompositionOnUnanalyzablePropertyMissing, - 'no-assignment-expression-for-external-components': - noAssignmentExpressionForExternalComponents, - 'no-expression-contains-module-level-variable-ref': - noExpressionContainsModuleLevelVariableRef, - 'no-call-expression-references-unsupported-namespace': - noCallExpressionReferencesUnsupportedNamespace, - 'no-eval-usage': noEvalUsage, - 'no-reference-to-class-functions': noReferenceToClassFunctions, - 'no-reference-to-module-functions': noReferenceToModuleFunctions, - 'no-functions-declared-within-getter-method': noFunctionsDeclaredWithinGetterMethod, - 'no-member-expression-reference-to-non-existent-member-variable': - noMemberExpressionReferenceToNonExistentMemberVariable, - 'no-member-expression-reference-to-unsupported-namespace-reference': - noMemberExpressionReferenceToUnsupportedNamespaceReference, - 'no-member-expression-contains-non-portable-identifier': - noMemberExpressionContainsNonPortableIdentifier, - 'no-member-expression-reference-to-super-class': noMemberExpressionReferenceToSuperClass, - 'no-member-expression-reference-to-unsupported-global': - noMemberExpressionReferenceToUnsupportedGlobal, - - // TODO: These rules do not have tests because Komaci itself did not have tests for them. - 'no-tagged-template-expression-contains-unsupported-namespace': - noTaggedTemplateExpressionContainsUnsupportedNamespace, - 'no-render-function-contains-more-than-return-statement': - noRenderFunctionContainsMoreThanReturnStatement, - 'no-render-function-return-statement-not-returning-imported-template': - noRenderFunctionReturnStatementNotReturningImportedTemplate, - 'no-render-function-return-statement': noRenderFunctionReturnStatement - }, + rules: allRules, configs: { - base, - recommended + base: require('./configs/base'), + recommended: require('./configs/recommended'), + 'base-legacy': require('./configs/base-legacy'), + 'recommended-legacy': require('./configs/recommended-legacy') }, processors: { bundleAnalyzer diff --git a/lib/rules/index.js b/lib/rules/index.js new file mode 100644 index 0000000..8ef154e --- /dev/null +++ b/lib/rules/index.js @@ -0,0 +1,42 @@ +'use strict'; + +module.exports = { + 'no-getter-contains-more-than-return-statement': require('./no-getter-contains-more-than-return-statement'), + 'no-assignment-expression-assigns-value-to-member-variable': require('./no-assignment-expression-assigns-value-to-member-variable'), + 'no-wire-config-references-non-local-property-reactive-value': require('./no-wire-config-references-non-local-property-reactive-value'), + 'no-private-wire-config-property': require('./no-private-wire-config-property'), + 'no-unresolved-parent-class-reference': require('./no-unresolved-parent-class-reference'), + 'no-class-refers-to-parent-class-from-unsupported-namespace': require('./no-class-refers-to-parent-class-from-unsupported-namespace'), + 'no-reference-to-unsupported-namespace-reference': require('./no-reference-to-unsupported-namespace-reference'), + 'no-wire-config-property-uses-getter-function-returning-inaccessible-import': require('./no-wire-config-property-uses-getter-function-returning-inaccessible-import'), + 'no-wire-config-property-uses-getter-function-returning-non-literal': require('./no-wire-config-property-uses-getter-function-returning-non-literal'), + 'no-wire-config-property-circular-wire-dependency': require('./no-wire-config-property-circular-wire-dependency'), + 'no-wire-configuration-property-using-output-of-non-primeable-wire': require('./no-wire-configuration-property-using-output-of-non-primeable-wire'), + 'no-missing-resource-cannot-prime-wire-adapter': require('./no-missing-resource-cannot-prime-wire-adapter'), + 'no-wire-config-property-uses-imported-artifact-from-unsupported-namespace': require('./no-wire-config-property-uses-imported-artifact-from-unsupported-namespace'), + 'no-wire-adapter-of-resource-cannot-be-primed': require('./no-wire-adapter-of-resource-cannot-be-primed'), + 'no-unsupported-member-variable-in-member-expression': require('./no-unsupported-member-variable-in-member-expression'), + 'no-multiple-template-files': require('./no-multiple-template-files'), + 'no-composition-on-unanalyzable-getter-property': require('./no-composition-on-unanalyzable-getter-property'), + 'no-composition-on-unanalyzable-property-from-unresolvable-wire': require('./no-composition-on-unanalyzable-property-from-unresolvable-wire'), + 'no-composition-on-unanalyzable-property-non-public': require('./no-composition-on-unanalyzable-property-non-public'), + 'no-composition-on-unanalyzable-property-missing': require('./no-composition-on-unanalyzable-property-missing'), + 'no-assignment-expression-for-external-components': require('./no-assignment-expression-for-external-components'), + 'no-expression-contains-module-level-variable-ref': require('./no-expression-contains-module-level-variable-ref'), + 'no-call-expression-references-unsupported-namespace': require('./no-call-expression-references-unsupported-namespace'), + 'no-eval-usage': require('./no-eval-usage'), + 'no-reference-to-class-functions': require('./no-reference-to-class-functions'), + 'no-reference-to-module-functions': require('./no-reference-to-module-functions'), + 'no-functions-declared-within-getter-method': require('./no-functions-declared-within-getter-method'), + 'no-member-expression-reference-to-non-existent-member-variable': require('./no-member-expression-reference-to-non-existent-member-variable'), + 'no-member-expression-reference-to-unsupported-namespace-reference': require('./no-member-expression-reference-to-unsupported-namespace-reference'), + 'no-member-expression-contains-non-portable-identifier': require('./no-member-expression-contains-non-portable-identifier'), + 'no-member-expression-reference-to-super-class': require('./no-member-expression-reference-to-super-class'), + 'no-member-expression-reference-to-unsupported-global': require('./no-member-expression-reference-to-unsupported-global'), + + // TODO: These rules do not have tests because Komaci itself did not have tests for them. + 'no-tagged-template-expression-contains-unsupported-namespace': require('./no-tagged-template-expression-contains-unsupported-namespace'), + 'no-render-function-contains-more-than-return-statement': require('./no-render-function-contains-more-than-return-statement'), + 'no-render-function-return-statement-not-returning-imported-template': require('./no-render-function-return-statement-not-returning-imported-template'), + 'no-render-function-return-statement': require('./no-render-function-return-statement') +}; diff --git a/package.json b/package.json index d946d14..17ada6a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@salesforce/eslint-plugin-lwc-graph-analyzer", - "version": "0.10.1", + "version": "1.0.0", "description": "ESLint plugin to analyze data graph in a LWC component", "contributors": [ { @@ -43,7 +43,7 @@ ], "devDependencies": { "chai": "^4.5.0", - "eslint": "^8.57.1", + "eslint": "^9.28.0", "eslint-plugin-eslint-plugin": "^6.4.0", "eslint-plugin-node": "^11.1.0", "jest": "^29.7.0", @@ -51,11 +51,11 @@ "jest-extended": "^4.0.2", "jest-junit": "^16.0.0", "jest-sonar-reporter": "^2.0.0", - "prettier": "^3.4.2" + "prettier": "^3.5.3" }, "dependencies": { - "@babel/core": "^7.26.0", - "@babel/eslint-parser": "^7.27.1", + "@babel/core": "^7.27.4", + "@babel/eslint-parser": "^7.27.5", "@komaci/static-analyzer": "^252.1.0", "@lwc/errors": "~3.5.0", "@lwc/metadata": "3.5.0-0", diff --git a/test/lib/rules/artifacts-combined-files/fileUpload/test.js b/test/lib/rules/artifacts-combined-files/fileUpload/test.js index 1e340e1..b1e29ef 100644 --- a/test/lib/rules/artifacts-combined-files/fileUpload/test.js +++ b/test/lib/rules/artifacts-combined-files/fileUpload/test.js @@ -35,7 +35,7 @@ export default class FileUpload extends LightningElement { } /* eslint-enable */ - /* eslint-disable no-getter-contains-more-than-return-statement */ + /* eslint-disable @salesforce/lwc-graph-analyzer/no-getter-contains-more-than-return-statement */ get fileName1() { const file = this.files && this.files[0]; if (file) { @@ -43,7 +43,7 @@ export default class FileUpload extends LightningElement { } return undefined; } - /* eslint-enable no-getter-contains-more-than-return-statement */ + /* eslint-enable @salesforce/lwc-graph-analyzer/no-getter-contains-more-than-return-statement */ // eslint-disable-next-line get fileName2() { @@ -54,7 +54,7 @@ export default class FileUpload extends LightningElement { return undefined; } - // eslint-disable-next-line no-getter-contains-more-than-return-statement + // eslint-disable-next-line @salesforce/lwc-graph-analyzer/no-getter-contains-more-than-return-statement get fileName3() { const file = this.files && this.files[0]; if (file) { @@ -73,7 +73,7 @@ export default class FileUpload extends LightningElement { } // prettier-ignore - get fileName5() { // eslint-disable-line no-getter-contains-more-than-return-statement + get fileName5() { // eslint-disable-line @salesforce/lwc-graph-analyzer/no-getter-contains-more-than-return-statement const file = this.files && this.files[0]; if (file) { return file.name; diff --git a/test/lib/rules/artifacts-combined-files/helper.js b/test/lib/rules/artifacts-combined-files/helper.js index dba12df..cd7152a 100644 --- a/test/lib/rules/artifacts-combined-files/helper.js +++ b/test/lib/rules/artifacts-combined-files/helper.js @@ -12,6 +12,7 @@ const { basename, dirname, join, parse, extname } = require('path'); const { Linter } = require('eslint'); const babelParser = require('@babel/eslint-parser'); const lwcGraphAnalyzer = require('../../../../lib/index'); +const bundleAnalyzer = require('../../../../lib/processor'); const LwcBundle = require('../../../../lib/lwc-bundle'); /** @@ -20,36 +21,40 @@ const LwcBundle = require('../../../../lib/lwc-bundle'); * @returns {Object} ESLint configuration */ function createLinterConfig(rulename) { + const pluginPrefix = '@salesforce/lwc-graph-analyzer'; return { - parser: '@babel/eslint-parser', - parserOptions: { - requireConfigFile: false, - sourceType: 'module', - babelOptions: { - parserOpts: { - plugins: [['decorators', { decoratorsBeforeExport: false }]] + files: ['*.js', '**/*.js', '*.html', '**/*.html'], + languageOptions: { + parser: babelParser, + parserOptions: { + requireConfigFile: false, + sourceType: 'module', + babelOptions: { + parserOpts: { + plugins: [['decorators', { decoratorsBeforeExport: false }]] + } } } }, - root: true, - plugins: ['@salesforce/lwc-graph-analyzer'], - processor: '@salesforce/lwc-graph-analyzer/bundleAnalyzer', + plugins: { [pluginPrefix]: lwcGraphAnalyzer }, + processor: bundleAnalyzer, rules: { - [rulename]: 'error' + [`${pluginPrefix}/${rulename}`]: 'error' } }; } /** - * Creates and configures an ESLint linter instance - * @param {string} rulename - Name of the rule to configure - * @returns {Object} Configured ESLint linter + * Determines which code blocks should be processed by ESLint. + * This function is used to filter which virtual files (code blocks) generated by the processor + * should be analyzed by ESLint. In our case, we want to process both JavaScript and HTML files + * that are part of the LWC bundle. + * + * @param {string} blockFilename - The filename of the code block being processed + * @returns {boolean} True if the code block should be processed (has .js or .html extension), false otherwise */ -function createLinter(rulename) { - const linter = new Linter(); - linter.defineParser('@babel/eslint-parser', babelParser); - linter.defineRule(rulename, lwcGraphAnalyzer.rules[rulename]); - return linter; +function filterCodeBlock(blockFilename) { + return blockFilename.endsWith('.js') || blockFilename.endsWith('.html'); } /** @@ -61,22 +66,11 @@ function createLinter(rulename) { function lintBundle(rulePath, target) { const rulename = parse(basename(rulePath)).name; const config = createLinterConfig(rulename); - const linter = createLinter(rulename); const testPath = join(dirname(rulePath), target); const srcCode = readFileSync(testPath).toString(); - return linter.verify(srcCode, config, { - filename: testPath, - preprocess: lwcGraphAnalyzer.processors.bundleAnalyzer.preprocess, - postprocess: lwcGraphAnalyzer.processors.bundleAnalyzer.postprocess, - filterCodeBlock: function () { - // This predicate function tells linter to skip processing - // generated code blocks. Code blocks are virtual files - // generated by eslint when linting mixed file types, like - // js & html or js & markdown. - return true; - } - }); + const linter = new Linter(); + return linter.verify(srcCode, config, { filename: testPath, filterCodeBlock }); } /** @@ -88,7 +82,6 @@ function lintBundle(rulePath, target) { function lintProgrammaticBundle(rulePath, target) { const rulename = parse(basename(rulePath)).name; const config = createLinterConfig(rulename); - const linter = createLinter(rulename); const testPath = join(dirname(rulePath), target); const srcCode = readFileSync(testPath).toString(); @@ -96,17 +89,10 @@ function lintProgrammaticBundle(rulePath, target) { const bundle = LwcBundle.lwcBundleFromFilesystem(srcCode, testPath, extname(testPath)); lwcGraphAnalyzer.lwcBundle = bundle; + const linter = new Linter(); return linter.verify(srcCode, config, { filename: testPath, - preprocess: lwcGraphAnalyzer.processors.bundleAnalyzer.preprocess, - postprocess: lwcGraphAnalyzer.processors.bundleAnalyzer.postprocess, - filterCodeBlock: function () { - // This predicate function tells linter to skip processing - // generated code blocks. Code blocks are virtual files - // generated by eslint when linting mixed file types, like - // js & html or js & markdown. - return true; - } + filterCodeBlock }); } diff --git a/test/lib/rules/artifacts-combined-files/invalidGetterFunction/test.js b/test/lib/rules/artifacts-combined-files/invalidGetterFunction/test.js index 452f711..6e7d2e3 100644 --- a/test/lib/rules/artifacts-combined-files/invalidGetterFunction/test.js +++ b/test/lib/rules/artifacts-combined-files/invalidGetterFunction/test.js @@ -5,7 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -/* eslint-disable no-undef */ import { LightningElement, wire, api } from 'lwc'; import { getRecord } from 'lightning/uiRecordApi'; import foo from 'badNamespace'; diff --git a/test/lib/rules/no-assignment-expression-assigns-value-to-member-variable.js b/test/lib/rules/no-assignment-expression-assigns-value-to-member-variable.js index 89135bb..b0cbf84 100644 --- a/test/lib/rules/no-assignment-expression-assigns-value-to-member-variable.js +++ b/test/lib/rules/no-assignment-expression-assigns-value-to-member-variable.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -43,11 +42,7 @@ ruleTester.run( }) record = {}; }`, - filename: { - filename: 'lwc-code.js', - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This assignment expression can’t assign a value to the member variable 'blah'.` diff --git a/test/lib/rules/no-assignment-expression-for-external-components.js b/test/lib/rules/no-assignment-expression-for-external-components.js index 59af5b6..2f92df3 100644 --- a/test/lib/rules/no-assignment-expression-for-external-components.js +++ b/test/lib/rules/no-assignment-expression-for-external-components.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -46,11 +45,7 @@ ruleTester.run( @wire(findContacts, { searchKey: '$searchKey' }) contacts; }`, - filename: { - filename: 'lwc-code.js', - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `The assignment expression doesn’t support this component because the component is external to the Salesforce namespace.` diff --git a/test/lib/rules/no-call-expression-references-unsupported-namespace.js b/test/lib/rules/no-call-expression-references-unsupported-namespace.js index e56274f..2fa1091 100644 --- a/test/lib/rules/no-call-expression-references-unsupported-namespace.js +++ b/test/lib/rules/no-call-expression-references-unsupported-namespace.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -50,11 +49,7 @@ ruleTester.run( return 'foo'; } }`, - filename: { - filename: 'lwc-code.js', // Komaci needs a fake filename to be provided from RuleTester or otherwise it fails to run - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This call expression references an unsupported namespace: 'testFunction'.` diff --git a/test/lib/rules/no-class-refers-to-parent-class-from-unsupported-namespace.js b/test/lib/rules/no-class-refers-to-parent-class-from-unsupported-namespace.js index 0a4d252..483e328 100644 --- a/test/lib/rules/no-class-refers-to-parent-class-from-unsupported-namespace.js +++ b/test/lib/rules/no-class-refers-to-parent-class-from-unsupported-namespace.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -25,11 +24,7 @@ ruleTester.run( export default class ScriptTestClass extends Foo {} `, - filename: { - filename: 'lwc-code.js', - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This class refers to a parent class from an unsupported namespace.` diff --git a/test/lib/rules/no-eval-usage.js b/test/lib/rules/no-eval-usage.js index 3e7ad5f..34f8ffe 100644 --- a/test/lib/rules/no-eval-usage.js +++ b/test/lib/rules/no-eval-usage.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -52,11 +51,7 @@ ruleTester.run( @wire(findContacts, { searchKey: '$searchKey' }) contacts; }`, - filename: { - filename: 'lwc-code.js', - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This call expression contains a non-portable identifier: 'eval'.` diff --git a/test/lib/rules/no-expression-contains-module-level-variable-ref.js b/test/lib/rules/no-expression-contains-module-level-variable-ref.js index feae901..0f45769 100644 --- a/test/lib/rules/no-expression-contains-module-level-variable-ref.js +++ b/test/lib/rules/no-expression-contains-module-level-variable-ref.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -40,11 +39,7 @@ ruleTester.run( return val; } }`, - filename: { - filename: 'lwc-code.js', // Komaci needs a fake filename to be provided from RuleTester or otherwise it fails to run - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This getter references a variable defined at the module level: 'testModuleVar'.` diff --git a/test/lib/rules/no-functions-declared-within-getter-method.js b/test/lib/rules/no-functions-declared-within-getter-method.js index 5ac7a10..ce25d3e 100644 --- a/test/lib/rules/no-functions-declared-within-getter-method.js +++ b/test/lib/rules/no-functions-declared-within-getter-method.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -50,11 +49,7 @@ ruleTester.run( myProp; }`, - filename: { - filename: 'lwc-code.js', - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This function is defined within a getter or template expression. Functions defined within getters or template expressions are not supported.` diff --git a/test/lib/rules/no-getter-contains-more-than-return-statement.js b/test/lib/rules/no-getter-contains-more-than-return-statement.js index 0c2613f..d03c49d 100644 --- a/test/lib/rules/no-getter-contains-more-than-return-statement.js +++ b/test/lib/rules/no-getter-contains-more-than-return-statement.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -46,11 +45,7 @@ ruleTester.run( @wire(getRecord, { recordId: '$myObjLiteral.prop2' }) record2; }`, - filename: { - filename: 'lwc-code.js', // Komaci needs a fake filename to be provided from RuleTester or otherwise it fails to run - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `Getters can only contain a return statement.` diff --git a/test/lib/rules/no-member-expression-contains-non-portable-identifier.js b/test/lib/rules/no-member-expression-contains-non-portable-identifier.js index f759559..d9aff90 100644 --- a/test/lib/rules/no-member-expression-contains-non-portable-identifier.js +++ b/test/lib/rules/no-member-expression-contains-non-portable-identifier.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -41,11 +40,7 @@ ruleTester.run( @wire(findContacts, { searchKey: '$searchKey' }) contacts; }`, - filename: { - filename: 'lwc-code.js', // Komaci needs a fake filename to be provided from RuleTester or otherwise it fails to run - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This member expression contains a non-portable identifier: 'window'.` diff --git a/test/lib/rules/no-member-expression-reference-to-non-existent-member-variable.js b/test/lib/rules/no-member-expression-reference-to-non-existent-member-variable.js index 0184800..9fa2f96 100644 --- a/test/lib/rules/no-member-expression-reference-to-non-existent-member-variable.js +++ b/test/lib/rules/no-member-expression-reference-to-non-existent-member-variable.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -46,11 +45,7 @@ ruleTester.run( @wire(findContacts, { searchKey: '$searchKey' }) contacts; }`, - filename: { - filename: 'lwc-code.js', // Komaci needs a fake filename to be provided from RuleTester or otherwise it fails to run - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This member expression references a member variable that doesn’t exist: 'tempMemberVar'.` diff --git a/test/lib/rules/no-member-expression-reference-to-super-class.js b/test/lib/rules/no-member-expression-reference-to-super-class.js index ee3fe17..beaae79 100644 --- a/test/lib/rules/no-member-expression-reference-to-super-class.js +++ b/test/lib/rules/no-member-expression-reference-to-super-class.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -45,11 +44,7 @@ ruleTester.run( @wire(findContacts, { searchKey: '$searchKey' }) contacts; }`, - filename: { - filename: 'lwc-code.js', // Komaci needs a fake filename to be provided from RuleTester or otherwise it fails to run - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This member expression references the superclass 'SuperClassFunction'.` diff --git a/test/lib/rules/no-member-expression-reference-to-unsupported-global.js b/test/lib/rules/no-member-expression-reference-to-unsupported-global.js index d053882..cb3e24d 100644 --- a/test/lib/rules/no-member-expression-reference-to-unsupported-global.js +++ b/test/lib/rules/no-member-expression-reference-to-unsupported-global.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -41,11 +40,7 @@ ruleTester.run( @wire(findContacts, { searchKey: '$searchKey' }) contacts; }`, - filename: { - filename: 'lwc-code.js', - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This member expression contains a reference to the unsupported global variable 'Object'.` diff --git a/test/lib/rules/no-member-expression-reference-to-unsupported-namespace-reference.js b/test/lib/rules/no-member-expression-reference-to-unsupported-namespace-reference.js index 58e3379..2e61c97 100644 --- a/test/lib/rules/no-member-expression-reference-to-unsupported-namespace-reference.js +++ b/test/lib/rules/no-member-expression-reference-to-unsupported-namespace-reference.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -51,11 +50,7 @@ ruleTester.run( @wire(findContacts, { searchKey: '$searchKey' }) contacts; }`, - filename: { - filename: 'lwc-code.js', // Komaci needs a fake filename to be provided from RuleTester or otherwise it fails to run - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This member expression references an unsupported namespace: 'testObject'.` diff --git a/test/lib/rules/no-missing-resource-cannot-prime-wire-adapter.js b/test/lib/rules/no-missing-resource-cannot-prime-wire-adapter.js index 7c14403..cf71821 100644 --- a/test/lib/rules/no-missing-resource-cannot-prime-wire-adapter.js +++ b/test/lib/rules/no-missing-resource-cannot-prime-wire-adapter.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -28,11 +27,7 @@ ruleTester.run( @wire(getRecord, {}) record; }`, - filename: { - filename: 'lwc-code.js', - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This wire adapter can’t be primed because it refers to a missing resource.` diff --git a/test/lib/rules/no-private-wire-config-property.js b/test/lib/rules/no-private-wire-config-property.js index b2bb590..7903a10 100644 --- a/test/lib/rules/no-private-wire-config-property.js +++ b/test/lib/rules/no-private-wire-config-property.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -30,11 +29,7 @@ ruleTester.run( console.log(value); } }`, - filename: { - filename: 'lwc-code.js', // Komaci needs a fake filename to be provided from RuleTester or otherwise it fails to run - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This wire configuration uses a property 'recordId1' that is private.` diff --git a/test/lib/rules/no-reference-to-class-functions.js b/test/lib/rules/no-reference-to-class-functions.js index 75d6284..b6781e9 100644 --- a/test/lib/rules/no-reference-to-class-functions.js +++ b/test/lib/rules/no-reference-to-class-functions.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -53,11 +52,7 @@ ruleTester.run( return 'foo'; } }`, - filename: { - filename: 'lwc-code.js', // Komaci needs a fake filename to be provided from RuleTester or otherwise it fails to run - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This call expression references a function defined in the class 'testFunc2'. Functions defined in a class are not supported.` diff --git a/test/lib/rules/no-reference-to-module-functions.js b/test/lib/rules/no-reference-to-module-functions.js index 92fdb84..b377d96 100644 --- a/test/lib/rules/no-reference-to-module-functions.js +++ b/test/lib/rules/no-reference-to-module-functions.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -53,11 +52,7 @@ ruleTester.run( return 'foo'; } }`, - filename: { - filename: 'lwc-code.js', - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This call expression references a function defined in the module 'testFunc1'. Functions defined in a module are not supported.` diff --git a/test/lib/rules/no-reference-to-unsupported-namespace-reference.js b/test/lib/rules/no-reference-to-unsupported-namespace-reference.js index 54cd2c3..4a5205f 100644 --- a/test/lib/rules/no-reference-to-unsupported-namespace-reference.js +++ b/test/lib/rules/no-reference-to-unsupported-namespace-reference.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -41,11 +40,7 @@ ruleTester.run( @wire(getRecord, { recordIds: '0001', field: '$nameField' }) record2; }`, - filename: { - filename: 'lwc-code.js', - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This reference to import 'bobo' from an unsupported namespace isn’t allowed.` diff --git a/test/lib/rules/no-unresolved-parent-class-reference.js b/test/lib/rules/no-unresolved-parent-class-reference.js index cad9782..d261f03 100644 --- a/test/lib/rules/no-unresolved-parent-class-reference.js +++ b/test/lib/rules/no-unresolved-parent-class-reference.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -28,11 +27,7 @@ ruleTester.run( /* eslint-disable no-undef */ @api testProp; }`, - filename: { - filename: 'lwc-code.js', - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This class references a parent class that can’t be resolved.` diff --git a/test/lib/rules/no-wire-adapter-of-resource-cannot-be-primed.js b/test/lib/rules/no-wire-adapter-of-resource-cannot-be-primed.js index 37ee55b..b97d6ed 100644 --- a/test/lib/rules/no-wire-adapter-of-resource-cannot-be-primed.js +++ b/test/lib/rules/no-wire-adapter-of-resource-cannot-be-primed.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -58,11 +57,7 @@ ruleTester.run( @wire(invalidWire, { id: '6xeffa27' }) badRecords; }`, - filename: { - filename: 'lwc-code.js', - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `The wire adapter 'invalidWire' of resource 'lightning/uiAppsApi' can’t be primed.` diff --git a/test/lib/rules/no-wire-config-property-circular-wire-dependency.js b/test/lib/rules/no-wire-config-property-circular-wire-dependency.js index 8a21fd9..fab6db9 100644 --- a/test/lib/rules/no-wire-config-property-circular-wire-dependency.js +++ b/test/lib/rules/no-wire-config-property-circular-wire-dependency.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -53,11 +52,7 @@ ruleTester.run( }) wiredOutput3; }`, - filename: { - filename: 'lwc-code.js', - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This input property is part of circular wire dependencies in this chain: 'wiredOutput3->wiredOutput4->wiredOutput1->wiredOutput3'.` diff --git a/test/lib/rules/no-wire-config-property-uses-getter-function-returning-inaccessible-import.js b/test/lib/rules/no-wire-config-property-uses-getter-function-returning-inaccessible-import.js index 138db08..b5fb9f0 100644 --- a/test/lib/rules/no-wire-config-property-uses-getter-function-returning-inaccessible-import.js +++ b/test/lib/rules/no-wire-config-property-uses-getter-function-returning-inaccessible-import.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -43,11 +42,7 @@ ruleTester.run( @wire(getRecord, { recordIds: '0001', field: '$nameField' }) record2; }`, - filename: { - filename: 'lwc-code.js', - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This wire configuration uses a property from a getter function named 'input' that returns an inaccessible import.` diff --git a/test/lib/rules/no-wire-config-property-uses-getter-function-returning-non-literal.js b/test/lib/rules/no-wire-config-property-uses-getter-function-returning-non-literal.js index 4076b2b..2188007 100644 --- a/test/lib/rules/no-wire-config-property-uses-getter-function-returning-non-literal.js +++ b/test/lib/rules/no-wire-config-property-uses-getter-function-returning-non-literal.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -46,11 +45,7 @@ ruleTester.run( @wire(getRecord, { recordId: '$myObjLiteral.prop2' }) record2; }`, - filename: { - filename: 'lwc-code.js', - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This wire configuration uses a property from a getter function named 'config' that returns a non-literal value, which isn’t supported for static analysis.` diff --git a/test/lib/rules/no-wire-config-property-uses-imported-artifact-from-unsupported-namespace.js b/test/lib/rules/no-wire-config-property-uses-imported-artifact-from-unsupported-namespace.js index 697b375..d8f0e6a 100644 --- a/test/lib/rules/no-wire-config-property-uses-imported-artifact-from-unsupported-namespace.js +++ b/test/lib/rules/no-wire-config-property-uses-imported-artifact-from-unsupported-namespace.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -33,11 +32,7 @@ ruleTester.run( @wire(getRecord, { recordId: getBlah }) records; }`, - filename: { - filename: 'lwc-code.js', - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This wire configuration uses an imported artifact 'getBlah' from an unsupported namespace 'nothing/uiObjectInfoApi'.` diff --git a/test/lib/rules/no-wire-config-references-non-local-property-reactive-value.js b/test/lib/rules/no-wire-config-references-non-local-property-reactive-value.js index 7089a5a..6075e81 100644 --- a/test/lib/rules/no-wire-config-references-non-local-property-reactive-value.js +++ b/test/lib/rules/no-wire-config-references-non-local-property-reactive-value.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -38,11 +37,7 @@ ruleTester.run( console.log(value); } }`, - filename: { - filename: 'lwc-code.js', // Komaci needs a fake filename to be provided from RuleTester or otherwise it fails to run - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This wire configuration references a reactive value 'GetData' that’s not a local property.` diff --git a/test/lib/rules/no-wire-configuration-property-using-output-of-non-primeable-wire.js b/test/lib/rules/no-wire-configuration-property-using-output-of-non-primeable-wire.js index 5336621..fb02d2f 100644 --- a/test/lib/rules/no-wire-configuration-property-using-output-of-non-primeable-wire.js +++ b/test/lib/rules/no-wire-configuration-property-using-output-of-non-primeable-wire.js @@ -10,7 +10,6 @@ const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); -const bundleAnalyzer = lwcGraphAnalyzer.processors.bundleAnalyzer; const ruleTester = new RuleTester(RULE_TESTER_CONFIG); ruleTester.run( @@ -54,11 +53,7 @@ ruleTester.run( }) wiredOutput3; }`, - filename: { - filename: 'lwc-code.js', - preprocess: bundleAnalyzer.preprocess, - postprocess: bundleAnalyzer.postprocess - }, + filename: 'lwc-code.js', errors: [ { message: `This wire configuration uses a property 'wiredOutput1' that’s the output of a wire that can’t be primed for offline use or caching.` diff --git a/test/lib/rules/shared.js b/test/lib/rules/shared.js index 32d386c..7617fbc 100644 --- a/test/lib/rules/shared.js +++ b/test/lib/rules/shared.js @@ -8,19 +8,23 @@ 'use strict'; const RULE_TESTER_CONFIG = { - parser: require.resolve('@babel/eslint-parser'), - parserOptions: { - requireConfigFile: false, - sourceType: 'module', - babelOptions: { - parserOpts: { - plugins: [['decorators', { decoratorsBeforeExport: false }]] + languageOptions: { + parser: require('@babel/eslint-parser'), + parserOptions: { + requireConfigFile: false, + sourceType: 'module', + babelOptions: { + parserOpts: { + plugins: [['decorators', { decoratorsBeforeExport: false }]] + } } } }, - plugins: ['@salesforce/lwc-graph-analyzer'] + plugins: { + '@salesforce/lwc-graph-analyzer': require('../../../lib/index') + }, + processor: require('../../../lib/processor') }; - module.exports = { RULE_TESTER_CONFIG }; diff --git a/test/plugin.js b/test/plugin.js index 9df04bd..8f8f935 100644 --- a/test/plugin.js +++ b/test/plugin.js @@ -45,9 +45,12 @@ describe('Plugin', function () { }); it('recommended rules count equals the number of existing rules', function () { - assert.equal(plugin.configs.recommended.overrides[0].rules.length, plugin.rules.length); + assert.equal( + Object.keys(plugin.configs.recommended.rules).length, + Object.keys(plugin.rules).length + ); - let recommendedRules = Object.keys(plugin.configs.recommended.overrides[0].rules); + let recommendedRules = Object.keys(plugin.configs.recommended.rules); // Strip out scoped module path then sort the array. recommendedRules = recommendedRules diff --git a/yarn.lock b/yarn.lock index 11eb570..fa731ef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24,12 +24,26 @@ js-tokens "^4.0.0" picocolors "^1.0.0" +"@babel/code-frame@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== + dependencies: + "@babel/helper-validator-identifier" "^7.27.1" + js-tokens "^4.0.0" + picocolors "^1.1.1" + "@babel/compat-data@^7.25.9": version "7.26.2" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.2.tgz#278b6b13664557de95b8f35b90d96785850bb56e" integrity sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.26.0", "@babel/core@^7.9.0": +"@babel/compat-data@^7.27.2": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.5.tgz#7d0658ec1a8420fc866d1df1b03bea0e79934c82" + integrity sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.9.0": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== @@ -50,10 +64,31 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/eslint-parser@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.27.1.tgz#e146fb2facef62c6c5d1a6fd07cfd79ee9f7b0f1" - integrity sha512-q8rjOuadH0V6Zo4XLMkJ3RMQ9MSBqwaDByyYB0izsYdaIWGNLmEblbCOf1vyFHICcg16CD7Fsi51vcQnYxmt6Q== +"@babel/core@^7.27.4": + version "7.27.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.4.tgz#cc1fc55d0ce140a1828d1dd2a2eba285adbfb3ce" + integrity sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.27.3" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-module-transforms" "^7.27.3" + "@babel/helpers" "^7.27.4" + "@babel/parser" "^7.27.4" + "@babel/template" "^7.27.2" + "@babel/traverse" "^7.27.4" + "@babel/types" "^7.27.3" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/eslint-parser@^7.27.5": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.27.5.tgz#56577afa9d820e9936e986d3a3b79c422223dfc6" + integrity sha512-HLkYQfRICudzcOtjGwkPvGc5nF1b4ljLZh1IRDj50lRZ718NAKVgQpIAUX8bfg6u/yuSKY3L7E0YzIV+OxrB8Q== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" @@ -70,6 +105,17 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" +"@babel/generator@^7.27.3": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.5.tgz#3eb01866b345ba261b04911020cbe22dd4be8c8c" + integrity sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw== + dependencies: + "@babel/parser" "^7.27.5" + "@babel/types" "^7.27.3" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + "@babel/helper-compilation-targets@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875" @@ -81,6 +127,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" + integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== + dependencies: + "@babel/compat-data" "^7.27.2" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-environment-visitor@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" @@ -109,6 +166,14 @@ "@babel/traverse" "^7.25.9" "@babel/types" "^7.25.9" +"@babel/helper-module-imports@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" + integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + "@babel/helper-module-transforms@^7.26.0": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" @@ -118,6 +183,15 @@ "@babel/helper-validator-identifier" "^7.25.9" "@babel/traverse" "^7.25.9" +"@babel/helper-module-transforms@^7.27.3": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz#db0bbcfba5802f9ef7870705a7ef8788508ede02" + integrity sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.3" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" @@ -140,6 +214,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + "@babel/helper-validator-identifier@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" @@ -150,11 +229,21 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== +"@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== + "@babel/helper-validator-option@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== + "@babel/helpers@^7.26.0": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4" @@ -163,6 +252,14 @@ "@babel/template" "^7.25.9" "@babel/types" "^7.26.0" +"@babel/helpers@^7.27.4": + version "7.27.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.6.tgz#6456fed15b2cb669d2d1fabe84b66b34991d812c" + integrity sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug== + dependencies: + "@babel/template" "^7.27.2" + "@babel/types" "^7.27.6" + "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.22.10", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.2", "@babel/parser@^7.9.0": version "7.26.2" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.2.tgz#fd7b6f487cfea09889557ef5d4eeb9ff9a5abd11" @@ -170,6 +267,13 @@ dependencies: "@babel/types" "^7.26.0" +"@babel/parser@^7.27.2", "@babel/parser@^7.27.4", "@babel/parser@^7.27.5": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.5.tgz#ed22f871f110aa285a6fd934a0efed621d118826" + integrity sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg== + dependencies: + "@babel/types" "^7.27.3" + "@babel/parser@~7.22.7": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.10.tgz#e37634f9a12a1716136c44624ef54283cabd3f55" @@ -282,6 +386,15 @@ "@babel/parser" "^7.25.9" "@babel/types" "^7.25.9" +"@babel/template@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" + integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/parser" "^7.27.2" + "@babel/types" "^7.27.1" + "@babel/traverse@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84" @@ -295,6 +408,19 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.27.4": + version "7.27.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.4.tgz#b0045ac7023c8472c3d35effd7cc9ebd638da6ea" + integrity sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.27.3" + "@babel/parser" "^7.27.4" + "@babel/template" "^7.27.2" + "@babel/types" "^7.27.3" + debug "^4.3.1" + globals "^11.1.0" + "@babel/traverse@~7.22.8": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.10.tgz#20252acb240e746d27c2e82b4484f199cf8141aa" @@ -319,6 +445,14 @@ "@babel/helper-string-parser" "^7.25.9" "@babel/helper-validator-identifier" "^7.25.9" +"@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.27.6": + version "7.27.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.6.tgz#a434ca7add514d4e646c80f7375c0aa2befc5535" + integrity sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/types@~7.22.5": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.10.tgz#4a9e76446048f2c66982d1a989dd12b8a2d2dc03" @@ -340,49 +474,92 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.6.1": - version "4.6.2" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8" - integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw== +"@eslint-community/regexpp@^4.12.1": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + +"@eslint/config-array@^0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.20.0.tgz#7a1232e82376712d3340012a2f561a2764d1988f" + integrity sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ== + dependencies: + "@eslint/object-schema" "^2.1.6" + debug "^4.3.1" + minimatch "^3.1.2" + +"@eslint/config-helpers@^0.2.1": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.2.2.tgz#3779f76b894de3a8ec4763b79660e6d54d5b1010" + integrity sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg== + +"@eslint/core@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.14.0.tgz#326289380968eaf7e96f364e1e4cf8f3adf2d003" + integrity sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg== + dependencies: + "@types/json-schema" "^7.0.15" -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== +"@eslint/eslintrc@^3.3.1": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.1.tgz#e55f7f1dd400600dd066dbba349c4c0bac916964" + integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" + espree "^10.0.1" + globals "^14.0.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.57.1": - version "8.57.1" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" - integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== +"@eslint/js@9.28.0": + version "9.28.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.28.0.tgz#7822ccc2f8cae7c3cd4f902377d520e9ae03f844" + integrity sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg== -"@humanwhocodes/config-array@^0.13.0": - version "0.13.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" - integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== +"@eslint/object-schema@^2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" + integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== + +"@eslint/plugin-kit@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz#b71b037b2d4d68396df04a8c35a49481e5593067" + integrity sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w== dependencies: - "@humanwhocodes/object-schema" "^2.0.3" - debug "^4.3.1" - minimatch "^3.0.5" + "@eslint/core" "^0.14.0" + levn "^0.4.1" + +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.6": + version "0.16.6" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== + dependencies: + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.3.0" "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@humanwhocodes/retry@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== + +"@humanwhocodes/retry@^0.4.2": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba" + integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -729,27 +906,6 @@ dependencies: eslint-scope "5.1.1" -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" @@ -815,6 +971,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== +"@types/estree@^1.0.6": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + "@types/graceful-fs@^4.1.3": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" @@ -841,7 +1002,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/json-schema@*": +"@types/json-schema@*", "@types/json-schema@^7.0.15": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -868,17 +1029,17 @@ dependencies: "@types/yargs-parser" "*" -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.9.0, acorn@~8.10.0: +acorn@^8.15.0: + version "8.15.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== + +acorn@~8.10.0: version "8.10.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== @@ -1171,7 +1332,7 @@ create-jest@^29.7.0: jest-util "^29.7.0" prompts "^2.0.1" -cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.3, cross-spawn@^7.0.6: version "7.0.6" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== @@ -1224,13 +1385,6 @@ diff-sequences@^29.6.3: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - electron-to-chromium@^1.5.41: version "1.5.50" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.50.tgz#d9ba818da7b2b5ef1f3dd32bce7046feb7e93234" @@ -1309,10 +1463,10 @@ eslint-scope@5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== +eslint-scope@^8.3.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82" + integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -1334,73 +1488,75 @@ eslint-visitor-keys@^2.1.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: +eslint-visitor-keys@^3.3.0: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@^8.57.1: - version "8.57.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" - integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== +eslint-visitor-keys@^4.2.0, eslint-visitor-keys@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" + integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== + +eslint@^9.28.0: + version "9.28.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.28.0.tgz#b0bcbe82a16945a40906924bea75e8b4980ced7d" + integrity sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.1" - "@humanwhocodes/config-array" "^0.13.0" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.20.0" + "@eslint/config-helpers" "^0.2.1" + "@eslint/core" "^0.14.0" + "@eslint/eslintrc" "^3.3.1" + "@eslint/js" "9.28.0" + "@eslint/plugin-kit" "^0.3.1" + "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" + "@humanwhocodes/retry" "^0.4.2" + "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" ajv "^6.12.4" chalk "^4.0.0" - cross-spawn "^7.0.2" + cross-spawn "^7.0.6" debug "^4.3.2" - doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" + eslint-scope "^8.3.0" + eslint-visitor-keys "^4.2.0" + espree "^10.3.0" + esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" + file-entry-cache "^8.0.0" find-up "^5.0.0" glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== +espree@^10.0.1, espree@^10.3.0: + version "10.4.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837" + integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== dependencies: - acorn "^8.9.0" + acorn "^8.15.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" + eslint-visitor-keys "^4.2.1" esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== +esquery@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== dependencies: estraverse "^5.1.0" @@ -1477,13 +1633,6 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== - dependencies: - reusify "^1.0.4" - fb-watchman@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" @@ -1491,12 +1640,12 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== dependencies: - flat-cache "^3.0.4" + flat-cache "^4.0.0" fill-range@^7.1.1: version "7.1.1" @@ -1521,18 +1670,18 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" + flatted "^3.2.9" + keyv "^4.5.4" -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +flatted@^3.2.9: + version "3.3.3" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" + integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== fs.realpath@^1.0.0: version "1.0.0" @@ -1598,23 +1747,16 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.19.0: - version "13.21.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.21.0.tgz#163aae12f34ef502f5153cfbdd3600f36c63c571" - integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg== - dependencies: - type-fest "^0.20.2" +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" @@ -1720,11 +1862,6 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" @@ -2201,6 +2338,11 @@ jsesc@^3.0.2: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" @@ -2221,6 +2363,13 @@ json5@^2.2.3: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +keyv@^4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -2316,7 +2465,7 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -2476,7 +2625,7 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picocolors@^1.1.0: +picocolors@^1.1.0, picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== @@ -2525,10 +2674,10 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prettier@^3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f" - integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ== +prettier@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5" + integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw== pretty-format@^29.7.0: version "29.7.0" @@ -2557,11 +2706,6 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306" integrity sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ== -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - react-is@^18.0.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" @@ -2608,25 +2752,6 @@ resolve@^1.10.1, resolve@^1.20.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - semver@^6.0.0, semver@^6.1.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" @@ -2763,11 +2888,6 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" @@ -2802,11 +2922,6 @@ type-detect@^4.0.0, type-detect@^4.1.0: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - type-fest@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" From 981a3139f1beaed41fcf890e1683ddf8e398e365 Mon Sep 17 00:00:00 2001 From: Kevin Hawkins Date: Tue, 10 Jun 2025 16:26:35 -0700 Subject: [PATCH 2/2] Updating project linting to ESLint 9 --- .eslintrc | 28 -- .husky/pre-commit | 1 + eslint.config.js | 54 +++ index.js | 10 - jest.config.js | 2 - lib/configs/base-legacy.js | 2 - lib/configs/base.js | 2 - lib/configs/recommended-legacy.js | 2 - lib/configs/recommended.js | 2 - lib/index.js | 2 - lib/lwc-bundle.js | 2 - lib/processor.js | 3 - lib/rules/index.js | 2 - ...ession-assigns-value-to-member-variable.js | 2 - ...ment-expression-for-external-components.js | 2 - ...ession-references-unsupported-namespace.js | 2 - ...parent-class-from-unsupported-namespace.js | 2 - ...osition-on-unanalyzable-getter-property.js | 2 - ...lyzable-property-from-unresolvable-wire.js | 2 - ...sition-on-unanalyzable-property-missing.js | 2 - ...ion-on-unanalyzable-property-non-public.js | 2 - lib/rules/no-eval-usage.js | 2 - ...sion-contains-module-level-variable-ref.js | 2 - ...functions-declared-within-getter-method.js | 2 - ...ter-contains-more-than-return-statement.js | 2 - ...ession-contains-non-portable-identifier.js | 2 - ...ference-to-non-existent-member-variable.js | 2 - ...ber-expression-reference-to-super-class.js | 2 - ...ression-reference-to-unsupported-global.js | 2 - ...ence-to-unsupported-namespace-reference.js | 2 - ...sing-resource-cannot-prime-wire-adapter.js | 2 - lib/rules/no-multiple-template-files.js | 2 - lib/rules/no-private-wire-config-property.js | 2 - lib/rules/no-reference-to-class-functions.js | 2 - lib/rules/no-reference-to-module-functions.js | 2 - ...ence-to-unsupported-namespace-reference.js | 2 - ...ion-contains-more-than-return-statement.js | 2 - ...atement-not-returning-imported-template.js | 2 - .../no-render-function-return-statement.js | 2 - ...pression-contains-unsupported-namespace.js | 2 - .../no-unresolved-parent-class-reference.js | 2 - ...ed-member-variable-in-member-expression.js | 2 - ...re-adapter-of-resource-cannot-be-primed.js | 2 - ...onfig-property-circular-wire-dependency.js | 2 - ...-function-returning-inaccessible-import.js | 2 - ...s-getter-function-returning-non-literal.js | 2 - ...ted-artifact-from-unsupported-namespace.js | 2 - ...ences-non-local-property-reactive-value.js | 2 - ...erty-using-output-of-non-primeable-wire.js | 2 - lib/util/bundle-state-manager.js | 2 - lib/util/createRule.js | 2 - lib/util/doc-url.js | 2 - lib/util/filesystem-provider.js | 5 - lib/util/hash-utils.js | 2 - lib/util/helper.js | 3 - lib/util/static-analyzer-interface.js | 3 - lib/util/static-analyzer-provider.js | 2 - package.json | 180 ++++----- test/lib/lwc-bundle.js | 2 - test/lib/processor.js | 2 - ...ter-contains-more-than-return-statement.js | 2 - .../rules/artifacts-combined-files/helper.js | 2 - ...ed-member-variable-in-member-expression.js | 2 - ...ion-on-unanalyzable-property-non-public.js | 2 - .../no-multiple-template-files.js | 2 - ...ion-on-unanalyzable-property-non-public.js | 2 - ...sition-on-unanalyzable-property-missing.js | 2 - ...lyzable-property-from-unresolvable-wire.js | 2 - ...osition-on-unanalyzable-getter-property.js | 2 - ...ession-assigns-value-to-member-variable.js | 2 - ...ment-expression-for-external-components.js | 2 - ...ession-references-unsupported-namespace.js | 2 - ...parent-class-from-unsupported-namespace.js | 2 - test/lib/rules/no-eval-usage.js | 2 - ...sion-contains-module-level-variable-ref.js | 2 - ...functions-declared-within-getter-method.js | 2 - ...ter-contains-more-than-return-statement.js | 2 - ...ession-contains-non-portable-identifier.js | 2 - ...ference-to-non-existent-member-variable.js | 2 - ...ber-expression-reference-to-super-class.js | 2 - ...ression-reference-to-unsupported-global.js | 2 - ...ence-to-unsupported-namespace-reference.js | 2 - ...sing-resource-cannot-prime-wire-adapter.js | 2 - .../rules/no-private-wire-config-property.js | 2 - .../rules/no-reference-to-class-functions.js | 2 - .../rules/no-reference-to-module-functions.js | 2 - ...ence-to-unsupported-namespace-reference.js | 2 - .../no-unresolved-parent-class-reference.js | 2 - ...re-adapter-of-resource-cannot-be-primed.js | 2 - ...onfig-property-circular-wire-dependency.js | 2 - ...-function-returning-inaccessible-import.js | 2 - ...s-getter-function-returning-non-literal.js | 2 - ...ted-artifact-from-unsupported-namespace.js | 2 - ...ences-non-local-property-reactive-value.js | 2 - ...erty-using-output-of-non-primeable-wire.js | 2 - test/lib/rules/shared.js | 2 - test/lib/util/bundle-state-manager.js | 2 - test/lib/util/filesystem-provider.js | 2 - test/lib/util/helper.js | 2 - test/lib/util/mock-static-analyzer.js | 2 - test/lib/util/static-analyzer-interface.js | 2 - test/plugin.js | 2 - yarn.lock | 368 ++++++++++++++++-- 103 files changed, 474 insertions(+), 367 deletions(-) delete mode 100644 .eslintrc create mode 100644 .husky/pre-commit create mode 100644 eslint.config.js delete mode 100644 index.js diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 3481387..0000000 --- a/.eslintrc +++ /dev/null @@ -1,28 +0,0 @@ -{ - "root": true, - "extends": [ - "eslint:recommended", - "plugin:node/recommended" - ], - "overrides": [ - { - "files": ["lib/rules/*.{js,ts}"], - "extends": ["plugin:eslint-plugin/rules-recommended"], - "rules": { - "eslint-plugin/prefer-message-ids": "off" // Messages come straight from Komaci. - } - } - ], - "env": { - "es6": true, - "jest": true, - "node": true - }, - "parserOptions": { - "ecmaVersion": "latest" - }, - "rules": { - "strict": ["error", "global"] - }, - "ignorePatterns": ["test/**/test.js"] -} diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..7e31217 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +yarn format && yarn lint && yarn test diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..e100d3d --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2025, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: MIT + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT + */ + +const js = require('@eslint/js'); +const nodePlugin = require('eslint-plugin-n'); +const eslintPlugin = require('eslint-plugin-eslint-plugin'); +const tseslint = require('typescript-eslint'); + +module.exports = [ + { + ignores: ['test/**/test.js', 'reports/**'] + }, + { + ...js.configs.recommended, + ...nodePlugin.configs['flat/recommended-script'], + files: ['**/*.js'], + languageOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + globals: { + // jest globals + jest: 'readonly', + describe: 'readonly', + it: 'readonly', + expect: 'readonly', + beforeEach: 'readonly', + afterEach: 'readonly', + beforeAll: 'readonly', + afterAll: 'readonly' + } + }, + rules: { + strict: ['error', 'global'] + } + }, + ...tseslint.configs.recommended.map((config) => ({ + ...config, + files: ['**/*.d.ts'] + })), + { + files: ['lib/rules/*.js'], + plugins: { + 'eslint-plugin': eslintPlugin + }, + ...eslintPlugin.configs['flat/recommended'], + rules: { + 'eslint-plugin/prefer-message-ids': 'off' // Messages come straight from Komaci. + } + } +]; diff --git a/index.js b/index.js deleted file mode 100644 index e7a7ede..0000000 --- a/index.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright (c) 2022, salesforce.com, inc. - * All rights reserved. - * SPDX-License-Identifier: MIT - * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT - */ - -'use strict'; - -module.exports = require('./lib'); diff --git a/jest.config.js b/jest.config.js index 6a63558..aa288f8 100644 --- a/jest.config.js +++ b/jest.config.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - module.exports = { displayName: 'Unit Tests', setupFilesAfterEnv: ['jest-extended', 'jest-chain'], diff --git a/lib/configs/base-legacy.js b/lib/configs/base-legacy.js index 6c721be..4a97ae0 100644 --- a/lib/configs/base-legacy.js +++ b/lib/configs/base-legacy.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - module.exports = { plugins: ['@salesforce/lwc-graph-analyzer'], parser: '@babel/eslint-parser', diff --git a/lib/configs/base.js b/lib/configs/base.js index e4a6af8..7007fe6 100644 --- a/lib/configs/base.js +++ b/lib/configs/base.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const bundleAnalyzer = require('../processor'); module.exports = { diff --git a/lib/configs/recommended-legacy.js b/lib/configs/recommended-legacy.js index 16ea0b0..3854020 100644 --- a/lib/configs/recommended-legacy.js +++ b/lib/configs/recommended-legacy.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - module.exports = { extends: ['./configs/base-legacy'], rules: {}, diff --git a/lib/configs/recommended.js b/lib/configs/recommended.js index c01ab6a..c6ad625 100644 --- a/lib/configs/recommended.js +++ b/lib/configs/recommended.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const baseConfig = require('./base'); module.exports = { diff --git a/lib/index.js b/lib/index.js index 5f5b04e..c83eaf1 100644 --- a/lib/index.js +++ b/lib/index.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const bundleAnalyzer = require('./processor'); const LwcBundle = require('./lwc-bundle'); const allRules = require('./rules'); diff --git a/lib/lwc-bundle.js b/lib/lwc-bundle.js index 499dbbb..2fc1c5c 100644 --- a/lib/lwc-bundle.js +++ b/lib/lwc-bundle.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { basename, dirname, extname, join, parse } = require('path'); const { generateHash } = require('./util/hash-utils'); const { randomUUID } = require('crypto'); diff --git a/lib/processor.js b/lib/processor.js index 1d2f9e5..1767539 100644 --- a/lib/processor.js +++ b/lib/processor.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { extname } = require('path'); const { setLwcBundleCacheEntry, @@ -151,7 +149,6 @@ class BundleAnalyzer { * by the ESLint CLI, or a dummy value (__placeholder__.js) if called programatically. * @returns A one-dimensional flattened array of messages. */ - // eslint-disable-next-line no-unused-vars postprocess = (messages, filename) => { // Clear the existing bundle data. if (this.#lwcBundle) { diff --git a/lib/rules/index.js b/lib/rules/index.js index 8ef154e..5ff5dd1 100644 --- a/lib/rules/index.js +++ b/lib/rules/index.js @@ -1,5 +1,3 @@ -'use strict'; - module.exports = { 'no-getter-contains-more-than-return-statement': require('./no-getter-contains-more-than-return-statement'), 'no-assignment-expression-assigns-value-to-member-variable': require('./no-assignment-expression-assigns-value-to-member-variable'), diff --git a/lib/rules/no-assignment-expression-assigns-value-to-member-variable.js b/lib/rules/no-assignment-expression-assigns-value-to-member-variable.js index f552057..0901121 100644 --- a/lib/rules/no-assignment-expression-assigns-value-to-member-variable.js +++ b/lib/rules/no-assignment-expression-assigns-value-to-member-variable.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-assignment-expression-assigns-value-to-member-variable'; diff --git a/lib/rules/no-assignment-expression-for-external-components.js b/lib/rules/no-assignment-expression-for-external-components.js index 2cbb4f6..a580f5a 100644 --- a/lib/rules/no-assignment-expression-for-external-components.js +++ b/lib/rules/no-assignment-expression-for-external-components.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-assignment-expression-for-external-components'; diff --git a/lib/rules/no-call-expression-references-unsupported-namespace.js b/lib/rules/no-call-expression-references-unsupported-namespace.js index ed1e5ae..fb62f85 100644 --- a/lib/rules/no-call-expression-references-unsupported-namespace.js +++ b/lib/rules/no-call-expression-references-unsupported-namespace.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-call-expression-references-unsupported-namespace'; diff --git a/lib/rules/no-class-refers-to-parent-class-from-unsupported-namespace.js b/lib/rules/no-class-refers-to-parent-class-from-unsupported-namespace.js index 7ddeca9..9643188 100644 --- a/lib/rules/no-class-refers-to-parent-class-from-unsupported-namespace.js +++ b/lib/rules/no-class-refers-to-parent-class-from-unsupported-namespace.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-class-refers-to-parent-class-from-unsupported-namespace'; diff --git a/lib/rules/no-composition-on-unanalyzable-getter-property.js b/lib/rules/no-composition-on-unanalyzable-getter-property.js index c73da4e..6bfd720 100644 --- a/lib/rules/no-composition-on-unanalyzable-getter-property.js +++ b/lib/rules/no-composition-on-unanalyzable-getter-property.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-composition-on-unanalyzable-getter-property'; diff --git a/lib/rules/no-composition-on-unanalyzable-property-from-unresolvable-wire.js b/lib/rules/no-composition-on-unanalyzable-property-from-unresolvable-wire.js index b98a525..2f6fbff 100644 --- a/lib/rules/no-composition-on-unanalyzable-property-from-unresolvable-wire.js +++ b/lib/rules/no-composition-on-unanalyzable-property-from-unresolvable-wire.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-composition-on-unanalyzable-property-from-unresolvable-wire'; diff --git a/lib/rules/no-composition-on-unanalyzable-property-missing.js b/lib/rules/no-composition-on-unanalyzable-property-missing.js index ebd7f7f..ae4ec27 100644 --- a/lib/rules/no-composition-on-unanalyzable-property-missing.js +++ b/lib/rules/no-composition-on-unanalyzable-property-missing.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-composition-on-unanalyzable-property-missing'; diff --git a/lib/rules/no-composition-on-unanalyzable-property-non-public.js b/lib/rules/no-composition-on-unanalyzable-property-non-public.js index 7e39eed..cd432b8 100644 --- a/lib/rules/no-composition-on-unanalyzable-property-non-public.js +++ b/lib/rules/no-composition-on-unanalyzable-property-non-public.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-composition-on-unanalyzable-property-non-public'; diff --git a/lib/rules/no-eval-usage.js b/lib/rules/no-eval-usage.js index f405a97..8f1f071 100644 --- a/lib/rules/no-eval-usage.js +++ b/lib/rules/no-eval-usage.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-eval-usage'; diff --git a/lib/rules/no-expression-contains-module-level-variable-ref.js b/lib/rules/no-expression-contains-module-level-variable-ref.js index 76e874c..03fd9d7 100644 --- a/lib/rules/no-expression-contains-module-level-variable-ref.js +++ b/lib/rules/no-expression-contains-module-level-variable-ref.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-expression-contains-module-level-variable-ref'; diff --git a/lib/rules/no-functions-declared-within-getter-method.js b/lib/rules/no-functions-declared-within-getter-method.js index 19ed739..eb75a1d 100644 --- a/lib/rules/no-functions-declared-within-getter-method.js +++ b/lib/rules/no-functions-declared-within-getter-method.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-functions-declared-within-getter-method'; diff --git a/lib/rules/no-getter-contains-more-than-return-statement.js b/lib/rules/no-getter-contains-more-than-return-statement.js index 0ab4441..2c53060 100644 --- a/lib/rules/no-getter-contains-more-than-return-statement.js +++ b/lib/rules/no-getter-contains-more-than-return-statement.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-getter-contains-more-than-return-statement'; diff --git a/lib/rules/no-member-expression-contains-non-portable-identifier.js b/lib/rules/no-member-expression-contains-non-portable-identifier.js index d275e56..7312085 100644 --- a/lib/rules/no-member-expression-contains-non-portable-identifier.js +++ b/lib/rules/no-member-expression-contains-non-portable-identifier.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-member-expression-contains-non-portable-identifier'; diff --git a/lib/rules/no-member-expression-reference-to-non-existent-member-variable.js b/lib/rules/no-member-expression-reference-to-non-existent-member-variable.js index 1cf2dcc..d5ac518 100644 --- a/lib/rules/no-member-expression-reference-to-non-existent-member-variable.js +++ b/lib/rules/no-member-expression-reference-to-non-existent-member-variable.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-member-expression-reference-to-non-existent-member-variable'; diff --git a/lib/rules/no-member-expression-reference-to-super-class.js b/lib/rules/no-member-expression-reference-to-super-class.js index 81c9cf9..cdb6401 100644 --- a/lib/rules/no-member-expression-reference-to-super-class.js +++ b/lib/rules/no-member-expression-reference-to-super-class.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-member-expression-reference-to-super-class'; diff --git a/lib/rules/no-member-expression-reference-to-unsupported-global.js b/lib/rules/no-member-expression-reference-to-unsupported-global.js index 963c4df..926ecfe 100644 --- a/lib/rules/no-member-expression-reference-to-unsupported-global.js +++ b/lib/rules/no-member-expression-reference-to-unsupported-global.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-member-expression-reference-to-unsupported-global'; diff --git a/lib/rules/no-member-expression-reference-to-unsupported-namespace-reference.js b/lib/rules/no-member-expression-reference-to-unsupported-namespace-reference.js index e696ad7..b8e23a8 100644 --- a/lib/rules/no-member-expression-reference-to-unsupported-namespace-reference.js +++ b/lib/rules/no-member-expression-reference-to-unsupported-namespace-reference.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-member-expression-reference-to-unsupported-namespace-reference'; diff --git a/lib/rules/no-missing-resource-cannot-prime-wire-adapter.js b/lib/rules/no-missing-resource-cannot-prime-wire-adapter.js index e5a543c..8441186 100644 --- a/lib/rules/no-missing-resource-cannot-prime-wire-adapter.js +++ b/lib/rules/no-missing-resource-cannot-prime-wire-adapter.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-missing-resource-cannot-prime-wire-adapter'; diff --git a/lib/rules/no-multiple-template-files.js b/lib/rules/no-multiple-template-files.js index 7d05a56..7aa47e7 100644 --- a/lib/rules/no-multiple-template-files.js +++ b/lib/rules/no-multiple-template-files.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-multiple-template-files'; diff --git a/lib/rules/no-private-wire-config-property.js b/lib/rules/no-private-wire-config-property.js index 1438911..bf0d50b 100644 --- a/lib/rules/no-private-wire-config-property.js +++ b/lib/rules/no-private-wire-config-property.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-private-wire-config-property'; diff --git a/lib/rules/no-reference-to-class-functions.js b/lib/rules/no-reference-to-class-functions.js index 29a1a35..92e95af 100644 --- a/lib/rules/no-reference-to-class-functions.js +++ b/lib/rules/no-reference-to-class-functions.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-reference-to-class-functions'; diff --git a/lib/rules/no-reference-to-module-functions.js b/lib/rules/no-reference-to-module-functions.js index f26c113..244dbea 100644 --- a/lib/rules/no-reference-to-module-functions.js +++ b/lib/rules/no-reference-to-module-functions.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-reference-to-module-functions'; diff --git a/lib/rules/no-reference-to-unsupported-namespace-reference.js b/lib/rules/no-reference-to-unsupported-namespace-reference.js index 422992b..4e04819 100644 --- a/lib/rules/no-reference-to-unsupported-namespace-reference.js +++ b/lib/rules/no-reference-to-unsupported-namespace-reference.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-reference-to-unsupported-namespace-reference'; diff --git a/lib/rules/no-render-function-contains-more-than-return-statement.js b/lib/rules/no-render-function-contains-more-than-return-statement.js index f3fd144..d70687d 100644 --- a/lib/rules/no-render-function-contains-more-than-return-statement.js +++ b/lib/rules/no-render-function-contains-more-than-return-statement.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-render-function-contains-more-than-return-statement'; diff --git a/lib/rules/no-render-function-return-statement-not-returning-imported-template.js b/lib/rules/no-render-function-return-statement-not-returning-imported-template.js index 9c69b5a..3dfc05e 100644 --- a/lib/rules/no-render-function-return-statement-not-returning-imported-template.js +++ b/lib/rules/no-render-function-return-statement-not-returning-imported-template.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-render-function-return-statement-not-returning-imported-template'; diff --git a/lib/rules/no-render-function-return-statement.js b/lib/rules/no-render-function-return-statement.js index 1de2340..948556b 100644 --- a/lib/rules/no-render-function-return-statement.js +++ b/lib/rules/no-render-function-return-statement.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-render-function-return-statement'; diff --git a/lib/rules/no-tagged-template-expression-contains-unsupported-namespace.js b/lib/rules/no-tagged-template-expression-contains-unsupported-namespace.js index 7a63ae2..4012fd8 100644 --- a/lib/rules/no-tagged-template-expression-contains-unsupported-namespace.js +++ b/lib/rules/no-tagged-template-expression-contains-unsupported-namespace.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-tagged-template-expression-contains-unsupported-namespace'; diff --git a/lib/rules/no-unresolved-parent-class-reference.js b/lib/rules/no-unresolved-parent-class-reference.js index 7029a2c..ce2955c 100644 --- a/lib/rules/no-unresolved-parent-class-reference.js +++ b/lib/rules/no-unresolved-parent-class-reference.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-unresolved-parent-class-reference'; diff --git a/lib/rules/no-unsupported-member-variable-in-member-expression.js b/lib/rules/no-unsupported-member-variable-in-member-expression.js index 046c532..36b6925 100644 --- a/lib/rules/no-unsupported-member-variable-in-member-expression.js +++ b/lib/rules/no-unsupported-member-variable-in-member-expression.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-unsupported-member-variable-in-member-expression'; diff --git a/lib/rules/no-wire-adapter-of-resource-cannot-be-primed.js b/lib/rules/no-wire-adapter-of-resource-cannot-be-primed.js index 26659a2..d13cb43 100644 --- a/lib/rules/no-wire-adapter-of-resource-cannot-be-primed.js +++ b/lib/rules/no-wire-adapter-of-resource-cannot-be-primed.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-wire-adapter-of-resource-cannot-be-primed'; diff --git a/lib/rules/no-wire-config-property-circular-wire-dependency.js b/lib/rules/no-wire-config-property-circular-wire-dependency.js index e316893..1347b34 100644 --- a/lib/rules/no-wire-config-property-circular-wire-dependency.js +++ b/lib/rules/no-wire-config-property-circular-wire-dependency.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-wire-config-property-circular-wire-dependency'; diff --git a/lib/rules/no-wire-config-property-uses-getter-function-returning-inaccessible-import.js b/lib/rules/no-wire-config-property-uses-getter-function-returning-inaccessible-import.js index 51afd98..c688d9c 100644 --- a/lib/rules/no-wire-config-property-uses-getter-function-returning-inaccessible-import.js +++ b/lib/rules/no-wire-config-property-uses-getter-function-returning-inaccessible-import.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-wire-config-property-uses-getter-function-returning-inaccessible-import'; diff --git a/lib/rules/no-wire-config-property-uses-getter-function-returning-non-literal.js b/lib/rules/no-wire-config-property-uses-getter-function-returning-non-literal.js index 1bca3f5..2af01ef 100644 --- a/lib/rules/no-wire-config-property-uses-getter-function-returning-non-literal.js +++ b/lib/rules/no-wire-config-property-uses-getter-function-returning-non-literal.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-wire-config-property-uses-getter-function-returning-non-literal'; diff --git a/lib/rules/no-wire-config-property-uses-imported-artifact-from-unsupported-namespace.js b/lib/rules/no-wire-config-property-uses-imported-artifact-from-unsupported-namespace.js index b0338fe..1bf006b 100644 --- a/lib/rules/no-wire-config-property-uses-imported-artifact-from-unsupported-namespace.js +++ b/lib/rules/no-wire-config-property-uses-imported-artifact-from-unsupported-namespace.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-wire-config-property-uses-imported-artifact-from-unsupported-namespace'; diff --git a/lib/rules/no-wire-config-references-non-local-property-reactive-value.js b/lib/rules/no-wire-config-references-non-local-property-reactive-value.js index 7397296..faba0a8 100644 --- a/lib/rules/no-wire-config-references-non-local-property-reactive-value.js +++ b/lib/rules/no-wire-config-references-non-local-property-reactive-value.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-wire-config-references-non-local-property-reactive-value'; diff --git a/lib/rules/no-wire-configuration-property-using-output-of-non-primeable-wire.js b/lib/rules/no-wire-configuration-property-using-output-of-non-primeable-wire.js index 5281bb8..c0edda7 100644 --- a/lib/rules/no-wire-configuration-property-using-output-of-non-primeable-wire.js +++ b/lib/rules/no-wire-configuration-property-using-output-of-non-primeable-wire.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { createRule } = require('../util/createRule'); const ruleName = 'no-wire-configuration-property-using-output-of-non-primeable-wire'; diff --git a/lib/util/bundle-state-manager.js b/lib/util/bundle-state-manager.js index 6855b8f..13726e9 100644 --- a/lib/util/bundle-state-manager.js +++ b/lib/util/bundle-state-manager.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - /** * Manages the state of LWC bundles during ESLint processing. * Uses the bundle's unique key for lookups. diff --git a/lib/util/createRule.js b/lib/util/createRule.js index c225eb7..e7850d3 100644 --- a/lib/util/createRule.js +++ b/lib/util/createRule.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { docUrl } = require('./doc-url'); const { analyzeLWC } = require('./helper'); diff --git a/lib/util/doc-url.js b/lib/util/doc-url.js index bb138a6..6eb565d 100644 --- a/lib/util/doc-url.js +++ b/lib/util/doc-url.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { version, homepage } = require('../../package.json'); function docUrl(ruleName) { diff --git a/lib/util/filesystem-provider.js b/lib/util/filesystem-provider.js index 58c8a15..5e93658 100644 --- a/lib/util/filesystem-provider.js +++ b/lib/util/filesystem-provider.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { readdirSync, readFileSync, existsSync } = require('fs'); /** @@ -18,7 +16,6 @@ class FilesystemProvider { * @param {string} path - The path to check * @returns {boolean} True if the file exists */ - // eslint-disable-next-line no-unused-vars existsSync(path) { throw new Error('Method not implemented'); } @@ -28,7 +25,6 @@ class FilesystemProvider { * @param {string} path - The directory path * @returns {string[]} Array of filenames */ - // eslint-disable-next-line no-unused-vars readdirSync(path) { throw new Error('Method not implemented'); } @@ -39,7 +35,6 @@ class FilesystemProvider { * @param {Object} options - Read options * @returns {string} The file contents */ - // eslint-disable-next-line no-unused-vars readFileSync(path, options) { throw new Error('Method not implemented'); } diff --git a/lib/util/hash-utils.js b/lib/util/hash-utils.js index 190a6aa..7b107df 100644 --- a/lib/util/hash-utils.js +++ b/lib/util/hash-utils.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const crypto = require('crypto'); /** diff --git a/lib/util/helper.js b/lib/util/helper.js index 17d8e14..340b242 100644 --- a/lib/util/helper.js +++ b/lib/util/helper.js @@ -5,12 +5,9 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { basename, extname } = require('path'); const bundleStateManager = require('./bundle-state-manager'); const StaticAnalyzerProvider = require('./static-analyzer-provider'); -// eslint-disable-next-line no-unused-vars const LwcBundle = require('../lwc-bundle'); const lwcNamespace = 'c'; diff --git a/lib/util/static-analyzer-interface.js b/lib/util/static-analyzer-interface.js index 61a8875..4c61cc5 100644 --- a/lib/util/static-analyzer-interface.js +++ b/lib/util/static-analyzer-interface.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - /** * Interface for static analysis functionality */ @@ -28,7 +26,6 @@ class StaticAnalyzerInterface { * @param {Object} options.files - The files to analyze * @returns {Array} The generated diagnostics */ - // eslint-disable-next-line no-unused-vars generatePrimingDiagnosticsModule(options) { throw new Error('Method not implemented'); } diff --git a/lib/util/static-analyzer-provider.js b/lib/util/static-analyzer-provider.js index 54d4a1f..6310b5d 100644 --- a/lib/util/static-analyzer-provider.js +++ b/lib/util/static-analyzer-provider.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const StaticAnalyzerInterface = require('./static-analyzer-interface'); const staticAnalyzer = require('@komaci/static-analyzer'); diff --git a/package.json b/package.json index 17ada6a..ef06b0b 100644 --- a/package.json +++ b/package.json @@ -1,94 +1,100 @@ { - "name": "@salesforce/eslint-plugin-lwc-graph-analyzer", - "version": "1.0.0", - "description": "ESLint plugin to analyze data graph in a LWC component", - "contributors": [ - { - "name": "Andrew Huffman", - "url": "https://github.com/AndrewHuffman" - }, - { - "name": "Kevin Hawkins", - "url": "https://github.com/khawkins" - }, - { - "name": "Meisam Seyed Aliroteh", - "url": "https://github.com/maliroteh-sf" - }, - { - "name": "Takashi Arai", - "url": "https://github.com/sfdctaka" - }, - { - "name": "Dustin Breese", - "url": "https://github.com/dbreese" - } - ], - "homepage": "https://github.com/salesforce/eslint-plugin-lwc-graph-analyzer", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/salesforce/eslint-plugin-lwc-graph-analyzer.git" + "name": "@salesforce/eslint-plugin-lwc-graph-analyzer", + "version": "1.0.0", + "description": "ESLint plugin to analyze data graph in a LWC component", + "contributors": [ + { + "name": "Andrew Huffman", + "url": "https://github.com/AndrewHuffman" }, - "main": "lib/index.js", - "types": "lib/index.d.ts", - "directories": { - "lib": "lib", - "rules": "lib/rules", - "test": "test" + { + "name": "Kevin Hawkins", + "url": "https://github.com/khawkins" }, - "files": [ - "/lib", - "!**/test/" - ], - "devDependencies": { - "chai": "^4.5.0", - "eslint": "^9.28.0", - "eslint-plugin-eslint-plugin": "^6.4.0", - "eslint-plugin-node": "^11.1.0", - "jest": "^29.7.0", - "jest-chain": "^1.1.6", - "jest-extended": "^4.0.2", - "jest-junit": "^16.0.0", - "jest-sonar-reporter": "^2.0.0", - "prettier": "^3.5.3" + { + "name": "Meisam Seyed Aliroteh", + "url": "https://github.com/maliroteh-sf" }, - "dependencies": { - "@babel/core": "^7.27.4", - "@babel/eslint-parser": "^7.27.5", - "@komaci/static-analyzer": "^252.1.0", - "@lwc/errors": "~3.5.0", - "@lwc/metadata": "3.5.0-0", - "@lwc/sfdc-compiler-utils": "3.5.0-0", - "@lwc/template-compiler": "~3.5.0", - "@types/eslint": "^9.6.1" + { + "name": "Takashi Arai", + "url": "https://github.com/sfdctaka" }, - "scripts": { - "format": "prettier --list-different \"**/*.js\"", - "format:fix": "prettier --write \"**/*.{js,json}\"", - "lint": "eslint lib test", - "test": "yarn jest --coverage" - }, - "jestSonar": { - "sonar56x": true, - "reportPath": "reports/coverage", - "reportFile": "sonar-report.xml", - "indent": 4 - }, - "prettier": { - "printWidth": 100, - "tabWidth": 4, - "singleQuote": true, - "trailingComma": "none" - }, - "engines": { - "node": ">=20" - }, - "peerDependencies": { - "eslint": ">=7" - }, - "volta": { - "node": "20.18.0", - "yarn": "1.22.22" + { + "name": "Dustin Breese", + "url": "https://github.com/dbreese" } + ], + "homepage": "https://github.com/salesforce/eslint-plugin-lwc-graph-analyzer", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/salesforce/eslint-plugin-lwc-graph-analyzer.git" + }, + "main": "lib/index.js", + "types": "lib/index.d.ts", + "directories": { + "lib": "lib", + "rules": "lib/rules", + "test": "test" + }, + "files": [ + "lib/**/*", + "!**/test/**" + ], + "devDependencies": { + "@eslint/js": "^9.28.0", + "@typescript-eslint/parser": "^8.34.0", + "chai": "^4.5.0", + "eslint": "^9.28.0", + "eslint-plugin-eslint-plugin": "^6.4.0", + "eslint-plugin-n": "^17.19.0", + "husky": "^9.1.7", + "jest": "^29.7.0", + "jest-chain": "^1.1.6", + "jest-extended": "^4.0.2", + "jest-junit": "^16.0.0", + "jest-sonar-reporter": "^2.0.0", + "prettier": "^3.5.3", + "typescript": "^5.8.3", + "typescript-eslint": "^8.34.0" + }, + "dependencies": { + "@babel/core": "^7.27.4", + "@babel/eslint-parser": "^7.27.5", + "@komaci/static-analyzer": "^252.1.0", + "@lwc/errors": "~3.5.0", + "@lwc/metadata": "3.5.0-0", + "@lwc/sfdc-compiler-utils": "3.5.0-0", + "@lwc/template-compiler": "~3.5.0", + "@types/eslint": "^9.6.1" + }, + "scripts": { + "format": "prettier --list-different \"**/*.js\"", + "format:fix": "prettier --write \"**/*.{js,json}\"", + "lint": "eslint", + "test": "yarn jest --coverage", + "prepare": "husky" + }, + "jestSonar": { + "sonar56x": true, + "reportPath": "reports/coverage", + "reportFile": "sonar-report.xml", + "indent": 4 + }, + "prettier": { + "printWidth": 100, + "tabWidth": 4, + "singleQuote": true, + "trailingComma": "none" + }, + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "eslint": ">=7" + }, + "volta": { + "node": "20.18.0", + "yarn": "1.22.22" + } } diff --git a/test/lib/lwc-bundle.js b/test/lib/lwc-bundle.js index f364a12..d501a62 100644 --- a/test/lib/lwc-bundle.js +++ b/test/lib/lwc-bundle.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { expect } = require('chai'); const LwcBundle = require('../../lib/lwc-bundle'); const { FilesystemProvider } = require('../../lib/util/filesystem-provider'); diff --git a/test/lib/processor.js b/test/lib/processor.js index 59ce0a9..61c7403 100644 --- a/test/lib/processor.js +++ b/test/lib/processor.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { expect } = require('chai'); const bundleAnalyzer = require('../../lib/processor'); const LwcBundle = require('../../lib/lwc-bundle'); diff --git a/test/lib/rules/artifacts-combined-files/fileUpload/no-getter-contains-more-than-return-statement.js b/test/lib/rules/artifacts-combined-files/fileUpload/no-getter-contains-more-than-return-statement.js index be6f2e6..e5d5d75 100644 --- a/test/lib/rules/artifacts-combined-files/fileUpload/no-getter-contains-more-than-return-statement.js +++ b/test/lib/rules/artifacts-combined-files/fileUpload/no-getter-contains-more-than-return-statement.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { assert } = require('chai'); const { lintBundle, lintProgrammaticBundle } = require('../helper'); diff --git a/test/lib/rules/artifacts-combined-files/helper.js b/test/lib/rules/artifacts-combined-files/helper.js index cd7152a..cbc6807 100644 --- a/test/lib/rules/artifacts-combined-files/helper.js +++ b/test/lib/rules/artifacts-combined-files/helper.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { readFileSync } = require('fs'); const { basename, dirname, join, parse, extname } = require('path'); const { Linter } = require('eslint'); diff --git a/test/lib/rules/artifacts-combined-files/invalidGetterFunction/no-unsupported-member-variable-in-member-expression.js b/test/lib/rules/artifacts-combined-files/invalidGetterFunction/no-unsupported-member-variable-in-member-expression.js index 89bb0fa..aa99515 100644 --- a/test/lib/rules/artifacts-combined-files/invalidGetterFunction/no-unsupported-member-variable-in-member-expression.js +++ b/test/lib/rules/artifacts-combined-files/invalidGetterFunction/no-unsupported-member-variable-in-member-expression.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { assert } = require('chai'); const { lintBundle, lintProgrammaticBundle } = require('../helper'); diff --git a/test/lib/rules/artifacts-combined-files/multipleTemplateFiles/no-composition-on-unanalyzable-property-non-public.js b/test/lib/rules/artifacts-combined-files/multipleTemplateFiles/no-composition-on-unanalyzable-property-non-public.js index c254924..81f8ec7 100644 --- a/test/lib/rules/artifacts-combined-files/multipleTemplateFiles/no-composition-on-unanalyzable-property-non-public.js +++ b/test/lib/rules/artifacts-combined-files/multipleTemplateFiles/no-composition-on-unanalyzable-property-non-public.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { assert } = require('chai'); const { lintBundle, lintProgrammaticBundle } = require('../helper'); diff --git a/test/lib/rules/artifacts-combined-files/multipleTemplateFiles/no-multiple-template-files.js b/test/lib/rules/artifacts-combined-files/multipleTemplateFiles/no-multiple-template-files.js index c14fa5e..debac76 100644 --- a/test/lib/rules/artifacts-combined-files/multipleTemplateFiles/no-multiple-template-files.js +++ b/test/lib/rules/artifacts-combined-files/multipleTemplateFiles/no-multiple-template-files.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { assert } = require('chai'); const { lintBundle, lintProgrammaticBundle } = require('../helper'); diff --git a/test/lib/rules/artifacts-combined-files/unresolvedImageBinding/no-composition-on-unanalyzable-property-non-public.js b/test/lib/rules/artifacts-combined-files/unresolvedImageBinding/no-composition-on-unanalyzable-property-non-public.js index 7e08fd9..9b271b5 100644 --- a/test/lib/rules/artifacts-combined-files/unresolvedImageBinding/no-composition-on-unanalyzable-property-non-public.js +++ b/test/lib/rules/artifacts-combined-files/unresolvedImageBinding/no-composition-on-unanalyzable-property-non-public.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { assert } = require('chai'); const { lintBundle, lintProgrammaticBundle } = require('../helper'); diff --git a/test/lib/rules/artifacts-combined-files/unresolvedImageBindingEmptyClass/no-composition-on-unanalyzable-property-missing.js b/test/lib/rules/artifacts-combined-files/unresolvedImageBindingEmptyClass/no-composition-on-unanalyzable-property-missing.js index de2e71f..c39e2de 100644 --- a/test/lib/rules/artifacts-combined-files/unresolvedImageBindingEmptyClass/no-composition-on-unanalyzable-property-missing.js +++ b/test/lib/rules/artifacts-combined-files/unresolvedImageBindingEmptyClass/no-composition-on-unanalyzable-property-missing.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { assert } = require('chai'); const { lintBundle, lintProgrammaticBundle } = require('../helper'); diff --git a/test/lib/rules/artifacts-combined-files/unresolvedIterator/no-composition-on-unanalyzable-property-from-unresolvable-wire.js b/test/lib/rules/artifacts-combined-files/unresolvedIterator/no-composition-on-unanalyzable-property-from-unresolvable-wire.js index c1e7213..1302850 100644 --- a/test/lib/rules/artifacts-combined-files/unresolvedIterator/no-composition-on-unanalyzable-property-from-unresolvable-wire.js +++ b/test/lib/rules/artifacts-combined-files/unresolvedIterator/no-composition-on-unanalyzable-property-from-unresolvable-wire.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { assert } = require('chai'); const { lintBundle, lintProgrammaticBundle } = require('../helper'); diff --git a/test/lib/rules/artifacts-combined-files/unresolvedIteratorGetter/no-composition-on-unanalyzable-getter-property.js b/test/lib/rules/artifacts-combined-files/unresolvedIteratorGetter/no-composition-on-unanalyzable-getter-property.js index 7c6a6f4..c87d8b1 100644 --- a/test/lib/rules/artifacts-combined-files/unresolvedIteratorGetter/no-composition-on-unanalyzable-getter-property.js +++ b/test/lib/rules/artifacts-combined-files/unresolvedIteratorGetter/no-composition-on-unanalyzable-getter-property.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { assert } = require('chai'); const { lintBundle, lintProgrammaticBundle } = require('../helper'); diff --git a/test/lib/rules/no-assignment-expression-assigns-value-to-member-variable.js b/test/lib/rules/no-assignment-expression-assigns-value-to-member-variable.js index b0cbf84..8745f01 100644 --- a/test/lib/rules/no-assignment-expression-assigns-value-to-member-variable.js +++ b/test/lib/rules/no-assignment-expression-assigns-value-to-member-variable.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-assignment-expression-for-external-components.js b/test/lib/rules/no-assignment-expression-for-external-components.js index 2f92df3..fd9212f 100644 --- a/test/lib/rules/no-assignment-expression-for-external-components.js +++ b/test/lib/rules/no-assignment-expression-for-external-components.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-call-expression-references-unsupported-namespace.js b/test/lib/rules/no-call-expression-references-unsupported-namespace.js index 2fa1091..4b23220 100644 --- a/test/lib/rules/no-call-expression-references-unsupported-namespace.js +++ b/test/lib/rules/no-call-expression-references-unsupported-namespace.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-class-refers-to-parent-class-from-unsupported-namespace.js b/test/lib/rules/no-class-refers-to-parent-class-from-unsupported-namespace.js index 483e328..7a19c3b 100644 --- a/test/lib/rules/no-class-refers-to-parent-class-from-unsupported-namespace.js +++ b/test/lib/rules/no-class-refers-to-parent-class-from-unsupported-namespace.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-eval-usage.js b/test/lib/rules/no-eval-usage.js index 34f8ffe..9cf3104 100644 --- a/test/lib/rules/no-eval-usage.js +++ b/test/lib/rules/no-eval-usage.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-expression-contains-module-level-variable-ref.js b/test/lib/rules/no-expression-contains-module-level-variable-ref.js index 0f45769..d7256cd 100644 --- a/test/lib/rules/no-expression-contains-module-level-variable-ref.js +++ b/test/lib/rules/no-expression-contains-module-level-variable-ref.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-functions-declared-within-getter-method.js b/test/lib/rules/no-functions-declared-within-getter-method.js index ce25d3e..04b173d 100644 --- a/test/lib/rules/no-functions-declared-within-getter-method.js +++ b/test/lib/rules/no-functions-declared-within-getter-method.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-getter-contains-more-than-return-statement.js b/test/lib/rules/no-getter-contains-more-than-return-statement.js index d03c49d..3b08f63 100644 --- a/test/lib/rules/no-getter-contains-more-than-return-statement.js +++ b/test/lib/rules/no-getter-contains-more-than-return-statement.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-member-expression-contains-non-portable-identifier.js b/test/lib/rules/no-member-expression-contains-non-portable-identifier.js index d9aff90..8e56211 100644 --- a/test/lib/rules/no-member-expression-contains-non-portable-identifier.js +++ b/test/lib/rules/no-member-expression-contains-non-portable-identifier.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-member-expression-reference-to-non-existent-member-variable.js b/test/lib/rules/no-member-expression-reference-to-non-existent-member-variable.js index 9fa2f96..e063ecc 100644 --- a/test/lib/rules/no-member-expression-reference-to-non-existent-member-variable.js +++ b/test/lib/rules/no-member-expression-reference-to-non-existent-member-variable.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-member-expression-reference-to-super-class.js b/test/lib/rules/no-member-expression-reference-to-super-class.js index beaae79..17369b5 100644 --- a/test/lib/rules/no-member-expression-reference-to-super-class.js +++ b/test/lib/rules/no-member-expression-reference-to-super-class.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-member-expression-reference-to-unsupported-global.js b/test/lib/rules/no-member-expression-reference-to-unsupported-global.js index cb3e24d..3b006a0 100644 --- a/test/lib/rules/no-member-expression-reference-to-unsupported-global.js +++ b/test/lib/rules/no-member-expression-reference-to-unsupported-global.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-member-expression-reference-to-unsupported-namespace-reference.js b/test/lib/rules/no-member-expression-reference-to-unsupported-namespace-reference.js index 2e61c97..253d27b 100644 --- a/test/lib/rules/no-member-expression-reference-to-unsupported-namespace-reference.js +++ b/test/lib/rules/no-member-expression-reference-to-unsupported-namespace-reference.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-missing-resource-cannot-prime-wire-adapter.js b/test/lib/rules/no-missing-resource-cannot-prime-wire-adapter.js index cf71821..8054aa2 100644 --- a/test/lib/rules/no-missing-resource-cannot-prime-wire-adapter.js +++ b/test/lib/rules/no-missing-resource-cannot-prime-wire-adapter.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-private-wire-config-property.js b/test/lib/rules/no-private-wire-config-property.js index 7903a10..fb6ea73 100644 --- a/test/lib/rules/no-private-wire-config-property.js +++ b/test/lib/rules/no-private-wire-config-property.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-reference-to-class-functions.js b/test/lib/rules/no-reference-to-class-functions.js index b6781e9..da4926e 100644 --- a/test/lib/rules/no-reference-to-class-functions.js +++ b/test/lib/rules/no-reference-to-class-functions.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-reference-to-module-functions.js b/test/lib/rules/no-reference-to-module-functions.js index b377d96..5424713 100644 --- a/test/lib/rules/no-reference-to-module-functions.js +++ b/test/lib/rules/no-reference-to-module-functions.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-reference-to-unsupported-namespace-reference.js b/test/lib/rules/no-reference-to-unsupported-namespace-reference.js index 4a5205f..747bfb1 100644 --- a/test/lib/rules/no-reference-to-unsupported-namespace-reference.js +++ b/test/lib/rules/no-reference-to-unsupported-namespace-reference.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-unresolved-parent-class-reference.js b/test/lib/rules/no-unresolved-parent-class-reference.js index d261f03..047d1c7 100644 --- a/test/lib/rules/no-unresolved-parent-class-reference.js +++ b/test/lib/rules/no-unresolved-parent-class-reference.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-wire-adapter-of-resource-cannot-be-primed.js b/test/lib/rules/no-wire-adapter-of-resource-cannot-be-primed.js index b97d6ed..14db579 100644 --- a/test/lib/rules/no-wire-adapter-of-resource-cannot-be-primed.js +++ b/test/lib/rules/no-wire-adapter-of-resource-cannot-be-primed.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-wire-config-property-circular-wire-dependency.js b/test/lib/rules/no-wire-config-property-circular-wire-dependency.js index fab6db9..9903039 100644 --- a/test/lib/rules/no-wire-config-property-circular-wire-dependency.js +++ b/test/lib/rules/no-wire-config-property-circular-wire-dependency.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-wire-config-property-uses-getter-function-returning-inaccessible-import.js b/test/lib/rules/no-wire-config-property-uses-getter-function-returning-inaccessible-import.js index b5fb9f0..ce0212d 100644 --- a/test/lib/rules/no-wire-config-property-uses-getter-function-returning-inaccessible-import.js +++ b/test/lib/rules/no-wire-config-property-uses-getter-function-returning-inaccessible-import.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-wire-config-property-uses-getter-function-returning-non-literal.js b/test/lib/rules/no-wire-config-property-uses-getter-function-returning-non-literal.js index 2188007..b65aea4 100644 --- a/test/lib/rules/no-wire-config-property-uses-getter-function-returning-non-literal.js +++ b/test/lib/rules/no-wire-config-property-uses-getter-function-returning-non-literal.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-wire-config-property-uses-imported-artifact-from-unsupported-namespace.js b/test/lib/rules/no-wire-config-property-uses-imported-artifact-from-unsupported-namespace.js index d8f0e6a..5f2a9ec 100644 --- a/test/lib/rules/no-wire-config-property-uses-imported-artifact-from-unsupported-namespace.js +++ b/test/lib/rules/no-wire-config-property-uses-imported-artifact-from-unsupported-namespace.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-wire-config-references-non-local-property-reactive-value.js b/test/lib/rules/no-wire-config-references-non-local-property-reactive-value.js index 6075e81..2cf2f20 100644 --- a/test/lib/rules/no-wire-config-references-non-local-property-reactive-value.js +++ b/test/lib/rules/no-wire-config-references-non-local-property-reactive-value.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/no-wire-configuration-property-using-output-of-non-primeable-wire.js b/test/lib/rules/no-wire-configuration-property-using-output-of-non-primeable-wire.js index fb02d2f..2bf3ad5 100644 --- a/test/lib/rules/no-wire-configuration-property-using-output-of-non-primeable-wire.js +++ b/test/lib/rules/no-wire-configuration-property-using-output-of-non-primeable-wire.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { RuleTester } = require('eslint'); const { RULE_TESTER_CONFIG } = require('./shared'); const lwcGraphAnalyzer = require('../../../lib/index'); diff --git a/test/lib/rules/shared.js b/test/lib/rules/shared.js index 7617fbc..2657ddd 100644 --- a/test/lib/rules/shared.js +++ b/test/lib/rules/shared.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const RULE_TESTER_CONFIG = { languageOptions: { parser: require('@babel/eslint-parser'), diff --git a/test/lib/util/bundle-state-manager.js b/test/lib/util/bundle-state-manager.js index 6bfe1ea..c145f33 100644 --- a/test/lib/util/bundle-state-manager.js +++ b/test/lib/util/bundle-state-manager.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { expect } = require('chai'); const bundleStateManager = require('../../../lib/util/bundle-state-manager'); const LwcBundle = require('../../../lib/lwc-bundle'); diff --git a/test/lib/util/filesystem-provider.js b/test/lib/util/filesystem-provider.js index 1ae0c65..e6d3e1e 100644 --- a/test/lib/util/filesystem-provider.js +++ b/test/lib/util/filesystem-provider.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { expect } = require('chai'); const { FilesystemProvider, diff --git a/test/lib/util/helper.js b/test/lib/util/helper.js index 3da61ec..0cd9e18 100644 --- a/test/lib/util/helper.js +++ b/test/lib/util/helper.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { expect } = require('chai'); const { getKomaciReport, setStaticAnalyzerProvider } = require('../../../lib/util/helper'); const LwcBundle = require('../../../lib/lwc-bundle'); diff --git a/test/lib/util/mock-static-analyzer.js b/test/lib/util/mock-static-analyzer.js index 242832e..bdc89bb 100644 --- a/test/lib/util/mock-static-analyzer.js +++ b/test/lib/util/mock-static-analyzer.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const StaticAnalyzerInterface = require('../../../lib/util/static-analyzer-interface'); /** diff --git a/test/lib/util/static-analyzer-interface.js b/test/lib/util/static-analyzer-interface.js index 8ba9570..d06253f 100644 --- a/test/lib/util/static-analyzer-interface.js +++ b/test/lib/util/static-analyzer-interface.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { expect } = require('chai'); const StaticAnalyzerInterface = require('../../../lib/util/static-analyzer-interface'); diff --git a/test/plugin.js b/test/plugin.js index 8f8f935..04b3c6e 100644 --- a/test/plugin.js +++ b/test/plugin.js @@ -5,8 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ -'use strict'; - const { assert } = require('chai'); const staticAnalyzer = require('@komaci/static-analyzer'); const plugin = require('..'); diff --git a/yarn.lock b/yarn.lock index fa731ef..8a50e95 100644 --- a/yarn.lock +++ b/yarn.lock @@ -467,6 +467,13 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.5.0", "@eslint-community/eslint-utils@^4.7.0": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" + integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== + dependencies: + eslint-visitor-keys "^3.4.3" + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -474,7 +481,7 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.12.1": +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0", "@eslint-community/regexpp@^4.12.1": version "4.12.1" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== @@ -515,7 +522,7 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.28.0": +"@eslint/js@9.28.0", "@eslint/js@^9.28.0": version "9.28.0" resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.28.0.tgz#7822ccc2f8cae7c3cd4f902377d520e9ae03f844" integrity sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg== @@ -906,6 +913,27 @@ dependencies: eslint-scope "5.1.1" +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" @@ -1029,6 +1057,103 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin@8.34.0": + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.0.tgz#96c9f818782fe24cd5883a5d517ca1826d3fa9c2" + integrity sha512-QXwAlHlbcAwNlEEMKQS2RCgJsgXrTJdjXT08xEgbPFa2yYQgVjBymxP5DrfrE7X7iodSzd9qBUHUycdyVJTW1w== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.34.0" + "@typescript-eslint/type-utils" "8.34.0" + "@typescript-eslint/utils" "8.34.0" + "@typescript-eslint/visitor-keys" "8.34.0" + graphemer "^1.4.0" + ignore "^7.0.0" + natural-compare "^1.4.0" + ts-api-utils "^2.1.0" + +"@typescript-eslint/parser@8.34.0", "@typescript-eslint/parser@^8.34.0": + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.34.0.tgz#703270426ac529304ae6988482f487c856d9c13f" + integrity sha512-vxXJV1hVFx3IXz/oy2sICsJukaBrtDEQSBiV48/YIV5KWjX1dO+bcIr/kCPrW6weKXvsaGKFNlwH0v2eYdRRbA== + dependencies: + "@typescript-eslint/scope-manager" "8.34.0" + "@typescript-eslint/types" "8.34.0" + "@typescript-eslint/typescript-estree" "8.34.0" + "@typescript-eslint/visitor-keys" "8.34.0" + debug "^4.3.4" + +"@typescript-eslint/project-service@8.34.0": + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.34.0.tgz#449119b72fe9fae185013a6bdbaf1ffbfee6bcaf" + integrity sha512-iEgDALRf970/B2YExmtPMPF54NenZUf4xpL3wsCRx/lgjz6ul/l13R81ozP/ZNuXfnLCS+oPmG7JIxfdNYKELw== + dependencies: + "@typescript-eslint/tsconfig-utils" "^8.34.0" + "@typescript-eslint/types" "^8.34.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@8.34.0": + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.34.0.tgz#9fedaec02370cf79c018a656ab402eb00dc69e67" + integrity sha512-9Ac0X8WiLykl0aj1oYQNcLZjHgBojT6cW68yAgZ19letYu+Hxd0rE0veI1XznSSst1X5lwnxhPbVdwjDRIomRw== + dependencies: + "@typescript-eslint/types" "8.34.0" + "@typescript-eslint/visitor-keys" "8.34.0" + +"@typescript-eslint/tsconfig-utils@8.34.0", "@typescript-eslint/tsconfig-utils@^8.34.0": + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.0.tgz#97d0a24e89a355e9308cebc8e23f255669bf0979" + integrity sha512-+W9VYHKFIzA5cBeooqQxqNriAP0QeQ7xTiDuIOr71hzgffm3EL2hxwWBIIj4GuofIbKxGNarpKqIq6Q6YrShOA== + +"@typescript-eslint/type-utils@8.34.0": + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.34.0.tgz#03e7eb3776129dfd751ba1cac0c6ea4b0fab5ec6" + integrity sha512-n7zSmOcUVhcRYC75W2pnPpbO1iwhJY3NLoHEtbJwJSNlVAZuwqu05zY3f3s2SDWWDSo9FdN5szqc73DCtDObAg== + dependencies: + "@typescript-eslint/typescript-estree" "8.34.0" + "@typescript-eslint/utils" "8.34.0" + debug "^4.3.4" + ts-api-utils "^2.1.0" + +"@typescript-eslint/types@8.34.0", "@typescript-eslint/types@^8.34.0": + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.34.0.tgz#18000f205c59c9aff7f371fc5426b764cf2890fb" + integrity sha512-9V24k/paICYPniajHfJ4cuAWETnt7Ssy+R0Rbcqo5sSFr3QEZ/8TSoUi9XeXVBGXCaLtwTOKSLGcInCAvyZeMA== + +"@typescript-eslint/typescript-estree@8.34.0": + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.0.tgz#c9f3feec511339ef64e9e4884516c3e558f1b048" + integrity sha512-rOi4KZxI7E0+BMqG7emPSK1bB4RICCpF7QD3KCLXn9ZvWoESsOMlHyZPAHyG04ujVplPaHbmEvs34m+wjgtVtg== + dependencies: + "@typescript-eslint/project-service" "8.34.0" + "@typescript-eslint/tsconfig-utils" "8.34.0" + "@typescript-eslint/types" "8.34.0" + "@typescript-eslint/visitor-keys" "8.34.0" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^2.1.0" + +"@typescript-eslint/utils@8.34.0", "@typescript-eslint/utils@^8.26.1": + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.34.0.tgz#7844beebc1153b4d3ec34135c2da53a91e076f8d" + integrity sha512-8L4tWatGchV9A1cKbjaavS6mwYwp39jql8xUmIIKJdm+qiaeHy5KMKlBrf30akXAWBzn2SqKsNOtSENWUwg7XQ== + dependencies: + "@eslint-community/eslint-utils" "^4.7.0" + "@typescript-eslint/scope-manager" "8.34.0" + "@typescript-eslint/types" "8.34.0" + "@typescript-eslint/typescript-estree" "8.34.0" + +"@typescript-eslint/visitor-keys@8.34.0": + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.0.tgz#c7a149407be31d755dba71980617d638a40ac099" + integrity sha512-qHV7pW7E85A0x6qyrFn+O+q1k1p3tQCsqIZ1KZ5ESLXY57aTvUd3/a4rdPTeXisvhXn2VQG0VSKUqs8KHF2zcA== + dependencies: + "@typescript-eslint/types" "8.34.0" + eslint-visitor-keys "^4.2.0" + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -1181,6 +1306,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" @@ -1353,6 +1485,13 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: dependencies: ms "2.1.2" +debug@^4.3.4: + version "4.4.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== + dependencies: + ms "^2.1.3" + dedent@^1.0.0: version "1.5.1" resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" @@ -1400,6 +1539,14 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +enhanced-resolve@^5.17.1: + version "5.18.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz#728ab082f8b7b6836de51f1637aab5d3b9568faf" + integrity sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -1427,13 +1574,21 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-plugin-es@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" - integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== +eslint-compat-utils@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz#7fc92b776d185a70c4070d03fd26fde3d59652e4" + integrity sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q== + dependencies: + semver "^7.5.4" + +eslint-plugin-es-x@^7.8.0: + version "7.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz#a207aa08da37a7923f2a9599e6d3eb73f3f92b74" + integrity sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ== dependencies: - eslint-utils "^2.0.0" - regexpp "^3.0.0" + "@eslint-community/eslint-utils" "^4.1.2" + "@eslint-community/regexpp" "^4.11.0" + eslint-compat-utils "^0.5.1" eslint-plugin-eslint-plugin@^6.4.0: version "6.4.0" @@ -1443,17 +1598,21 @@ eslint-plugin-eslint-plugin@^6.4.0: "@eslint-community/eslint-utils" "^4.4.0" estraverse "^5.3.0" -eslint-plugin-node@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" - integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== - dependencies: - eslint-plugin-es "^3.0.0" - eslint-utils "^2.0.0" - ignore "^5.1.1" - minimatch "^3.0.4" - resolve "^1.10.1" - semver "^6.1.0" +eslint-plugin-n@^17.19.0: + version "17.19.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-17.19.0.tgz#3c198306c2eb9ea950c7458cff9c9a6426d02c58" + integrity sha512-qxn1NaDHtizbhVAPpbMT8wWFaLtPnwhfN/e+chdu2i6Vgzmo/tGM62tcJ1Hf7J5Ie4dhse3DOPMmDxduzfifzw== + dependencies: + "@eslint-community/eslint-utils" "^4.5.0" + "@typescript-eslint/utils" "^8.26.1" + enhanced-resolve "^5.17.1" + eslint-plugin-es-x "^7.8.0" + get-tsconfig "^4.8.1" + globals "^15.11.0" + ignore "^5.3.2" + minimatch "^9.0.5" + semver "^7.6.3" + ts-declaration-location "^1.0.6" eslint-scope@5.1.1: version "5.1.1" @@ -1471,24 +1630,12 @@ eslint-scope@^8.3.0: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.3.0: +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== @@ -1623,6 +1770,17 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-glob@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.8" + fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -1633,6 +1791,13 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fastq@^1.6.0: + version "1.19.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" + integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== + dependencies: + reusify "^1.0.4" + fb-watchman@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" @@ -1723,6 +1888,20 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +get-tsconfig@^4.8.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.10.1.tgz#d34c1c01f47d65a606c37aa7a177bc3e56ab4b2e" + integrity sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ== + dependencies: + resolve-pkg-maps "^1.0.0" + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" @@ -1752,11 +1931,26 @@ globals@^14.0.0: resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== +globals@^15.11.0: + version "15.15.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.15.0.tgz#7c4761299d41c32b075715a4ce1ede7897ff72a8" + integrity sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg== + +graceful-fs@^4.2.4: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" @@ -1784,11 +1978,26 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -ignore@^5.1.1, ignore@^5.2.0: +husky@^9.1.7: + version "9.1.7" + resolved "https://registry.yarnpkg.com/husky/-/husky-9.1.7.tgz#d46a38035d101b46a70456a850ff4201344c0b2d" + integrity sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA== + +ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== +ignore@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +ignore@^7.0.0: + version "7.0.5" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" + integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== + import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -1850,7 +2059,7 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^4.0.0, is-glob@^4.0.3: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -2452,7 +2661,12 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -micromatch@^4.0.4: +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4, micromatch@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== @@ -2472,6 +2686,13 @@ minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" +minimatch@^9.0.4, minimatch@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" @@ -2482,6 +2703,11 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + nanoid@^3.3.6: version "3.3.8" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" @@ -2635,6 +2861,11 @@ picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +picomatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" + integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== + pirates@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" @@ -2706,16 +2937,16 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306" integrity sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ== +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + react-is@^18.0.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -regexpp@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -2738,12 +2969,17 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + resolve.exports@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -resolve@^1.10.1, resolve@^1.20.0: +resolve@^1.20.0: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -2752,7 +2988,19 @@ resolve@^1.10.1, resolve@^1.20.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -semver@^6.0.0, semver@^6.1.0, semver@^6.3.0, semver@^6.3.1: +reusify@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" + integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -2764,6 +3012,11 @@ semver@^7.5.3, semver@^7.5.4: dependencies: lru-cache "^6.0.0" +semver@^7.6.0, semver@^7.6.3: + version "7.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -2879,6 +3132,11 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +tapable@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.2.tgz#ab4984340d30cb9989a490032f086dbb8b56d872" + integrity sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg== + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -2905,6 +3163,18 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +ts-api-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" + integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== + +ts-declaration-location@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/ts-declaration-location/-/ts-declaration-location-1.0.7.tgz#d4068fe9975828b3b453b3ab112b4711d8267688" + integrity sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA== + dependencies: + picomatch "^4.0.2" + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -2927,6 +3197,20 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +typescript-eslint@^8.34.0: + version "8.34.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.34.0.tgz#5bc7e405cd0ed5d6f28d86017519700b77ca1298" + integrity sha512-MRpfN7uYjTrTGigFCt8sRyNqJFhjN0WwZecldaqhWm+wy0gaRt8Edb/3cuUy0zdq2opJWT6iXINKAtewnDOltQ== + dependencies: + "@typescript-eslint/eslint-plugin" "8.34.0" + "@typescript-eslint/parser" "8.34.0" + "@typescript-eslint/utils" "8.34.0" + +typescript@^5.8.3: + version "5.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" + integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== + update-browserslist-db@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5"