From 692651cce7a78bf09872201a09f70ec3a84bda5e Mon Sep 17 00:00:00 2001 From: Yusuke Hirao Date: Tue, 20 Jan 2026 14:45:13 +0900 Subject: [PATCH 1/4] feat(eslint-plugin): add new package with no-click-event rule Add @d-zero/eslint-plugin package that provides custom ESLint rules. Implement no-click-event rule to discourage click event handlers in favor of Invoker Commands API. Detected patterns: - addEventListener("click", ...) - element.onclick = ... - jQuery .on("click", ...) and .click() - React onClick={...} - Vue @click and v-on:click Co-Authored-By: Claude Sonnet 4.5 --- packages/@d-zero/eslint-plugin/CHANGELOG.md | 15 +++ packages/@d-zero/eslint-plugin/LICENSE | 21 ++++ packages/@d-zero/eslint-plugin/README.md | 42 ++++++++ packages/@d-zero/eslint-plugin/package.json | 36 +++++++ packages/@d-zero/eslint-plugin/src/const.ts | 3 + packages/@d-zero/eslint-plugin/src/index.ts | 13 +++ .../src/rules/no-click-event/index.spec.ts | 87 +++++++++++++++ .../src/rules/no-click-event/index.ts | 100 ++++++++++++++++++ .../eslint-plugin/src/utils/create-rule.ts | 8 ++ packages/@d-zero/eslint-plugin/tsconfig.json | 10 ++ 10 files changed, 335 insertions(+) create mode 100644 packages/@d-zero/eslint-plugin/CHANGELOG.md create mode 100644 packages/@d-zero/eslint-plugin/LICENSE create mode 100644 packages/@d-zero/eslint-plugin/README.md create mode 100644 packages/@d-zero/eslint-plugin/package.json create mode 100644 packages/@d-zero/eslint-plugin/src/const.ts create mode 100644 packages/@d-zero/eslint-plugin/src/index.ts create mode 100644 packages/@d-zero/eslint-plugin/src/rules/no-click-event/index.spec.ts create mode 100644 packages/@d-zero/eslint-plugin/src/rules/no-click-event/index.ts create mode 100644 packages/@d-zero/eslint-plugin/src/utils/create-rule.ts create mode 100644 packages/@d-zero/eslint-plugin/tsconfig.json diff --git a/packages/@d-zero/eslint-plugin/CHANGELOG.md b/packages/@d-zero/eslint-plugin/CHANGELOG.md new file mode 100644 index 00000000..9bbcece0 --- /dev/null +++ b/packages/@d-zero/eslint-plugin/CHANGELOG.md @@ -0,0 +1,15 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +## [5.0.0] - TBD + +### Added + +- Initial release of @d-zero/eslint-plugin +- Added `no-click-event` rule to discourage click event handlers in favor of Invoker Commands API + - Detects `addEventListener('click')` + - Detects `onclick` IDL property assignment + - Detects jQuery `.on('click')` and `.click()` + - Detects React `onClick` JSX attribute + - Detects Vue `@click` and `v-on:click` diff --git a/packages/@d-zero/eslint-plugin/LICENSE b/packages/@d-zero/eslint-plugin/LICENSE new file mode 100644 index 00000000..195de67a --- /dev/null +++ b/packages/@d-zero/eslint-plugin/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 D-ZERO Co., Ltd. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/@d-zero/eslint-plugin/README.md b/packages/@d-zero/eslint-plugin/README.md new file mode 100644 index 00000000..5a34333a --- /dev/null +++ b/packages/@d-zero/eslint-plugin/README.md @@ -0,0 +1,42 @@ +# `@d-zero/eslint-plugin` + +Custom ESLint rules for D-ZERO. + +## Installation + +```sh +npm install @d-zero/eslint-plugin --save-dev +``` + +## Configuration + +Add the following to your `eslint.config.js`: + +```js +import dzeroPlugin from '@d-zero/eslint-plugin'; + +export default [ + { + plugins: { + '@d-zero': dzeroPlugin, + }, + rules: { + '@d-zero/no-click-event': 'warn', + }, + }, +]; +``` + +## Rules + +### `@d-zero/no-click-event` + +Disallows click event handlers in favor of the [Invoker Commands API](https://developer.mozilla.org/docs/Web/API/Invoker_Commands_API). + +**Detected patterns:** + +- `addEventListener('click', ...)` +- `element.onclick = ...` +- jQuery `.on('click', ...)` and `.click()` +- React `onClick={...}` +- Vue `@click` and `v-on:click` diff --git a/packages/@d-zero/eslint-plugin/package.json b/packages/@d-zero/eslint-plugin/package.json new file mode 100644 index 00000000..3bb1542b --- /dev/null +++ b/packages/@d-zero/eslint-plugin/package.json @@ -0,0 +1,36 @@ +{ + "name": "@d-zero/eslint-plugin", + "version": "5.0.0", + "description": "Custom ESLint rules for D-ZERO", + "repository": "https://github.com/d-zero-dev/linters.git", + "author": "D-ZERO Co., Ltd.", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "engines": { + "node": ">=22.0.0" + }, + "type": "module", + "exports": { + ".": "./dist/index.js" + }, + "files": [ + "dist" + ], + "scripts": { + "build": "tsc" + }, + "peerDependencies": { + "eslint": ">=9.0.0" + }, + "dependencies": { + "@typescript-eslint/utils": "8.53.1" + }, + "devDependencies": { + "@typescript-eslint/parser": "8.53.1", + "@typescript-eslint/rule-tester": "8.53.1", + "eslint": "9.39.2", + "vue-eslint-parser": "9.4.3" + } +} diff --git a/packages/@d-zero/eslint-plugin/src/const.ts b/packages/@d-zero/eslint-plugin/src/const.ts new file mode 100644 index 00000000..94c90cc8 --- /dev/null +++ b/packages/@d-zero/eslint-plugin/src/const.ts @@ -0,0 +1,3 @@ +export const NAMESPACE = '@d-zero'; +export const REPOSITORY_URL = + 'https://github.com/d-zero-dev/linters/tree/main/packages/%40d-zero/eslint-plugin/src/rules'; diff --git a/packages/@d-zero/eslint-plugin/src/index.ts b/packages/@d-zero/eslint-plugin/src/index.ts new file mode 100644 index 00000000..e1cd5f17 --- /dev/null +++ b/packages/@d-zero/eslint-plugin/src/index.ts @@ -0,0 +1,13 @@ +import noClickEvent from './rules/no-click-event/index.js'; + +const plugin = { + meta: { + name: '@d-zero/eslint-plugin', + version: '5.0.0', + }, + rules: { + 'no-click-event': noClickEvent, + }, +}; + +export default plugin; diff --git a/packages/@d-zero/eslint-plugin/src/rules/no-click-event/index.spec.ts b/packages/@d-zero/eslint-plugin/src/rules/no-click-event/index.spec.ts new file mode 100644 index 00000000..ea7cea1a --- /dev/null +++ b/packages/@d-zero/eslint-plugin/src/rules/no-click-event/index.spec.ts @@ -0,0 +1,87 @@ +import { RuleTester } from '@typescript-eslint/rule-tester'; +import { afterAll, describe, it } from 'vitest'; + +import rule from './index.js'; + +RuleTester.afterAll = afterAll; +RuleTester.describe = describe; +RuleTester.it = it; + +const ruleTester = new RuleTester({ + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + ecmaVersion: 2023, + sourceType: 'module', + }, + }, +}); + +ruleTester.run('no-click-event', rule, { + valid: [ + // Valid: not using click events + 'element.addEventListener("focus", handler)', + 'element.onfocus = handler', + '$element.on("hover", handler)', + '$element.focus()', + '', + '', + + // Valid: using Invoker Commands API (future-proof examples) + 'button.commandfor = "target-id"', + 'button.command = "show-modal"', + ], + invalid: [ + // Pattern 1: addEventListener('click') + { + code: 'element.addEventListener("click", handler)', + errors: [{ messageId: 'noClickEvent' }], + }, + { + code: "element.addEventListener('click', () => {})", + errors: [{ messageId: 'noClickEvent' }], + }, + + // Pattern 2: onclick IDL property + { + code: 'element.onclick = handler', + errors: [{ messageId: 'noClickEvent' }], + }, + { + code: 'document.getElementById("btn").onclick = () => {}', + errors: [{ messageId: 'noClickEvent' }], + }, + + // Pattern 3: jQuery .on('click') + { + code: '$element.on("click", handler)', + errors: [{ messageId: 'noClickEvent' }], + }, + { + code: "jQuery('#btn').on('click', function() {})", + errors: [{ messageId: 'noClickEvent' }], + }, + + // Pattern 4: jQuery .click() + { + code: '$element.click(handler)', + errors: [{ messageId: 'noClickEvent' }], + }, + { + code: '$(".button").click()', + errors: [{ messageId: 'noClickEvent' }], + }, + + // Pattern 5: React onClick + { + code: '', + errors: [{ messageId: 'noClickEvent' }], + }, + { + code: '
console.log("clicked")}>Click
', + errors: [{ messageId: 'noClickEvent' }], + }, + ], +}); diff --git a/packages/@d-zero/eslint-plugin/src/rules/no-click-event/index.ts b/packages/@d-zero/eslint-plugin/src/rules/no-click-event/index.ts new file mode 100644 index 00000000..14d79ac7 --- /dev/null +++ b/packages/@d-zero/eslint-plugin/src/rules/no-click-event/index.ts @@ -0,0 +1,100 @@ +import type { TSESTree } from '@typescript-eslint/utils'; + +import { createRule } from '../../utils/create-rule.js'; + +export default createRule({ + name: 'no-click-event', + meta: { + type: 'suggestion', + docs: { + description: 'Disallow click event handlers in favor of Invoker Commands API', + }, + messages: { + noClickEvent: + 'Avoid using click events. Consider using the Invoker Commands API instead. See: https://developer.mozilla.org/docs/Web/API/Invoker_Commands_API', + }, + schema: [], // No options + }, + defaultOptions: [], + create(context) { + return { + // Pattern 1: addEventListener('click', ...) + 'CallExpression[callee.property.name="addEventListener"]'( + node: TSESTree.CallExpression, + ) { + const args = node.arguments; + const firstArg = args[0]; + if (firstArg && firstArg.type === 'Literal' && firstArg.value === 'click') { + context.report({ + node, + messageId: 'noClickEvent', + }); + } + }, + + // Pattern 2: element.onclick = ... + 'AssignmentExpression[left.type="MemberExpression"][left.property.name="onclick"]'( + node: TSESTree.AssignmentExpression, + ) { + context.report({ + node, + messageId: 'noClickEvent', + }); + }, + + // Pattern 3: jQuery .on('click', ...) and .click() + 'CallExpression[callee.type="MemberExpression"]'(node: TSESTree.CallExpression) { + const callee = node.callee as TSESTree.MemberExpression; + + // .click() + if (callee.property.type === 'Identifier' && callee.property.name === 'click') { + context.report({ + node, + messageId: 'noClickEvent', + }); + } + + // .on('click', ...) + const firstArg = node.arguments[0]; + if ( + callee.property.type === 'Identifier' && + callee.property.name === 'on' && + firstArg && + firstArg.type === 'Literal' && + firstArg.value === 'click' + ) { + context.report({ + node, + messageId: 'noClickEvent', + }); + } + }, + + // Pattern 4: React onClick={...} + 'JSXAttribute[name.name="onClick"]'(node: TSESTree.JSXAttribute) { + context.report({ + node, + messageId: 'noClickEvent', + }); + }, + + // Pattern 5: Vue @click or v-on:click + // Note: This requires vue-eslint-parser + // eslint-disable-next-line @typescript-eslint/no-explicit-any + 'VAttribute[key.name.name="click"]'(node: any) { + context.report({ + node, + messageId: 'noClickEvent', + }); + }, + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + 'VAttribute[key.name="on"][key.argument.name="click"]'(node: any) { + context.report({ + node, + messageId: 'noClickEvent', + }); + }, + }; + }, +}); diff --git a/packages/@d-zero/eslint-plugin/src/utils/create-rule.ts b/packages/@d-zero/eslint-plugin/src/utils/create-rule.ts new file mode 100644 index 00000000..f0a633a7 --- /dev/null +++ b/packages/@d-zero/eslint-plugin/src/utils/create-rule.ts @@ -0,0 +1,8 @@ +import { ESLintUtils } from '@typescript-eslint/utils'; + +import { REPOSITORY_URL } from '../const.js'; + +/** + * Creates a rule with the D-ZERO namespace and documentation URL + */ +export const createRule = ESLintUtils.RuleCreator((name) => `${REPOSITORY_URL}/${name}`); diff --git a/packages/@d-zero/eslint-plugin/tsconfig.json b/packages/@d-zero/eslint-plugin/tsconfig.json new file mode 100644 index 00000000..aa6afc7e --- /dev/null +++ b/packages/@d-zero/eslint-plugin/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "noEmit": false, + "outDir": "dist", + "rootDir": "src" + }, + "include": ["src"], + "exclude": ["dist", "**/*.spec.ts"] +} From ec9751895b0086265bee0e418f67ffc3becd94e1 Mon Sep 17 00:00:00 2001 From: Yusuke Hirao Date: Tue, 20 Jan 2026 14:45:59 +0900 Subject: [PATCH 2/4] feat(eslint): integrate no-click-event rule from @d-zero/eslint-plugin Add @d-zero/eslint-plugin dependency and configure no-click-event rule in base config. The rule is enabled at warn level across all configs (standard, base, node, frontend). Co-Authored-By: Claude Sonnet 4.5 --- packages/@d-zero/eslint-config/base.js | 9 +++++++++ packages/@d-zero/eslint-config/package.json | 1 + 2 files changed, 10 insertions(+) diff --git a/packages/@d-zero/eslint-config/base.js b/packages/@d-zero/eslint-config/base.js index 7ce7c1f8..8b27f8f5 100644 --- a/packages/@d-zero/eslint-config/base.js +++ b/packages/@d-zero/eslint-config/base.js @@ -1,3 +1,4 @@ +import dzeroPlugin from '@d-zero/eslint-plugin'; import js from '@eslint/js'; import comments from 'eslint-plugin-eslint-comments'; import { flatConfigs as importX } from 'eslint-plugin-import-x'; @@ -249,4 +250,12 @@ export const base = [ }, }, }, + { + plugins: { + '@d-zero': dzeroPlugin, + }, + rules: { + '@d-zero/no-click-event': 'warn', + }, + }, ]; diff --git a/packages/@d-zero/eslint-config/package.json b/packages/@d-zero/eslint-config/package.json index b81c3b72..ce205c15 100644 --- a/packages/@d-zero/eslint-config/package.json +++ b/packages/@d-zero/eslint-config/package.json @@ -19,6 +19,7 @@ ".": "./index.js" }, "dependencies": { + "@d-zero/eslint-plugin": "5.0.0", "@eslint/js": "9.39.2", "eslint": "9.39.2", "eslint-plugin-eslint-comments": "3.2.0", From 5ef4ad20060ee5bc57819873c7bfc3c0a3eeb22e Mon Sep 17 00:00:00 2001 From: Yusuke Hirao Date: Tue, 20 Jan 2026 14:46:19 +0900 Subject: [PATCH 3/4] test(eslint-plugin): add tests for no-click-event rule Add test fixture and CLI test case to verify no-click-event rule detects all patterns. Co-Authored-By: Claude Sonnet 4.5 --- test/cli.spec.mjs | 13 +++++++++++++ test/fixtures/eslint/no-click-event.ts | 18 ++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 test/fixtures/eslint/no-click-event.ts diff --git a/test/cli.spec.mjs b/test/cli.spec.mjs index 522e4837..14c3bafa 100644 --- a/test/cli.spec.mjs +++ b/test/cli.spec.mjs @@ -87,6 +87,19 @@ describe('ESLint', () => { "1:1 error Avoid using 'DOMContentLoaded'. Use 'defer' or 'type=module' attribute instead no-restricted-syntax", ]); }); + + test('no-click-event', async () => { + const result = await eslint( + 'test/fixtures/eslint/no-click-event.ts', + '@d-zero/no-click-event', + ); + expect(result).toStrictEqual([ + '2:1 warning Avoid using click events. Consider using the Invoker Commands API instead. See: https://developer.mozilla.org/docs/Web/API/Invoker_Commands_API @d-zero/no-click-event', + '7:2 warning Avoid using click events. Consider using the Invoker Commands API instead. See: https://developer.mozilla.org/docs/Web/API/Invoker_Commands_API @d-zero/no-click-event', + '12:1 warning Avoid using click events. Consider using the Invoker Commands API instead. See: https://developer.mozilla.org/docs/Web/API/Invoker_Commands_API @d-zero/no-click-event', + '15:1 warning Avoid using click events. Consider using the Invoker Commands API instead. See: https://developer.mozilla.org/docs/Web/API/Invoker_Commands_API @d-zero/no-click-event', + ]); + }); }); describe('markuplint', () => { diff --git a/test/fixtures/eslint/no-click-event.ts b/test/fixtures/eslint/no-click-event.ts new file mode 100644 index 00000000..0dbb04bc --- /dev/null +++ b/test/fixtures/eslint/no-click-event.ts @@ -0,0 +1,18 @@ +// Pattern 1: addEventListener('click') +document.addEventListener('click', () => {}); + +// Pattern 2: onclick IDL property +const button = document.querySelector('button'); +if (button) { + button.onclick = () => {}; +} + +// Pattern 3: jQuery .on('click') +declare const $: any; +$('#element').on('click', () => {}); + +// Pattern 4: jQuery .click() +$('.button').click(); + +// Valid: not click events +document.addEventListener('focus', () => {}); From c6079755825d69df278d5e5a6918f7d458c6e6d7 Mon Sep 17 00:00:00 2001 From: Yusuke Hirao Date: Tue, 20 Jan 2026 14:46:52 +0900 Subject: [PATCH 4/4] docs(repo): update documentation for @d-zero/eslint-plugin Update root README to include new eslint-plugin package in custom rules section. Add dzero and TSES to cspell dictionary. Update yarn.lock with new dependencies. Co-Authored-By: Claude Sonnet 4.5 --- README.md | 1 + cspell.json | 6 +++- yarn.lock | 96 +++++++++++++++++++++++++++++++++++++++++++++-------- 3 files changed, 89 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 22ed1f58..4ac7d800 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ | パッケージ名 | 内容 | | -------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [`@d-zero/eslint-plugin`](./packages/%40d-zero/eslint-plugin/) | [`@d-zero/eslint-config`](./packages/%40d-zero/eslint-config/)に設定されているディーゼロ独自のESLintルール | | [`@d-zero/stylelint-rules`](./packages/%40d-zero/stylelint-rules/) | [`@d-zero/stylelint-config`](./packages/%40d-zero/stylelint-config/)に設定されているディーゼロ独自のStylelintルール | | [`@d-zero/csstree-scss-syntax`](./packages/%40d-zero/csstree-scss-syntax/) | [`@d-zero/stylelint-rules`](./packages/%40d-zero/stylelint-rules/)内で使用されている[CSSTree](https://github.com/csstree/csstree)用の[SCSS](https://sass-lang.com/documentation/syntax/#scss)パーサープラグイン | diff --git a/cspell.json b/cspell.json index b676494b..b97166dc 100644 --- a/cspell.json +++ b/cspell.json @@ -6,7 +6,11 @@ "unspaced", // - "splide" + "splide", + + // ESLint plugin + "dzero", + "TSES" ], "overrides": [ { diff --git a/yarn.lock b/yarn.lock index d192c3c2..f0600a61 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1017,6 +1017,7 @@ __metadata: version: 0.0.0-use.local resolution: "@d-zero/eslint-config@workspace:packages/@d-zero/eslint-config" dependencies: + "@d-zero/eslint-plugin": "npm:5.0.0" "@eslint/js": "npm:9.39.2" eslint: "npm:9.39.2" eslint-plugin-eslint-comments: "npm:3.2.0" @@ -1030,6 +1031,20 @@ __metadata: languageName: unknown linkType: soft +"@d-zero/eslint-plugin@npm:5.0.0, @d-zero/eslint-plugin@workspace:packages/@d-zero/eslint-plugin": + version: 0.0.0-use.local + resolution: "@d-zero/eslint-plugin@workspace:packages/@d-zero/eslint-plugin" + dependencies: + "@typescript-eslint/parser": "npm:8.53.1" + "@typescript-eslint/rule-tester": "npm:8.53.1" + "@typescript-eslint/utils": "npm:8.53.1" + eslint: "npm:9.39.2" + vue-eslint-parser: "npm:9.4.3" + peerDependencies: + eslint: ">=9.0.0" + languageName: unknown + linkType: soft + "@d-zero/lint-staged-config@workspace:packages/@d-zero/lint-staged-config": version: 0.0.0-use.local resolution: "@d-zero/lint-staged-config@workspace:packages/@d-zero/lint-staged-config" @@ -3697,6 +3712,23 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/rule-tester@npm:8.53.1": + version: 8.53.1 + resolution: "@typescript-eslint/rule-tester@npm:8.53.1" + dependencies: + "@typescript-eslint/parser": "npm:8.53.1" + "@typescript-eslint/typescript-estree": "npm:8.53.1" + "@typescript-eslint/utils": "npm:8.53.1" + ajv: "npm:^6.12.6" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + lodash.merge: "npm:4.6.2" + semver: "npm:^7.7.3" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + checksum: 10c0/418c5d9c646c9879050a4a4e9f297955fca8862f76363c05bedd0cd48e7f3e2ca3608dffc873658dbc96e485f1cdd97fdbf64289ab10e8cd91940c11323a39b5 + languageName: node + linkType: hard + "@typescript-eslint/scope-manager@npm:8.53.1": version: 8.53.1 resolution: "@typescript-eslint/scope-manager@npm:8.53.1" @@ -4103,7 +4135,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.15.0": +"acorn@npm:^8.15.0, acorn@npm:^8.9.0": version: 8.15.0 resolution: "acorn@npm:8.15.0" bin: @@ -4150,7 +4182,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.12.4": +"ajv@npm:^6.12.4, ajv@npm:^6.12.6": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -6490,6 +6522,16 @@ __metadata: languageName: node linkType: hard +"eslint-scope@npm:^7.1.1": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 + languageName: node + linkType: hard + "eslint-scope@npm:^8.4.0": version: 8.4.0 resolution: "eslint-scope@npm:8.4.0" @@ -6500,7 +6542,7 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.4.3": +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 @@ -6592,6 +6634,17 @@ __metadata: languageName: node linkType: hard +"espree@npm:^9.3.1": + version: 9.6.1 + resolution: "espree@npm:9.6.1" + dependencies: + acorn: "npm:^8.9.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 + languageName: node + linkType: hard + "esprima@npm:^4.0.0, esprima@npm:^4.0.1": version: 4.0.1 resolution: "esprima@npm:4.0.1" @@ -6602,21 +6655,21 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.5.0, esquery@npm:^1.6.0": - version: 1.6.0 - resolution: "esquery@npm:1.6.0" +"esquery@npm:^1.4.0, esquery@npm:^1.7.0": + version: 1.7.0 + resolution: "esquery@npm:1.7.0" dependencies: estraverse: "npm:^5.1.0" - checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 + checksum: 10c0/77d5173db450b66f3bc685d11af4c90cffeedb340f34a39af96d43509a335ce39c894fd79233df32d38f5e4e219fa0f7076f6ec90bae8320170ba082c0db4793 languageName: node linkType: hard -"esquery@npm:^1.7.0": - version: 1.7.0 - resolution: "esquery@npm:1.7.0" +"esquery@npm:^1.5.0, esquery@npm:^1.6.0": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" dependencies: estraverse: "npm:^5.1.0" - checksum: 10c0/77d5173db450b66f3bc685d11af4c90cffeedb340f34a39af96d43509a335ce39c894fd79233df32d38f5e4e219fa0f7076f6ec90bae8320170ba082c0db4793 + checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 languageName: node linkType: hard @@ -9310,7 +9363,7 @@ __metadata: languageName: node linkType: hard -"lodash.merge@npm:^4.6.2": +"lodash.merge@npm:4.6.2, lodash.merge@npm:^4.6.2": version: 4.6.2 resolution: "lodash.merge@npm:4.6.2" checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 @@ -12528,7 +12581,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.6.3, semver@npm:^7.7.3": +"semver@npm:^7.3.6, semver@npm:^7.6.3, semver@npm:^7.7.3": version: 7.7.3 resolution: "semver@npm:7.7.3" bin: @@ -14616,6 +14669,23 @@ __metadata: languageName: node linkType: hard +"vue-eslint-parser@npm:9.4.3": + version: 9.4.3 + resolution: "vue-eslint-parser@npm:9.4.3" + dependencies: + debug: "npm:^4.3.4" + eslint-scope: "npm:^7.1.1" + eslint-visitor-keys: "npm:^3.3.0" + espree: "npm:^9.3.1" + esquery: "npm:^1.4.0" + lodash: "npm:^4.17.21" + semver: "npm:^7.3.6" + peerDependencies: + eslint: ">=6.0.0" + checksum: 10c0/128be5988de025b5abd676a91c3e92af68288a5da1c20b2ff848fe90e040c04b2222a03b5d8048cf4a5e0b667a8addfb6f6e6565860d4afb5190c4cc42d05578 + languageName: node + linkType: hard + "walk-up-path@npm:^4.0.0": version: 4.0.0 resolution: "walk-up-path@npm:4.0.0"